วันจันทร์ที่ 18 สิงหาคม พ.ศ. 2551

ระบบปฏิบัติการ OS: หน่วยที่ 6 Deadlock(วงจรอับ)

หน่วยที่ 6 Deadlock(วงจรอับ)

หน่วยที่ 6 Deadlock(วงจรอับ)

System Model รูปแบบของระบบ Deadlock
Deadlock Characterization ลักษณะของ Deadlock
Methods for Handing Deadlocks การจัดการปัญหา Deadlock
Deadlock Prevention การป้องกัน Deadlock
Deadlock Avoidance การหลีกเลี่ยงการเกิด Deadlock
Recovery from Deadlock การแก้ไข Deadlock
Combined Approach to Deadlock Handing การแก้ไขปัญหาแบบผสมผสาน

THe Deadlock Problem ปัญหาที่ทำให้เกิดของ Deadlock
ปัญหาของระบบDL ซึ่งจะขึ้นในระบบ Muti program เพราะเนื่องมาจาก processเกิดการ แย่ง Resource กัน ซึ่งตัวไหนที่ได้ใช้งานหรือครอบครองอยู่ก็จะใช้งานไปเรื่อยๆแต่อีกตัวซึ่งไม่ได้ใช้งานอยู่ก็จะเกิดการรอ และเมื่อมีตัวอื่นซึ่งมาใช้งาน มันก็ต้องรออีกต่อไป เราจึงเรียกภาวะนี้ว่าระบบ Deadlock
System Model รูปแบบของระบบ Deadlock
Resource แทนด้วย R และแทนด้วย รูปสี่เหลี่ยม
Process แทนด้วย P และแทนด้วย รูปวงกลม
Process จะทำตามระบบดังนี้
Request,Use,Release = ร้องขอ,ใช้งาน,คืนค่า
Deadlock Characterization คุณลักษณะของ DL
เงื่อนไขต่อไปนี้จะก่อให้เกิด DL
1. ทรัพยากรณ์เป็นแบบใช้ร่วมกันไม่ได้ ซึ่งจะสามารถใช้ P ได้ตัวเดียวเท่านั้นในเวลาเดียวกัน
2. ถือครองและรอคอย เมื่อมี P 1 P กำลังถือครองทรัพยากรณ์อยู่ และใน ขณะเดียวกัน P จะสามารถร้องขอทรัพยากรอื่นได้
3. ห้ามแทรก เมื่อ P กำลังใช้ทรัพยากรณ์อยู่ตัวอื่นห้ามแทรกกลางคัน และ P จะคืนทรัพยากรณ์ให้เมื่อกำลังเสร็จสมบูรณ์
4. วงจรรอคอย P ของระบบที่กำลังรอคอยใช้ทรัพยากรณ์
Methods for Handing Deadlocks การจัดการปัญหา Deadlock
1. กำหนดกฎเกณฑ์บางอย่างในขณะใช้ทรัพยากรณ์เพื่อไม่ให้เกิด DL
2. ไม่ป้องกันใดๆเลย ปล่อยให้เกิด DL ก่อนแล้วค่อยแก้ไข
3. มองข้ามปัญหาทั้งหมดว่าไม่เคยเกิด DL ในระบบ แล้วจึงแก้ไขดังนี้
3.1 กด Ctrl+Alt+Delee
3.2 กด Restart
Deadlock Prevention การป้องกัน Deadlock
การป้องกันมีด้วยกัน 4 วิธี
1. ห้ามใช้ทรัพยากรณ์ร่วมกัน
2. ถือครองและรอคอย
- ให้ P ร้องขอทรัพยากรณ์ทั้งหมดก่อนเริ่มทำงาน
- ยินยอมให้ P ร้องขอทรัพยากรได้ก็ต่อเมื่อ P นั้นมิได้ถือครองทรัพยากรใดไว้ได้เลย(ว่างอยู่)
3. ห้ามแซง - ถ้า P ถือครองทรัพยากรอยู่แล้วระบบจะตรวจสอบเพื่อป้องกันมิให้ร้องขอทรัพยากรณ์อื่นได้อีก
- ถ้าทรัพยากรถูกร้องขอด้วย P อื่นระบบก็จะทำการแทรก
- ให้หยุด P แล้วก็ Restart
4. วงจรรอคอย กำหนดลำดับความสำคัญของทรัพยากรทั้งหมด
Deadlock Avoidance การหลีกเลี่ยงการเกิด Deadlock
การที่จะหลีกเลี่ยงการเกิด DL ได้ระบบจะต้องมีความสามารถในการตัดสินใจได้ว่าการร้องขอทรัพยากรใดๆนั้นจะทำให้ระบบปลอดภัยหรือไม่ และจะอนุญาติให้ P นั้น ได้ ก็ต่อเมื่อระบบปลอดภัย
Recovery from Deadlock การแก้ไข Deadlock
1. ยกเลิก P ทั้งหมด (ข้อเสียคือ ทำให้เสียเวลาและค่าใช้จ่าย)
2. ยกเลิก P ในวงจร DL ทีละ P จนระบบเข้าสู่สภาวะปกติ มีหลักพิจรณาดังต่อไปนี้
- ลำดับความสำคัญของ P
- P นั้นใช้เวลานานเท่าใด และจะใช้เวลานานเท่าไหรจึงจะเสร็จสมบูรณ์
- P นั้นได้ถือครองทรัพยกรณ์ประเภทใดนานเท่าใด
- มีกี่ P ที่ถูกยกเลิก
- P ที่เราจะยกเลิกเป็นแบบตอบโต้หรือแบบกลุ่ม
Combined Approach to Deadlock Handing การแก้ไขปัญหาแบบผสมผสาน
มีหลักการอยู่ด้วยกัน 3 วิธี คือ
- Prevention การป้องกัน
- Avoidance การหลีกเลี่ยง
- Detection การตรวจหา
หลักการทั้งหมดนี้ใช้เพื่อให้เกิดประโยชน์สูงสุดในการ Resource ในระบบ

หน่วยที่ 5 CPU Scheduling

Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Multiple-Processor Scheduling
Real-Time Scheduling
Algorithm Evaluation

Basic concepts
วัตถุประสงค์ในการจัดการของ multiprogramming mechanism คือต้องมี process กำลังใช้ CPU ในขณะหนึ่ง ๆ เสมอ เพื่อทำให้เกิด CPU Uitlisation สูงสุด อย่างไรก็ตามในสิ่งแวดล้อมแบบ uniprocess system จะมีเพียงหนึ่ง process เท่านั้น ที่สามารถใช้ CPU ได้ในขณะหนึ่ง ๆ และ process อื่น ๆ ต้องรอ เพื่อเข้าใช้ CPU ต่อเมื่อ CPU ว่างลงในการทำงานของระบบ multiprogramming จะต้องมีการกระจายโอกาสในการเข้าใช้ CPU ให้แก่หลายๆ process ซึ่งโดยทั่วไปจะจัดให้มี process หลายๆ process ใน memory เพื่อสามารถเข้าใช้ CPU ได้เมื่อ CPU ว่างลง (เมื่อ process ที่กำลังใช้ CPU เสร็จการทำงาน หรือขอใช้ I/O) อย่างไรก็ตามเนื่องจากในขณะใดๆ จะมีเพียง process เดียวเท่านั้น ที่สามารถเข้าใช้ CPU ได้ ดังนั้นจะต้องมีวิธีการจัดลำดับ การได้เข้าถึง CPU ของ process ที่รอ ใน memory ซึ่งการทำงานในส่วนนี้คือ หน้าที่ของ CPU Scheduler

แสดงการสลับลำดับของช่วงประมวลผลและช่วงรับส่งข้อมูล

แสดงฮิสโตรแกรมของช่วงเวลาประมวลผล
Scheduling Criteria
Criteria ที่ใช้ในการเลือก Algorithm หรือวิธีการสำหรับ implement ในส่วนของ CPU Scheduler มีหลายอย่างเช่น
1.CPU Utilisation วัตถุประสงค์หลัก หรือเป้าหมายหลักของการใช้ CPU ให้คุ้มค่านั่นคือ การต้องให้ CPU ทำงานตลอดเวลา ค่าตัวเลขที่ใช้ในการแสดง ค่าของ CPU Utilisation จะใช้ตัวเลขเป็นเปอร์เซ็นต์เช่น ค่า 0-100 % โดยปกติใน system ที่จัดอยู่ในประเภทของ lighty loaded system ค่าของ CPU Utilisation จะอยู่ในช่วงประมาณ 40 % ในขณะที่ heavily loaded system จะมีค่าของ CPU Utilisation ประมาณ 90 %
2.Througput คือ จำนวน process ที่ได้ทำงานเสร็จ (ได้รับบริการ) ในช่วงเวลาหนึ่งๆ เช่น 10 process/ชั่วโมง หรือ 1 process/ชั่วโมง
3.Turnaround Time คือ ระยะเวลาที่ใช้ในการ service แต่ละ process นับตั้งแต่ process นั้นถูกส่ง (submit) เข้าทำงานจนกระทั่ง user ได้ผลลัพธ์กลับมา (ใน Batch system จะเห็นได้ชัดเจนระหว่างความแตกต่างของ Througput และ Turnaround Time นั้นคือ
Turnaround Time = Waiting time to get into memory +
Waiting in ready queue+
Executing on the CPU+
Doing I/O )
4. Waiting time คือ เวลาที่ process ใช้ในการรอ ready queue
5. Response time คือ เวลาที่ process ใช้ในการตอบสนอง ต่อคำสั่งของ user โดย Response time ไม่จำเป็นต้องเท่ากับ Turnaround Time เสมอไป Response time จะมีความจำเป็นมากกว่า Turnaround Time ใน interactive system
Scheduling Algorithms
ทบทวน dcpu scheduling คือการทำงาน(ของ cpu scheduler)เกี่ยวกับ
- การตัดสินว่า process ไหนใน ready queue ได้ใช้ cpu
- ใช้ Algorithm ต่างๆในการตัดสินใจ
ซึ่งมีหลาย Algorithm เช่น
First come, First-Served Scheduling
Shortest-Job-First Scheduling
Priority Scheduling
Round-Robin Scheduling
Multilevel Queue Scheduling
Multilevel Feedback Queue Scheduling
รายละเอียดของแต่ละ Algorithm ดังจะได้กล่าวต่อไปนี้คือ
First-Come, First-Served Scheduling (FCFS)
FIFS เป็น Algorithm ที่ง่ายที่สุดในการจัด cpu ให้แก่ process (หรือจัด process เข้าใช้ cpu) โดยจัดตามลำดับก่อนหลังของ process ที่อยู่ใน ready queue
Average waiting time ของ FCFS จะสูงเมื่อเทียบกับการจักการในรูปแบบอื่น ซึ่ง average waiting time ของ process คือค่าเฉลี่ยของเวลาที่แต่ละ process ต้องรอเพื่อเข้าใช้ cpu นั่นเอง

ปัญหา ที่อาจจะเกิดขึ้นได้ในกรณีที่มี cpu bounded process กำลังใช้ cpu อยู่และมีหลาย I/O ิbounded process รอใช้ cpu ในขณะหนึ่งๆเนื่องจาก cpu bounded process ใช้เวลานานในการใช้ cpu ทำให้ process อื่นๆ ที่รอ I/O operation ทั้งหมดหรือส่วนใหญ่พร้อมที่จะเข้าใช้ cpu ต่อ (I/O operation complete) ทำให้ process ส่วนใหญ่ต้องรอใน ready queue (queue นี้จะยาว) และขณะเดียวกันจะไม่มี process ไหนขอใช้ I/O ได้จนกว่าจะได้กลับเข้าใช้ cpu อีกครั้งทำให้เกิดการว่างงานของ I/O device
ในที่สุดเมื่อ cpu bounded process สิ้นสุด cpu burst cycle และกลับสู่การร้องขอ I/O device (เพื่อใช้ I/O) process ที่อยู่ใน ready queue ได้รับการจัดสรรเข้าสู่ cpu แต่ใช้ cpu ไม่นานนักและในที่สุดทุก process จะกลับเข้าไปรอใน I/O device queue ทำให้เกิดการว่างงานของ cpu (cpu idle) จนกระทั่ง cpu bounded process พร้องที่จะเข้าใช้ cpu ต่อก็จะเกิด cycle เดิม นั้นคือ process อื่นต้องรอใน ready queue (เมื่อ I/O operation complete) อีกเช่นเคยเหตุการณ์นี้ก่อให้เกิด Low CPU Utilization FCFS เป็นการ implement ในรูปแบบของ nonpreemptive scheme และไม่เหมาะสมใน time-sharing system

Shortest-Job-First Scheduling (SJF)
วิธีการของ Algorithm นี้คือการจัดสรร cpu ให้แก่ process ที่ต้องการใช้ cpu ที่มี cycle ของการใช้ cpu สิ้นสุดก่อน (หรือการจัด process ที่ใช้ cpu น้อยๆใน cycle ถัดไปให้เข้าใช้ cpu ก่อน process ที่มี cpu burst cycle ยาว)

ปัญหา ใน short-term scheduling จะไม่สามารถทราบ next cpu burst time ที่แน่นอนได้นอกจากการประมาณค่า เช่น ประมาณค่าจาก cpu burst cycle ก่อน (ใน long-term scheduling อาจจะได้ค่าของ cpu burst time จากการกำหนดของ user ในช่วงของการ submit โปรแกรมนั้นๆเข้าสู่ ready queue)
SJF Algorithm เป็นได้ทั้ง preemptive และ nonpreemptive scheme ในกรณีที่ใช้รูปแบบของ preemtive scheme นั้นเมื่อมี job ใหม่เข้ามาสู่ ready queue ที่มี cpu burst time น้อยกว่า cpu burst time ส่วนของ process ที่กำลังใช้ cpu อยู่ process นั้นจะถูกขัดจังหวะ (preempt) และนำออกจาก cpu เพื่อให้ job ที่มี cpu burst time น้อยกว่าเข้าใช้ cpu แทนดังนั้นในบางครั้งวิธีการนี้จะเรียกว่า Shortest-Remaining-Time-First หากวิธีการ implement ของ SJF เลือกใช้รูปแบบของ nonpreemtive scheme job ที่เพิ่งเข้ามาสู่ ready queue ต้องรอจนกว่า process ที่กำลังรอใช้ cpu ปล่อย cpu ใน cycle นั้นก่อนจึงจะได้รับการจัดสรร cpu ถึงแม้ว่า cpu burst time จะน้อยกว่า process ที่กำลังใช้ cpu ก็ตาม

Priority Scheduling
เป็นการจัดลำดับ process ที่จะเข้าใช้ CPU ตามลำดับสิทธิ์ของแต่ละ process ดังนั้นในการจัดการ ในรูปแบบนี้ ทุก process จะมีค่าที่กำหนดสิทธิ์ (priority) ของตนเอง และ process ที่มีค่าสิทธิ์สูงสุด จะได้รับการจัดสรรค์ CPU ให้ใช้ในช่วงเวลานั้น ๆ และ process ที่มี priority รองลงมา จะได้รับการจัดสรรค์ CPU ให้ใช้ถัดไปตามลำดับ

ค่า priority กำหนดได้ทั้งจากภายใน (internallity defined) และจากภายนอก (externally defined) โดยที่การกำหนดจากภายในของระบบเอง สามารถทำได้โดยการ คำนวณจากค่าตัวแปรหรือค่าที่เกี่ยวข้องต่างๆ เช่น เวลา หรือ จำนวน memory ที่ process ต้องการ หรือแม้แต่จำนวนไฟล์ ที่ process ต้องการ ฯลฯ จะเห็นได้ว่าค่าเหล่านี้ขึ้นอยู่กับรูปแบบ และการทำงานของแต่ละ process และสามารคำนวณได้เมื่อ process นั้นๆ ใช้ทรัพยากรต่างๆ ของระบบ แต่ค่าลำดับสิทธิ์ ที่กำหนดจากภายนอก โดยทั่วไปจะเป็นการกำหนดจากขอบข่ายอื่นๆ ที่ไม่เกี่ยวข้องกับ การใช้ทรัพยากรของระบบโดยตรง เช่น การกำหนดความสำคัญของหน่วยงาน (เจ้าของ process) หรือค่าเช่าใช้ CPU ฯลฯ

ปัญหา สำคัญที่เกิดขึ้นเนื่องจากการใช้ algorithm นี้คือ การที่ process ต่างๆ ซึ่งมี priority ต่ำหรือต่ำมาก ไม่ได้รับการจัดสรร CPU เลย ถ้าหากในระบบนั้นๆ มี process ที่มีค่า priority สูง เข้ามาสู่ระบบตลอดเวลา เนื่องจาก process เหล่านี้จะได้รับการจัดสรร CPU เสมอ และ process ที่มี priority ต่ำ จะต้องรอจนกว่าไม่มี process อื่น ๆ ซึ่งมี priority สูงกว่าอีกแล้ว ปัญหาในรูปแบบนี้เรียกว่า "Indefinite blocking" หรือ "starvation"
เพื่อแก้ปัญหาดังกล่าวได้นำวิธีการที่เรียกว่า "Aging" มาช่วย นั่นคือ การกำหนดให้ ค่า priority สูงขึ้น เมื่อ process นั้นๆ ต้องรอ ใน ready queue เป็นเวลานาน เพื่อสามารถเข้าแข่งขัน เพื่อขอใช้ CPU ได้ด้วย วิธีการนี้จะทำให้ process ที่มีค่า priority ต่ำ สามารถเข้าใช้ CPU ได้
เมื่อเวลาผ่านไป (ไม่ต้องรอแบบไม่มีกำหนด)

Round-Robin Scheduling
เป็นการจัดสรรอีกรูปแบหนึ่งที่ถูกออกแบบมาสำหรับระบบ time sharing โดยที่การทำงาน คล้ายกับ FCFS Scheduling นั่นคือ process ได้รับการจัดลำดับ ใน ready queue ตามลำดับการเข้าสู่ระบบ (เข้าสู่ queue) แต่อย่างไรก็ตาม process ที่กำลังใช้ CPU สามารถใช้ CPU ได้ในระยะเวลาจำกัดในแต่ละครั้ง นั่นคือมีการกำหนดช่วงเวลา ที่แต่ละ process จะใช้ CPU ได้ เรียกว่า time quantum หรือ time slice เมื่อ process ใด ๆ ใช้ CPU ครบเวลา 1 time quantum แล้ว process นั้นจะต้องออกจาก CPU กลับไปสู่ ready queue ในลำดับถัดไป และ CPU จะได้รับการจัดสรร ให้แก่ process ในลำดับต้น queue ใน ready queue ต่อไป

ถึงแม้ว่าการจัดการในรูปแบบนี้ จะทำให้ process ต่างๆใน ready queue ได้รับการจัดสรรให้ใช้ CPU ในอัตราส่วนที่ใกล้เคียงกัน นั่นคือ แต่ละ process มีโอกาสได้เข้าใช้ CPU แน่นอน เมื่อเวลาผ่านไประยะหนึ่ง แต่ค่าเฉลี่ยในการรอคอยเข้าใช้ CPU ของการจัดในรูปแบบนี้จะค่อนข้างสูง
RR Scheduling เป็นการจัดการแบบ Preemptive เสมอ เนื่องจากแต่ละ process สามารถเข้าใช้ CPU ได้มากที่สุดหรือนานที่สุด เท่ากับระยะเวลาของ 1 quantum time เท่านั้น ในการเข้าใช้ CPU หนึ่งรอบ และ process ที่ถูกออกจาก CPU และกลับไปรอใน ready queue burst time มากกว่า 1 quantum time
ในการจัดการแบบนี้ สามารถประมาณเวลาที่แต่ละ process ต้องรอใน ready queue ได้เสมอ นั้นคือ
ถ้าให้ มี process ทั้งหมดใน ready queue คือ n process
quantum time คือ q นั้นคือแต่ละ process จะได้รับการจัดสรรให้ใช้ CPU ทุกๆ 1/n (รอบละ q milliseconds)
แต่ละ process จะรอนานที่สุดไม่เกิน (n-1)*q milliseconds ในแต่ละรอบ
ตัวอย่าง ถ้าให้มี process ใน ready queue ทั้งหมด 5 process และ quantum time คือ 20 milliseconds
จะได้ว่า แต่ละ process จะได้รับการจัดสรร CPU สูงสุด 20 milliseconds ในทุกๆ 100 milliseconds ในแต่ละรอบ (และ process จะรอไม่เกิน 80 milliseconds เพื่อเข้าใช้ CPU ในแต่ละครั้ง)
ประสิทธิภาพของการจัดสรร Scheduling แบบนี้ขึ้นอยู่กับขนาดของ quantum time เป็นหลัก ในกรณีที่ให้ quantum time กว้างมากเช่นมากกว่า CPU Burst time ของแต่ละ process จะได้ว่าการจัด CPU Scheduling ในกรณีนี้ก็คือ การจัดแบบ FCFS นั้นเอง แต่ถ้าให้ขนาดของ quantum time เล็กมาก (เช่น 1 milliseconds) แต่ละ process จะได้ รับการจัดสรร CPU ใน ระยะเวลาสั้นมากเช่นเดียวกัน ทำให้ user มีความรู้สึกว่า CPU ของตนเองโดยเฉพาะ (เนื่องจากได้รับการจัดสรร CPU ในช่วงระยะเวลาถี่มาก) และการจัดแบบนี้เรียกว่า process sharing
อย่างไรก็ตาม ในการกำหนดขนาดของ quantum time ใน RR Scheduling ต้องคำนึง overhead ที่จะเกิดจากการทำ Context Switching ด้วยเพื่อพิจารณาประสิทธิภาพโดยรวมของระบบ เนื่องจากถ้ากำหนด quantum time ขนาดเล็กจะก่อให้เกิด จำนวนครั้งของการเกิด Context Switching สูงมากกว่าในการกำหนดให้ ขนาดของ quantum time ใหญ่
นอกจากนี้ turn around time ของ process ก็ขึ้นอยู่กับขนาดของ Quantum time เช่นเดียวกัน ถ้าขนาดของ Quantum time เล็กมาก จำนวนของ Context Switching ที่เกิดขึ้นมากครั้ง จะเป็นตัวทำให้ turn around time ของ process เพิ่มขึ้นด้วยเช่นกัน และโดยปกติ turn around time ของ process ต่างๆ จะดีถ้า process สามารถ ทำงานได้เสร็จในช่วงของการได้รับการจัดสรร CPU ในรอบถัดไป (นั้นคือ burst time ที่เหลือจะน้อยกว่าขนาดของ quantum time จะไม่ต้องรอ CPU ในรอบถัดไปอีก)

การจัดตารางการทำงานแบบแถวคอยหลายระดับ (Multilevel Queue Scheduling)
ขั้นตอนวิธีในการจัดตารางการทำงานแบบคอยหลายระดับนี้ เริ่มจากการจัดแถวพร้อมของระบบออกเป็นหลายๆ แถวแยกจากัน ดังแสดงในรูป และกระบวนการที่เข้าสู่ระบบก็จะถูกกำหนดให้เข้าแถวที่แน่นอนตายตัว เพื่อเข้าไปใช้หน่วยประมวลผลกลาง ภายในแถวพร้อมแต่ละแถวก็จะมีการจัดตารางการทำงานของแต่ละแถวต่างหาก
นระบบมีแถวพร้อมอยู่ 5 แถว ดังนี้
- งานของระบบ
- งานแบบโต้ตอบ
- งานแก้ไขข้อมูล
- งานแบบกลุ่ม
- งานของนักศึกษา
การจัดตารางการทำงานแบบจัดลำดับหลายระดับแบบเลื่อนชั้นได้ (Multilevel Feedback Queue Scheduling)
การจัดตารางการทำงานแบบจัดลำดับหลายระดับแบบเลื่อนชั้นได้นี้ จะมีวิธีการในการทำงานที่แก้ข้อเสียดังกล่าว โดยเมื่อกระบวนการใดใช้เวลาในการทำงานกับหน่วยประมวลผลกลางนานเกินไป กระบวนการนั้นจะถูกย้ายลงไปในแถวที่มีค่าศักดิ์ต่ำกว่าแถวเดิม วิธีนี้จะทำให้กระบวนการที่เน้นการรับส่งข้อมูล และกระบวนการโต้ตอบถูกจัดอยู่ในแถวพร้อมที่มีศักดิ์สูงขึ้นในทำนองเดียวกันเมื่อกระบวนการใดกระบวนการหนึ่งรอคอยอยู่เป็นเวลานานมากแล้วในแถวที่มีศักดิ์ต่ำ กระบวนการนั้นก็สามารถที่จะย้ายไปต่อในแถวที่มีศักดิ์สูงขึ้นได้ ซึ่งวิธีการดังกล่าวเป็นรูปแบบหนึ่งของการเพิ่มศักดิ์ แสดงการจัดลำดับหลายระดับแบบเลื่อนชั้นได้
การทำงานโดยวิธีการจัดตารางการทำงานแบบจัดลำดับหลายระดับแบบเลื่อนชั้นได้นี้ ถูกกำหนดโดยพารามิเตอร์ดังนี้
จำนวนแถวพร้อม
ขั้นตอนวิธีในการจัดตารางการทำงานของแต่ละแถว
วิธีที่จะใช้ในการพิจารณาเพื่อที่จะยกระดับให้กระบวนการที่มีค่าศักดิ์สูงขึ้น
วิธีที่จะใช้ในการพิจารณาเพื่อที่จะลดระดับให้กระบวนการที่มีค่าศักดิ์น้อยลง
วิธีที่จะใช้ในการพิจารณาว่า เมื่อกระบวนการเช้ามาในระบบ ควรจะให้อยู่ในแถวใด
การจัดตารางการทำงานสำหรับหลายหน่วยประมวลผล (Multiple Processor Scheduling)
ถ้าหน่วยประมวลผลมีหลายแบบ วิธีการจัดตารางก็จะถูกจำกัดมาก แต่ละหน่วยประมวลผลก็จะมีแถวคอยเป็นของตนเอง เพราะกระยวนการต่างๆย่อมมีลักษณะเฉพาะที่จะทำงานได้ในหน่วยประมวลผลแบบหนึ่งแบบเดียว กระบวนการจึงต้องเข้าไปทำงานตามหน่วยประมวลผลที่เหมาะสม โดยแยกแถวคอยกันเอง
ถ้าหน่วยประมวลผลเป็นแบบเดียวกันหมด เราสามารถเฉลี่ยแบ่งงานกันทำได้ดีขึ้น โดยอาจให้มีแถวคอยแยกแต่ละหน่วยประมวลผล แต่วิธีนี้อาจทำให้หน่วยประมวลผลบางตัวว่างงาน ในขณะที่บางตัวงานหนัก เราจึงควรใช้แถวคอยร่วมแถวเดียวกันให้ทุกๆ กระบวนการเข้าแถวคอยเดียวกันหมด เมื่อมีหน่วยประมวลผลใดว่าง ก็จะให้รับงานไปจากแถวคอยนี้
การจัดแถวคอยร่วมนี้ อาจแบ่งได้เป็น 2 วิธี
- ให้หน่วยประมวลผลแต่ละตัวจัดตารางการทำงานเอง
- กำหนดให้หน่วยประมวลผลหนึ่งมีหน้าที่จัดตารางการทำงานโดยเฉพาะ
การจัดตารางการทำงานแบบตอบสนองฉับพลัน (Real Time Scheduling)
การจัดตารางการทำงานแบบตอบสนองฉับพลันนี้แบ่งเป็น 2 ประเภท คือ
1. Hard Real time System ต้องการเวลาที่คงที่แน่นอน ตายตัว
2. Soft Real time System เป็นระบบที่ทำงานโดยไม่ต้องมีเวลามาจำกัด
การประเมินอัลกอริทึม (Algorithm Evaluation)
วิธีการจัดตารางมีหลายวิธี แต่ละวิธีมีตัวแปรและลักษณะเฉพาะ ทำให้การเลือกวิธีที่เหมาะสมหรือดีที่สุดทำได้ยาก
ขั้นแรกจำเป็นต้องกำหนดคุณสมบัติก่อนว่า ต้องการคุณลักษณะใด มีค่าเท่าใด เช่น
ให้ได้ประสิทธิผลการใช้หน่วยประมวลผลสูงสุดที่เวลาตอบสนองนานที่สุด ไม่เกิน 1 วินาที
ให้มีอัตรางานเสร็จสูงที่สุด โดยที่วงรอบการทำงาน เป็นสัดส่วนโดยตรงกับการประมวลผลจริง
แสดงการประเมินของตัวจัดตารางของหน่วยประมวลผล

หน่วยที่ 4 Processes

Process Concept
Process Scheduling
Operation on Processes
Cooperating Processes
Interprocess Communication

Process Concept แนวคิดของ Process
หน้าที่ในการจัดการระบบภายในแนวคิดของ Process ของการจัดการระบบ OS มีด้วยกันทั้งหมด 2 ประเภทคือ
1.เป็นแบบกลุ่ม มีอยู่ด้วยกันเช่น MS DOS
2. เป็นแบบการแบ่งส่วนเวลาทำงานพร้อม ๆ กัน เช่น XP , UNIX
โดยทั่วไปโปรแกรมที่กำลัง Execution อยู่ จะเรียงลำดับเรื่อย ๆ กันไป ซึ่งจะมีโปรแกรมที่สมบูรณ์แบบคือ
1.โปรแกรมนับจำนวน (program counter)
2. คำสั่งโปรแกรม (stack)
3. ข้อมูลที่โปรแกรมต้องการประกอบการทำงาน (data section)
Process State สถานะของ Process
ซึ่งอาจจะมีการเปลี่ยนแปลงดังต่อไปนี้
1. เริ่มต้น
2. พร้อมที่จะทำงาน
3. ครอบครอง CPU (กำลังประมวลผล)
4. สถานะคอย กำลังรอคอยเหตุการณ์บางอย่างที่จะเกดขึ้น และกำลังรอคอย I/O
5. Block/Interrup เกิดการขัดจังหวะของอุปกรณ์ I/O
6. Terminated สิ้นสุดการทำงาน
Process Control Block (PCB)
PCB คือพื้นที่ ในหน่วยความจำที่ OS กำหนดไว้เพื่อเก็บข้อมูลที่สำคัญของ Process ซึ่งประกอบไปด้วย
1. เก็บสถานะของ Process
2. ตัวชี้โปรแกรมเป็นตัวชี้ตำแหน่งที่อยู่ของคำสั่ง
3. Register ของหน่วยประมวลผลกลาง
4. ข้อมูลการทำงานของ CPU
5. ข้อมูลสารสนเทศของข้อมูลหน่วยความจำ
6. เก็บข้อมูลการ Account
7. ข้อมูลแสดงภาพการ I/O ที่ Process ใช้
Process Scheduling
Process Scheduling Queues การจัดตารางแถวคอย
1. Job queue การตั้งค่า Process ในระบบ
2. Ready queue พร้อมที่จะทำงานแต่รอการใช้งาน
3. Device queues เนื่องจากในระบบซึ่งมี I/O หลายตัว และแต่ละ I/O จะมีแถวคอยเป็นของตัวเอง
Schedulers ตัวจัดตารงการทำงานของ Process
Long-term คือ ตัวจัดตารางระยะยาว คือ เลือก Process จากหน่วยเก็บข้อมูลเพื่อเข้าสู่หน่วยความจำ
Short-term คือ ตัวจัดตารางระยะสั้น คือ เลือก Process ที่อยู่ในสถานะรอเพื่อนำมาใช้เป็นหน่วยประมวลผลกลาง
Medium-term คือ ตัวจัดการตารางระยะกลาง คือ ย้าย Process ออกจากหน่วยความจำหลักเพื่อลดจำนวน Process ที่มีมากเกินไปในหน่วยความจำ เพื่อทำให้ CPU ทำงานได้ดีและเร็วขึ้น
Context Switch การเปลี่ยนงาน
เมื่อ Process ทำงานในหน่วยประมวลผลเสร็จแล้วจะต้องมีการเปลี่ยนแปลง จาก Process นึง ไปยัง Process นึง อีกคือ จากสถานะ Process เก่า ซึ่งจะเปลี่ยนไปยังสถานะ Process ใหม่
Overhead ค่าโสหุ้ย
หมายถึง เวลาที่สูญเสียไปหากมีเวลาการเปลี่ยนสถานะมากขึ้นหรือถี่ขึ้น CPU ก็ต้องเอาเวลาส่วนหนึ่งในการเก็บสถานะเดิมของ Process ทำให้ CPU สูญเสียเวลาไปกับการเก็บสถานะ
Process Creation การสร้าง Process
Process หนึ่ง อาจสร้าง Process ใหม่ได้หลาย Process
ซึ่งจะมีชื่อเรียก Process ที่เป็นผู้สร้างชื่อว่า Process แม่
โดยจะมีชื่อเรียก Process ที่ถูกสร้างมาชื่อว่า Process ลูก
และ Process ใหม่จะสร้างโดย System core ที่เรียกว่า fork จาก Process ลูก
Process แม่และ Proces ลูกจะทำการ Execution ไปพร้อมกัน Process แม่จะรอคอยจนกระทั่ง Process ลูกสิ้นสุดการ Execution แล้วจึงเริ่มต้นทำงาน
Process Termination การสิ้นสุด
ระบบจะคืนข้อมูลจาก Process ลูก ไปยัง Process แม่ด้วยคำสั่ง via wait
Process จะต้องคืนทรัพยากรณ์ทั้งหมดให้กับ OS
สิ้นสุดการทำงานของ System core คือใช้คำสั่ง abort
- Process แม่จะหยุดหรือยกเลิก Process ลูก
- เมื่อ Process แม่สิ้นสุด Process ลูกก็จะต้องสิ้นสุดด้วย คือ การยกเลิก แบบลูกโซ่
Coperating Processes การทำงานร่วมกันของ Process
1. Process แบบอิสระ Process นี้จะไม่มีผลกระทบต่อ Process อื่นในระบบ
2. Process ที่ต้องทำงานร่วมกัน Process จะต้องมีการกระทบกับ Process อื่น ๆ ได้
3. ข้อดีของการทำงานร่วมกันของ Process
- การร่วมกันใช้ข้อมูลข่าวสารรวบรัดขึ้น และเร็วขึ้น
- ทำให้การคำนวนเร็วขึ้น
- มีระบบย่อย
- มีความสะดวกสบาย
Inter Process Communication การติดต่อภายในระหว่าง Process กับแต่ละ Process เรียกว่า massage system เป็นระบบที่มีประสิทธิภาพในการติดต่อสื่อสาร
วิธีการติดต่อ
1. Direct Communication การติดต่อโดยตรง Process จะส่งข้อมูลระหว่างกัน
2. InDirect Communication การติดต่อโดยอ้อม คือการส่ง Massage ไปยัง Mail box แล้วส่งต่อไปยัง Process อีกทีหนึ่ง

หน่วยที่ 3 Computer-System Structures

System Components ส่วนประกอบของระบบ
System Calls ระบบเรียก
System Programs โปรแกรมระบบ
System Structure โครงสร้างระบบ
Virtual Machines เครื่องจักรเสมือน
System Design and Implementation การออกแบบและการนำไปใช้

System Components ส่วนประกอบของระบบ
Process Management การจัดการกระบวนการ
Main Memory Management การจัดการหน่วยความจำหลัก
Secondary-Storage Management การจัดการหน่วยความจำสำรอง
I/O System Management การจัดการ input , ouput
File Management การจัดการแฟ้มข้อมูล
Protection System การป้องระบบ
Networking ระบบเครือข่าย
Command-Interpreter System ระบบแปรคำสั่ง
Process Management การจัดการกระบวนการ
OS จะทำตามอัตราส่วนการติดต่อกับการจัดการกระบวนการ ดังนี้
- สร้าง Process และทำลาย Process
- หยุด Process แล้วก็ทำงานต่อ
- สร้างกลไกขึ้นมาสำหรับ การประสานเวลาของ Process และการติดต่อสื่อสารของ Process
I/O System Management การจัดการ Input Output
โดยมีการจัดการดังนี้
ระบบการพักข้อมูล
การเรียกใช้ตัวควบคุมอุปกรณ
ตัวควบคุมอุปกรณ์
Protection System การป้องกันระบบ
ระบบปฏิบัติการจะต้องมีการป้องกันความผิดพลาดที่เกิดขึ้นจากกระบวนการหนึ่งไปยังอีกกระบวน การหนึ่งโดยสร้างขึ้นมาเพื่อป้องกันข้อมูลโดยเฉพาะ
Networking (Distributed Systems) ระบบเครือข่ายแบบกระจาย
ระบบจะมีหน่วยความจำเป็นของตัวเองและจะมีนาฬิกาเป็นของตัวเองด้วย การติดต่อระหว่างหน่วยประมวลผลกลาง จะติดต่อในระบบเครือข่ายคอมพิวเตอร์ที่มีความเร็วสูง ระบบจะมีผลดีดังนี้
- ระบบสามารถทำงานได้เร็วขึ้น
- การเข้าถึงข้อมูลสามารถทำได้ดีมากขึ้น
- ระบบเครือข่ายมีความน่าเชื่ถือมากขึ้น
Additional Operating System Functions การเพิ่มฟังชั่นของ OS
อำนวยความสะดวกและประกันประสิทธิภาพของระบบด้วยวิธีการที่เหมาะสม ซึ่งมีวิธีการดังต่อไปน
- จัดการทรัพยากรอย่างเหมาะสม เลือกทำงานในงานที่สำคัญก่อน
- ทำบัญชีเก็บและบันทึกข้อมูลการทำงานของผู้ใช้ โดยจดัเก็บทำในรูปแบบบัญชี
- ระบบป้องกัน OS จะต้องมีตัวป้องกันจึงจะแยกคนใช้หลาย ๆ คนได้โดยการใช้ password
System Calls ระบบเรียก
ซึ่งจะเป็นตัวที่คอยประสานโปรแกรมที่รันอยู่กับ OS
โดยจะทำงานโดยการส่งผ่าน registers และถ้ามีตัวแปรมากกว่าพารามิเตอร์อาจส่างผ่านหน่วยความจำแล้วส่งผ่านไปยัง registers ซึ่งโปรแกรมจะเอาข้อมูลลงใน stack หน่วยความจำและให้ระบบดึงข้อมูลออกมาจากหน่วยความจำ
System Program ระบบโปรแกรม
ระบบโปรแกรมจะมีสิ่งแวดล้อมสำหรับใช้ในการพัฒนาโปรแกรม ซึ่งระบบจะมีการใช้งานดังนี้
- การใช้แฟ้มข้อมูล
- ข้อมูลสถานะระบบ
- การดัดแปลงข้อมูล
- ตัวแปรภาษา
- ตัวนำโปรแกรมเข้าสู่หน่วยความจำ
- การสื่อสาร
- โปรแกรมประยุกต์
System Structure - Simple Approach โครงสร้างระบบอย่างง่าย ๆ
โครงสร้างระบบอย่างง่าย ๆ นี้ถูกออกแบบมาซึ่งสามารถทำงานได้มากที่สุดโดยการใช้เนื้อที่น้อยที่สุด คือ
- ไม่มีการแบ่งโมดูล
- MS-DOS มีโครงสร้างของระบบเชื่อมต่อกัน ซึ่งจะไม่มีการแบ่งอย่างชัดเจน
Virtual Machines เครื่องจักรเสมือน
มีการแบ่งระบบออกเป็นชั้น ๆ ชั้นล่างสุดเป็น hardware ชั้นกลางเป็นแกนกลางของระบบ ชั้นบนสุดเป็นโปรแกรมของผู้ใช้
ข้อดีของ Virtual Machines
ซึ่งจะไม่มีปัญหาด้านความปลอดภัยในระบบที่สมบูรณ์ จะทำงานเสมือนว่ามีเครื่องจักรแยกเป็นิสระหลาย ๆ เครื่อง จะเอาไปช่วยงานในด้านการวิจัยระบบปฏิบัติการได้สะดวกขึ้น และยังแก้ปัญหาการเข้ากันไม่ได้ของระบบได้อีกด้วย
System Design Goals จุดมุ่งหมายของการออกแบบระบบ
- เพื่อความต้องการของผู้ใช้ ซึ่งง่าย,สะดวกสบาย
- ความต้องการของระบบซึ่งใช้ได้ง่าย,สร้างง่าย,รักษาง่าย,ไม่มีข้อผิดผลาด
Machanisms and Policies วธีการและนโยบาย
โดยวิธีการจะอธิบายว่าจะทำคำสั่งอย่างไร ส่วนนโยบายจะเป็นตัวกำหนดว่าควรทำอย่างไร
System Implementation การสร้างระบบ
ซึ่งการสร้างระบบนี้จะสามารถเขียนได้ด้วยภาษา assemblyและต่อมาได้มีการเขียนด้วยภาษาระดับสูง คือ ภาษา C ซึ่งการเขียนด้วยภาษา C นั้นสามารถเขียนได้รวดเร็ว กะทัดรัด เข้าใจง่าย และการย้ายพอร์ทไปยังเครื่องอื่นก็ทำได้ง่ายด้วย

หน่วยที่ 2 Computer-System Operation

Computer System Operation
I/O Structure
Storage Structure
Storage Hierarchy
Hardware Protection
General System Architecture

หน้าที่โดยทั่วไปของสัญญาณขัดจังหวะ
- สัญญาณขัดจังหวะจะส่งการควบคุมไปยัง Interrupt service routine ผ่านทางตารางสัญญาณขัดจังหวะ
- สถาปัตยกรรมของสัญญาณขัดจังหวะ จะต้องบันทึกตำแหน่งของชุคำสั่งที่ถูกขัดจังหวะไว้
- สัญญาณขัดจังหวะที่เข้าสู่ระบบจะถูก Disable ถ้ามีการทำงานของสัญญาณขัดจังหวะตัวอื่นอยู่ก่อนแล้ว เพื่อป้องกันการสูญหายของสัญญาณขัดจังหวะ
- ในระบที่ซับซ้อนขึ้นอาจยอมให้มรการขัดจังหวะซ้อนๆ กันได้โดยเรียงตามศักดิ์ สัญญาณที่มีศักดิ์สูงกว่าอาจขัดจังหวะสัญญาณที่มีศักดิ์ต่ำกว่า แต่ถ้ามีศักดิ์เท่ากันต้องรออินเตอร์รัปต์พร้อมกันไม่ได้
- ระบบปฏิบัติการยุคใหม่ใช้ ตัวขับสัญญาณขัดจังหวะ ถ้าไม่มีการโปรเซส ไม่มีการเรียกใช้อุปกรณ์รับส่งข้อมูล ไม่มีการตอบสนองผู้ใช้ ระบบปฏิบัติการก็ไม่ต้องทำอะไร นั่นเป็นสัญญาณบอกเหตุว่าเกิดอินเตอร์รัปต์หรือแทร็ป
- แทร็ป คือ Software generated interrupt ซึ่งเกิด Error หรือไม่ก็เกิดจากการร้องขอของโปรแกรมของผู้ใช้

โครงสร้างของการรับส่งข้อมูล (I/O Structure)
การขัดจังหวะการรับ –ส่งข้อมูล

เมื่อI/Oเริ่มทำงาน ซีพีย๔จะโหลดรีจิสเตอร์ที่จำเป็นมาไว้ในดีไวซ์คอนโทลเลอร์ ซึ่งดีไวซ์คอนโทรลเลอร์จะทำการตรวจสอบรีจิสเตอร์เหล่านั้น เพื่อกำหนดว่าจะทำงานอะไร
การรับ-ส่งข้อมูลแบบสัมพันธ์
- เมื่อการรับส่งข้อมูลเริ่มขึ้น การจะโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้ จะทำได้หลังจากเสร็จการรับส่งข้อมูลเท่านั้น
- ในการรอรับส่งข้อมูลเสร็จมี2วิธี
1.คอมพิวเตอร์บางเครื่องมีชุดคำสั่ง wait พิเศษ ซึ่งปล่อยให้ซีพียูว่าง จนกระทั่งเกิดสัญญาณขัดจังหวะถัดไป
2.เครื่องจักรที่ไม่มีชุคำสั่งดังกล่าว อาจจะมี wait loop
- ถ้าซีพียูต้องรอให้รับส่งข้อมูลเสร็จงานก่อนเสมอ แสดงว่าต้องมีการร้องของของ I/Oอยู่หนึ่งตัวที่เด่นอยู่ตลอดเวลา ดังนั้นเมื่อเกิดสัญญาณกรขัดจังหวะการรับส่งข้อมูล ระบบปฏิบัติการจะรู้ทันทีว่า ดีไวซ์กำลังถูกขัดจังหวะ แต่ไม่สามารถประมวลผล I/O device หลายๆตัวพร้อมกันได้
- ตัวอย่างของระบบนี้คือ ระบบปฏิบัติการ MS-DOS เวลาสั่งพิมพ์ ต้องรอเสร็จงานก่อนจึงจะทำงานต่อไปได้
การรับส่งข้อมูลแบบไม่สัมพันธ์
- เมื่อการรับส่งข้อมูลเริ่มขึ้น การโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้ทำได้โดยไม่ต้องรอให้การรับส่งข้อมูลเสร็จ
- คำสั่งร้องขอระบบปฏิบัติการ อนุญาตให้โปรแกรมของผู้ใช้รอคอยให้รับบส่งข้อมูลเสร็จ
- ตารางที่ระบบปฏิบัติการใช้เก็บบันทึกของอุปกรณ์รับส่งข้อมูลแต่ละตัว คือ Device status table ซึ่งใช้แสดงชนิดของอุปกรณ์ ที่อยู่ และสถานะ (ว่าง กำลังทำงาน หรือเสีย)

โครงสร้างของ DMA (Direct Memory Access Structure)
- ใช้สำหรับอุปกรณ์รับส่งข้อมูลที่มีความเร็วสูง เช่น เทป จานเม่เหล็ก หรือข่ายงานสื่อสาร อาจมีความเร็วในการส่งข้อมูลได้ใกล้เคียงกับความเร็วของหน่วยความจำ
- มีการใช้ Direct Memory Access มาแก้ไขปัญหา สำหรับอุปกรณ์ที่มีควาเร็วสูงเหล่านี้ ตัวควบคุมอุปกรณ์จะส่งข้อมูลจากบัฟเฟอร์ของตนมายังหน่วยความจำหลักโดยตรงทีละชุด โดยไม่ได้อาศัยหน่วยประมวลผลกลางเลย
- การทำงานก็เหมือนเดิม คือ เมื่อโปรแกรมของผู้ใช้ต้องการรับส่งข้อมูลไปยังอุปกรณ์เหล่านี้ ระบบก็จะจัดบัฟเฟอร์
โครงสร้างของหน่วยเก็บข้อมูล (Storage Structures)
หน่วยความจำหลักหรือเมนโมรีอย่างถาวร แต่ทำไม่ได้ด้วยเหตุผล 2 ประการ
1.หน่วยความจำหลักเล็กเกินไปที่จะเก็บโปรแกรมและข้อมูลที่จำเป็นทั้งหมดอย่างถาวร
2.หน่วยความจำหลักเป็นอุปกรณ์ที่ใช้เก็บข้อมูลแบบชั่วคราว เพราะเมื่อเครื่องปิดข้อมูลก็หาย
ลำดับของหน่วยเก็บข้อมูล (Storage Hierarchy)
แบ่งตาม สปีด ราคา และ Volatility ระดับบนสุดก็แพงแต่ทำงานได้รวดเร็ว ข้อมูลในหน่วยเก็บข้อมูลแบบชั่วขณะ จะหสยไปเมื่อปิดเครื่อง
มนโมรี แคช และรีจิสเตอร์ คือ Volatile storage แต่จานแม่เหล็กออปติคัลดิสก์ และเทปแม่เหล็กเป็น Nonvolatile storage ส่วนอิเล็กทรอนิกส์ดิสก์เป็นแบบชั่วขณะและถาวร
การป้องกันของฮาร์ดแวร์ (Hardware Protection)
ข้อผิดพลาดหลายอย่างมักจะตรวจสอบได้โดยฮาร์ดแวร์ ซึ่งสามารถควบคุมได้โดยระบบปฏิบัติการ ซึ่งจะทำการจัดการข้อผิดพลาดนั้นไปเลย
ระบบการทำงานแบบ 2ช่วง (Dual Mode Operation)
ระบบที่ดีต้องสามารถป้องกันตัวระบบเอง โปรแกรมอื่นและข้อมูลจากโปรแกรมอื่นๆ ไม่ให้เกิดข้อผิดพลาด การป้องกันนี้ต้องอาศัยฮาร์ดแวร์ให้สามารถแยกควาแตกต่างของช่วงการทำงานออกเป็น 2ช่วง คือ User mode และ Monitor mode
การป้องกันของการรับ-ส่งข้อมูล (I/O Protection)
เพื่อป้องกันอุปกรณ์รับส่งข้อมูลต่างๆ เรากำหนดให้คำสั่งสำหรับร้องขออุปกรณ์ทุกชนิดเป็นคำสั่งสงวน ดังนั้นผู้ใช้จะไม่สามารถสั่งไปยังอุปกรณ์ได้โดยตรง แต่ต้องร้องขอผ่านระบบปฏิบัติการเสมอ
การป้องกันของหน่วยความจำ (Memory Protection)
การป้องกันนี้ทำได้โดยรีจิสเตอร์ 2 ตัว เรียกว่า ฐาน และขอบเขต
- รีจิสเตอร์ฐาน จะเก็บค่าตำแหน่งสุดท้ายที่ยอมให้ใช้ได้ในเมนโนรี
- รีจิสเตอร์ขอบเขต จะเก็บขนาดของเนื้อที่ทั้งหมดของงาน
การป้องกันของหน่วยประมวลผลกลาง (CPU Protection)
ในการประกันว่า การควบคุมจะย้ายกลับมายังระบบเสมอ แม้ว่าจะมีงานบางงานทำงานวนรอบอย่างไรไม่มีสิ้นสุด เราสามารถทำได้โดยการใช้นาฬิกาจับเวลา นาฬิกานี้จะส่งสัญญาณไปขัดจังหวะฮาร์ดแวร์ ทำให้การควบคุมย้ายกลับมาที่ระบบปฏิบัติการ ซึ่งระบบอาจจะแก้ไขข้อผิดพลาด หรือต่อเวลาให้กับโปรแกรมผู้ใช้อีกก็ได้ คำสั่งในการกำหนดค่านาฬิกาจับเวลานี้ต้องเป็นคำสั่งสงวนด้วย
สถาปัตยกรรมของระบบโดยทั่วไป (General System Architecture)
เนื่องจากคำสั่งเกี่ยวกับการรับส่งข้อมูลเป็นคำสั่งสงวน ดังนั้นผู้ที่จะทำคำสั่งนี้ได้ก็คือระบบปฏิบัติการเท่านั้น โปรแกรมผู้ใช้งานไม่สามารถใช้คำสั่งรับส่งข้อมูลได้เอง ไม่ว่าจะเป็นการใช้อย่างถูกต้องหรือไม่ก็ตาม ปัญหานี้แก้ไขได้ โดยถ้าผู้ใช้ต้องการใช้อุปการณ์รับส่งข้อมูล ก็ต้องร้องขอให้ผู้ควบคุมทำแทนจึงจะสามารถใช้ได้

หน่วยที่ 1 Introduction

What is an operating system ?
Simple Batch System
Multiprogramming Batched Systems
Time-Sharing Systems
Personal-Computer Systems
Parallel Systems
Distributed Systems
Real -Time Systems

What is an operating system ? OS คืออะไร
OS คือ โปรแกรมที่เป็นตัวกลางระหว่างผู้ใช้คอมพิวเตอร์กับตัวคอมพิวเตอร์
ป้าหมายของ OS
- ผู้ใช้จะสามารถจัการโปรแกรมและจัดการปัญกาของระบบได้อย่างสะดวก
- คอมพิวเตอร์ซึ่งจะสามารถใช้งานได้ง่ายมากขึ้น
OS จะทำให้คอมพิวเตอร์ทำงานได้อย่างมีระบบและมีประสิทธิภาพ
Computer Sytem Components ส่วนประกอบของระบบ
1.
ฮาร์ดแวร์ ประกอบด้วยทรัพยากรต่างๆ ที่มีในระบบ ได้แก่ อุปกรณ์นำข้อมูลเข้า/ออก หน่วยประมวลผลกลาง และหน่วยความจำ นอกจากนี้ยังหมายความรวมถึง โปรแกรมภาษาเครื่อง และไมโครโปรแกรม ซึ่งเป็นส่วนที่บริษัทผู้ผลิตสร้างขึ้นเพื่อใช้เป็นซอฟร์แวร์ในระดับพื้นฐาน (primitive level) โดยสามารถทำงานได้โดยตรงกับทรัพยากรระบบด้วยคำสั่งง่ายๆ เช่น ADD MOVE หรือ JUMP คำสั่งเหล่านี้จะถูกกำหนดเป็นขั้นตอน การทำงานของวงจรภายในเครื่องคอมพิวเตอร์ ชุดคำสั่งที่ไมโครโปรแกรมต้องแปลหรือตีความหมายจะอยู่ใน รูปแบบภาษาเครื่องและมักเป็นคำสั่งในการคำนวณ เปรียบเทียบ และการควบคุมอุปกรณ์นำข้อมูลเข้า/ออก
ระบบปฏิบัติการ เป็นโปรแกรมที่ทำงานเป็นตัวกลางระหว่างผู้ใช้เครื่องและฮาร์ดแวร์ โดยมีวัตถุประสงค์เพื่อจัดสภาพแวดล้อมให้ผู้ใช้ระบบสามารถปฏิบัติงานบนเครื่องคอมพิวเตอร์ได้ โดยจะเอื้ออำนวยการพัฒนาและการใช้โปรแกรมต่างๆ รวมถึงการจัดสรรทรัพยากรต่างๆ ให้ได้อย่างมีประสิทธิภาพ
โปรแกรมประยุกต์ คือซอฟต์แวร์หรือโปรแกรมที่ถูกเขียนขึ้นเพื่อการทำงานเฉพาะอย่างที่เราต้องการ เช่น งานส่วนตัว งานทางด้านธุรกิจ งานทางด้านวิทยาศาสตร์ โปรแกรมทางธุรกิจ เกมส์ต่างๆ ระบบฐานข้อมูล ตลอดจนตัวแปลภาษา เราอาจเรียกโปรแกรมประเภทนี้ว่า User's Program โปรแกรมประเภทนี้โดยส่วนใหญ่มักใช้ภาษาระดับสูงในการพัฒนา เช่นภาษา C, C++, COBOL, PASCAL, BASIC ฯลฯ ตัวอย่างของโปรแกรมที่พัฒนาขึ้นใช้ในทางธุรกิจ เช่น โปรแกรมระบบบัญชีจ่ายเงินเดือน (Payroll Program) โปรแกรมระบบเช่าซื้อ (Hire Purchase) โปรแกรมระบบสินค้าคงหลัง (Stock Program) ฯลฯ ซึ่งแต่ละโปรแกรมก็จะมีเงื่อนไขหรือแบบฟอร์มที่แตกต่างกัน ตามความต้องการหรือกฏเกณฑ์ของแต่ละหน่วยงานที่ใช้ ซึ่งโปรแกรมประเภทนี้เราสามารถดัดแปลงแก้ไขเพิ่มเติม (Modifications) ในบางส่วนของโปรแกรมเองได้ เพื่อให้ตรงกับความต้องการของผู้ใช้งานโปรแกรม โปรแกรมเหล่านี้เป็นตัวกำหนดแนวทางในการใช้ทรัพยากรระบบ เพื่อทำงานต่างๆ ให้แก่ผู้ใช้หลากหลายประเภท ซึ่งอาจเป็นได้ทั้งบุคคล โปรแกรม หรือเครื่องคอมพิวเตอร์ เช่นตัวแปรภาษาต้องใช้ทรัพยากรระบบในการแปลโปรแกรมภาษาระดับสูงให้เป็นภาษาเครื่องแก่โปรแกรมเมอร์ ดังนั้น ระบบปฏิบัติการต้องควบคุมและประสานงานในการใช้ทรัพยากรระบบของผู้ใช้ให้เป็นไปอย่างถูกต้อง
ผู้ใช้ ถึงแม้ระบบคอมพิวเตอร์จะประกอบด้วยองค์ประกอบทั้งทางด้านฮาร์ดแวร์และซอฟต์แวร์ แต่ระบบคอมพิวเตอร์จะไม่สามารถทำงานได้ถ้าขาดอีกองค์ประกอบหนึ่ง ซึ่งได้แก่ องค์ประกอบทางด้านบุคลากรที่จะเป็นผู้จัดการและควบคุมระบบคอมพิวเตอร์ให้สามารถปฏิบัติงานได้อย่างราบรื่น คอยแก้ไขปัญหาต่าง ๆ ที่เกิดขึ้นกับระบบคอมพิวเตอร์ พัฒนาโปรแกรมประยุกต์ต่าง ๆ รวมไปถึงการใช้งานโปรแกรมประยุกต์ที่ถูกพัฒนาขึ้น
2. ระบบปฏิบัติการ เป็นโปรแกรมที่ทำงานเป็นตัวกลางระหว่างผู้ใช้เครื่องและฮาร์ดแวร์ โดยมีวัตถุประสงค์เพื่อจัดสภาพแวดล้อมให้ผู้ใช้ระบบสามารถปฏิบัติงานบนเครื่องคอมพิวเตอร์ได้ โดยจะเอื้ออำนวยการพัฒนาและการใช้โปรแกรมต่างๆ รวมถึงการจัดสรรทรัพยากรต่างๆ ให้ได้อย่างมีประสิทธิภาพ
3. โปรแกรมประยุกต์ คือซอฟต์แวร์หรือโปรแกรมที่ถูกเขียนขึ้นเพื่อการทำงานเฉพาะอย่างที่เราต้องการ เช่น งานส่วนตัว งานทางด้านธุรกิจ งานทางด้านวิทยาศาสตร์ โปรแกรมทางธุรกิจ เกมส์ต่างๆ ระบบฐานข้อมูล ตลอดจนตัวแปลภาษา เราอาจเรียกโปรแกรมประเภทนี้ว่า User's Program โปรแกรมประเภทนี้โดยส่วนใหญ่มักใช้ภาษาระดับสูงในการพัฒนา เช่นภาษา C, C++, COBOL, PASCAL, BASIC ฯลฯ ตัวอย่างของโปรแกรมที่พัฒนาขึ้นใช้ในทางธุรกิจ เช่น โปรแกรมระบบบัญชีจ่ายเงินเดือน (Payroll Program) โปรแกรมระบบเช่าซื้อ (Hire Purchase) โปรแกรมระบบสินค้าคงหลัง (Stock Program) ฯลฯ ซึ่งแต่ละโปรแกรมก็จะมีเงื่อนไขหรือแบบฟอร์มที่แตกต่างกัน ตามความต้องการหรือกฏเกณฑ์ของแต่ละหน่วยงานที่ใช้ ซึ่งโปรแกรมประเภทนี้เราสามารถดัดแปลงแก้ไขเพิ่มเติม (Modifications) ในบางส่วนของโปรแกรมเองได้ เพื่อให้ตรงกับความต้องการของผู้ใช้งานโปรแกรม โปรแกรมเหล่านี้เป็นตัวกำหนดแนวทางในการใช้ทรัพยากรระบบ เพื่อทำงานต่างๆ ให้แก่ผู้ใช้หลากหลายประเภท ซึ่งอาจเป็นได้ทั้งบุคคล โปรแกรม หรือเครื่องคอมพิวเตอร์ เช่นตัวแปรภาษาต้องใช้ทรัพยากรระบบในการแปลโปรแกรมภาษาระดับสูงให้เป็นภาษาเครื่องแก่โปรแกรมเมอร์ ดังนั้น ระบบปฏิบัติการต้องควบคุมและประสานงานในการใช้ทรัพยากรระบบของผู้ใช้ให้เป็นไปอย่างถูกต้อง
4. ผู้ใช้ ถึงแม้ระบบคอมพิวเตอร์จะประกอบด้วยองค์ประกอบทั้งทางด้านฮาร์ดแวร์และซอฟต์แวร์ แต่ระบบคอมพิวเตอร์จะไม่สามารถทำงานได้ถ้าขาดอีกองค์ประกอบหนึ่ง ซึ่งได้แก่ องค์ประกอบทางด้านบุคลากรที่จะเป็นผู้จัดการและควบคุมระบบคอมพิวเตอร์ให้สามารถปฏิบัติงานได้อย่างราบรื่น คอยแก้ไขปัญหาต่าง ๆ ที่เกิดขึ้นกับระบบคอมพิวเตอร์ พัฒนาโปรแกรมประยุกต์ต่าง ๆ รวมไปถึงการใช้งานโปรแกรมประยุกต์ที่ถูกพัฒนาขึ้น
Operating System Definitions คำอธิบาย OS
- มีการจัดการทรัพยากร บริหารทรัพยากร
- ควบคุมโปรแกรม โดยการควบคุมนั้นทำโดยผู้ใช้เป็นผู้อกคำสั่งแต่ OS จะเป็นผู้ปฏิบัติงานให้ตามคำสั่ง
- โปรแกรมจะทำงานได้ที่ละคัวในเวลาเดียวกัน
หน้าที่ของ OS
1.ติดต่อกับผู้ใช้ (user interface) ผู้ใช้สามารถติดต่อหรือควบคุมการทำงานของเครื่องคอมพิวเตอร์ผ่านทางระบบปฏิบัติการได้ โดยระบบปฏิบัติการจะเครื่องหมายพร้อมต์ (prompt) ออกทางจอภาพเพื่อรอรับคำสั่งจากผู้ใช้โดยตรง ตัวระบบปฏิบัติการจึงเป็นตัวกลางที่ทำหน้าที่เชื่อมโยงระหว่างผู้ใช้กับฮาร์ดแวร์ของเครื่อง นอกจากนี้ผู้ใช้อาจเขียนโปรแกรมเพื่อใช้งานกรณีนี้ผู้ใช้ก็สามารถติดต่อกับระบบปฏิบัติการได้โดยผ่านทาง System Call
2.ควบคุมการทำงานของโปรแกรม และอุปกรณ์รับ/แสดงผลข้อมูล (input/output device) ตลอดจนการให้ความสะดวกแก่ผู้ใช้ในการใช้งานอุปกรณ์ต่างๆ ได้ง่าย เช่น การเข้าถึงข้อมูลในแฟ้มหรือติดต่อกับอุปกรณ์รับ/แสดงผลข้อมูล จึงทำให้ผู้พัฒนาโปรแกรมไม่จำเป็นต้องเขียนโปรแกรมเพื่อควบคุมตัวขับดิสก์เพราะระบบปฏิบัติการจัดบริการให้มีคำสั่งสำหรับติดต่อกับอุปกรณ์เหล่านี้ได้อย่างง่ายๆเนื่องจากผู้ใช้เครื่องคอมพิวเตอร์ผ่านทางระบบปฏิบัติการ อาจไม่มีความจำเป็นต้องมีความรู้ความเข้าใจถึงหลักการทำงานภายในของเครื่อง ดังนั้น ระบบปฏิบัติการจึงมีหน้าที่ควบคุมการทำงานของโปรแกรม การทำงานของอุปกรณ์ต่างๆ เพื่อให้การทำงานของระบบเป็นไปอย่างถูกต้องและสอดคล้องกัน ระบบปฏิบัติการจึงมีส่วนประกอบของหน้าที่ต่างๆ ที่ควบคุมอุปกรณ์แต่ละชนิดที่มีหน้าที่แตกต่างกันไป โดยผู้ใช้อาจเรียกใช้ผ่านทาง System Call หรือเขียนโปรแกรมขึ้นมาควบคุมอุปกรณ์เหล่านั้นได้เอง
3.จัดสรรให้ใช้ทรัพยากรระบบร่วมกัน (shared resources) ซึ่งทรัพยากรหลักที่ต้องมีการจัดสรร ได้แก่ หน่วยประมวลผลกลาง หน่วยความจำหลัก อุปกรณ์รับ/แสดงผลข้อมูลและแฟ้มข้อมูล เช่น การจัดลำดับให้บริการใช้เครื่องพิมพ์การสับหลีกงานหลายงานในหน่วยความจำหลักและการจัดสรรหน่วยความจำหลักให้กับโปรแกรมทั้งหลาย ทรัพยากร คือสิ่งที่ซึ่งถูกใช้ไปเพื่อให้โปรแกรมดำเนินไป ซึ่งเหตุที่ต้องมีการจัดสรรทรัพยากรก็เพราะ
- ทรัพยากรของระบบมีขีดจำกัด เช่นซีพียูในระบบมีอยู่เพียงตัวเดียว แต่ทำงานในระบบมัลติโปรแกรมมิ่งมีการทำงานหลายโปรแกรม จึงจะต้องมีการจัดสรรซีพียูให้ทุกโปรแกรมอย่างเหมาะสม
- ทรัพยากรมีอยู่หลายประเภท แต่ละโปรเซสหรือโปรแกรมมีความต้องการใช้ทรัพยากรเพียง อย่างเดียว หรือหลายอย่างพร้อมกัน ระบบปฏิบัติการจึงต้องจัดเตรียมทรัพยากรต่างๆ ตามความต้องการของโปรแกรม
องค์ประกอบของ Operating System
- การซิงโครไนซ์กระบวนการ (process synchronization) ในระบบมัลติโปรแกรมมิ่ง โปรแกรมที่ทำงานพร้อมๆกันอาจต้องการใช้อุปกรณ์หรือทรัพยากร เช่น ใช้เครื่องพิมพ์ร่วมกัน แม้ว่าเครื่องพิมพ์จะสามารถใช้ร่วมกันได้ แต่ต้องมีข้อจำกัดเช่นว่าต้องผลัดกันใช้ คือต้องรอให้ผู้ที่ใช้อยู่เสร็จงานเสียก่อน ผู้อื่นจึงสามารถมาใช้ต่อได้ มิใช่ว่าสลับกันใช้ ลักษณะการควบคุมการแบ่งหรือผลัดกันใช้ทรัพยากรนี้ ต้องระมัดระวังไม่ให้งานต่างๆ ที่จะไปก้าวก่ายหรือสร้างความเสียหายให้กับงานอื่น ซึ่งโดยที่งาน แต่ละงานจะไม่รับรู้ถึงความเป็นไปของงานอื่นใดทั้งสิ้น (โดยนึกว่ามีงานนั้นเพียงงานเดียวในระบบ) ในลักษณะนี้การจัดจังหวะหรือสับหลีกการทำงานให้สอดคล้องกันนี้เรียกว่า การซิงโครไนซ์กระบวนการ จึงตกเป็นหน้าที่ของระบบปฏิบัติการ
- การบริหารทรัพยากร (resource management) การบริหารทรัพยากรนี้มีวัตถุประสงค์เพื่อให้เกิดความยุติธรรมต่อผู้ใช้และ ให้ประสิทธิภาพการทำงานของระบบสูงด้วย ทรัพยากรที่จำเป็นต้องควบคุมได้แก่ หน่วยประมวลผลกลาง, หน่วยความจำหลัก,อุปกรณ์รอบข้าง และข้อมูล
- การจัดการหน่วยประมวลผลกลาง (Central Processing Unit Management) เนื่องจากอุปกรณ์รับส่งข้อมูลและแสดงผลสามารถทำงานไปพร้อมกันกับหน่วยประมวล ผลกลางได้ ดังนั้นการจะใช้ประโยชน์ระบบให้ได้เต็มที่จึงต้องให้มีโปรแกรมสองประเภททำงานคู่ขนานกันไป โดยโปรแกรมหนึ่งจะทำการรับและแสดงผล ส่วนโปรแกรมอีกประเภทหนึ่งจะใช้หน่วยประมวลผลกลาง แต่อย่างไรก็ดี การสั่งให้อุปกรณ์นำข้อมูลเข้า/ออกเริ่มการทำงาน (เช่นบอกว่า ข้อมูลที่จะพิมพ์ อยู่ในส่วนใดของหน่วยความจำหลัก) ต้องอาศัยหน่วยประมวลผลกลางเป็นผู้ทำอีกอยู่ดี ดังนั้นถ้าหากนำเอางานที่ใช้แต่เฉพาะหน่วยประมวลผลกลางเข้าทำงานเหล่านั้นจะจับจองหน่วยประมวลผลกลางไปเรื่อยๆ ทำให้ไม่สามารถเริ่มงานรับข้อมูลและแสดงผลได้ การจัดให้เกิดความยุติธรรมและเพิ่มประโยชน์ใช้สอยของระบบนี้ มักประสบกับความต้องการที่ขัดแย้งกันของงานต่างๆ ทำให้การจัดสรรหน่วยประมวลผลกลางเป็นเรื่องลำบาก ก่อให้เกิดความยุ่งยากต่อระบบ ปฏิบัติการมาก
- การจัดการหน่วยความจำหลัก (Memory management) การจัดการหน่วยความจำหลักสัมพันธ์อย่างใกล้ชิดกับการจัดการหน่วยประมวลผลกลาง เหตุเพราะโปรแกรมต้องอยู่ในหน่วยความจำหลักก่อน แล้วจึงจะสามารถเข้าใช้หน่วยประมวลผลกลางได้ แต่ก็ ไม่ควรให้โปรแกรมยึดครองหน่วยความจำหลัก หากไม่มีโอกาสอันดีที่จะได้เข้าใช้หน่วยประมวลผลกลาง
- การจัดการอุปกรณ์ (Device management) อุปกรณ์ (device) คือ ส่วนประกอบของคอมพิวเตอร์ที่ไม่ใช่หน่วยประมวลผลกลางหรือหน่วยความจำหลัก เช่น เครื่องพิมพ์ หรือจานแม่เหล็ก อุปกรณ์บางอย่างสามารถใช้ร่วมกันได้ระหว่างโปรแกรมหลายโปรแกรมในขณะเดียวกัน เช่น จานแม่เหล็ก แต่อุปกรณ์บางอย่างเช่น เครื่องพิมพ์ แม้จะใช้ร่วมกันได้ แต่ต้อง ผลัดกันใช้ หมายถึงว่าต้องพิมพ์ผลของงานหนึ่งให้เสร็จสิ้นลงเสียก่อน จึงสามารถเริ่มพิมพ์ผลของอีกงานหนึ่งได้การจัดสรรอุปกรณ์มีผลต่อการใช้ประโยชน์ของระบบได้ด้วย ตัวอย่างเช่น งาน ก. และ งาน ข. ต้องการใช้ตู้เทปแม่เหล็กสองและสามตู้ตามลำดับ หากในระบบมีเทปอยู่สามตู้ แต่ว่างเพียงสองตู้ในขณะนั้น ก็น่าจะให้งาน ก.ได้ใช้ตู้เทปทั้งสองที่ว่างอยู่ แต่หากงาน ข. ในขณะนั้นใช้องค์ประกอบอื่นของระบบอยู่มากแล้ว เช่น กินเนื้อที่หน่วยความจำหลักถึงสองในสามของระบบ ก็น่าจะให้งาน ก.รอก่อนให้ตู้เทปว่างลงอีกตู้ แล้วให้งาน ข. เข้าใช้ทั้งสามตู้ เพื่อใช้งาน ข. สำเร็จลุล่วงไปโดยเร็ว จะได้ปลดปล่อยหน่วยความจำหลักที่ยึดครองไว้ศาสตร์ในการจัดสรรอุปกรณ์ในปัจจุบัน ยังคงเป็นการแก้ปัญหาเฉพาะหน้าเป็นส่วนมาก โดยอาศัยความชำนาญและประสบการณ์ของพนักงานควบคุมเครื่องเป็นสำคัญ เนื่องจากความต้องการและองค์ประกอบต่างๆ ในระบบใหญ่ๆ ซับซ้อนเกินกว่าจะนิยามออกมาเป็นหลักเกณฑ์ทางคณิตศาสตร์ได้
- การจัดสรรข้อมูล (Data management ข้อมูล (data หรือ information) อาจแบ่งได้เป็นสองประเภทคือ โปรแกรมสำเร็จรูปที่ใช้ร่วมกัน (ไม่นับระบบปฏิบัติการ) และส่วนที่เป็นแฟ้มข้อมูล (data file) ของผู้ใช้

Operating System

ระบบปฏิบัติการ (operating system) หรือ โอเอส (OS) เป็นซอร์ฟแวร์ ที่ทำหน้าที่เป็นตัวกลาง ระหว่างฮาร์แวร์ และซอร์ฟแวร์ประยุกต์ทั่วไป บางครั้งเราอาจะเห็นระบบปฏิบัติการเป็นเฟิร์มแวร์ก็ได้
ระบบปฏิบัติการมีหน้าที่หลัก ๆ คือ การจัดสรรทรัพยากรในเครื่องคอมพิวเตอร์ เพื่อให้บริการซอฟต์แวร์ประยุกต์ ในเรื่องการรับส่ง และจัดเก็บข้อมูลกับฮาร์ดแวร์ เช่น การส่งข้อมูลภาพไปแสดงผลที่จอภาพ การส่งข้อมูลไปเก็บหรืออ่านจากฮาร์ดดิสก์ การรับส่งข้อมูลในระบบเครือข่าย การส่งสัญญานเสียงไปออกลำโพงหรือจัดสรรพื้นที่ในหน่วยความจำตามที่ซอฟต์แวร์ประยุกต์ร้องขอ รวมทั้งทำหน้าที่จัดสรรเวลาการใช้หน่วยประมวลผลกลาง ในกรณีที่อนุญาตให้รันซอฟต์แวร์ประยุกต์หลายๆตัวพร้อมๆกัน
ระบบปฏิบัติการ ช่วยให้ตัวซอฟต์แวร์ประยุกต์ ไม่ต้องจัดการเรื่องเหล่านั้นด้วยตนเอง เพียงแค่เรียกใช้บริการจากระบบปฏิบัติการก็พอ ทำให้พัฒนาซอฟต์แวร์ประยุกต์ได้ง่ายขึ้น