โครงสร้างของกระบวนการ

advertisement
โครงสร้างของกระบวนการ
Process Structure
โครงสร้างระบบและสถาปั ตยกรรมคอมพิวเตอร์
วิเชษฐ์ พลายมาศ
นงลักษณ์ พรมทอง
ว ัตถุประสงค์การเรียนรู ้
ึ ษาแนวคิดและโครงสร ้างของ
 เพือ
่ ศก
กระบวนการในระบบคอมพิวเตอร์
ึ ษาการจัดการกระบวนการ การ
 เพือ
่ ศก
ประสานงานระหว่างกระบวนการ และการ
ื่ สารระหว่างกระบวนการ
สอ
Agenda
 Process Concept
 Process Scheduling
 Operations on Processes
 Cooperating Processes
 Interprocess Communication
แนวคิดเกีย
่ วก ับกระบวนการ
(Process Concept)
 กิจกรรมทุกอย่างทีห
่ น่วยประมวลผลกลาง
กระทานัน
้
 ในระบบเชงิ กลุม
่ (batch) เรียกว่า งาน (job)
้
 ในระบบแบ่งกันใชเวลา
(time-sharing) เรียกว่า
โปรแกรมผู ้ใช ้ (user program) หรือภารกิจ
(task)
 คาว่า งาน และ กระบวนการ (process) จึงสามารถ
้
ใชแทนกั
นได ้
Process Concept (cont.)
 กระบวนการ คือโปรแกรมทีถ
่ ก
ู กระทาการ (a
program in execution)
 กระบวนการจะประกอบด ้วย:
 program counter
 stack
 data section
Process Concept (cont.)
 เมือ
่ กระบวนการถูกกระทาการ จะถูกเปลีย
่ นสถานะ
(state)
 สถานะของกระบวนการ หมายถึง ขณะปั จจุบน
ั
ของกิจกรรมของกระบวนการ ประกอบด ้วย
 ใหม่ (new) กระบวนการทีเ่ พิง่ ถูกสร ้างใหม่
ั่ ทีก
 กาลังดาเนินงาน (running) ชุดคาสง
่ าลังถูกกระทาการ
 รอ (waiting) กระบวนการทีก
่ าลังรอคอยเหตุการณ์
่ รอสญ
ั ญาณ รอให ้ไอ/โอ เสร็จ
บางอย่าง เชน
้ วย
 พร ้อม (ready) กระบวนการทีก
่ าลังรอให ้เข ้าใชหน่
ประมวลผล
ิ้ สุด (terminated) กระบวนการทีก
 สน
่ ระทาการเสร็จแล ้ว
Diagram of Process State
บล็อกควบคุมกระบวนการ
(Process Control Block-PCB)
 บล็อกควบคุมกระบวนการ จะประกอบด ้วยข ้อมูลที่
เกีย
่ วกับ
สถานะกระบวนการ (process state)
ตัวนับโปรแกรม (program counter)
ี ย
เรจิสเตอร์ของซพ
ี ู (CPU register)
ี ย
ข ้อมูลการจัดลาดับซพ
ี ู (CPU-scheduling
information)
 ข ้อมูลการจัดการหน่วยความจา (memorymanagement information)
ี ู ้ใช ้ (accounting information)
 ข ้อมูลบัญชผ
 ข ้อมูลสถานะไอ/โอ (I/O status information)




Process Control Block (PCB)
CPU Switch From Process to Process
คิวการจ ัดลาด ับกระบวนการ
(Process Scheduling Queues)
 คิวงาน (Job queue) กลุม
่ ของทุกกระบวนการ
ในระบบ
 คิวพร ้อม (Ready queue) กลุม
่ ของทุก
กระบวนการทีฝ
่ ั งอยูใ่ นหน่วยความจาหลักทีร่ อ
execute
 คิวอุปกรณ์ (Device queues) กลุม
่ ของ
กระบวนการทัง้ หมดทีก
่ าลังรออุปกรณ์ i/o
 มีการย ้ายกระบวนการไปมาระหว่างคิวต่างๆ
ข ้างต ้น
Ready Queue And Various I/O Device Queues
Representation of Process Scheduling
ต ัวจ ัดลาด ับ (Schedulers)
 Long-term scheduler (or job scheduler)
 ทาหน ้าทีค
่ ัดเลือกกลุม
่ กระบวนการขึน
้ มาจากทีพ
่ ักเก็บ
ไปยังหน่วยความจาหลักไปยังคิวพร ้อม
 ควบคุมดีกรีของการทางานแบบหลายโปรแกรม
(degree of multiprogramming) ให ้เหมาะสม
 Short-term scheduler (or CPU scheduler)
 ทาหน ้าทีค
่ ัดเลือกกระบวนการทีพ
่ ร ้อมจะถูกกระทาการ
้ พ
ี ย
ขึน
้ มาหนึง่ กระบวนการให ้เข ้าใชซ
ี ู
 ตัวจัดลาดับระยะกลาง (medium-term
scheduler)
 ทาหน ้าทีข
่ จัดกระบวนการออกจากหน่วยความจา ชว่ ย
ลดดีกรีของการทางานแบบหลายโปรแกรมลง
การเพิม
่ ตัวจัดลาดับระยะกลาง (Medium
Term Scheduling) มาชว่ ยในแถวคอย
Schedulers (cont.)
 Short-term scheduler จะทางานบ่อยมาก
(milliseconds)  (ต ้องเร็ว).
 Long-term scheduler ทางานไม่บอ
่ ยนัก (seconds,
้
minutes)  (อาจชาได
้)
 long-term scheduler จะควบคุม degree of
multiprogramming.
่ นใหญ่จะมีคณ
 กระบวนการสว
ุ ลักษณะอยู่ 2 ประเภท
ี ย
 กระบวนการเน ้นซพ
ี ู (CPU-bound process) เป็ น
ี ย
กระบวนการทีเ่ ข ้าครอบครองซพ
ี น
ู านแต่เกีย
่ วพันกับอุปกรณ์
ประเภทไอ/โอน ้อย
 กระบวนการเน ้นไอ/โอ (I/O-bound process) ซงึ่ เป็ น
้
ี ย
กระบวนการทีใ่ ชเวลาซ
พ
ี น
ู ้อยแต่ครอบครองไอ/โอนาน
ั
การสบเปลี
ย
่ น (swapping)
่ ยจัดสรร
 Medium Term Scheduling จะชว
ี ย
กระบวนแบบเน ้นซพ
ี แ
ู ละแบบเน ้น i/o ให ้มี
ความสมดุลกันมากขึน
้ ในระบบ
 โดยพยายามสลับเอากระบวนการทีย
่ ังไม่
จาเป็ นออกจากหน่วยความจาไปเก็บไว ้ในดิสก์
และสลับกระบวนการทีจ
่ าเป็ นจากดิสก์เข ้ามา
ไว ้ในหน่วยความจา
่ นีว้ า่ การสลับเข ้า/การสลับ
 เรียกกิจกรรมเชน
ออก (swap-in/swap-out)
การสล ับบริบท (Context Switch)
ี ย
 เมือ
่ ซพ
ี จ
ู ะเปลีย
่ นไปยังกระบวนการอืน
่ จะต ้อง
เก็บสถานะปั จจุบน
ั ของกระบวนการเดิมไว ้ใน PCB
(process control box) ก่อน แล ้วค่อยโหลด
สถานะของกระบวนการใหม่เข ้ามา
ี เวลา (มี
 ในการสลับบริบท ระบบจะเสย
overhead) และยังทางานไม่ได ้ขณะทาการสลับ
้ ดแวร์ชว่ ย
บริบท จึงมักใชฮาร์
 PCB จะเก็บข ้อมูล
ี ย
 ค่าของเรจิสเตอร์ในซพ
ี ู
 สถานะกระบวนการ
 ข ้อมูลการจัดการหน่วยความจา
การสร้างกระบวนการ (Process Creation)
 กระบวนการสามารถสร ้างกระบวนขึน
้ มาใหม่ได ้
ในระหว่างการทางานผ่าน system call
 การสร ้างกระบวนการ (create-process)
 กระบวนการทีส
่ ร ้างเรียกว่า กระบวนการแม่
(parent process)
 กระบวนการทีถ
่ ก
ู สร ้างเรียกว่า กระบวนการลูก
(children process) ของกระบวนการแม่นัน
้
 แต่ละกระบวนการสามารถสร ้างกระบวนลูกได ้อย่าง
ไม่จากัดในรูปแบบต ้นไม ้ (tree)
Process Creation (cont.)
 ลักษณะการแบ่งปั นทรัพยากร
้ พยากรร่วมกัน
 ทัง้ Parent และ children จะใชทรั
ทัง้ หมด
้ พยากรในสว่ นของ parent
 children จะใชทรั
้ พยากรร่วมกัน
 ทัง้ Parent and child ไม่มก
ี ารใชทรั
 Execution
 Parent และ children จะ execute พร ้อมๆ กัน
ิ้ สุด
 Parent จะรอจนกระทั่ง children สน
 Address space
้
 Child เรียกใชเลขที
อ
่ ยูเ่ ดียวกับ Parent
 Children ทาการบรรจุโปรแกรมเข ้าไปไว ้ในตาแหน่งที่
อยูข
่ องกระบวนการ Parent
การเลิกกระบวนการ
(Process Termination)
ิ้ แล ้วก็จะลบ
 เมือ
่ กระบวนการกระทาการเสร็จสน
ตัวเอง (ผ่านทาง exit system call)
 กระบวนการอาจคืนค่าผลลัพธ์บางอย่าง
กลับไปยังกระบวนการแม่ (ผ่านทาง wait
system call) แล ้วปลดปล่อยทรัพยากร
่ physical/virtual memory, file
ทัง้ หมด เชน
open, i/o buffer
 กระบวนการแม่สามารถยกเลิกกระบวนการ
ทัง้ หมดของลูกได ้ (abort) กระบวนการแม่
ถูกยกเลิกโดยระบบปฏิบต
ั ก
ิ ารหรือผู ้ใช ้
การเลิกกระบวนการ
(Process Termination)
 การยกเลิกกระบวนการสามารถเกิดขึน
้ หลาย
สาเหตุ
้ พยากรทีไ่ ม่มส
ิ ธิใ์ ช ้
 กระบวนการลูกเรียกใชทรั
ี ท
ิ้ แล ้วไม่จาเป็ นต ้อง
 ภารกิจทีก
่ ระบวนการลูกทาเสร็จสน
้
ใชกระบวนการลู
กอีกต่อไป
 กระบวนการแม่ออกจากระบบ และระบบปฏิบต
ั ก
ิ ารไม่
้ พยากรอีกต่อไป
อนุญาตให ้กระบวนการลูกเข ้าใชทรั
 จาเป็ นต ้องมีกลไกการเลิกแบบต่อเรียง
(cascading termination) เพือ
่ ยกเลิก
กระบวนการย่อยแบบเป็ นทอดๆ ในโครงสร ้างแบบ
ต ้นไม ้
Processes Tree on a UNIX System
การประสานกระบวนการ
(Cooperating Process)
 กระบวนการสามารถทางานไปพร ้อมๆกับ
กระบวนการอืน
่ ๆ ได ้โดยอิสระต่อกัน หรืออาจ
ประสานงานกันได ้
 ถ ้ากระบวนการเหล่านีไ
้ ม่ได ้ใชข้ ้อมูลใดๆ ร่วมกันทัง้
แบบชวั่ คราวและถาวร เรียกว่าอิสระต่อกัน
(independent)
 ถ ้าหากกระบวนการเหล่านัน
้ เกีย
่ วข ้องกัน มีการใช ้
ข ้อมูลร่วมกัน กิจกรรมของกระบวนการหนึง่ มีผลต่อ
อีกกระบวนการหนึง่ เราเรียกว่ากระบวนการเหล่านี้
ประสานงานกัน (cooperating)
Cooperating Process (cont.)
 ข ้อดีของการทีก
่ ระบวนการมีสภาพแวดล ้อมในการ
ทางานอย่างประสานกันมีหลายประการ ได ้แก่
 การแบ่งปั นข ้อมูล (information sharing)
 เพิม
่ ความเร็วในการประมวลผล (computation
speedup)
 สภาพมอดุลาร์ (modularity)
 ความสะดวก (convenience)
ั กลไกการ
 ในการทางานร่วมกันจาเป็ นต ้องอาศย
ื่ สารข ้ามกระบวนการ (IPC) และการประสาน
สอ
เวลา (synchronization) เข ้ามาชว่ ย
ื่ สารระหว่างกระบวนการ
การสอ
(Interprocess Communication: IPC)
่ ผ่านข่าวสาร (message-passing)
 การสง
ื่ (naming)
 การตัง้ ชอ
ื่ สารทางอ ้อม (indirect
 การสอ
communication)
 การประสานเวลา (synchronization)
Interprocess Communication (IPC)
 Mechanism for processes to communicate and to
synchronize their actions.
 Message system – processes communicate with
each other without resorting to shared variables.
 IPC facility provides two operations:
 send(message) – message size fixed or variable
 receive(message)
 If P and Q wish to communicate, they need to:
 establish a communication link between them
 exchange messages via send/receive
 Implementation of communication link
 physical (e.g., shared memory, hardware bus)
 logical (e.g., logical properties)
Implementation Questions
ื่ มโยงได ้อย่างไร
 -จะทาการติดตัง้ สายการเชอ
ื่ มโยงหนึง่ เสนสามารถใช
้
ื่ สารได ้
 -สายการเชอ
ส้ อ




มากกว่าหนึง่ กระบวนการหรือไม่
ื่ มโยงกระบวนการแต่ละ
-ต ้องมีจานวนสายการเชอ
คูไ่ ด ้กีเ่ สน้
-ความจุของสายควรมีขนาดเท่าไร
ื่ สารกันจะมีรป
-ขนาดของข่าวสารทีใ่ ชส้ อ
ู แบบคงที่
หรือแปรผัน
ื่ มโยงจะเป็ นแบบเดีย
-สายการเชอ
่ ว
(unidirectional) หรือแบบคู่ (bi-directional)
Direct Communication
ื่ จะต ้องใชช้ อ
ื่ ทีช
ั เจนทัง้ ฝั่ ง
 กระบวนการทีต
่ ้องการสอ
่ ด
รับและฝั่ งสง่ ในรูปแบบข ้างล่างนี้
 -send(P, message)
 -receive(Q, message)
-สง่ ข่าวสารไปยังกระบวนการ P
-รับข่าวสารจากกระบวนการ Q
ื่ มโยงการสอ
ื่ สารจะต ้องมีคณ
 การเชอ
ุ ลักษณะ ดังนี้
่ จะต ้องติดตัง้ การเชอ
ื่ มโยงระหว่างกันโดย
 ทัง้ ฝั่ งรับและฝั่ งสง
อัตโนมัต ิ
ื่ มโยงจะทาเฉพาะคูข
 การเชอ
่ องฝั่ งรับและฝั่ งสง่ เท่านัน
้
่ จะมีการเชอ
ื่ มโยงเพียงเสนเดี
้ ยวเท่านัน
 ฝั่ งรับและฝั่ งสง
้
ื่ มโยงสามารถใชได
้ ้ทัง้ แบบทางเดีย
 สายการเชอ
่ วและทางคู่
้
แต่โดยทั่วไปใชแบบทางคู
่
Indirect Communication
่ และรับผ่านทาง mailbox หรือ
 ข่าวสารจะถูกสง
port
 mailbox จะมีเลขทีซ
่ งึ่ ไม่ซ้ากัน (unique id) กากับไว ้
ื่ สารถึงกันโดยอาศัย
 ทุกกระบวนการสามารถติดต่อสอ
mailbox ดังกล่าวนี้ ในบางกรณี อาจมีมากกว่าหนึง่
กระบวนสามารถใชตู้ ้ไปรษณียร์ ว่ มกันได ้
 Operation ของ mailbox
 การสร ้างตู ้ไปรษณียใ์ หม่
่ ข่าวสารผ่านตู ้ไปรษณีย ์
 การสง
 การลบตู ้ไปรษณีย ์
Indirect Communication
 Mailbox sharing
 P1, P2, and P3 share mailbox A.
 P1, sends; P2 and P3 receive.
 Who gets the message?
 Solutions
ื่ มโยงหนึง่ เสนรองรั
้
 อนุญาตให ้สายการเชอ
บกระบวนการ
ได ้มากทีส
่ ด
ุ เพียง 2 กระบวนการเท่านัน
้
 อนุญาตให ้มีเพียงกระบวนเดียวทีส
่ ามารถรับข่าวสาร
จากตู ้ไปรษณีย ์ ณ ขณะใดขณะหนึง่
ิ ใจชข
ี้ าดว่าจะเลือกให ้กระบวนการ
 ให ้ระบบเป็ นผู ้ตัดสน
ใดเป็ นผู ้รับข่าวสารนัน
้ และแจ ้งว่าใครเป็ นผู ้รับไปให ้ผู ้
สง่ ทราบ
การประสานเวลา
(synchronization)
ื่ สารระหว่างกระบวนการจะอยูใ่ นรูปแบบที่
 การสอ




เรียกว่า การสง่ (send) และการรับ (receive)
สามารถออกแบบในการรับ-สง่ ข่าวสารเป็ นแบบ
บล็อก (blocking) หรือแบบนันบล็อก
(nonblocking)
แบบบล็อก (blocking) บางทีเรียกว่าการประสาน
เวลา (synchronous)
แบบนันบล็อก (nonblocking) บางทีเรียกว่า ไม่
ประสานเวลา (asynchronous) ก็ได ้
การรับและการสง่ สามารถกาหนดให ้เป็ นแบบ
บล็อก หรือนันบล็อก ก็ได ้
การปร ับอ ัตรา (buffering)
ื่ สาร
 ข่าวสารจะถูกแลกเปลีย
่ นโดยกระบวนการสอ
้
ซงึ่ อยูใ่ นกองซอนช
วั่ คราว (temporary queue)
เลือกวิธใี ดวิธห
ี นึง่ ดังนี้
 ความจุคา
่ ศูนย์ (zero capacity) ขนาดสูงสุดของกอง
้
ซอนมี
คา่ เป็ นศูนย์ หมายความว่า จะมีขา่ วสารอยูใ่ นกอง
้
ซอนได
้เพียงชุดเดียวเท่านัน
้
 ความจุคา
่ จากัด (bounded capacity) ขนาดความจุ
้
ของกองซอนมี
คา่ จากัดเท่ากับ n ดังนัน
้ จึงรองรับ
ข่าวสารได ้มากถึง n จานวนเท่าความจุ
 ความจุคา
่ ไม่จากัด (unbounded capacity) จึงสามารถ
รองรับข่าวสารได ้ทัง้ หมดโดยผู ้สง่ ไม่จาเป็ นต ้องหยุดรอ
เธรด (Thread)
 เดิม 1 กระบวนการ ควบคุม 1 เธรด เรียกว่ามีน้ าหนักมาก
(heavyweight)
 ปั จจุบน
ั 1 กระบวนการ มีการออกเป็ นสว่ นย่อยๆ จานวน
มาก แต่ละสว่ นย่อยเรียกว่า เธรด เรียกว่า กระบวนการ
น้ าหนักเบา (lightweight process)
 แต่ละเธรดจะบรรจุไว ้ด ้วย หมายเลขเธรด, ตัวนั บโปรแกรม,
้
กลุม
่ เรจิสเตอร์ และกองซอนที
ใ่ ช ้
้
 เธรดจะมีการใชงานร่
วมกันกับเธรดอืน
่ ๆ ภายใต ้กระบวนการ
่ สว่ นรหัส, ข ้อมูล
เดียวกัน เชน
้ พยากรอืน
่ การเปิ ด
 มีการใชทรั
่ ของระบบปฏิบัตก
ิ าร อย่างเชน
ั ญาณ (signal)
แฟ้ ม และสญ
 กระบวนการมีคณ
ุ ลักษณะเป็ นแบบมัลติเธรด
(multithread) สามารถควบคุมเธรดหลายเธรด จึงสามารถ
ทางานได ้หลายงานไปพร ้อมๆ กันได ้ในเวลาเดียวกัน
Thread (cont.)
กระบวนการแบบเธรดเดียวกับมัลติเธรด
Thread (cont.)
 ประโยชน์ของมัลติเธรด
 การโต ้ตอบ
้ พยากรร่วมกัน
 การใชทรั
 ประหยัด
้
 การใชประโยชน์
จากสถาปั ตยกรรมแบบมัลติ
โปรเซสเซอร์
User Threads
 Thread management done by user-level
threads library
 Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
Kernel Threads
 Supported by the Kernel
 Examples
-
Windows 95/98/NT/2000
Solaris
Tru64 UNIX
BeOS
Linux
Multithreading Models
 Many-to-One
 One-to-One
 Many-to-Many
Many-to-One
 Many user-level threads mapped to
single kernel thread.
 Used on systems that do not support
kernel threads.
Many-to-One Model
One-to-One
 Each user-level thread maps to kernel
thread.
 Examples
- Windows 95/98/NT/2000
- OS/2
One-to-one Model
Many-to-Many Model
 Allows many user level threads to be
mapped to many kernel threads.
 Allows the operating system to create a
sufficient number of kernel threads.
 Solaris 2
 Windows NT/2000 with the ThreadFiber
package
Many-to-Many Model
Threading Issues
 Semantics of fork() and exec() system
calls.
 Thread cancellation.
 Signal handling
 Thread pools
 Thread specific data
Pthreads
 a POSIX standard (IEEE 1003.1c) API for
thread creation and synchronization.
 API specifies behavior of the thread
library, implementation is up to
development of the library.
 Common in UNIX operating systems.
Solaris 2 Threads
Solaris Process
Windows 2000 Threads
 Implements the one-to-one mapping.
 Each thread contains
-
a thread id
register set
separate user and kernel stacks
private data storage area
Linux Threads
 Linux refers to them as tasks rather than
threads.
 Thread creation is done through clone()
system call.
 Clone() allows a child task to share the
address space of the parent task
(process)
Java Threads
 Java threads may be created by:
 Extending Thread class
 Implementing the Runnable interface
 Java threads are managed by the JVM.
Java Thread States
Download