1.การทำงานของกระบวนการ(Process Execution)
กระบวนการทำงานภายใต้สภาวะแวดล้อมของคอมพิวเตอร์ในลักษณะหนึ่งๆ อาจเปลียนไปตามระบบย่อย(โปรแกรม) ของระบบปฏิบัติการและทรัพยากรที่ใช้การทำงานกระบวนการนั้น เช่น เวลาการทำงานของหน่วยประมวลผล หน่วยความจำปฐมภูมิ แฟ้มข้อมูล อุปกรณ์อืนพุต/เอาท์พุต ช่องสัญญาณบนเครื่อข่ายคอมพิวเตอร์1.1สถานะของกระบวนการ(Process states)
5-state model คือ new,ready,running,blocked,exit
เริ่มจากnew กระบวนการแรกที่ถูกสร้างขึ้นจากกระบวนการหลัก(parent process)ของระบบทุกๆกระบวนการล้วนเป็นกระบวนการลูก(child process) เพื่อกระทำตามที่ถูกกำหนดหีือร้องขอ เทื่อกระบวนการเสร็จภาระกิจ ก็จะคืนทรัพยากรทั้งหมดให้กลับระบบและถูกลบทิ้งไป
กระบวนดารหลักอันแรกถูกสร้างขึ้นจาก bootstrap program ในระหว่างเครื่องเปิดใหม่มี 2 กระบวนการที่เป็น resident processหรือ swapper และ init (ซึ่งเป็นกระบวนการหลักที่สร้างlogin shell ให้กระบวนการลูก) เมื่อระบบทำการเข้าสู่สถานะ multiuser level กระบวนการหลัก initจะสร้าง(spawn) กระบวนการและเปลือกระบบเพื่อรองรับสภาวะการกระทำแบบหลายผู้ใช้(multiuser) กระบวนการลูกเหล่านี้มีสภาพเป็นnew ที่คอยรับคำสั่งร้องขอ หรือเรียกใช้งานจากผู้ใช้(เช่น loginเข้าสู้ระบบ) หนึ่งในกระบวนการลูกที่ถูกสร้างขึ้นเพื่อกระทำคำสั่ง คือ กระบวนการจัดกำหนดการ(scheduling process) หรือscheduler
กระบวนการลุกยอมรับคำสั่ง/คำร้องขอข้างต้น scheduler ก็จะกำหนดการเข้าแถวคอยให้แก่กระบวนการลูก เพื่อเข้าสู่การประมวลผลในหน่วยประมวลผล กระบวนการลุกได้รับการยอมรับ(admit)เข้าสู้แถวคอย สถานะมันจะเปลี่ยนเป็น ready
สมมุติว่า หน่วยประมวลผลไม่มีงานค้าง กระบวนการสถานะready จะถูกส่ง(dispatch) เข้าสู่การปรุะมวลผล ทันที กลายเป็นสถานะrunning เมื่อประมวลผลเสร็จก็จะถูกปล่อย(release) สู่ระบบเอาท์พุตต่อไป เป็นสิ้นสุดของกระบวนการคือ exit หากกระบวนการนี้มีความยาวกว่าจะประมวลผลเสร็จครั้งเดียว ความหมายของครั้งเดียวในนาทีนี้คือ ใช้เวลาประมวลผลนานกว่าที่กำหนดไว้ เช่น เกิน 3 miliseconds ที่ตั้งไว้จะเกิดการขัดจังหวะของนาฬิกา กระบวนการถูกพักการประมวล(timeout) และส่งผลกลับไปยังหน่วยความจำปฐมภูมิ(หรือทุติยภูมิบริเวณ swap-space) สถานะก็จะกลับไปสู่ ready อีกครั้งและเข้าสู่แถวคอยรอการประมวลผลต่อไป
ระหว่างการประมวลบางครั้งอาจเรียกใช้ทรัพยากรหรือต้องการร้องขอบริการลักษณะจากระบบปฏิบัติการ เช่น เรียกใช้เทป รออ่านข้อมูลจากแป้นพิมพ์หรือร้องขอให้ระบบสร้างไดเร็คทอรี่ไหม่บนหน่วยความจำทุติยภูมิ งานดังกล่าวจำเป็นต้องมีกระบวนการควบคุมผ่านกลไลการขัดจังหวะ เพื่อส่งกระบวนการร้องขอนั้นๆ(ซึ่งเป็นกระบวนการใหม่) เข้าสู่แถวคอยการประมวล กระบวนการนี้ต้องเปลี่ยนจาก runningเป็น Blocked จนกว่าที่รอคอยจะเกิด (event occurs) คือได้รับการตอบสนองของระบบกระบวนการนี้จะเปลี่ยนสถานะเป็น ready อีกครั้งหนึ่งและกลับสู่แถวคอยเพื่อรอการจัดกำหนดการประมวลผลจาก scheduler ต่อไปจะเห็นได้ว่า 5สถานะ มีกลไกหรือขั้นตอนเพื่อป้องกันความผิดพลาดที่อาจเกิดต่อกระบวนการใดกระบวนการหนึ่ง และประสานงาน หากมีการขัดข้องสามารถแก้ไขหรือกู้ (recover)สถานการณ์เพื่อลดการเกิดความเสียหายให้น้อยที่สุดเท่าที่เป็นไปได้
1.2 บล็อกควบคุมกระบวนการ (process control block)
ในการสลับงานเข้าออกระบบดำเนินการจากจุดที่ทำค้างไว้ได้ทันที่ โดยอาศัยPCB ประกอบด้วย 3 กลุ่ม คือprocess identification, processor state information , process control information เก็บข้อมูลไว้ดังนี้แต่ระบบเก็บข้อมูลเพิ่มมากหรือน้อยขึ้นอยู่กับการออกแบบPCB ที่รองรับการทำงานหน่วยประมวลผล เช่น program status word, process stack, created resources,no. of children ข้อมูลเหล่านี้จำเป็นต่อการควบคุมการทำงานของกระบวนการ จนกว่าการกระทำเสร็จสิ้นจึงจะถูกลบทิ้งหรือบันทึกไว้ในลักษณะใดลักษณะหนึ่งสำหรับใช้ในระบบบัญชีต่อไป
ดังนั้นทุกครั้งที่สลับงานเข้า/ออก จะสำรองPCBผนวกเข้ากับตัวกระบวนการ ก่อนสลับออกจากหน่วยประมวลผลกระบวนการถูกสลับเข้าสู่หน่วยประมวลอีกครั้ง โดยอ่านข้อมูลผ่านPCB เรียกค่าต่างๆที่จำเป็นกลับคืนมาเพื่อดำเนินการต่อจากจุดพักคราวที่แล้วได้ทันที
1.3ปฐมฐานของการควบคุมกระบวนการ(Process control primitives)
ในการสร้งกระบวนการใหม่มีกระบวนการหลักเริ่มต้น เป็นผู้ร้องขอOSคือlogin process จากนั้นกระบวนการใหม่(กระบวนการลูก) ก็จะสร้างกระบวนการใหม่(หลาน,หลาน) ถัดไปOSมี process conrol primitives ดำเนินกระบวนการใหม่ใจกลางระบบ ได้แก่
- crate ทำหน้าที่สร้างและจัดสรรทรัพยากรที่จำเป็นได้แก่กระบวนการใหม่ เช่น process ID(PID),PCB,หน่วยความจำ process image
- suspend พักสถานะของกระบวนการที่กระทำการในใจกลางระบบไว้
- activate ส่ง (dispatch) กระบวนการสู่การประมวลผล
- destroy ทำลายกระบวนการหลังสิ้นสุดการกระทำการและคืนทรัพยกรให้แก่OS
- change priority เปลี่ยนสถานะหรือความสำคัญของกระบวนการตามขั้นตอนการกระทำการ
primitivesเป็นส่วนหนึ่งของระบบดำเนินการที่ควบคุมการทำงานของกระบวนการต่างๆ 5สถานะ ภายใต้กระบวนการ(Process management)
2.การจัดการกำหนดของกระบวนการ(Process Scheduling)
OSทำให้หน่วยประมวลผลทำงานตลอดเวลาโดยไม่มีเวลาว่าง(idle time)แม้แต่เสี้ยววินาที เพือบรรลุผลต้องมีแนวคิด
- short-term scheduling
- medium-term scheduling
- long-term scheduling
แนวคิดกำหนดการ(Scheduling concepts)
มีข้อสังเกตคือ1.กระบวนการหลักเสร็จก่อนกระบวนการลูก เพราะไม่มีการคอยกัน
2.กระบวนการลูกไม่อยู่ในสายการควบคุมและการใช้ทรัพยกรร่วมกันกับกระบวนการหลักเลย กระบวนการลูกจะ clone ทรัพยากรของกระบวนการหลัก ซึ่งจะเหมือนกันเฉพาะวินาทีแรกที่สร้างเสร็จ เมื่อกระบวนการลูกเริ่มทำงานด้วยตัวเอง คุณสมบัติก็จะเปลี่ยนไปทันที
preemptive scheduling and non-preemptive scheduling
กำหนดการถูกปรับเมื่อกระบวนการทำการในหน่วยประมวลผล
(1)เสร็จสิ้นการทำงานและเลิกใช้หน่วยประมวล
(2)เปลี่ยนจากสถานะ running เป็นready/blockedเนื่องจากtimeout/event wait รอให้เหตุการณ์ใดเหตุการณ์หนึ่งเกิด scheduler ต้องจัดกระบวนการใหม่เพื่อไม่ให้หน่วยประมวลผลว่าง ปรับกำหนดการที่เรียกว่า non preemptive scheduling
(1)เสร็จสิ้นการทำงานและเลิกใช้หน่วยประมวล
(2)เปลี่ยนจากสถานะ running เป็นready/blockedเนื่องจากtimeout/event wait รอให้เหตุการณ์ใดเหตุการณ์หนึ่งเกิด scheduler ต้องจัดกระบวนการใหม่เพื่อไม่ให้หน่วยประมวลผลว่าง ปรับกำหนดการที่เรียกว่า non preemptive scheduling