process
Process กระบวนการ กระบวนการคือ โปรแกรมที่กำลังทำงานอยู่ มีการทำงานเป็นลำดับ กระบวนการ รวมถึง รีจีสเตอร์ของซีพียู Stack ข้อมูลชั่วคราว Data section
Process คืออะไร RAM ไฟล์ .exe One by one CPU Concept โปรแกรมที่ “กำลัง” ทำงาน โปรแกรม คือ “ไฟล์” ที่เก็บอยู่ในสื่อสำรองข้อมูล แต่ Process คือการโหลดไฟล์นั้นเข้าไปใน RAM แล้ว สามารถ “สั่ง” CPU ให้ ทำงานได้ เรียงตามลำดับ RAM ไฟล์ .exe One by one CPU
Process เมื่ออยู่ใน Main Memory
โปรเซสเมื่ออยู่ใน RAM สามารถตาม (Trace) ได้
เมื่อสลับกันทำงานแล้ว Trace มัน Dispatcher เป็น Process ของ O.S.
หน้าที่ของ OS ต่อโปรเซส ให้โปรเซสสามารถเข้าไป Run ได้ เก็บรักษาข้อมูลที่เกี่ยวกับโปรเซสแต่ละตัว ให้บริการ, ให้ทรัพยากรแก่โปรเซส ให้โปรเซสสามารถทำงานหลายตัวได้ (Multi-tasking) ทำการ Load และ Unload โปรเซส ทำการ Kill โปรเซส (End Task) สร้าง Background โปรเซส (Daemon Process) สื่อสารระหว่างโปรเซส (Interprocess Communication)
หน้าที่ของโปรเซส Entry Point Jump Wait End สั่งการ CPU เรียงตามลำดับ ไหล (Flow) ไปเรื่อยๆ จะเริ่มจากคำสั่งแรก (Entry Point) เสมอ การไหลไม่จำเป็นต้องไหลแบบ Sequential เสมอไป สามารถกระโดดไป - มาได้ เมื่อมีการเรียกใช้ทรัพยากร จะต้องมีการหยุดรอ Entry Point Jump Wait End
สถานะของกระบวนการ New กระบวนการถูกสร้างขึ้น Ready กระบวนการรอเข้าใช้หน่วยประมวลผล Running กระบวนการกำลังทำตามคำสั่งของโปรแกรม Waiting กระบวนการกำลังรอให้เหตุการณ์บางอย่างเกิดขึ้น Terminate กระบวนการเสร็จสิ้นการทำงาน
สถานะของโปรเซส Ready Queue Dispatch Running Ready Time out End admit Terminated New wait Wake up Waiting Waiting Queue
โปรเซสเกิดขึ้นได้อย่างไร User สั่งให้ทำงาน เมื่อ User ทำการ Log in เข้าในระบบ (Multi-user) เมื่อมีบริการต่างๆ เช่นการพิมพ์งาน เป็นต้น โปรเซสสร้างโปรเซสอีกอันหนึ่ง โปรเซสลูก Fork
โปรเซสจบการทำงานได้อย่างไร โปรเซสจบการทำงานโดยปกติ (รันคำสั่ง END) User ทำการ Log out ออกจากระบบ User สั่งให้จบการทำงาน (คำสั่ง Quit) เกิด Error หรือ ภาวะ Fault
การทำงานแบบ Multi-tasking เป็นการสลับกันทำงานของโปรเซสหลายๆโปรเซส เมื่อทำอย่างรวดเร็วก็จะเหมือนว่าทำงานพร้อมกัน มี 2 แบบ Non Preemptive Multi-tasking CPU จะไม่ควบคุมการทำงาน Preemptive Multi-tasking CPU ควบคุมการทำงาน (ใช้ Time Slice)
Operating System Two state Process สถานะพร้อม (ready state) คือสถานะที่โปรเซส พร้อมที่จะใช้ซีพียูทันที OS มอบหมายให้ในสถานะ นี้ไม่มีการรันของโปรเซส (โปรเซสหยุดนิ่ง) Not running คือ process ไม่ได้ทำงาน สถานะรัน (running state) คือสถานะที่โปรเซส กำลังครอบครองซีพียูอยู่มีการรันของโปรเซส จริงๆ เพราะโปรเซสใช้ซีพียูเอ็กซีคิ้วคำสั่งหรือโค้ด โปรแกรมของโปรเซสนั้น
Two state Process Not running Process are waiting in a queue Operating System Two state Process Not running Process are waiting in a queue
Two state Process (2) ปัญหา จะมีคิวแค่ 1 คิวเท่านั้น Operating System ปัญหา จะมีคิวแค่ 1 คิวเท่านั้น ถ้า process ตัวใดไม่พร้อมจะใช้งานก็จะไปต่อที่คิว และถ้าต้องการ process ตัวใหม่ และ process ตัวนั้นไม่พร้อม ก็จะต้องไปหา process ตัวใหม่ที่พร้อมจะทำงาน การแก้ปัญหา เพิ่มคิวเป็น 2 คิว คือ Ready และ Blocked เพิ่มสถานะ 2 สถานะคือ New และ Exit
Five state Process New คือ process ที่ถูกสร้างขึ้นแต่ยังไม่ได้ทำงาน Operating System Five state Process New คือ process ที่ถูกสร้างขึ้นแต่ยังไม่ได้ทำงาน Ready คือ process พร้อมที่จะทำงาน Running คือ process ที่กำลังทำงาน Exit คือ process ที่สิ้นสุดการทำงาน Blocked หรือ Waiting - process ไม่สามารถทำงานได้เนื่องจากรอเหตุการณ์ใดเหตุการณ์หนึ่ง บางอย่างอยู่ เช่น เกี่ยวกับอุปกรณ์เข้าออก - process ไม่จำเป็นต้องใช้ซีพียูและยังไม่พร้อมที่จะครอบครองซีพียู ซึ่งจะ ทำให้โปรเซสอื่นเข้ามาครอบครองซีพียูในช่วงนี้ได้
Operating System Five state Process (2)
Five state Process (3) ปัญหา Operating System Five state Process (3) ปัญหา ถ้าสถานะ Blocked มีคิวเดียว อาจมี process หลายตัวรอการใช้ I/O เช่น บางตัวรอใช้ Hard Disk ก็ต้องเสียเวลาในการหาว่า process ตัวไหน ต้องการใช้ Hard Disk
Five state Process (4) การแก้ปัญหา มีคิวหลายคิว Operating System Five state Process (4) การแก้ปัญหา มีคิวหลายคิว 1 คิว ก็เป็นของอุปกรณ์ตัวนั้น
Operating System Seven state Process ปัญหาของ 5 สถานะคือ เช่น ไม่มี process ใน CPU เลย ทำให้ CPU ว่าง และจะนำ process ตัวใหม่เข้ามา ก็เข้าไม่ได้ เพราะ memory เต็ม การแก้ปัญหาคือจะ swap process บางตัวออกไปไว้ที่ Hard Disk ซึ่งจะ เรียก Hard Disk แบบนี้ว่า swap area กรณีดังกล่าวจึงเพิ่มสถานะใหม่ คือ suspend ซึ่งแยกได้เป็น 2 สถานะ คือ - Blocked suspend คือ process ที่ถูก copy มาจาก memory และกำลัง รอใช้ I/O - Ready suspend คือ process ที่ใช้ I/O เสร็จ และต้องการจะใช้ CPU
Operating System Seven state Process (2)
PCB (process control box) Os แทนกระบวนการต่างๆ ด้วย pcb ซึ่งจะเก็บรายละเอียดต่างๆของ process
Process Control Block (PCB) Operating System Process Control Block (PCB) 1 พอยเตอร์ (Pointer) 2 สถานะของโปรเซส (Process state) 3 หมายเลขโปรเซส (Program id) 4 ตัวนับจำนวน (Program counter) 5 รีจิสเตอร์ (Register) 6 ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information) 7 ข้อมูลการจัดการหน่วยความจำ (Memory management information) 8 ข้อมูลแอ็กเคาต์ (Account information) 9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information)
pcb Process state เก็บสถานะของ process Program counter บอกตำแหน่งบรรทัดของ process ที่จะทำงานต่อไป CPU register เก็บข้อมูลต่างๆของ process เมื่อเกิดการขัดจังหว่ะ
การจัดการโปรเซส การปฏิบัติการบนโปรเซส Operating System การจัดการโปรเซส การปฏิบัติการบนโปรเซส 1. การสร้างโปรเซส (Process creation) ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณาการ execute 1. โปรเซสแม่ยังประมวลผลต่อไป พร้อมโปรเซสลูก (The parent continues to execute concurrently with its children.) 2. โปรเซสแม่ต้องรอให้โปรเซสลูกบางตัว หรือโปรเซสลูกทั้งหมดสิ้นสุด จึงจะเริ่มประมวลผลได้ใหม่ (The parent waits until some or all of its children have terminated.) ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณา address ของโปรเซสใหม่ 1. โปรเซสลูกเป็นสำเนาของโปรเซสแม่ คือใช้ address เดียวกับแม่ (The child process is a duplicate of the parent process.) 2. โปรเซสลูกมีตำแหน่งของ load address ของตนเอง (The child process has a program loaded into it.)
การจัดการโปรเซส 2. การสิ้นสุดของโปรเซส (Process termination) Operating System การจัดการโปรเซส 2. การสิ้นสุดของโปรเซส (Process termination) 3 เหตุผลที่ โปรเซสแม่จะหยุดการประมวลผลของโปรเซสลูก 1. โปรเซสลูกใช้ resource มากกว่าที่กำหนดไว้ 2. ไม่มีความจำเป็นต้องใช้โปรเซสนั้นอีกแล้ว 3. โปรเซสแม่สิ้นสุด และ OS ไม่ยอมให้โปรเซสลูกทำงานต่อไป
การจัดการโปรเซส โปรเซสสื่อประสาน (Cooperating process) Operating System การจัดการโปรเซส โปรเซสสื่อประสาน (Cooperating process) โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้ 1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing) 2. เพิ่มความเร็วในการคำนวณ (Computation speedup) 3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity) 4. ความสะดวก (Convenience)
การจัดการโปรเซส การสื่อสารในโปรเซส (Interprocess communication : IPC) Operating System การจัดการโปรเซส การสื่อสารในโปรเซส (Interprocess communication : IPC) การสื่อสารในโปรเซส หรือระหว่างโปรเซสมีเรื่องที่ต้องพิจารณาหลายเรื่อง 1. ระบบการผ่านข่าวสาร (Message-passing system) การอำนวยความสะดวกของ IPC มีอย่างน้อย 2 กระบวนการคือ การส่งข่าวสาร Send(message) หรือ การรับข่าวสาร Receive (message) นอกจากนี้การบ่งบอกถึงการเชื่อมโยงข่าวสาร และการรับ-ส่งข่าว มีหลายวิธีดังนี้ - Direct or indirect communication (ทางตรง) - Symmetric or asymmetric communication (สมมาตร) - Automatic or explicit buffering (Explicit = แน่นอน) - Send by copy or send by reference - Fixed-sized or variable-sized messages
Process scheduling Scheduling queue แบบแถวคอย เมื่อกระบวนการเข้าสู่ระบบ จะถูกจัดในแถวคอย ในหน่วยความจำ(disk) เมื่อเข้าสู่หน่วยความจำหลักกระบวนการจะถูกเก็บใน link list แถวพร้อม read queue ซึ่งพร้อมที่จะทำงานใน CPU
Ready Queue And Various I/O Device Queues Operating System Concepts
Representation of Process Scheduling Operating System Concepts แถวคอยที่เป็นตัวแทนของการจัดตารางกระบวนการ
เมื่อกระบวนการเข้าทำงานใน CPU อาจเกิดเหตุการณ์ กระบวนการร้องขออุปกรณ์ รับ ส่งข้อมูล กระบวนการสร้างกระบวนการย่อย และรอจน กระบวนการย่อยทำงานเสร็จ กระบวนการถูกขัดการทำงานโดยระบบ จะถูกหยุดและ ย้ายไปรอในแถวคอย
ตัวจัดตารางการทำงาน กระบวนการจะถูกย้ายจากแถวคอยหนึ่งไปอีกแถวคอนหนึ่งตลอดเวลาที่ กระบวนการทำงานอยู่ ซึ่ง os จะเลือกกระบวนการจากแถวคอยออกมา ตัวจัดตารางระยะยาว เลือกกระบวนการจาก disk สูหน่วยความจำหลัก ตัวจัดตารางระยะสั้น เลือกกระบวนการในแถวพร้อม เข้าใช้ CPU ตัวจัดตารางระยะสั้นจะทำงานบ่อย ทุกๆ10 มิลลิวินาที ตัวจัดตารางระยะยาว จะทำเมื่อมีกระบวนการอกจากระบบ
Addition of Medium Term Scheduling Operating System Concepts
ตัวจัดตารางระยะกลาง ย้ายกระบวนการออกจากหน่วยความจำหลักเพื่อลดจำนวนกระบวนการ ในหน่วยความจำ ทำให้ cpu ทำงานได้ดีขึ้น ซึ่งจะถูกนำกลับมาเมื่อถึง เวลาทีเหมาะสม เรียกว่าการ swapping
การเปลี่ยนงาน คือการเปลี่ยนกระบวนการเข้าทำงานซึ่งจะมีการเก็บค่าของ กระบวนการเดิม และ นำค่าของกระบวนการใหม่เข้ามา
การดำเนินการของกระบวนการ การสร้างกระบวนการ โดยคำสั่งเรียกระบบ การเสร็จสิ้นกระบวนการ
การทำงานร่วมกันของกระบวนการ กระบวนการใน os อาจเป็นกระบวนการอิสระ หรือ กระบวนการที่ทำงานร่วมกัน สิ่งที่ต้องเตรียมถ้าทำงานร่วมกัน การใช้ข้อมูลร่วมกัน แชร์กันได้ การคำนวณรวดเร็วขึ้น แตกงานเป็นส่วนย่อย แต่ต้องมีหลายหน่วยประมวลผล ระบบย่อย สร้างโมดูล หน้าที่ละหนึ่งกระบวนการ ความสะดวกสบาย สามารถทำงานได้หลายๆอย่างพร้อมกัน
การสื่อสารระหว่างกระบวนการ โครงสร้างพื้นฐาน ระบบข่าวสาร send-receive สามารถส่งข้อมูลผ่าน communication link หากันได้
การตั้งชื่อ กระบวนการที่ติดต่อสื่อสารกันสามารถ อ้างอิงได้ทั้งทางตรง และทางอ้อม การสื่อสารโดยตรง ระบุชื่อผู้ส่งผู้รับโดยตรง send(p,message) การสื่อสารทางอ้อมข้อความถูกส่งผ่าน port ไปยังกล่อง รับซึ่งจะมีเฉพาะแต่ละกระบวนการ ถ้าใช้กล่องร่วมกันก็ สามารถติดต่อสื่อสารกันได้
การพักข้อมูล ความจุ ใช้เป็นแหล่งกำหนดการเก็บข้อมูล ความจุแบบศูนย์ ความยาวของแถวเป็นศูนย์ ไม่มีที่เก็บข้อมูล ความจุแบบมีขอบเจต ความจุมีขนาดจำกัด ความจุไร้ขอบเขต
ข้อยกเว้น ข้อความสูญหาย ข้อความเสียหาย
2 การตั้งชื่อ (Naming) 2.1 Direct communication Operating System 2 การตั้งชื่อ (Naming) 2.1 Direct communication - การรับ-ส่ง message ระหว่างโปรเซส 2 โปรเซส โดย OS จะไม่ดำเนินการติดต่อให้ - โปรเซสที่จะติดต่อต้องมีการกำหนดชื่อเฉพาะที่ใช้ติอดต่อทั้งผู้รับและผู้ส่ง - สร้างลิงค์ระหว่างโปรเซสทั้งสอง - จองพื้นที่หน่วยความจำที่แชร์ไว้
โปรเซส A โปรเซส B ส่งข้อมูล รับข้อมูล หน่วย ความจำร่วม การซิงโครไนซ์โปรเซส การส่ง message จากโปรเซส A ไป โปรเซส B (หลังจากสร้างลิงค์เรียบร้อยแล้ว) - โปรเซส A นำข้อมูลไปวางบนหน่วยความจำร่วม - โปรเซส B จะคอยไปตรวจสอบว่า โปรเซส A วางข้อมูลเรียบร้อยหรือยัง ? - ถ้าโปรเซส A ต้องวางข้อมูลใหม่ โปรเซส A ตรวจสอบว่าโปรเซส B นำข้อมูลไปหรือยัง ? เพื่อป้องกันการวางทับของข้อมูล
รูปแบบการติดต่อ send (B, message) : การส่ง message ไปยัง Process B Operating System รูปแบบการติดต่อ send (B, message) : การส่ง message ไปยัง Process B receive (A, message) : การรับ message จาก Process A โปรเซส A โปรเซส B ส่งข้อมูล รับข้อมูล หน่วย ความจำร่วม
Operating System 2.2 Indirect communication การติดต่อสื่อสารทางอ้อม เป็นการติดต่อผ่าน mailbox หรือ port ซึ่งทำหน้าที่เก็บโปรเซส แล้วส่งให้อีกโปรเซสหนึ่ง วิธีนี้ทำให้โปรเซสหนึ่งติดต่อโปรเซสอื่นผ่าน mail box ได้หลาย mail box เมื่อ share mail box ก็จะทำให้การสื่อสารมีประสิทธิภาพ - การรับ-ส่ง message ระหว่างโปรเซส 2 โปรเซส ผ่าน mailbox/port โดย OS จะดำเนินการติดต่อให้ - mailbox เป็นที่เก็บ message จากโปรเซสหนึ่งที่ส่งไปอีกโปรเซส - โปรเซสสามารถติดต่อกับโปรเซสอื่นได้หลาย mailbox - สร้างลิงค์ระหว่างโปรเซสที่มีการแชร์ mailbox
สมมติ P1, P2, P3 แชร์ mailbox A ไว้ P1 ส่ง message ไป mailbox A Operating System สมมติ P1, P2, P3 แชร์ mailbox A ไว้ P1 ส่ง message ไป mailbox A P2, P3 ต้องการรับ message จาก mailbox Aคำถามคือ โปรเซสใดรับ message จาก mailbox A วิธีแก้ ยอมให้มีการลิงค์ทั้งสองโปรเซส ยอมให้การรับ message ได้ครั้งละ 1 โปรเซส ยอมให้ OS เลือกว่าโปรเซสใดที่จะเข้ารับ message โดยระบบจะกำหนดผู้รับไปยังผู้ส่งก่อน
เจ้าของ mailbox อาจเป็น OS หรือโปรเซสก็ได้ Operating System เจ้าของ mailbox อาจเป็น OS หรือโปรเซสก็ได้ ถ้าเจ้าของเป็นโปรเซส เมื่อโปรเซสสิ้นสุดลง mailbox จะถูกทำลาย ถ้าเจ้าของเป็น OS mailbox จะเป็นอิสระ ไม่ผูกติดกับโปรเซสใด ถ้า mailbox ว่าง และมีโปรเซสเข้ามารับข้อมูล OS จะให้โปรเซสหยุดรอ ถ้า mailbox เต็ม และมีโปรเซสเข้ามาส่งข้อมูล OS จะให้โปรเซสหยุดรอจนกว่า mailbox มีเนื้อที่ว่าง OS มีกลไกยอมให้โปรเซสกระทำในสิ่งต่อไปนี้ สร้าง mailbox ใหม่ ส่ง-รับ message ผ่าน mailbox ทำลาย mailbox
รูปแบบของ mailbox มี 3 รูปแบบดังนี้ 1. Mailbox แบบคิว Operating System รูปแบบของ mailbox มี 3 รูปแบบดังนี้ 1. Mailbox แบบคิว ดึงข้อมูลจาก mailbox ตามลำดับก่อน-หลัง ข้อมูลใดเข้ามาก่อนจะถูกดึงไปก่อน ข้อมูลใดเข้ามาทีหลังก็จะถูกดึงออกไปทีหลัง First in First out : FIFO mailbox แบบคิว จะมีขนาดคงที่ ถ้าใส่ข้อมูลมากจะเต็ม ข้อมูลเข้า mailbox ข้อมูลออกจาก mailbox
- ดึงข้อมูลจาก mailbox ตามลำดับก่อน-หลัง Operating System 2. Mailbox แบบไปป์ - คล้าย mailbox แบบคิว - ดึงข้อมูลจาก mailbox ตามลำดับก่อน-หลัง - ข้อมูลใดเข้ามาก่อนจะถูกดึงไปก่อน ข้อมูลใดเข้ามาทีหลังก็จะถูกดึงออกไปทีหลัง First In First Out : FIFO - แตกต่างกับmailbox แบบคิวที่ขนาด mailbox จะยืดหยุ่นได้ ข้อมูลเข้า mailbox ข้อมูลออกจาก mailbox
- ดึงข้อมูลจาก mailbox ข้อมูลใดเข้ามาถึงก่อนจะถูกดึงเข้ามาใช้งานทีหลัง Operating System 3. Mailbox แบบสแต็ก - ดึงข้อมูลจาก mailbox ข้อมูลใดเข้ามาถึงก่อนจะถูกดึงเข้ามาใช้งานทีหลัง - ข้อมูลใดเข้ามาทีหลังก็จะถูกดึงออกไปใช้ก่อน First In Last Out : FILO ข้อมูลเข้า mailbox ข้อมูลออกจาก mailbox
Process Switching หรือ Context Swithcing Operating System Process Switching หรือ Context Swithcing เป็นการสลับการทำงานของ process ก่อนสลับการทำงานต้องมีการเก็บข้อมูลสถานะต่างๆ การสลับจะใช้เวลาอยู่ในช่วง 1-1000 มิลลิวินาที สาเหตุ ของ process switching มี 3 ข้อ คือ interrupt เกิดจากสถาวะภายนอก เช่น I/O System Call คือ process เรียกใช้บริการฟังก์ชั่นจาก OS Exception เกี่ยวกับการจัดการข้อผิดพลาด เช่น หารด้วย 0
Operating System Process Switching(2)
ขั้นตอนการ Process Switching Operating System ขั้นตอนการ Process Switching เก็บข้อมูลสถานะต่างๆใน PCB ของ process ที่กำลังทำงานอยู่ update การทำงาน PCB จาก running ไปเป็นสถานะอื่น เช่น Blocked ย้าย PCB ของ process นี้ไปไว้ใน queue เลือก process ตัวถัดไปขึ้นมาทำงาน Update ค่าสถานะใน PCB ของ process ที่เลือกเป็น running Update ค่าโครงสร้างข้อมูลเกี่ยวกับการจัดการหน่วยความจำ Load ค่า PC และ register ต่างๆ เข้ามา