กระบวนการ (คอมพิวเตอร์)

โปรแกรมเทียบกับกระบวนการเทียบกับการจัดตาราง เวลาเธรด การจองล่วงหน้าการสลับบริบท

ในการคำนวณกระบวนการคืออินสแตนซ์ของโปรแกรมคอมพิวเตอร์ที่ถูกดำเนินการโดยเธรด หนึ่งหรือหลาย เธรด มีโมเดลกระบวนการที่แตกต่างกันมากมาย ซึ่งบางรุ่นมีน้ำหนักเบา แต่กระบวนการเกือบทั้งหมด (แม้แต่เครื่องเสมือน ทั้งหมด ) ได้รับการรูทในกระบวนการระบบปฏิบัติการ (OS) ซึ่งประกอบด้วยรหัสโปรแกรม ทรัพยากรระบบที่กำหนด สิทธิ์การเข้าถึงทางกายภาพและตรรกะ และโครงสร้างข้อมูลเพื่อเริ่มต้น ควบคุม และประสานงานกิจกรรมการดำเนินการ ขึ้นอยู่กับระบบปฏิบัติการ กระบวนการอาจประกอบด้วยเธรดการดำเนินการหลายเธรดที่ดำเนินการคำสั่งพร้อมกัน[1] [2]

แม้ว่าโปรแกรมคอมพิวเตอร์จะเป็นชุดคำสั่ง แบบพาสซีฟ ซึ่งโดยทั่วไปจัดเก็บไว้ในไฟล์บนดิสก์ กระบวนการคือการดำเนินการตามคำสั่งเหล่านั้นหลังจากโหลดจากดิสก์ลงในหน่วยความจำ หลายกระบวนการอาจเชื่อมโยงกับโปรแกรมเดียวกัน ตัวอย่างเช่น การเปิดโปรแกรมเดียวกันหลายอินสแตนซ์มักจะส่งผลให้มีการดำเนินการมากกว่าหนึ่งกระบวนการ

มัลติทาสกิ้งเป็นวิธีการที่อนุญาตให้หลายกระบวนการแชร์โปรเซสเซอร์ (CPU) และทรัพยากรระบบอื่นๆ CPU แต่ละตัว (คอร์) ดำเนินการกระบวนการเดียวในแต่ละครั้ง อย่างไรก็ตาม การทำงานหลายอย่างพร้อมกันช่วยให้โปรเซสเซอร์แต่ละตัวสามารถสลับระหว่างงานที่กำลังดำเนินการได้โดยไม่ต้องรอให้แต่ละงานเสร็จสิ้น ( การจองล่วงหน้า ) ขึ้นอยู่กับการใช้งานระบบปฏิบัติการ สวิตช์สามารถทำได้เมื่องานเริ่มต้นและรอให้ การดำเนินการ อินพุต/เอาท์พุต เสร็จสิ้น เมื่องานให้ CPU โดยสมัครใจ เมื่อฮาร์ดแวร์ขัดจังหวะและเมื่อตัวกำหนดเวลาระบบปฏิบัติการตัดสินใจว่ากระบวนการหมดอายุอย่างยุติธรรม การแบ่งเวลา CPU (เช่น โดยCompletely Fair Schedulerของเคอร์เนล Linux )

รูปแบบทั่วไปของการทำงานหลายอย่างพร้อมกันนั้นมาจากการแบ่งเวลา ของ CPU ซึ่งเป็นวิธีการแทรกแซงการดำเนินการของกระบวนการและเธรดของผู้ใช้ และแม้แต่งานเคอร์เนลอิสระ แม้ว่าคุณสมบัติหลังจะเป็นไปได้เฉพาะในเคอร์เนล ที่ ยึด เอาเสียก่อน เช่นLinuxการขอจองล่วงหน้ามีผลข้างเคียงที่สำคัญสำหรับกระบวนการโต้ตอบที่ได้รับลำดับความสำคัญสูงกว่าด้วยความเคารพต่อกระบวนการที่เชื่อมโยงกับ CPU ดังนั้นผู้ใช้จะได้รับมอบหมายทรัพยากรการประมวลผลทันทีเพียงแค่กดปุ่มหรือเมื่อเลื่อนเมาส์ นอกจากนี้ แอปพลิเคชัน เช่น การสร้างวิดีโอและเพลงจะได้รับลำดับความสำคัญแบบเรียลไทม์ โดยยึดถือกระบวนการที่มีลำดับความสำคัญต่ำกว่าอื่นๆ ในระบบแบ่งเวลาการสลับบริบทจะดำเนินการอย่างรวดเร็ว ซึ่งทำให้ดูเหมือนว่าหลายกระบวนการกำลังดำเนินการพร้อมกันบนโปรเซสเซอร์เดียวกัน การดำเนินการหลายกระบวนการที่ดูเหมือนพร้อมกันนี้เรียกว่าการทำงานพร้อมกัน

เพื่อความปลอดภัยและความน่าเชื่อถือระบบปฏิบัติการ สมัยใหม่ส่วนใหญ่จะป้องกัน การสื่อสารโดยตรงระหว่างกระบวนการอิสระ โดยจัดให้มีการสื่อสารระหว่างกระบวนการที่เป็นสื่อกลางและควบคุมอย่างเคร่งครัด

การเป็นตัวแทน

รายการกระบวนการที่แสดงโดยhtop
ตารางกระบวนการที่แสดงโดย KDE System Guard
ตารางกระบวนการที่แสดงโดยKDE System Guard

โดยทั่วไป กระบวนการของระบบคอมพิวเตอร์ประกอบด้วย (หรือกล่าวกันว่าเป็นเจ้าของ ) ทรัพยากรต่อไปนี้:

ระบบปฏิบัติการเก็บข้อมูลส่วนใหญ่เกี่ยวกับกระบวนการที่ใช้งานอยู่ในโครงสร้างข้อมูลที่เรียกว่าบล็อกการควบคุมกระบวนการชุดย่อยใดๆ ของทรัพยากร โดยทั่วไปอย่างน้อยก็สถานะตัวประมวลผล อาจเชื่อมโยงกับแต่ละเธรด ของกระบวนการ ในระบบปฏิบัติการที่สนับสนุนเธรดหรือกระบวนการ ลูก

ระบบปฏิบัติการจะแยกกระบวนการต่างๆ ออกจากกันและจัดสรรทรัพยากรที่ต้องการ เพื่อให้มีโอกาสน้อยที่จะรบกวนซึ่งกันและกันและทำให้ระบบล้มเหลว (เช่นการหยุดชะงักหรือthrashing ) ระบบปฏิบัติการยังอาจจัดให้มีกลไกสำหรับการสื่อสารระหว่างกระบวนการเพื่อให้กระบวนการโต้ตอบในลักษณะที่ปลอดภัยและคาดเดาได้

มัลติทาสกิ้งและการจัดการกระบวนการ

ระบบปฏิบัติการมัลติทาสกิ้ง อาจสลับระหว่างกระบวนการต่างๆ เพื่อให้ดูเหมือนเป็นกระบวนการต่างๆที่ทำงานพร้อมกัน (นั่นคือ ขนานกัน ) แม้ว่าในความเป็นจริงแล้ว มีเพียงกระบวนการเดียวเท่านั้นที่สามารถดำเนินการได้ในแต่ละครั้งบนCPU ตัวเดียว (เว้นแต่ว่า CPU จะมีหลายคอร์ จากนั้นจึง สามารถใช้ มัลติเธรดหรือเทคโนโลยีอื่นที่คล้ายคลึงกันได้) [ก]

เป็นเรื่องปกติที่จะเชื่อมโยงกระบวนการเดี่ยวกับโปรแกรมหลัก และกระบวนการย่อยกับกระบวนการแยกส่วนและขนานใดๆ ซึ่งทำงานเหมือนกับรูทีนย่อย แบบ อะซิงโครนัสกระบวนการกล่าวถึง ทรัพยากร ของตัวเองซึ่งอิมเมจของโปรแกรม (ในหน่วยความจำ) เป็นหนึ่งในทรัพยากรดังกล่าว อย่างไรก็ตาม ในระบบที่มีการประมวลผลหลายตัว กระบวนการ จำนวนมากอาจทำงานหรือแชร์ โปรแกรม ที่กลับเข้าใหม่ เดียวกันที่ตำแหน่งเดียวกันในหน่วยความจำ แต่แต่ละกระบวนการถูกกล่าวว่ามี อิมเมจของโปรแกรม เป็นของตัวเอง

กระบวนการมักเรียกว่า "งาน" ในระบบปฏิบัติการแบบฝังความรู้สึกของ "กระบวนการ" (หรืองาน) คือ "สิ่งที่ต้องใช้เวลา" ซึ่งตรงข้ามกับ "ความทรงจำ" ซึ่งเป็น "สิ่งที่กินพื้นที่" [ข]

คำอธิบายข้างต้นใช้กับทั้งกระบวนการที่จัดการโดยระบบปฏิบัติการ และกระบวนการตามที่กำหนดโดยแคลคูลัสกระบวนการ

หากกระบวนการร้องขอบางสิ่งซึ่งต้องรอ กระบวนการนั้นจะถูกบล็อก เมื่อกระบวนการอยู่ในสถานะที่ถูกบล็อกกระบวนการจะมีสิทธิ์ในการสลับไปยังดิสก์ แต่จะมีความโปร่งใสใน ระบบ หน่วยความจำเสมือนโดยที่ขอบเขตของหน่วยความจำของกระบวนการอาจอยู่บนดิสก์จริงๆ และไม่ได้อยู่ในหน่วยความจำหลักเมื่อใดก็ได้ แม้แต่บางส่วนของกระบวนการ/งานที่ใช้งานอยู่ (การรันโปรแกรม) ก็มีสิทธิ์ในการสลับไปยังดิสก์ หากส่วนดังกล่าวไม่ได้ถูกใช้เมื่อเร็วๆ นี้ ไม่ใช่ทุกส่วนของโปรแกรมที่รันและข้อมูลจะต้องอยู่ในหน่วยความจำกายภาพเพื่อให้กระบวนการที่เกี่ยวข้องทำงานได้

สถานะกระบวนการ

สถานะของกระบวนการต่างๆ ที่แสดงในแผนภาพสถานะโดยมีลูกศรบ่งชี้ถึงการเปลี่ยนระหว่างสถานะที่เป็นไปได้

เคอร์เนลของระบบปฏิบัติการที่ช่วยให้กระบวนการที่ต้องทำงานหลายอย่างพร้อมกันมี สถานะ ที่แน่นอนชื่อของสถานะเหล่านี้ไม่ได้มาตรฐาน แต่มีฟังก์ชันการทำงานที่คล้ายคลึงกัน[1]

  • ขั้นแรก กระบวนการจะ "สร้างขึ้น" โดยการโหลดจาก อุปกรณ์ จัดเก็บข้อมูลรอง ( ฮาร์ดดิสก์ไดรฟ์ซีดีรอมฯลฯ) ลงในหน่วยความจำหลัก หลังจากนั้นตัวกำหนดเวลากระบวนการจะกำหนดสถานะ "กำลังรอ"
  • ในขณะที่กระบวนการกำลัง "รอ" กระบวนการจะรอให้ตัวกำหนดเวลาทำสิ่งที่เรียกว่าสวิตช์บริบทสวิตช์บริบทจะโหลดกระบวนการลงในโปรเซสเซอร์และเปลี่ยนสถานะเป็น "กำลังทำงาน" ในขณะที่กระบวนการ "กำลังทำงาน" ก่อนหน้านี้ถูกเก็บไว้ในสถานะ "กำลังรอ"
  • หากกระบวนการในสถานะ "กำลังทำงาน" จำเป็นต้องรอทรัพยากร (เช่น รออินพุตหรือไฟล์ของผู้ใช้เพื่อเปิด) กระบวนการนั้นจะถูกกำหนดสถานะ "ถูกบล็อก" สถานะของกระบวนการจะเปลี่ยนกลับเป็น "กำลังรอ" เมื่อกระบวนการไม่จำเป็นต้องรออีกต่อไป (ในสถานะที่ถูกบล็อก)
  • เมื่อกระบวนการเสร็จสิ้นการดำเนินการ หรือถูกยกเลิกโดยระบบปฏิบัติการ ก็ไม่จำเป็นอีกต่อไป กระบวนการนี้จะถูกลบออกทันทีหรือถูกย้ายไปยังสถานะ "สิ้นสุด" เมื่อถอดออก ก็จะรอการถอดออกจากหน่วยความจำหลักเท่านั้น[1] [3]

การสื่อสารระหว่างกระบวนการ

เมื่อกระบวนการจำเป็นต้องสื่อสารระหว่างกัน พวกเขาจะต้องแบ่งปันบางส่วนของพื้นที่ที่อยู่ ของตน หรือใช้รูปแบบอื่นของการสื่อสารระหว่างกระบวนการ (IPC) ตัวอย่างเช่น ในเชลล์ ไปป์ไลน์เอาต์พุตของกระบวนการแรกจะต้องผ่านไปยังกระบวนการที่สอง และต่อๆ ไป อีกตัวอย่างหนึ่งคืองานที่ถูกแยกย่อยเป็นกระบวนการที่ให้ความร่วมมือแต่เป็นอิสระบางส่วนซึ่งสามารถทำงานพร้อมกันได้ (เช่น การใช้การทำงานพร้อมกัน หรือการทำงานแบบขนานอย่างแท้จริง รุ่นหลังเป็นกรณีเฉพาะของการดำเนินการพร้อมกัน และเป็นไปได้เมื่อใดก็ตามที่มีคอร์ CPU หลายคอร์สำหรับ กระบวนการที่พร้อมใช้งาน)

เป็นไปได้ที่กระบวนการตั้งแต่สองกระบวนการขึ้นไปจะทำงานบนเครื่องที่แตกต่างกันซึ่งอาจใช้ระบบปฏิบัติการ (OS) ที่แตกต่างกัน ดังนั้นจึงจำเป็นต้องมีกลไกบางอย่างสำหรับการสื่อสารและการซิงโครไนซ์ (เรียกว่าโปรโตคอลการสื่อสารสำหรับการคำนวณแบบกระจาย) (เช่นMessage Passing Interface { MPI})

ประวัติศาสตร์

ในช่วงต้นทศวรรษ 1960 ซอฟต์แวร์ควบคุมคอมพิวเตอร์ได้พัฒนาจากซอฟต์แวร์ควบคุมจอภาพ เช่นIBSYSมาเป็นซอฟต์แวร์ควบคุมผู้บริหาร เมื่อเวลาผ่านไป คอมพิวเตอร์ก็เร็วขึ้น ในขณะที่เวลาของคอมพิวเตอร์ยังไม่มีราคาถูกหรือใช้ประโยชน์ได้อย่างเต็มที่ สภาพแวดล้อมดังกล่าวทำให้การเขียนโปรแกรมหลายโปรแกรมเป็นไปได้และจำเป็น การเขียนโปรแกรมหลายโปรแกรมหมายความว่าหลายโปรแกรมทำงานพร้อมกันในตอนแรก โปรแกรมมากกว่าหนึ่งโปรแกรมทำงานบนโปรเซสเซอร์ตัวเดียว อันเป็นผลมาจากสถาปัตยกรรมคอมพิวเตอร์ที่ใช้โปรเซสเซอร์ตัวเดียวและใช้ทรัพยากรฮาร์ดแวร์ที่หายากและจำกัดร่วมกัน ดังนั้น การเกิดขึ้นพร้อมกันจึงมีลักษณะต่อเนื่องกันในระบบรุ่นหลังที่มีโปรเซสเซอร์หลายตัวหลายโปรแกรมอาจทำงานพร้อมกันพร้อม กัน

โปรแกรมประกอบด้วยลำดับคำสั่งสำหรับโปรเซสเซอร์ โปรเซสเซอร์ตัวเดียวสามารถเรียกใช้คำสั่งได้ครั้งละหนึ่งคำสั่งเท่านั้น: เป็นไปไม่ได้ที่จะรันโปรแกรมเพิ่มเติมในเวลาเดียวกัน โปรแกรมอาจต้องการทรัพยากร บาง อย่าง เช่น อุปกรณ์อินพุตซึ่งมีความล่าช้ามาก หรือโปรแกรมอาจเริ่มการทำงานที่ช้า เช่น การส่งเอาต์พุตไปยังเครื่องพิมพ์ สิ่งนี้จะทำให้โปรเซสเซอร์ "ไม่ได้ใช้งาน" (ไม่ได้ใช้) เพื่อให้โปรเซสเซอร์ไม่ว่างตลอดเวลา การทำงานของโปรแกรมดังกล่าวจะถูกหยุดและระบบปฏิบัติการจะสลับโปรเซสเซอร์เพื่อรันโปรแกรมอื่น สำหรับผู้ใช้จะดูเหมือนว่าโปรแกรมทำงานพร้อมกัน (จึงเรียกว่า "ขนาน")

หลังจากนั้นไม่นาน แนวคิดเรื่อง "โปรแกรม" ก็ขยายไปสู่แนวคิดเรื่อง "โปรแกรมที่กำลังดำเนินการและบริบทของมัน" แนวคิดของกระบวนการถือกำเนิดขึ้น ซึ่งจำเป็นต่อการประดิษฐ์รหัสผู้กลับเข้ามาใหม่ด้วยกระทู้มาค่อนข้างช้า อย่างไรก็ตาม ด้วยการถือกำเนิดของแนวคิด เช่นการแบ่งเวลาเครือข่ายคอมพิวเตอร์และ คอมพิวเตอร์ ที่มีหน่วยความจำร่วมที่มี CPU หลายตัว "มัลติโปรแกรม" แบบเก่าได้เปิดทางให้กับการทำงานหลายอย่าง พร้อมกันอย่างแท้จริง การประมวลผลหลายตัว และต่อมาคือมัลติ เธรด

ดูสิ่งนี้ด้วย

หมายเหตุ

  1. CPU สมัยใหม่บางรุ่นรวมโปรเซสเซอร์อิสระสองตัวขึ้นไปใน การกำหนดค่าแบบ มัลติคอร์และสามารถดำเนินการหลายกระบวนการพร้อมกันได้ อีกเทคนิคหนึ่งที่เรียกว่าmultithreading พร้อมกัน (ใช้ใน เทคโนโลยี Hyper-threadingของIntel ) สามารถจำลองการประมวลผลหลายกระบวนการหรือเธรดพร้อมกันได้
  2. งานและกระบวนการอ้างอิงถึงเอนทิตีเดียวกัน และแม้ว่าจะมีประวัติคำศัพท์ที่แตกต่างกันบ้าง แต่ก็ถูกนำมาใช้เป็นคำพ้องความหมาย ในปัจจุบัน คำว่า กระบวนการ โดยทั่วไปนิยมมากกว่างาน ยกเว้นเมื่อพูดถึง "มัลติทาสกิ้ง" เนื่องจากคำอื่น "มัลติโพรเซสซิง" นั้นง่ายเกินไปที่จะสับสนกับมัลติโปรเซสเซอร์ (ซึ่งเป็นคอมพิวเตอร์ที่มี CPU สองตัวขึ้นไป)

อ้างอิง

  1. ↑ เอบีซี ซิล เบอร์ชาตซ์, อับราฮัม ; คาเน, เกร็ก; กัลวิน, ปีเตอร์ แบร์ (2004) "บทที่ 4 กระบวนการ" แนวคิดระบบปฏิบัติการด้วย Java (ฉบับที่หก) จอห์น ไวลีย์ แอนด์ ซันส์ไอเอสบีเอ็น 0-471-48905-0-
  2. วาฮาเลีย, อูเรช (1996) "บทที่ 2 กระบวนการและเคอร์เนล" UNIX Internals: พรมแดนใหม่ Prentice-Hall Inc. ISBN 0-13-101908-2-
  3. สตอลลิงส์, วิลเลียม (2005) ระบบปฏิบัติการ: หลักภายในและการออกแบบ (ฉบับที่ 5) ศิษย์ฮอลล์. ไอเอสบีเอ็น 0-13-127837-1-(โดยเฉพาะบทที่ 3 ส่วนที่ 3.2 "สถานะกระบวนการ" รวมถึงรูปที่ 3.9 "การเปลี่ยนสถานะกระบวนการด้วยสถานะหยุดชั่วคราว")

อ่านเพิ่มเติม

  • เรมซี เอช. อาร์ปาชี-ดุสโซ และอันเดรีย ซี. อาร์ปาซี-ดุสโซ (2014) "ระบบปฏิบัติการ: สามส่วนง่ายๆ" หนังสืออาปาชี-ดุสโซ บทที่เกี่ยวข้อง: นามธรรม: กระบวนการ กระบวนการ API
  • Gary D. Knott (1974) ข้อเสนอสำหรับการจัดการกระบวนการบางอย่างและการทบทวนระบบปฏิบัติการ ACM SIGOPS เบื้องต้น เล่มที่ 8 ฉบับที่ 4 (ตุลาคม 2517) หน้า 7 – 44

ลิงค์ภายนอก

  • สื่อที่เกี่ยวข้องกับกระบวนการ (คอมพิวเตอร์) ที่วิกิมีเดียคอมมอนส์
  • แหล่งข้อมูลออนไลน์สำหรับข้อมูลกระบวนการ
  • ฐานข้อมูลและฟอรัมข้อมูลกระบวนการคอมพิวเตอร์
  • แบบจำลองกระบวนการพร้อมวิธีสร้างกระบวนการและการยุติ จัดเก็บถาวร 2021-02-06 ที่Wayback Machine
ดึงมาจาก "https://en.wikipedia.org/w/index.php?title=Process_(computing)&oldid=1221791318"