5. บทที่ 5

Download Report

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)