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

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

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

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

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

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

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

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

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

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

  • รูปภาพ ของ รหัสเครื่องที่ปฏิบัติการได้ซึ่งเชื่อมโยงกับโปรแกรม
  • หน่วยความจำ (โดยทั่วไปคือบางส่วนของหน่วยความจำเสมือน ); ซึ่งรวมถึงโค้ดเรียกทำงาน ข้อมูลเฉพาะกระบวนการ (อินพุตและเอาต์พุต) สแต็กการโทร (เพื่อติดตามรูทีนย่อย ที่แอ็คทีฟ และ/หรือเหตุการณ์อื่นๆ) และฮีปสำหรับเก็บข้อมูลการคำนวณระดับกลางที่สร้างขึ้นระหว่างรันไทม์
  • ตัวอธิบายระบบปฏิบัติการของทรัพยากรที่จัดสรรให้กับกระบวนการ เช่นfile descriptor ( คำศัพท์Unix ) หรือ handles ( Windows ) และแหล่งข้อมูลและซิงก์
  • แอตทริบิวต์ ความปลอดภัยเช่น เจ้าของกระบวนการและชุดสิทธิ์ของกระบวนการ (การดำเนินการที่อนุญาต)
  • สถานะของ โปรเซสเซอร์ ( บริบท ) เช่น เนื้อหาของรีจิ สเตอร์ และการกำหนดที่อยู่หน่วยความจำกายภาพ โดย ปกติ สถานะจะถูกเก็บไว้ในเครื่องบันทึกเงินสดของคอมพิวเตอร์เมื่อกระบวนการดำเนินการ และในหน่วยความจำอย่างอื่น [1]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ประวัติ

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

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

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

ดูเพิ่มเติม

หมายเหตุ

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

อ้างอิง

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

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

ลิงค์ภายนอก