โครงสร้างของกระบวนการ 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