วันพุธที่ 27 สิงหาคม พ.ศ. 2551
Unit 6 วงจรอับ ( Deadlock )
2. เงื่อนไขที่ทำให้เกิดวงจรอับ
3. แผนภาพแสดงของวงจรอับ
4. การป้องกันการเกิดวงจรอับ
5. การหลีกเลี่ยงการเกิดวงจรอับ
6. การตรวจหาวงจรอับ
7. การกู้คืนระบบ
วงจรอับ
ในการทำงานแบบ Multiprogramming จะมีหลายๆกระบวนการพยายามที่จะแย่งกันใช้ทรัพยากรของระบบ แต่ะละกระบวนการจะต้องขอทรัพยากรจากระบบ และถ้าในขณะนั้นทรัพยากรที่ต้องการยังไม่ว่าง ( มีกระบวนการอื่นครอบครองอยู่ ) กระบวนการนั้นจะต้องรอคอยและอาจจะพบว่าการรอคอยนั้นเป็นไปอย่างไม่สิ้นสุด วงจรอับไม่จำเป็นต้องเกิดขึ้นภายในเครื่องคอมพิวเตอร์เครื่องเดียวเท่านั้น วงจรอับ สามารถเกิดข้ามเครื่องได้
วงจรอับ
โปรเซส A ขอใช้สแกนเนอร์ และได้ใช้
โปรเซส B ขอใช้เครื่องเขียนซีดี และได้ใช้
โปรเซส A ขอใช้เครื่องเขียนซีดีบ้าง แต่ B ไม่ยอม
ในขณะเดียวกัน B ขอใช้สแกนเนอร์ ซึ่ง A กำลังใช้อยู่
โปรเซสทั้งสองจะถูกปฏิเสธให้ทำงานและหยุดเพื่อรอ ใช้ ทรัพยากรของอีกฝ่ายหนึ่ง
ต่างคนต่างไม่ได้ใช้ทรัพยากรของแต่ละฝ่าย
การเกิดวงจรอับโดยโปรเซสทั้งสองต่างรอใช้ทรัพยากร
1. วงจรอับคืออะไร
วงจรอับ คือ กลุ่มของโปรเซสที่ถูกปฏิเสธไม่ให้ทำงาน (blocking) อันมีผลเนื่องมาจาก การแย่งชิงการใช้ทรัพยากรหรือ การสื่อสาร โดยที่โปรเซสในกลุ่มต่างรอคอยสัญญาณการทำงานที่เกิดขึ้นโดยเฉพาะจากโปรเซสภายในกลุ่มนี้เท่านั้น
วงจรอับโดยส่วนมากนั้นจะเกี่ยวข้องกับความขัดแย้งในการใช้ทรัพยากรของระบบ โดย 2 โปรเซส หรือ มากกว่า
2. เงื่อนไขที่ทำให้เกิดวงจรอับ
สาเหตุสำคัญที่ทำให้วงจรอับ วงจรอับอาจจะเกิดขึ้นก็ต่อเมื่อเงื่อนไขต่อไปนี้เกิดขึ้น
1. ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้ ( Matual exclusion ) นั่นคือ
จะมีทรัพยากรอย่างน้อย 1 ตัว ในระบบที่จะยอมให้โปรเซส
เพียง 1 ตัว ใช้งานมันได้เท่านั้น ถ้ามีโปรเซสอื่นเข้ามาร้องขอใช้ งาน โปรเซส นั้นจะต้องรอจนกว่าโปรเซสดังกล่าวได้ใช้งาน และปล่อยทรัพยากรคืนกลับสู่ระบบ จึงจะเริ่มต้นโปรเซสใหม่
2. การถือครองแล้วรอคอย ( Hold and wait ) คือ มีอย่างน้อย หนึ่งกระบวนการที่กำลังถือครองทรัพยากรอยู่อย่างน้อย 1 ตัว และขณะเดียวกันก็กำลังรอคอยทรัพยากรเพิ่มอีก แต่เป็น ทรัพยากรที่กำลังถูกถือครองโดยกระบวนการอื่นอยู่
3. ห้ามแทรกกลางคัน ( No Preemption ) เมื่อกระบวนการกำลัง ใช้ทรัพยากรอยู่ จะไม่มีการแทรกกลางคัน หรือทรัพยากรที่ถูก ใช้งานจะถูกปล่อยคืนสู่ระบบโดยความสมัครใจของ กระบวนการนั้น คือ กระบวนการนั้นได้ทำงานจนเสร็จ สมบูรณ์แล้ว
4. วงจรรอคอย ( Circular wait ) ถ้าเกิดวงจรลุกโซ่ของโปรเซส 2 ตัว หรือมากกว่าที่ต่างรอทรัพยากรที่ถือครองโดยโปรเซสที่อยู่ในวงจรลุกโซ่นั้น
3. แผนภาพแสดงของวงจรอับ
กราฟจัดสรรทรัพยากร
ลูกศรจากทรัพยากรชี้หาโปรเซส หมายถึงทรัพยากรนั้นได้ถูกร้องขอและโปรเซสนั้นก็ได้ใช้งานไปแล้ว และกำลังถือครองอยู่ รูป(ก)
ลูกศรจารโปรเซสชี้ไปหาทรัพยากร หมายถึง โปรเซสในขณะนั้นกำลังรอคอยทรัพยากรนั้นอยู่ (ข)
4. การป้องกันการเกิดวงจรอับ
1. การใช้ทรัพยากรร่วมกันได้ (Mutual exclusion prevention)
- ระบบปฏิบัติการต้องจัดสรรให้โปรเซสในระบบสามารถใช้
ทรัพยกรเหล่านั้นร่วมกันได้
- เช่น การเข้าถึงแฟ้มข้อมูลยอมให้ทุกโปรเซสเข้าใช้งานโดยอ่าน
ได้อย่างเดียวและยอมให้มีการเขียนกระบวนการเดียวเท่านั้น
2. การป้องกันการถือครองและการรอคอย ( Hold and wait prevention)
- กำหนดให้แต่ละโปรเซสต้องร้องขอทรัพยากรทั้งหมด และจะ
อนุญาตเมื่อได้ทรัพยากรครบ
3. ยอมให้มีการแทรกกลางคัน (Preemptable)
- ระบบจะไม่ยอมให้โปรเซสร้องขอทรัพยากรจนกว่าจะปลดปล่อย
ทรัพยากรของตัวเอง
- ถ้าโปรเซสต้องการเพิ่มต้องปลดปล่อยทรัพยากรแล้วทำการขอใหม่
- ระบบสามารถแทรกได้กลางคัน ใช้ได้กับระบบที่มีสิทธิและลำดับ
ความสำคัญ ( priority )
4. การป้องกันการเกิดวงจรรอคอย (Circular wait protection)
- โดยการกำหนดลำดับของทรัพยากรทั้งหมดในระบบ
- โปรเซสจะร้องขอได้เฉพาะทรัพยากรที่อยู่ในลำดับสูงกว่าเท่านั้น
ตารางสรุปการป้องกันการเกิดวงจรอับ
ให้ใช้ทรัพยากรที่สามารถใช้ร่วมกันได้
ให้โปรเซสร้องขอทรัพยากรให้หมดก่อน
ให้ระบบสามารถทำการแทรกการทำงานและเรียกคืนทรัพยากรได้
จัดเรียงและใช้ทรัพยากรอย่างเป็นลำดับ
1. การใช้ทรัพยการร่วมกัน
2. การถือครองและรอคอย
3. การไม่แทรกกลางคัน
4. การเกิดวงจรรอคอย
5. การหลีกเลี่ยงการเกิดวงจรอับ
เป็นการป้องกันวงจรอับไม่ให้เกิดขึ้น โดยการสร้างข้อกำหนดในการร้องขอทรัพยากร เพื่อให้แน่ใจว่าเงื่อนไขเพียงข้อใดขึ้นหนึ่งจะไม่เกิดขี้นอย่างแน่นอน ตัวอย่างวิธีในการหลีกเลี่ยงวงจรอับ ให้แต่ละกระบวนการประกาศจำนวนทรัพยากสูงสุดในแต่ละประเภทที่กระบวนการนั้นต้องการ ขั้นตอนวิธีนี้จะคอยตรวจดูสถานะของการจัดสรรทรัพยากรของระบบอยู่เสมอ ระบบจะอยู่ในสถานะปลอดภัย ( Safe state ) ถ้ามีทางเลือกอย่างน้อย 1 ทาง ที่จะจัดสรรทรัพยากรให้แต่ละกระบวนการ จนทำงานเสร็จทั้งหมดโดยไม่เกิดวงจรอับ
สถานะปลอดภัย ( safe state )
ระบบจะอยู่ในสถานะปลอดภัย ก็ต่อเมื่อมีลำดับการจัดสรรทรัพยากรอย่างปลอดภัยแก่กระบวนการ โดยจะถือว่าลำดับของกระบวนการเป็นลำดับที่ปลอดภัยสำหรับสถานะของการจัดสรรทรัพยากรปัจจุบัน แต่ถ้าไม่สามารถหาลำดับกระบวนการที่ปลอดภัยในระบบได้แสดงว่าระบบอยู่ในสถานะไม่ปลอดภัย สถานะปลอดภัยเป็นสถานะที่ไม่มีวงจรอับ และในทางกลับกันสถานะไม่ปลอดภัยเป็นสถานะที่อาจเกิดวงจรอับได้ แต่ก็ไม่ได้หมายความว่าสถานะไม่ปลอดภัยทั้งหมดจะก่อให้เกิดวงจรอับเสมอไป
แสดงสถานะวงจรอับ สถานะไม่ปลอดภัยและสถานะปลอดภัย
อัลกอริทึมของนายธนาคาร( Banker’s Algorithm)
เป็นขั้นตอนวิธีที่สามารถใช้สำหรับการเบิกจ่ายเงินของธนาคาร เพื่อป้องกันให้ธนาคารจัดสรรเงินสดไปทางอื่น จนมีไม่เพียงพอที่จะแบ่งจ่ายให้กับลูกค้าทุกคนที่มาเบิก
อัลกอริทึมของนายธนาคาร( Banker’s Algorithm)
โครงสร้างข้อมูลที่จำเป็น มีดังนี้
Available : เก็บค่าจำนวนทรัพยากรที่ว่างของทรัพยากรแต่ละประเภท
Max : เก็บค่าจำนวนสูงสุดของทรัพยากรแต่ละประเภทที่กระบวนการแต่ละตัวต้องการใช้
Allocation : เก็บค่าจำนวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละตัวกำลังถือครองอยู่
Need : เก็บค่าจำนวนทรัพยากรแต่ละประเภทที่กระบวนการแต่ละตัวอาจร้องขอเพิ่มอีกได้
ตัวอย่างการหาลำดับว่าระบบอยู่ในสถานะปลอดภัยหรือไม่
ระบบหนึ่งมีกระบวนการอยู่ 5 ตัว คือ P0, P1 , P2 , P3 , P4 คือ A , B และ C โดยที่ในแต่ละประเภทมีจำนวนทรัพยากร 10 , 5 ,7 ตามลำดับ
Allocation Max Available Need
A B C A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2 7 4 3
P1 2 0 0 3 2 2 1 2 2
P2 3 0 2 9 0 2 6 0 0
P3 2 1 1 2 2 2 0 1 1
P4 0 0 2 4 3 3 4 3 1
ตัวอย่างการหาลำดับว่าระบบอยู่ในสถานะปลอดภัยหรือไม่
สูตรการหา
work = work + Allocation , work = Available
P1 : work = ( 3,3,2 ) + ( 2,0,0 ) = ( 5,3,2 )
P3 : work = ( 5,3,2 ) + ( 2,1,1 ) = ( 7,4,3 )
P4 : work = ( 7,4,3 ) + ( 0,0,2 ) = ( 7,4,5 )
P0 : work = (7,4,5 ) + ( 0,1,0 ) = ( 7,5,5 )
P2 : work = ( 7,5,5 ) + ( 3,0,2 ) = (10,5,7 )
หมายเหตุ จะพบว่าระบบอยู่ในสถานะปลอดภัย เนื่องจากกระบวนการอาจทำงานได้ตามลำดับ ( P1, P3 , P4 , P0 , P2 ) ซึ่งเป็นไปตามเงื่อนไขของสถานะปลอดภัย
6. การตรวจหาวงจรอับ
คือการประเมินเหตุการล่วงหน้าว่าจะเกิด dead lock ขึ้นหรือไม่ ถ้าไม่เกิด OS จะยอมให้ Resource แก่ process นั้น ถ้าในระบบปฏิบัติการไม่มีการป้องกันหรือหลีกเลี่ยงวงจรอับแล้ว ในที่สุดระบบก็อาจจะตกอยู่ในสถานะวงจรอับได้ ดังนั้นระบบจึงจำต้องมีวิธีอื่นทดแทน คือ
ขั้นตอนวิธีที่จะตรวจหาวงจรอับในระบบว่าเกิดขึ้นแล้วหรือยัง
ขั้นตอนวิธีในการแก้ไขวงจรอับ
การใช้วิธีการตรวจหาวงจรอับ
เราจะใช้วิธีการตรวจหาวงจรอับเมื่อใดบ้าง ขึ้นอยู่กับ 2 ปัจจัยคือ
1. ความถี่ของการเกิดวงจรอับในระบบ
2. จำนวนกระบวนการที่ติดอยู่ในวงจรอับ
ถ้าเกิดวงจรอับในระบบค่อนข้างบ่อย ต้องใช้ขั้นตอนวิธีการตรวจหาวงจรอับบ่อยๆ เพราะเมื่อเกิดวงจรอับ ทรัพยากรและกระบวนการที่ติดอยู่ในวงจรอับจะสูญเปล่าทั้งหมดจนกว่าจะสามารถแก้วงจรอับได้ นอกจากนี้ถ้าปล่อยไว้นาน วงจรอับอาจขยายตัวใหญ่ขึ้นเรื่อยๆได้
ขั้นตอนในการแก้ไขวงจรอับ
เมื่อตรวจพบว่าเกิดวงจรอับขึ้นในระบบแล้ว ระบบอาจจัดการได้ 2 วิธี คือ
1. รายงานให้ผู้ควบคุมเครื่องทราบว่า ขณะนี้เกิดวงจรอับขึ้นในระบบแล้ว
และให้ผู้ควบคุมจัดการแก้ไขวงจรอับเอง
2. ระบบแก้ไขวงจรอับเองโดยอัติโนมัติ ซึ่งอาจทำได้ 2 วิธี คือ
- ยกเลิกกระบวนการที่ติดอยู่ในวงจรอับบางกระบวนการเพื่อที่จะตัดวงจรอับ - อนุญาตให้มีการแทรกกลางคันทรัพยากรบางส่วนที่ติดอยู่ในวรจรอับได้ เพื่อทำให้ระบบกลับสู่สภาวะปกติ
2.1 การยกเลิกกระบวนการ มี 2 วิธี คือ
- ยกเลิกกระบวนการทั้งหมดที่ติดอยู่ในวงจรอับ สามารถแก้ไขได้แน่นอนแต่ต้องใช้
ค่าใช้จ่ายสูง เพราะว่าอาจมีบางกระบวนการที่ได้เข้ามาทำงานนานแล้ว แต่กลับต้อง
ถูกยกเลิกการทำงาน โดยผลลัพธ์ที่ได้จากการทำงานช่วงแรกๆ จะถูกยกเลิกหมด
และอาจต้องกลับมาทำงานใหม่
- ยกเลิกระบวนการในวงจรอับทีละกระบวนการจนกระทั่งกลับสู่ภาวะปกติ ค่าใช้จ่าย
สูงเช่นกัน เพราะว่าหลังจากที่ยกเลิกกระบวนการหนึ่ง ระบบต้องทำการตรวจจับ
วงจรครี่งหนึ่งเช่นกัน เพื่อตรวจสอบว่าระบบยังคงอยู่ในสถานะวงจรอับหรือไม่ ซึ่ง
ถ้าต้องการยกเลิกหลายกระบวนการ ก็ต้องตรวจจับวงจรอับหลายครั้งตามไปด้วย
2.2 การแทรกกลางคัน จะกระทำโดยยึดเอาทรัพยากรบางส่วนจากระบวนการที่ติดอยู่ในวงจรดับ แล้วนำทรัพยากรนั้นไปจัดให้กระบวนการอื่นที่ต้องการ โดยการแทรกลางคันจะกระทำไปเรื่อยๆ จนกว่าระบบจะกลับสู่สภาวะปกติ เราจะพิจารณ์ผลที่ตามมาดังนี้
1. การเลือกผู้รับเคราะห์ โดยเลือกกระบวนการในวงจรอับที่จะถูกแทรกกลางคัน โดยเลือกที่เสียค่าใช้จ่ายน้อยที่สุด ปัจจัยในการเลือกเช่น จำนวนทรัพยากรที่กระบวนการนั้นถือครองอยู่
2. การถอยกลับ ถ้ากระบวนการถูกแทรกกลางคัน กระบวนการนั้นไม่สามารถทำงานต่อได้เพราะขาดทรัพยากรที่กระบวนการนั้นต้องการ ดังนั้นเราจำเป็นต้องให้กระบวนการนั้นถอยกลับไปอยู่ในจุดที่ปลอดภัย และให้เริ่มทำงานใหม่อีกครั้ง
7. การกู้คืนระบบ
วิธีที่สามารถนำไปใช้ในการกู้คืนระบบ
ยกเลิกการทำงานของแต่ละโปรเซสที่เกิดวงจรอับ
- เลือกโปรเซสที่ได้ใช้เวลาของตัวประมวลผลไปแล้วน้อยที่สุด
- เลือกโปรเซสที่ได้ใช้ผลลัพธ์หรือout put ออกมาน้อยที่สุด
- เลือกโปรเซสที่ได้ใช้ครอบครองทรัพยากรไปแล้วน้อยที่สุด
- เลือกโปรเซสที่มีลำดัความสำคัญน้อยที่สุด
- เลือกโปรเซสที่ยังต้องการเวลาในการทำงานมากที่สุด
2. ทำการแทรกหรือเรียกทรัพยากรคืนจากโปรเซสทีละตัวจนกว่า
วงจรอับจะหายไป
3. ยกเลิกการทำงานของทุกโปรเซสที่เกิดวงจรอับ
4. ทำการสำรองข้อมูลของทุกโปรเซสที่เกิดวงจรอับไปยังจุดที่ทำ
การตรวจสอบก่อนหน้าน
Unit 5 การจัดเวลาซีพียู (CPU Scheduling)
5.1 Scheduling Criteria
5.1.1 การใช้ประโยชน์หน่วยประมวลผลกลาง (CPU utilization)
5.1.2 ประมาณงาน (Throughput)
5.1.3 เวลาโดยรวม (Turnaround time)
5.1.4 เวลาคอย (Waiting time)
5.1.5 เวลาตอบสนอง (Response time)
5.2 Scheduling Algorithms
หน้าที่ของตัวจัดคิวคือ คัดเลือกโปรเซสซึ่งรออยู่ในสถานะพร้อมที่เหมาะสมที่สุดให้เข้าไปอยู่ในสถานะรัน (ได้ครอบครองซีพียู) โดยแท้จริงแล้วการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน เป็นหน้าที่ของโปรเซสของ OS ที่ชื่อตัวส่ง (dispatcher) ในแง่การทำงานแล้วตัวจัดคิวจะเป็นผู้คัดเลือกโปรเซสและเรียกให้ตัวส่งส่งโปรเซสที่ถูกเลือกแล้วเข้าไปในสถานะรันเป็นความรับผิดชอบของตัวจัดคิว
5.2.1 การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-come First-served Scheduling)
การจัดคิวแบบ FCFS (first-come-first-served) วิธีการคัดเลือกแบบ FCFS นี้เป็นวิธีที่ง่ายที่สุด คือ โปรเซสไหนเข้ามารอในคิวก่อนจะได้ครอบครองซีพียูก่อน ตามลำดับเวลาของการเข้ามาอยู่ในคิว คือ "มาก่อนได้ก่อน" โปรเซสที่ได้ครอบครองซีพียูจะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาการครอบครองซีพียู แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต-เอาต์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะติดขัด เมื่อใดที่งานเสร็จสิ้นลงหรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจึงค่อยกลับเข้าไปอยู่ต่อท้ายคิวของสถานะพร้อมใหม่อีกครั้ง
เราอาจแสดงการเปลี่ยนสถานะของโปรเซสโดยใช้การจัดคิวแบบ FCFS ซึ่งจะเห็นว่าแตกต่างกับรูปแสดงการเปลี่ยนสถานะของโปรเซสที่เคยกล่าวมาคือ ไม่มีการเปลี่ยนสถานะของโปรเซสจากสถานะรันมายังสถานะพร้อมโดยตรง
First Come First Served (FCFS): The simplest scheduling algorithm is FCFS. As each process becomes ready, it joins the ready queue. When the currently running process ceases to execute, the oldest process in the ready queue is selected for running.
5.2.2 การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short-Job-First Scheduling)
การจัดคิวแบบ SJN (shortest job next) การคัดเลือกโปรเซสด้วยวิธีนี้ จะคัดเลือกเอาโปรเซสที่ต้องการเวลาในการทำงานน้อยที่สุด ทำให้โปรเซสที่ต้องการเวลาในการทำงานน้อยจบออกไปได้เร็วขึ้น จำนวนโปรเซสในระบบที่รออยู่ในคิวมีก็จะมีจำนวนลดลง และทำให้เวลาโดยเฉลี่ยในการทำงาน 1 งานเสร็จหรือเวลาครบงาน (turnaround time) น้อยลงแต่การจัดคิวแบบนี้เป็นผลเสียต่อโปรเซสที่ต้องการเวลาในการทำงานนาน
Shortest Process Next (SPN): Another approach to reducing the bias in favor of long processed inherent in FCFS is the SPN. This is a non-preemptive algorithm in which the process with the shortest expected processing time is selected next. Thus a short process will jump to the head of the queue past longer jobs.
Shortest Remaining Time (SRT): SRT algorithm is a preemptive version of SPN. In this case, the scheduler always chooses the process that has the shortest expected remaining processing time. When a new process joins the ready queue, it may in fact have a shorter remaining time than the currently running process. SRT does not have the bias in favor of long processes found in FCFS.
5.2.3 การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
การจัดคิวแบบลำดับความสำคัญ (priority queue) คิวแบบลำดับความสำคัญมีลักษณะแตกต่างกับคิวธรรมดา ภายในคิวจะมีการจัดเรียงลำดับของโปรเซสต่าง ๆ ตามลำดับความสำคัญของโปรเซสนั้น โปรเซสที่อยู่ต้นคิวจะมีลำดับความสำคัญมากที่สุด และลดลงเรื่อย ๆ โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีลำดับความสำคัญต่ำสุด การคัดเลือกโปรเซสจะเอาโปรเซสที่อยู่ต้นคิว (มีลำดับความสำคัญสูงสุด) เข้าไปครอบครองซีพียูก่อน ดังนั้นถึงแม้ว่าโปรเซสที่เข้าคิวทีหลังแต่มีลำดับความสำคัญสูงกว่าก็อาจได้เข้าไปครอบครองซีพียูก่อน โปรเซส E เข้าคิวเป็นโปรเซสหลังสุด แต่จะได้ครอบครองซีพียูก่อนโปรเซส C และ D
5.2.4 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
การจัดคิวแบบ RR (round-robin) การจัดคิวแบบ RR อาจเรียกว่าเป็นการจัดคิวแบบมีการวนรอบ ลักษณะการคัดเลือก โปรเซสในคิวจะเป็นแบบ FCFS คือ "มาก่อนได้ก่อน" แต่ต่างกันนิดหน่อยตรงที่การครอบครองซีพียูของโปรเซสในสถานะรันจะถูกจำกัดเวลาไว้ด้วยระยะเวลาควอนตัม ทำให้โปรเซสที่ต้องการเวลาในการทำงานนานจะต้องเปลี่ยนสถานะหมุนระหว่างสถานะพร้อมและสถานะรัน
การจัดคิวแบบ RR สามารถแก้ปัญหาการคอยนานของโปรเซสที่ต้องการเวลาทำงานน้อย ๆ ได้ลองกลับไปพิจารณาเหตุการณ์สมมติซึ่งกล่าวไว้ในหัวข้อที่แล้ว ถ้าระบบกำหนดเวลาควอนตัมเป็น 1 วินาที โปรเซส A ต้องมีการวนรอบเปลี่ยนสถานะระหว่างสถานะรันและสถานะพร้อม 15 ครั้ง โปรเซส B 1 ครั้ว โปรเซส C 10 ครั้ง เมื่อโปรเซส A เข้าไปอยู่ในสถานะรันครั้งแรกและกลับออกมา โปรเซส B จะได้ครอบครองซีพียูได้และ ทำงานเสร็จโปรเซส B จบและออกจากระบบไปเลยเหลือเพียง 2 โปรเซสที่อยู่ในคิวของสถานะพร้อม โปรเซสถัดไปที่จัดได้ครอบครองซีพียูคือ C โปรเซส C และ A จะสลับกันครอบครองซีพียูกันโปรเซสละ 1 วินาที จนกระทั่งโปรเซส C จบ เหลือโปรเซส A เพียงโปรเซสเดียว เป็นแผนภาพแสดงการสลับกันทำงานของโปรเซสทั้ง 3 และเป็นผลที่เกิดขึ้นจากการจัดคิวแบบ RR
Round Robin (RR): A straightforward way to reduce the penalty that short jobs suffer with FCFS is to use preemption based on a clock. The simplest such algorithm is round robin. A clock interrupt is generated at periodic intervals. When the interrupt occurs, the currently running process is placed in the ready queue, and the next ready job is selected on an FCFS basis. In the current project RR is implemented with time intervals of 1 and 4.
5.2.5 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
เพื่อให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพ จึงมีการนำหลาย ๆ เทคนิคมาประยุกต์เข้าด้วยกัน เป็นการจัดคำแบบวนรอบ ที่คำนึงถึงความสำคัญของงาน ทำให้งานที่มีความสำคัญเหมือนกันอยู่ในคิวเดียวกัน และให้งานสำคัญน้อย ๆ อยู่ในคิวที่สำคัญน้อยเช่นกัน 6.3 การประเมินอัลกอริทึม (Algorithm Evaluation)
จากที่ได้ศึกษาอัลกอริทึมทั้ง 5 แบบ สำหรับการจัดเวลาซีพียูมาแล้ว ก็ต้องเลือกอัลกอริทึมที่จะใช้งาน สำหรับเลือกงานเข้าประมวลผล มีหลาย ๆ วิธีในการพิจารณาอัลกอริทึม ที่ต้องคำนึงถึง CPU utilization, Response time และ Throughput เพื่อให้ได้ผลออกมาดีที่สุด
หลักเกณฑ์การพิจารณาอัลกอริทึมเข้าประมวลผล
1. ให้ใช้ซีพียูสูงสุด โดยช่วงเวลาตอบสนองต่ำสุด
2. ให้มีเวลารวม หรือวนรอบที่เหมาะสม กับเวลาที่ต้องใช้ประมวลผลทั้งหมด
5.3.1 วิธีกำหนดโมเดล (Deterministic modeling)
วิธีนี้มีข้อจำกัดมากเกินไปสำหรับการนำมาใช้ในปัจจุบัน เพราะวิธีนี้จะเป็นวิธีที่ง่าย ได้ตัวเลขออกมาแน่นอน จากตัวอย่างข้อมูลจำนวนหนึ่งที่ป้อนเข้าไป แต่ผลลัพธ์ไม่มีความน่าเชื่อถือมากพอ เพราะในสถานการณ์จริงจะมีข้อมูลที่ซับซ้อนกว่ามาก เช่นเลือกอัลกอริทึมมาพิจารณา 3 แบบ คือ FCFS, SJF และ RR ซึ่งผลของการพิจารณาแต่ละอัลกอริทึมจะออกเป็นตัวเลขให้เลือก การเลือกเป็นสิ่งที่ตัดสินใจได้ง่าย แต่ไม่อาจไม่เหมาะที่จะใช้งานจริง
5.3.2 วิธีจัดเมเดลของคิว (Queueing models)
วิธีนี้มีปัญหาการคำนวณค่าเฉลี่ยของการกระจายในระบบที่มีความซับซ้อน เมื่อพิจารณาในระบบเครือข่ายที่แบ่งกลุ่มงานออกเป็นสถานี หรือสายการผลิตที่มีคิวของตนเอง ถ้าทราบเวลาที่ให้บริการของแต่ละสายการผลิต และรู้เวลาที่แต่ละงานเข้าคิว ก็จะหาค่าต่าง ๆ ได้ตามต้องการ วิธีนี้เรียกว่า queueing network analysis
จากตัวอย่างข้างต้นอาจใช้สูตร al = at * w (ค่าเฉลี่ยความยาวของคิว = ค่าเฉลี่ยของงานใหม่เข้ามา * ค่าเฉลี่ยการรอคอย) เช่น เวลาเฉลี่ยในคิวคือ 10 วินาที ถ้างานใหม่ต้องรอเข้าคิวประมาณ 2 วินาที และแต่ละงานต้องคอยเข้าหน่วยประมวลผล 5 วินาที
if (getQueryVariable("img") == 'yes') {
document.write('');
}else{
document.write('[img]queuemodel.png[/img]');
}
[img]queuemodel.png[/img]
5.3.3 วิธีจำลองสถานการณ์ (Simulations)
วิธีนี้จะพัฒนาโปรแกรมคอมพิวเตอร์ขึ้นมา เสมือนเป็นหุ่นจำลอง พร้อมกำหนดสถาพแวดล้อม และตัวแปรคำนวณเวลาให้อยู่ในการควบคุม โดยเวลาของสถานการณ์กำหนดได้ 2 แบบคือ แบบสุ่ม หรือแบบข้อมูลจริง นอกจากนั้นยังต้องมี trace tape เก็บข้อมูลในช่วงเวลาต่าง ๆ และนำมาเปรียบเทียบ สำหรับวิธีการนี้ต้องอาศัยเวลา และค่าใช้จ่าย เพื่อให้ได้ผลลัพธ์ที่เที่ยงตรง
5.3.4 วิธีติดตั้งจริง (Implementation)
วิธีนี้ไม่นิยมปฏิบัติ แม้แบบจำลองจะไม่มีทางเหมือนจริง จึงมีแนวคิดว่าเขียนขึ้นมาใช้จริงเพื่อให้ได้ข้อมูลจริง แต่วิธีนี้ต้องลงทุนสูงมาก นอกจากต้องเขียนโปรแกรมของอัลกอริทึมแต่ละตัว ยังต้องใช้เวลา และแรงงานเปลี่ยนการทำงานของโปรแกรม การจัดการระบบเพื่อให้รองรับอัลกอริทึมแบบต่าง ๆที่จะนำมาทดลอง ซึ่งแต่ละอัลกอริทึมอาจต้องการฮาร์ดแวร์ที่พิเศษ และคอมพิวเตอร์ก็มิได้เปลี่ยนอุปกรณ์กันได้ง่าย
Unit 4 Processes (การจัดการโปรเซส)
- โปรแกรมที่กำลังถูกเอ็กซีคิ้ว
- กิจกรรมที่มีการทำงานสัมพันธ์กัน
- สิ่งที่ถูกมอบหมายไปให้โปรเซสเซอร์ได้
- หน่วยซึ่งถูกส่งต่อได้ ( dispatchable )
ยังไม่มีความหมายใดที่เป็นที่ยอมรับกันทุกคน แต่ความหมายที่ว่า โปรเซส คือ "โปรแกรมที่กำลังถูกเอ็กซีคิ้ว" นั้นถูกใช้บ่อยมากที่สุด ดังนั้นจึงเอาความหมายนี้เป็นความหมายของคำว่า โปรเซส เราอาจเปรียบเทียบโปรแกรมเหมือนกับรถยนต์ที่จอดนิ่งอยู่ที่พร้อมที่จะวิ่งไป ในระบบหลายโปรแกรม ( multiprogramming ) โปรเซสอาจเปรียบกับรถยนต์ที่วิ่งออกจากจุดเริ่มต้น ถ้ามีหลายโปรเซสอยู่ในระบบก็เหมือนกับการที่เรามีรถหลายคันที่จะต้องออกวิ่งไปพร้อม ๆ กัน ตัวซีพียูเปรียบได้กับคนขับรถ ถ้าซีพียูมีตัวเดียวก็เหมือนกับคนขับรถมีเพียงคนเดียว ดังนั้นเมื่อรถหลายคันออกวิ่งการที่คนขับคนเดียวจะพารถหลายๆ คันวิ่งไปต้องขับรถทีละคันให้วิ่งเดินหน้าไปทีละนิด เวียนเปลี่ยนไปจนครบทุกคัน จนถึงจุดหมายปลายทาง ( โปรแกรมสิ้นสุดลง ) นั้นคือเราสามารถมีโปรเซสหลายๆ โปรเซสทำงานไปพร้อมๆ กันได้โดยมีซีพียูเพียงตัวเดียว
องค์ประกอบของโปรเซส
1. หมายเลขโปรเซส (Process id)
2. โค้ดโปรแกรม (Program code)
3. ข้อมูล (Data)
4. บล็อกควบคุมโปรเซส (Process control block)
4.1 พอยเตอร์ (Pointer)
4.2 สถานะของโปรเซส (Process state)
4.3 หมายเลขโปรเซส (Program id)
4.4 ตัวนับจำนวน (Program counter)
4.5 รีจิสเตอร์ (Register)
4.6 ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information)
4.7 ข้อมูลการจัดการหน่วยความจำ (Memory management information)
4.8 ข้อมูลแอ็กเคาต์ (Account information)
4.9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information)
pointer
process state
process id
process counter
registers
list of open files
5. PSW (Program status word)
6. คุณสมบัติของโปรเซส (Properties of process)
6.1 ลำดับความสำคัญของโปรเซส (Priority)
6.2 อำนาจหน้าที่ของโปรเซส (Authority)
6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี
สถานะของโปรเซส
สถานะของโปรเซสแบ่งได้ 6 สถานะ
1. สถานะเริ่มต้น (New : The process is being created.)
2. สถานะพร้อม (Ready : The process is waiting to be assigned to a processor.)
3. สถานะรัน (Running : Instructions are being executed.)
4. สถานะรอ (Wait : The process is waiting for some event to occur.)
5. สถานะบล็อก (Block : The process is blocked for some event to occur.)
6. สถานะสิ้นสุด (Terminate : The process has finished execution.)
สถานะของโปรเซสแบ่งได้อีกแบบมี 4 สถานะ
1. สถานะพร้อม (ready state) คือสถานะที่โปรเซสพร้อมที่จะใช้ซีพียูทันทีที่ระบบปฏิบัติการมอบหมายให้ ในสถานะนี้ไม่มีการรันของโปรเซส
2. สถานะรัน (running state) คือสถานะที่โปรเซสกำลังครอบครองซีพียูอยู่ มีการรันของโปรเซสจริงๆ เพราะโปรเซสใช้ซีพียูเอ็กซีคิ้วคำสั่ง หรือโค้ดโปรแกรมของโปรเซสนั้น
3. สถานะติดขัด (blocked state) คือสถานะที่โปรเซสหยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โปรเซสไม่จำเป็นต้องใช้ซีพียูและยังไม่พร้อมที่จะครอบครองซีพียู ซึ่งจะทำให้โปรเซสอื่นเข้ามาครอบครองซีพียูในช่วงนี้ได้
4. สถานะพัก (suspend state) คือสถานะที่โปรเซสไม่มีการทำงานใดๆ หยุดนิ่งอย่างสมบูรณ์ ไม่มีการรอการใช้ซีพียูหรือเหตุการณ์ใดๆ ให้เกิดขึ้น
การจัดเวลาโปรเซส
ระบบมัลติโปรแกรมมิ่ง คือ การจัดให้ process สามารถเข้าประมวลผลได้ตลอดเวลา
ระบบแบ่งเวลา คือ การสลับ process เข้าใช้ CPU บ่อย เท่าที่ผู้ใช้รู้สึกว่าทุก process ตอบสนองได้ตลอดเวลา
1. Device queue คือ การจัดคิวของโปรเซสต่าง ๆ เช่น คิวของ I/O คิวของการรอ child process หรือคิวของอินเทอร์รัพต์ เป็นต้น
เมื่อกระบวนการเข้าไปในระบบ จะถูกส่งเข้า job queue ซึ่ง queue จะรวบรวม process ทั้งหมดในระบบ และมีคำหลาย ๆ คำเกี่ยวกับการเข้าคิว เช่น ready, blocked และ running แต่ถ้า process รอเข้า I/O devices จะเรียกว่า device queue ซึ่งทุกอุปกรณ์จะมี device queue ของตนเอง
processes จะย้ายไปมาระหว่าง queue ต่าง ๆ โดยระบบปฏิบัติการมีหน้าที่เลือกตามวัตถุประสงค์ และความเหมาะสม ซึ่งถูกจัดการโดย scheduler สำหรับแต่ละ Device queue ต่างก็มี scheduler ของตนเอง และมี scheduler ส่วนกลาง ควบคุมการทำงานของ process ทั้งหมดอีกครั้งหนึ่ง
2. Contact switch คือ
การทำงานที่ขึ้นกับความสามารถของฮาร์ดแวร์ เป็นการเลื่อน process ไปยังคิวต่อไป ในกรณีที่มีจำนวนโปรเซสมากกว่าชุดของรีจิสเตอร์ที่มีอยู่ ระบบจะคัดลอกโปรเซสส่วนเกินไปเป็นอีกชุดหนึ่ง เพื่อให้โปรเซสที่จำเป็นต้องเข้ามาได้ใช้รีจิสเตอร์ปัจจุบันได้ สำหรับรายละเอียดการจัดการโปรเซสขึ้นกับความสามารถของ OS เป็นเทคนิคที่หลีกเลี่ยงปัญหาคอขวดของระบบ
หลังประมวลผล Process หนึ่งเรียบร้อย ต้องย้ายไปยัง Process ใหม่ หรือ การย้ายจากหน่วยประมวลผลไปยังอีกกระบวนการหนึ่ง ต้องการ saving the stat of the old process and loading the saved state for the new process ซึ่งงานนี้ถูกเรียกว่า context switch สำหรับคำว่า context of process อาจแทนด้วย PCB of a process
Mutual exclusion คือ การกีดกั้น ในบริเวณ หรือส่วนของโปรแกรมที่ process เข้าครอบครองรีซอร์ส ซึ่งเรียกว่า Critical region ซึ่งการกีดกั้นก็คือการไม่ยอมให้ process ใด ๆ เข้าใช้พื้นที่ ๆ เป็น Critical region ซึ่งมีคุณสมบัติอยู่ 4 ประการ
คุณสมบัติของ mutual exclusion
1. ไม่มี process อยู่ใน critical region พร้อมกัน
2. ไม่มีสมมติฐาน และข้อจำกัด ด้านความเร็ว หรือจำนวนซีพียูมาเป็นปัจจัย
3. ไม่มี process นอก critical region ที่ block การทำงานของ process อื่น
4. ไม่มี process ที่รอเข้าใจ critical region ตลอดเวลา
การแก้ปัญหา Mutual exclusion with busy waiting
1. Disable interrupt
2. Lock variable
3. Strict alternation
4. Peterson's solution
5. TSL instruction
การปฏิบัติการบนโปรเซส
ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ process ตลอดเวลา จึงต้องมีการควบคุมให้ระบบคงสภาพอยู่ตลอดเวลา โปรเซสแม่ (Parent process) และโปรเซสลูก (Children process) ต้องถูกสร้าง และหยุดทำงานได้อย่างสอดคล้อง เพื่อให้เข้าใจเรื่องของ process จึงขอแสดง tree of process on a typical UNIX system ประกอบการอธิบาย
1. การสร้างโปรเซส (Process creation)
ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณาการ execute
1. โปรเซสแม่ยังประมวลผลต่อไป พร้อมโปรเซสลูก
2. โปรเซสแม่ต้องรอให้โปรเซสลูกบางตัว หรือโปรเซสลูกทั้งหมดสิ้งสุด จึงจะเริ่มประมวลผลได้ใหม่
ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณา address ของโปรเซสใหม่
1. โปรเซสลูกเป็นสำเนาของโปรเซสแม่ คือใช้ address เดียวกับแม่
2. โปรเซสลูกมีตำแหน่งของ load address ของตนเอง
2. การสิ้นสุดของโปรเซส (Process termination)
3 เหตุผลที่ โปรเซสแม่จะหยุดการประมวลผลของโปรเซสลูก
1. โปรเซสลูกใช้ resource มากกว่าที่กำหนดไว้
2. ไม่มีความจำเป็นต้องใช้โปรเซสนั้นอีกแล้ว
3. โปรเซสแม่สิ้นสุด และ OS ไม่ยอมให้โปรเซสลูกทำงานต่อไป
โปรเซสสื่อประสาน
โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มี
ผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้
1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing)
2. เพิ่มความเร็วในการคำนวณ (Computation speedup)
3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity)
4. ความสะดวก (Convenience)
การสื่อสารในโปรเซส
การสื่อสารในโปรเซส หรือระหว่างโปรเซสมีเรื่องที่ต้องพิจารณาหลายเรื่อง
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
2 การตั้งชื่อ (Naming)
2.1 Direct communication
ทุกโปรเซสที่ติดต่อกันต้องมีการอ้างชื่ออย่างชัดเจน และแน่นอน เช่นการส่งข่าวสารจากโปรเซส A ไปโปรเซส B ก็ต้องระบุให้ชัดเจนว่าส่งจากไหนไปไหน
send(B,message) หมายถึง ส่งไปให้โปรเซส B
receive(A,message) หมายถึง รับจากโปรเซส A
2.2 Indirect communication
การติดต่อสื่อสารทางอ้อม เป็นการติดต่อผ่าน mailbox หรือ port ซึ่งทำหน้าที่เก็บโปรเซส แล้วส่งให้อีกโปรเซสหนึ่ง วิธีนี้ทำให้โปรเซสหนึ่งติดต่อโปรเซสอื่นผ่าน mail box ได้หลาย mail box เมื่อ share mail box ก็จะทำให้การสื่อสารมีประสิทธิภาพ
จากแนวคิดเรื่องการใช้ mail box ทำให้มีแบบของ mail box ขึ้น 3 แบบ
1. Queue mailbox มาก่อนออกก่อน แต่มีขนาด block คงที่ ใส่มากเกินไปก็จะเต็ม (First In First Out)
2. Pipe mailbox มีขนาดยืดหยุ่น ใส่ข้อมูบได้เท่าที่ต้องการ
3. Stack mailbox มาก่อนออกหลัง (First In Last Out)
3.1 การซิงโครไนซ์ (Synchronization)
การส่งข้อมูลระหว่างโปรเซสต้องใช้พื้นที่ในการเรียก send และ receive จึงต้องออกแบบให้การเรียกเป็นไปอย่างมีประสิทธิภาพ ซึ่งใช้ความรู้เรื่องการเข้า blocking และ nonblocking ไม่ให้เกิด deadlock ขึ้น จึงมีเรื่องต้องพิจารณา 4 เรื่องดังนี้
- Blocking send : The sending process is blocked until the message is received by the receiving process or by the mailbox.
- Nonblocking send : The sending process sends the message and resumes operation.
- Blocking receive : The receiver blocks until a message is available.
- Nonblocking receive: The receiver retrieves either a valid message or a null.
3.2บัฟเฟอร์ (Buffering)
โดยพื้นฐานแล้วการส่งข่าวสารผ่านคิว จะมีลักษณะคิวอยู่ 3 แบบ
- Zero capacity ไม่มีคิวอยู่ คือไม่มีการคอย ผู้ส่งต้องหยุดรอจนกระทั่งผู้รับได้รับ
- Bounded capacity คิวที่มีความยาวจำกัด หรือมีขอบเขตแน่นอน
- Unbounded capacity คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ
แบบของการประมวลผล
1. การประมวลผลแบบเดี่ยว (Single processing) หรือ Sequential processing (one result / m cycles)
2. การประมวลผลแบบพหุ (Multi processing) หรือ Pipelining (one result / cycle)
3. การประมวลผลแบบขนาน (Parallel processing) หรือ Parallel processing (n results / m cycles)
Unit 3 Operating System Structures
องค์ประกอบของระบบปฏิบัติการ จะมีส่วนประกอบหลัก ๆ ของระบบดังต่อไปนี้
1) การจัดการโพรเซส (Process Management)
หยุดหรือดำเนินโพรเซสต่อไป
จัดให้มีกลไกในการซิงโครไนซ์โพรเซส --จัดให้มีกลไกในการติดต่อสื่อสารระหว่างโพรเซส - จัดให้มีกลไกในการจัดการเดตล็อก
2)การจัดการหน่วยความจำหลัก (Main-memory Management)
- กำกับดูแลการใช้งานหน่วยความจำว่าส่วนใดของหน่วยความจำกำลังถูกใช้งานอยู่ และใครเป็นผู้ใช้ - ตัดสินใจว่าจะโหลดโพรเซสใดลงในหน่วยความจำเมื่อมีพื้นที่หน่วยความจำว่าง - จัดสรรและเรียกคืนการใช้งานพื้นที่หน่วยความจำตามความจำเป็น
3)การจัดการแฟ้ม (File Management)
- การสร้างและลบแฟ้ม - การสร้างและลบไดเรกทอรี่ - สนับสนุนการทำงานระดับปฐมภูมิในการจัดการกับแฟ้มและไดเรกทอรี่ ง การจำลองรูปลักษณ์ของแฟ้มลงไว้ที่หน่วยความจำรอง - การสำรองแฟ้มเก็บไว้บนตัวกลางเก็บข้อมูลอย่างถาวร
4) การจัดการระบบอินพุต/เอาต์พุต (I/O System Management)
- ส่วนประกอบในการจัดการหน่วยความจำอันได้แก่ บัฟเฟอร์, แคช - ส่วนติดต่อกับดีไวซ์ไดรเวอร ทั่วไป - ไดรเวอร์สำหรับฮาร์ดแวร์เฉพาะอย่าง
5) การจัดการระบบหน่วยความจำรอง (Secondary-Storage Management)
- การจัดการกับพื้นที่ว่าง - การจัดสรรพื้นที่จัดเก็บข้อมูล - การจัดลำดับการทำงานของดิสก์
6) ระบบเครือข่าย (Networking)
ระบบแบบกระจาย (Distributed) เชื่อมต่อถึงกันด้วยเครือข่ายสื่อสาร (communication network) ซึ่งมีลักษณะของการเชื่อมต่อที่แตกต่างกันหลากหลาย หน้าที่ของระบบปฏิบัติการคือการจัดการให้การใช้ทรัพยากรร่วมกันเป็นไปโดยสะดวก ซึ่งโดยปกติมักอยู่ในรูปของการเข้าถึงแฟ้มที่อยู่ระยะไกล
7) ระบบป้องกัน (Protection System)
ถ้าในระบบคอมพิวเตอร์มีผู้ใช้หลายคน และอนุญาตให้เอกซีคิวต์โพรเซสได้พร้อม ๆ กันหลายโพรเซสแล้ว โพรเซสต่าง ๆ จะต้องมีการป้องกันการดำเนินงานไม่ให้มีผลกระทบต่อกัน ดังนั้นระบบปฏิบัติการจึงต้องมีกลไกที่คอยจัดการให้การใช้งานแฟ้ม, หน่วยความจำ, ซีพียูและทรัพยากรอื่น ๆ เกิดขึ้นได้เฉพาะจากโพรเซสที่ได้รับอนุญาตจากระบบปฏิบัติการเท่านั้น หรือกล่าวอีกอย่างหนึ่งได้ว่า การป้องกันหมายถึงกลไกในการควบคุมการเข้าถึงทรัพยากรของระบบคอมพิวเตอร์จากโพรเซสหรือผู้ใช้ โดยอนุญาตให้เฉพาะผู้ที่มีสิทธิ์ในการใช้งานเท่านั้น
8) ระบบแปลคำสั่ง (Command-Interpreter Syste m)
ระบบแปลคำสั่งหรือ command interpreter เป็นโปรแกรมระบบที่สำคัญในระบบปฏิบัติการที่ทำหน้าติดต่อระหว่างผู้ใช้กับระบบปฏิบัติการ และมักเรียกว่าเชลล์ (shell) หน้าที่ของมันค่อนข้างเรียบง่ายโดยคอยรับคำสั่งถัดไปเข้ามาแล้วทำการเอกซีคิวต์ ระบบปฏิบัติการมักจะมีความแตกต่างต่างกันในเรื่องของเชลล์ รูปแบบหนึ่งของการ ติดต่อที่เป็นที่นิยมก็คือแบบ mouse-based หรือการใช้เมาส์ที่มีในระบบปฏิบัติการแม็คอินทอชและไมโครซอฟต์วินโดวส์
Unit 2 Computer-System Structures
1. ประเภทของคอมพิวเตอร์แบ่งได้ 7 ประเภท (book #4)
1. ซุปเปอร์คอมพิวเตอร์ (Super computer)
2. เมนเฟรมคอมพิวเตอร์ (Mainframe computer)
3. มินิคอมพิวเตอร์ (Mini computer)
4. คอมพิวเตอร์ส่วนบุคคล (Personal computer)
5. โน๊ตบุค (Notebook computer)
6. พีดีเอ (PDA: Personal Digital Assistant)
7. คอมพิวเตอร์เครือข่าย (Network computer)
2. องค์ประกอบระบบคอมพิวเตอร์ (book #4)
1. ฮาร์ดแวร์ (Hardware)
2. ซอฟต์แวร์ (Software)
3. บุคลากร (Peopleware)
4. ข้อมูล (Data)
5. กระบวนการทำงาน (Procedure)
3. ซอฟต์แวร์ (Software) แบ่งได้ 3 ประเภท(book #4)
ซอฟร์แวร์ หมายถึงโปรแกรม หรือชุดคำสั่งที่ถูกเขียนขึ้น เพื่อให้คอมพิวเตอร์ทำงาน ซอฟต์แวร์นี้จะเป็นเสมือนตัวเชื่อมระหว่างผู้ใช้เครื่องคอมพิวเตอร์กับเครื่องคอมพิวเตอร์ ถ้าไม่มีซอฟต์แวร์คอมพิวเตอร์จะไม่สามารถทำงานได้
1. ซอฟต์แวร์ระบบ (System software) คือโปรแกรมที่ทำงานใกล้ชิดกับคอมพิวเตอร์มากที่สุด
1.1 โปรแกรมระบบปฏิบัติการ (Operating system)
1.2 โปรแกรมแปลภาษาคอมพิวเตอร์ (Translator program)
1.3 โปรแกรมอรรถประโยชน์ (Utility program)
2. ซอฟต์แวร์สำเร็จรูป (Package) คือ โปรแกรมที่เขียนขึ้นให้ผู้ใช้นำไปใช้ และปรับปรุงไม่ได้
3. ซอฟต์แวร์ประยุกต์ (Application software) คือ โปรแกรมที่เขียนขึ้นเฉพาะงาน สามารถปรับปรุงเพิ่มเติมได้
4. บุคลากร(Peopleware) แบ่งตามหน้าที่ที่เกี่ยวข้องได้ 6 ด้าน (book #4)
1. ผู้ออกแบบ และวิเคราะห์ระบบ (System analysis and design)
2. โปรแกรมเมอร์ (Programmer)
3. ผู้บริหารฐานข้อมูล (Database administrator)
4. ผู้ปฏิบัติการ (Operator)
5. ผู้ใช้ (User)
6. ผู้บริหาร (Manager)
5. Modern computer system
อุปกรณ์ทั้งหมดเชื่อมต่อกันด้วย System bus มักประกอบด้วย memory, memory controller, CPU, disk controller, printer controller, tape-drive controller, disk, printer, tape drives
1. Caching (Cache = ขุมทรัพย์ ที่ซ่อนของ ที่เก็บ)
cache คือหน่วยความจำขนาดเล็กที่อยู่ระหว่าง main memory กับ cpu เมื่อ cpu ต้องการใช้ข้อมูลจะมาตรวจว่ามีใน cache หรือไม่ ถ้าไม่มีจึงไปหาใน main memory ดังนั้น cache ที่ใหญ่กว่ามักจะทำให้คอมพิวเตอร์ทำงานได้เร็วกว่า เพราะเสียเวลาเข้าไปใน main memory น้อยกว่านั่นเอง ติดต่อเกาะกัน และคงสภาพไม่เปลี่ยนแปลง (Coherency and Consistency)
คุณสมบัติของหน่วยความจำในการจัดเก็บข้อมูลในสื่อแบบต่าง ๆ เพราะการอ่านข้อมูลจะต้องได้ข้อมูลที่เกาะติดกัน และมีการเปลี่ยนแปลงน้อยสุด มิเช่นนั้นจะเกิดปัญหาในการประมวลผลทั้งด้านความเร็ว และความถูกต้อง
2. ลำดับชั้นของสื่อเก็บข้อมูล (Storage hierarchy)
1. Registers
2. Cache
3. Main memory มีคุณสมบัติเป็น Volatile storage คือ Ram ที่เราซื่อเพิ่มให้กับคอมพิวเตอร์นี่เอง
4. Electronic disk เป็นได้ทั้ง Volatile และ Nonvolatile ขึ้นกับการออกแบบ DRAM ที่ copy ใส่ Magnetic disk เก็บไว้ได้
5. Magnetic disk จานแม่เหล็ก
6. Optical disk สื่อที่ใช้แสงเช่น CD-ROM
7. Magnetic tape เทปแม่เหล็ก
Caching (Cache = ขุมทรัพย์ ที่ซ่อนของ ที่เก็บ)
cache คือหน่วยความจำขนาดเล็กที่อยู่ระหว่าง main memory กับ cpu เมื่อ cpu ต้องการใช้ข้อมูลจะมาตรวจว่ามีใน cache หรือไม่ ถ้าไม่มีจึงไปหาใน main memory ดังนั้น cache ที่ใหญ่กว่ามักจะทำให้คอมพิวเตอร์ทำงานได้เร็วกว่า เพราะเสียเวลาเข้าไปใน main memory น้อยกว่านั่นเอง ติดต่อเกาะกัน และคงสภาพไม่เปลี่ยนแปลง (Coherency and Consistency)
คุณสมบัติของหน่วยความจำในการจัดเก็บข้อมูลในสื่อแบบต่าง ๆ เพราะการอ่านข้อมูลจะต้องได้ข้อมูลที่เกาะติดกัน และมีการเปลี่ยนแปลงน้อยสุด มิเช่นนั้นจะเกิดปัญหาในการประมวลผลทั้งด้านความเร็ว และความถูกต้อง
1. ลำดับชั้นของสื่อเก็บข้อมูล (Storage hierarchy)
1. Registers
2. Cache
3. Main memory มีคุณสมบัติเป็น Volatile storage คือ Ram ที่เราซื่อเพิ่มให้กับคอมพิวเตอร์นี่เอง
4. Electronic disk เป็นได้ทั้ง Volatile และ Nonvolatile ขึ้นกับการออกแบบ DRAM ที่ copy ใส่ Magnetic disk เก็บไว้ได้
5. Magnetic disk จานแม่เหล็ก
6. Optical disk สื่อที่ใช้แสงเช่น CD-ROM
7. Magnetic tape เทปแม่เหล็ก
โครงสร้างเครือข่าย (Network structure)
Local-area networks
Wide-area networks
Unit 1 Introduction to Operating System
• ระบบปฏิบัติการ คือกลุ่มโปรแกรมซึ่งได้รับการจัดระเบียบให้เป็นส่วนเชื่อมโยงระหว่างเครื่องและผู้ใช้เครื่อง โดยจะเอื้ออำนวยการพัฒนาและการใช้โปรแกรมต่าง ๆ รวมถึงการสรรจัดทรัพยากร (resource) ให้มีประสิทธิผลที่ดี
Computer System Components
1. Hardware - เครื่องคอมพิวเตอร์และอุปกรณ์รอบข้าง ( CPU,memory,I/O devices).
2. Operating system - ควบคุมการใช้ฮาร์แวร์ภายใต้การใช้งานโปรแกรมประยุกต์ของผู้ใช้ระดับต่างๆ
3. Applications programs - โปรแกรมประยุกต์ที่ใช้ในการแก้ปัญหาของผู้ใช้ (compilers, database systems, video games, business programs).
4. Users (people,machines,other computers).
Operating System Definitions
1. Resource allocator – บริหารการจัดสรรทรัพยากร เช่น การจัดการ Harddisk , memory , printer ให้เกิดประโยชน์ได้อย่างเต็มที่
2. Control program – ควบคุมการ execute โปรแกรมของผู้ใช้ และการทำงานของอุปกรณ์รับส่งข้อมูล
3. Kernel (แก่นแท้) – โปรแกรมที่ทำงานอยู่ตลอดเวลาบนคอมพิวเตอร์
Early/First Generation Systems
จ้างผู้ควบคุม
ผู้ใช้ <> ผู้ควบคุม
ป้อน Card reader
ลดเวลาโดยใช้ batching similar jobs
Automatic job sequencing - ควบคุมการย้ายงานหนึ่งไปอีกงานหนึ่งโดย
อัตโนมัติ
Resident monitor
– initial control in monitor
– ควบคุมการย้ายงาน
- เมื่อทำงานครบจะกลับมาที่ monitor
ปัญหา
– Monitor จะรู้ได้เกี่ยวกับงานได้อย่างไร (เช่น Fortran กับ
Assembly) หรือทำงานกับโปรแกรมใด?
– Monitor จะแยกงานได้อย่างไร
งาน 1 หรือ งาน 2 หรือ..?
ข้อมูลจากโปรแกรม?
วิธีการแก้
- ใช้ control cards
Spooling
Overlap I/O (ทำงานแบบเลื่อมล้ำกันได้)
– อ่านงานถัดไปจาก Card reader (job queue).
– ส่งผลลัพธ์ของงานที่แล้วจากดิสก์ไปยังเครื่องพิมพ์
Job pool - ที่เก็บงานต่าง ๆ ที่ทำงาน
Second Generation Systems
• 1956 -- 1965
• Transistors and batch systems
• Clear distinction between designers, builders, operators, programmers, and maintenance personnel
• I/O channel
• Read ahead / spooling
• Interrupts / exceptions
• Minimal protection
• Libraries / JCL
Third Generation Systems
• 1965 -- 1980
• ICs and Multiprogramming
• System 360 and S/370 family of computers
• Spooling (simultaneous peripheral operation on-line)
• Time sharing
• On-line storage for
– System programs
– User programs and data
– Program libraries
• Virtual memory
• Multiprocessor configurations
• MULTICS
Fourth Generation and Beyond
• Personal computers and workstations
• MS-DOS and Unix
• Massively parallel systems
– Pipelining
– Array processing / SIMD
– General multiprocessing / MIMD
– Symmetric multiprocessing / SMD
Any process and any thread can run on any available processor
• มีระบบ Computer networks (communication aspect) -- network operating systems
• ระบบ Distributed computing -- distributed operating systems