Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่2 การจัดการโพรเซส - Coggle Diagram
บทที่2 การจัดการโพรเซส
บทที่2 การจัดการโพรเซส
การดำเนินการของโพรเซส
-
การสร้างโพรเซส
สามารถสร้างโพรเซสใหม่ด้วยคำสั่งระบบของระบบปฏิบัติการหรือผ่านทาง System call ที่ชื่อ Fork (ในระบบปฏิบัติการ Unix) โพรเซสที่สร้างโพรเซสอื่นเรียกว่า โพรเซสแม่ เมื่อสร้างโพรเซสลูกแล้วสามารถทำต่อไปพร้อมลูกหรือหยุดรอจนกว่าโพรเซสลูกจะเสร็จ โพรเซสที่ถูกสร้างเรียกว่า โพรเซสลูก ซึ่งสามารถร้องขอทรัพยากรจากระบบปฏิบัติการหรือถูกจำกัดให้ใช้ได้เฉพาะทรัพยากรของโพรเซสแม่เท่านั้น โพรเซสแม่จำเป็นต้องรู้หมายเลขของโพรเซสลูกทั้งหมด
การสิ้นสุดของโฑรเซส
โพรเซสจะสิ้นสุดเมื่อสิ้นสุดการทำงานในคำสั่งสุดท้าย และแจ้งให้ระบบปฏิบัติการลบมันออกไปโดยใช้ System call ที่ชื่อ exit(ในระบบปฏิบัติการ Unix) หรือยกเลิกโพรเซสเมื่อทำงานเสร็จ เมื่อโพรเซสแม่สิ้นสุดโพรเซสลูกก็จะสิ้นสุดไปด้วย เรียกว่า การสิ้นสุดเป็นขั้นๆ
การปรับอัตรา
การจดบัฟเฟอร์ในการสร้างลิงค์ นอกจากจะเป็นการกำหนดเส้นทางข้อมูลแล้ว ลิงค์ยังมีความจุที่เป็นตัวเลขแสดงจำนวนเมสเสจที่สามารถเก็บไว้ใช้ชั่วคราวได้
-
การสื่อสารระหว่างโพรเซส
Message-Passing System
สามารถสื่อสารกับกระบวนการอื่นได้โดยไม่จำเป็นต้องใช้ทรัพยากรหรือข้มมูลร่วมกัน โดยซีพียูจะจัดเตรียมการดำเนินงานอย่างน้อย 2 ขั้นตอน คือ Send และ Receive Message สำหรับการสื่อสารใช้ช่องทางที่เรียกว่า การเชื่อมโยงการสื่อสาร Communication Link
การตั้งชื่อ กระบวนการที่ต้องการสื่อสารกับโพรเซสอื่นจะต้องมีวิธีในการอ้างอิงถึงชื่อสามารถสื่อสารได้ทั้งทางตรงและทางอ้อม
การสื่อสารทางตรง : โพรเซสที่ต้องการสื่อจะต้องใช้ชื่อที่ชัดเจนทั้งฝั่งรับและฝั่งส่ง ตัวอย่างเช่น send(P,mesage)ส่งข่าวสารไปยังโพรเซส P
receive(Q,message)รับข่าวสารจารโพรเซส Q
คุณสมบัติ
1.ทั้งฝั่งรับและฝั่งส่งจะต้องติดตั้งการเชื่อมโยงระหว่างกันโดยอัตโนมัติ
2.การเชื่อมโยงจะทำเฉพาะคู่ของฝั่งรับและฝั่งส่งเท่านั้น
3.ฝั่งรับและฝั่งส่งจะมีการเชื่อมโยงเพียงเส้นเดียวเท่านั้น
4.สายการเชื่อมโยงสามารถใช้ได้ทั้งแบบทางเดี่ยวและทางคู่ แต่โดยทั่วไปใช้แบบทางคู่
การกำหนดตำแหน่งที่อยู่ตามสมมาตร ทั้งผู้รับและผู้ส่งจะต้องมีชื่อสำหรับการสื่อสารกัน ผู้ส่งระบุเพียงชื่อของผู้รับเท่านั้น แต่ผู้รับไม่จำเป็นต้องระบุชื่อผู้ส่ง
ข้อด้วย : มีข้อจำกัดเกี่ยวกับชื่อมากเกินไป ถ้ามีการเปลี่ยนชื่อจะต้องแจ้งไปยังสมาชิกทั้งหมด เวลาจะแก้ไขชื่อใหม่จะต้องหาชื่อเดิมที่อ้างอิงก่อน
การติดต่อทางตรง
แต่ละโพรเซสที่ต้องการติดต่อกันจะต้องกำหนดชื่อเฉพาะที่ใช้ติดต่อทั้งผู้รับและผู้ส่ง ตัวอย่างเช่น send (B,message) จะเป็นการส่งโพรเซสไปยังโพรเซส B receive (A,message) จะเป็นการรับโพรเซส A
วิธีการนี้ ระบบจะไม่ดำเนินการติดต่อให้กับโพรเซสทั้งสอง ทั้งสองโพรเซสต้องจัดการเอง
คุณสมบัติ
-
-
การสร้างลิงค์จะเป็นแบบอัตโนมัติระหว่างคู่ของโพรเซสที่ต้องการติดต่อ โพรเซสจะทราบหมายเลขโพรเซสที่จะติดต่อด้วย
-
Shared-Memory System
หลักการทำงานของระบบคือ หน่วยความจำที่ถูกกำหนดให้ใช้งานร่วมกัน ตำแหน่งแอดเดรสที่ว่างของหน่วยความจำ เพื่อกำหนดเป็นพื้นที่ใช้หน่วยความจำร่วมกัน เมื่อเกิดการเปลี่ยนแปลใดๆไม่ว่าจะมาจากโพรเซสไหนจะมีผลต่อโพรเซสทั้งหมด
ประเภทของบัฟเฟอร์เพื่อป้องกันไม่ให้มีโพรเซสใดใส่ข้อมูลลงในบัฟเฟอร์ที่เต้ฒแล้วหรือดึงข้อมูลจากบัฟเฟอร์ที่ยังไม่มีข้อมูลอยู่
-
-
การสื่อสารทางอ้อม
ทุกโพรเซสสื่อสารกันโดยอาศัยเมลล์บ็อกซ์ ในบางกรณีอาจมีมากกว่าหนึ่งโพรเซวสที่สามารถใช้เมลล์บ็อกซ์ร่วมกันได้ สายการเชื่อมโยงสามารถใช้ได้ทั้งทางเดี่ยวและทางคู่
-
-
โครงสร้างเมลล์บ็อกซ์
แบบไทป์
โครงสร้างแบบไทป์จะคล้ายกับของคิวที่ข้อมูลไหนมาก่อนก็จะถูกดึงออกไปก่อน แต่ข้อแตกต่างก็คือ เมลล์บ็อกซ์แบบไทป์ขนาดของเมลล์บ็อกซ์จะยืดหยุ่นได้ ทำให้สามารถใส่ข้อมูลได้มากเท่าที่ต้องการ
แบบสเต็ก
เรียกการทำงานแบบสเต็กว่า LIFO(Last In First Out)
โครงสร้างเมลล์บ็อกซ์แบบสเต็กตรงกันข้ามกับแบบคิวในการดึงข้อมูล คือข้อมูลใดที่ส่งเข้ามาก่อนจะถูกดึงออกมาใช้งานภายหลัง โดยจะนำข้อมูลที่เข้ามาทีหลังออกไปใช้ก่อน
แบบคิว
เรียกการทำงานแบบคิวว่า FIFO(First In First Out) จะดึงข้อมูลออกจากเมลล์บ็อกซ์ตามลำดับก่อนหลังของข้อมูลที่ส่งเข้ามา ข้อมูลไหนที่เข้ามาก่อนก็จะถูกดึงออกไปก่อน มีขนาดบ็อกซ์คงที่ ถ้าใส่ข้อมูลมากเกินไปเมลล์บ็อกซ์จะเต็ม
-
คุณสมบัติของโพรเซส
โพรเซสแต่ละตัวจะถูกกำหนดความสำคัญขึ้น ความสำคัญนี้อาจเปลี่ยนแปลงได้หรือไม่ได้ขึ้นอยู๋กับระบบปฏิบัติการ
ตารางข้อมูลการประมวลผล
เป็นการทำงานของคำสั่งหรือกลุ่มคำสั่งของโปรแกรม และอาจมีการสลับการทำงานระหว่างโพรเซสในระบบ จึงมีการบันทึกรายละเอียดของแต่ละโพรเซส
-
-
การจัดการตารางของโพรเซส
การจัดตารางการทำงาน
กำหนดการระยะยาว
ทำหน้าที่เลือกโพรเซสที่รออยู่ที่หน่วยความจำสำรอง และต้องการเข้าไปทำงานที่ซีพียู ให้เข้าไปอยู่ในหน่วยความจำหลักที่คิวพร้อมเพื่อรอจนกว่าซีพียูจะว่าง
กำหนดการระยะสั้น
ทำหน้าที่เลือกโพรเซสจากคิวพร้อมในหน่วยความจำหลัก และมอบหมายซีพียูให้กับโพรเซสแต่ละโพรเซส จึงทำให้โพรเซสเปลี่ยนสถานะจากพร้อมเป็นทำงาน
-
กำหนดการระยะกลาง
ในกรณีถ้ามีความจำเป็นใช้โพรเซสในระบบมัลติโปรแกรมมิ่ง เพื่อลดโพรเซสที่อยู่ในหน่วยความจำ โดยการย้ายโพรเซสออกจากหน่วยความจำและ swap ลงดิสก์และนำโพรเซสนั้นกลับมาใช้หน่วยความจำอีกครั้งเมื่อต้องการให้โพรเซสนั้นทำงานต่อไป
ความถี่ในการทำงานน้อยกว่าระยะสั้น เนื่องจากสร้างโพรเซสใหม่จำเป็นต้องใช้เวลาเป็นนาที และในการเลือกโพรเซสจำเป็นต้องพิจารณาว่าเป็นโพรเซสที่เน้นการรับส่งข้อมูลหรือไม่ จะทำให้คิวพร้อมว่างและทำให้กำหนดการระยะสั้นถูกเรียกใช้น้อยมาก
การสลับการทำงานของซีพียู
คือการที่ซีพียูสลับไปประมวลผลโพรเซสอื่น โดยจะบันทึกสถานะของโพรเซสปัจจุบันเอาไว้ จากนั้นจะเรียกสถานะของโพรเซสที่ถูกบันทึกไว้กลับขึ้นมาประมวลผลอีกครั้ง
การจัดตารางแถวคอย
เมื่อโพรเซสใดโพรเซสหนึ่งเข้าสู่แถวพร้อม โพรเซสนั้นจะรออยู่ในแถวพร้อม จนกระทั่งถูกเลือกให้เป็นผู้ใช้หน่วยประมวลผลกลาง
-
เงื่อนไขข้อยกเว้น
การสิ้นสุดของโพรเซส
ถ้าผู้รับหรือผู้ส่งเมสเสจสิ้นสุดก่อนเมสเสจจะเอกซิคิวท์ อาจทำให้เมสเสจถูกกำจัดทำให้ผู้รับไม่ได้รับเมสเสจ หรือผู้ส่งไม่ได้ส่งเมสเสจ พิจารณาได้จาก
ผู้รับฌพรเซส P อาจจะรอเมสเสจจากโพรเซส Q ที่สิ้นสุดไปแล้ว ถ้าไม่มีการกระทำใดเกิดขึ้น โพรเซส P จะถูกบล็อกตลอดไป
หรืออาจจะสั่งให้โพรเซส P สิ้นสุด หรือแจ้งให้โพรเซส Q ทราบว่า โพรเซส P สิ้นสุดไปแล้ว
โพรเซส P อาจจะส่งไปให้โพรเซส Q ที่สิ้นสุดไปแล้ว รูปแบบการจัดบัฟเฟอร์แบบอัตโนมัติจะไม่เกิดอันตรายใดๆ โดย P ยังเอกซิควต์ต่อไป แต่ในกรณี้ที่ไม่มีบัฟเฟอร์โพรเซส P จะถูกบล็อกตลอดไป ระบบอาจจะสั่งให้ P สิ้นสุด หรืออาจจะแจ้งให้ P ทราบว่า Q สิ้นสุดไปแล้ว
-
แนวคิดเรื่องโพรเซส
ระบบคอมพิวเตอร์ในยุคแรกๆมีลักษณะการทำงานแบบโมโนโปรแกรมมิ่ง คือ เวลาใดเวลาหนึ่งมีเพียงโพรเซสเดียวเท่านั้นที่ทำงานได้
ข้อเสียคือ ระบบไม่สามารถใช้ทรัพยากรได้อย่างมีประสิทธิภาพ เนื่องจากมีบางช่วงที่ทรัพยากรของระบบว่างแต่ไม่สามารถใช้ทรัพยากรเหล่านั้นได้
โพรเซสหมายถึง โปรแกรมที่อยู่ระหว่างการทำงาน ซึ่งในการจำเป็นต้องใช้ทรัพยากรต่างๆของระบบ ในคอมพิวเตอร์อาจมีโพรเซส
มากกว่าหนึ่งโพรเซสและแต่ละโพรเซสอาจมีสถานะการทำงานที่แตกต่างกัน
โปรแกรมจะกลายเป็นโพรเซสเมื่อเรารันไฟล์นั้นขึ้นมาและถูกโหลดขึ้นสู่หน่วยความจำ แม้ว่าจะทำงานโปรแกรมเดียวกันในระบบคอมพิวเตอร์โพรเซสจะถูกแยกออกมา 2 โพรเซสและมีการสับเปลี่ยนโพรเซสในการทำงาน และในบางกรณีโพรเซสอาจจะทำงานอยู่บน Virtual Machine