Transcript 5. บทที่ 5
กระบวนการ (Process) Process คืออะไร Concept – โปรแกรมที่ “กาลัง” ทางาน โปรแกรม คือ “ไฟล์” ที่เก็บอยูใ่ นสื่ อสารองข้อมูล แต่ Process คือการโหลดไฟล์น้ นั เข้าไปใน RAM แล้ว สามารถ “สัง่ ” CPU ให้ทางานได้ เรียงตามลาดับ RAM ไฟล์ .exe One by one CPU Process เมื่ออยูใ่ น Main Memory โปรเซสเมื่ออยูใ่ น RAM สามารถตาม (Trace) ได้ เมื่อสลับกันทางานแล้ว Trace มัน หน้าที่ของ OS ต่อโปรเซส ให้โปรเซสสามารถเข้าไป Run ได้ เก็บรักษาข้อมูลที่เกี่ยวกับโปรเซสแต่ละตัว ให้บริ การ, ให้ทรัพยากรแก่โปรเซส ให้โปรเซสสามารถทางานหลายตัวได้ (Multi-tasking) ทาการ Load และ Unload โปรเซส ทาการ Kill โปรเซส (End Task) สร้าง Background โปรเซส (Daemon Process) สื่ อสารระหว่างโปรเซส (Interprocess Communication) หน้าที่ของโปรเซส สัง่ การ CPU เรี ยงตามลาดับ ไหล (Flow) ไปเรื่ อยๆ จะเริ่ มจากคาสัง่ แรก (Entry Point) เสมอ การไหลไม่จาเป็ นต้องไหลแบบ Sequential เสมอไป สามารถ กระโดดไป - มาได้ เมื่อมีการเรี ยกใช้ทรัพยากร จะต้องมีการหยุดรอ Entry Point Jump Wait End สถานะของโปรเซส Ready Queue Dispatch Ready Time out Running End admit New wait Wake up Waiting Waiting Queue Terminated Ready Queue โปรเซสที่เตรี ยมพร้อมที่จะเข้าไปทางานใน CPU จะรอคอยอยูใ่ น Queue นี้ ***เป็ นการ Link ระหว่าง PCB ของแต่ละโปรเซส การสลับกันทางาน โปรเซสเกิดขึ้นได้อย่างไร User สัง่ ให้ทางาน เมื่อ User ทาการ Log in เข้าในระบบ (Multi-user) เมื่อมีบริ การต่างๆ เช่นการพิมพ์งาน เป็ นต้น โปรเซสสร้างโปรเซสอีกอันหนึ่ง Fork โปรเซสลูก โปรเซสจบการทางานได้อย่างไร โปรเซสจบการทางานโดยปกติ (รันคาสัง่ END) User ทาการ Log out ออกจากระบบ User สัง่ ให้จบการทางาน (คาสัง่ Quit) เกิด Error หรื อ ภาวะ Fault Process Control Block (PCB) เป็ นข้อมูลของแต่ละโปรเซส (1 PCB ต่อ 1 โปรเซส) จะเก็บข้อมูลทุกๆอย่างที่เกี่ยวข้องกับโปรเซสนั้นๆ OS รู ้จกั โปรเซสได้จาก PCB นี้ PCB โปรเซส ข้อมูลภายใน PCB ค่า I.D. ของโปรเซส (เป็ นตัวเลขที่ไม่ซ้ ากัน) ข้อมูลที่คดั ลอกมาจากใน Registers ทุกๆตัวเมื่อโปรเซสทางาน สถานะของโปรเซส Stack ของโปรเซส pointer ที่ช้ ีไปที่โปรเซสอื่น (Ready Queue) ไฟล์ที่โปรเซสใช้ (ไฟล์พอยน์เตอร์) การทางานแบบ Multi-tasking เป็ นการสลับกันทางานของโปรเซสหลายๆโปรเซส เมื่อทาอย่างรวดเร็ วก็จะเหมือนว่าทางานพร้อมกัน มี 2 แบบ – Non Preemptive Multi-tasking CPU จะไม่ควบคุมการทางาน – Preemptive Multi-tasking CPU ควบคุมการทางาน (ใช้ Time Slice) เกิดปัญหาอะไรบ้างเมื่อจะต้องสลับการทางานของ โปรเซส Can be continued หากมีโปรเซสเดียวในระบบก็ไม่มีปัญหา มันจะรันไปเรื่ อยๆ แต่หากมีหลายโปรเซสก็ตอ้ งสลับกันทางาน จะต้องสามารถ Save งานเก่าไว้ได้ เพื่อกับมาทาต่อได้ Time out! Time out! การ Save และ Restore จะทาได้อย่างไร ในความเป็ นจริ งแล้ว การทางานของโปรเซสจะเกิดขึ้นใน Register ต่างๆ (PC เป็ นตัวชี้แอดเดรสของคาสัง่ ที่กาลังทางานอยู)่ จากที่กล่าวมาแล้วว่าทุกๆโปรเซสจะมี PCB ของมันเอง เราสามารถใช้ PCB มาเป็ นตัว Save “ข้อมูล” ทั้งหมดใน Register ทุกๆตัวได้ ดังนั้น เมื่อกลับมาทาใหม่ ก็สามารถโหลดข้อมูลจาก PCB เข้าไปใน Register ต่างๆได้ PCB2 ภาพอธิบาย PCB1 001000010100 copy CPU 0010 registers Time out! PC Context Switch เหตุการณ์ที่เกิดขึ้นในหน้าที่แล้วเรี ยกว่า Context Switch Context -> บริ บท (ข้อมูลที่อธิบายโปรเซส) Switch -> สลับ ดังนั้น เมือ ่ เราสลับโปรเซส ก็เทากั ่ บ สลับบริ บทต่างๆของโปรเซสไปด้วย ดังนั้น เมื่อมีการ Context Switch ระบบจะทางานช้าลง เพราะCPU ต้องใช้เวลาไปกับการ Copy ข้อมูล (Save และ Restore)