More Related Content
More from Nu Mai Praphatson
More from Nu Mai Praphatson (12)
B7
- 3. ในระบบโปรแกรมเดี่ยว การจัดการหน่วยความจาแบบ
หน่วยความจาจริงก็คือ การใช้หน่วย ความจาแบบธรรมดา โดยที่
โปรแกรมของผู้ใช้จะต้องไม่โตเกินกว่าขนาดของหน่วยความจาที่มีอยู่
(ในส่วนของผู้ใช้เท่านั้นไม่รวมส่วนของระบบปฏิบัติการ)ส่วนการทาโอ
เวอร์เลย์นั้นจะต่างกับแบบหน่วย ความจาจริงตรงที่โปรแกรมของผู้ใช้มี
ขนาดโตกว่าขนาดของหน่วยความจาที่มีอยู่ได้โดยการโหลด เอาส่วนที่
ใช้งานลงไปก่อน ส่วนไหนยังไม่ใช้ก็เก็บไว้ในดิสก์ ซึ่งทั้งหมดนี้ผู้ใช้
จะต้องเขียนโปรแกรม ให้โปรแกรมเป็นผู้จัดการเองทั้งหมด ลักษณะ
การจัดการแบบโอเวอร์เลย์นี้มีหลักการทางานเหมือนกับระบบ
หน่วยความจาเสมือน
- 4. ในระบบหลายโปรแกรม การจัดการหน่วยความจาแบบหน่วยความจา
จริงนั้น แบ่งเป็นการจัดการแบบแบ่งพื้นที่ในหน่วยความจา และไม่ได้แบ่ง
หน่วยความจา การแบ่งหน่วยความจายังแบ่งย่อยเป็น 2 ประเภท คือ ส่วน
แบ่งย่อยมีขนาดคงที่แน่นอน และขนาดไม่คงที่ อย่างไรก็ตามก็มีข้อจากัด
เช่นเดียวกับในระบบโปรแกรมเดี่ยว คือ ขนาดของโปรแกรมจะต้องไม่โตเกินกว่า
ขนาดของหน่วยความจาที่มีอยู่ในระบบ ดังนั้นเราอาจแบ่งการจัดการ
หน่วยความจาออกเป็น 2 ประเภทใหญ่ ๆ คือ ระบบหน่วยความจาจริงและ
ระบบหน่วยความจาเสมือน โดยที่ในระบบหน่วยความจาจริงขนาดของ
โปรแกรมจะต้องไม่โตกว่าขนาดของหน่วยความจาที่มีอยู่ ลบด้วยขนาดของ
หน่วยความจาที่เป็นส่วนของระบบปฏิบัติการ ส่วนระบบหน่วยความจาเสมือน
ขนาดของโปรแกรมจะโตเท่าไรก็ได้
- 10. การแปลงส่งแอดเดรส (AddressMapping)
เนื่องจากขนาดของโปรแกรมสามารถมีขนาดโตกว่าขนาดของ
หน่วยความจา ดังนั้น แอดเดรสที่อ้างอิงภายในโปรแกรมจึงต่างกับแอดเดรสของ
หน่วยความจาจริง ตัวอย่างเช่น ระบบ คอมพิวเตอร์มีหน่วยความจามากที่สุดได้
แค่ 1 ล้านไบต์ ดังนั้นการอ้างถึงตาแหน่งต่าง ๆ ในหน่วย ความจาจะต้องใช้
แอดเดรสที่มีเลข 6 หลัก แอดเดรสที่ 000000 ถึง 999999 (เพื่อให้เกิดความ
เช้าใจได้โดยง่าย จึงใช้เลขฐานสิบเท่านั้น ไม่ใช้เลขฐานสิบหก)
เทคนิคการแปลงส่งแอดเดรสมือยู,หลายวิธีแต่วิธีที่นิยมใช้กันมากที่สุด
คือ วิธี DAT (Dynamic Address Translation)
- 13. หน่วยความจาเสมือนระบบหน้า (Paging System)
ในระบบที่แบ่งบล็อกเป็นหน้า มีการทางานที่ค่อนข้างง่ายเหมาะแก่
การที่จะใช้อธิบายให้เกิด ความเข้าใจในการทางาน และเพื่อให้เข้าใจการ
ทางานของระบบปฏิบัติการในระบบหน้าง่ายยิ่งขึ้น จึงสมมติระบบหน้าขึ้นมา
ระบบหนึ่งสมมติว่าในระบบมีหน่วยความจาอยู่ 100 กิโลไบต์ แต่อาศัยระบบ
หน่วยความจาเสมือน ท่าให้ผู้ใช้สามารถรันหรือเขียนโปรแกรมที่มีขนาดโตได้
ถึง 1,000 กิโลไบต์ ดังนั้น แอดเดรส เสมือนจะเป็นเลข 6 หลัก ส่วนแอดเดรส
จริงมีเพียง 5 หลัก สมมติว่า ระบบปฏิบัติการกาหนดให้ 1 หน้าที่ขนาด 1
กิโลไบต์ ถ้าจะอ้างถึงแอดเดรสต่าง ๆ ภายในหน้า 1 หน้า จะต้องใช้เลข 3 หลัก
- 15. ในส่วนของหน่วยความจาจริง ระบบปฏิบัติการ ก็ต้องแบ่งหน่วยความจา
จริงออกเป็นหน้า และมีขนาดเท่ากับหน้าในหน่วยความจาเสมือนด้วย เช่น ถ้า
หน่วยความจาจริงมีขนาด 100 กิโลไบต์ ดังนั้นหน่วยความจาจริงจึงมีจานวนหน้า
เท่ากับ 100 หน้า คือ ตั้งแต่หน้า 00 ถึง หน้าที่ 99 โดย 2 หลักแรกของแอดเดรส
จริงบอกถึงหมายเลขหน้า และ 3 หลักหลังจะเป็นดีสเพลซเมนต์ (Displacement)
ภายในหน้า ซึ่งมีลักษณะเหมือนกับในหน่วยความจาเสมือน
- 18. การแปลงส่งแบบสาระ (Associative Mapping)
วิธีการแปลงส่งแอดเดรส เรียกอีกอย่างว่า เป็นการแปลงส่งแบบ
ตรง (Direct Mapping) แต่ยังมีวิธีการแปลงแอดเดรสอีกวิธีหนึ่งซึ่งมี
ความเร็วสูงกว่ามาก เรียกว่าการแปลงส่งแบบสาระ (Associative
Mapping) วิธีการแปลงคือ หมายเลขหน้าจากแอดเดรสเสมือนถูกส่งเช้า
ไปตรวจสอบ ในตารางที่เรียกว่า ตารางหน้าแบบสาระ (Associative
Page Table) พร้อมกันทุกช่อง และจะได้ค่าแอดเดรสเริ่มต้นของหน้าใน
หน่วยความจาจริงที่เก็บหน้านี้เอาไว้ออกมาทันที
- 22. ระบบการใช้หน้ารวม (Sharing Page System)
ในการทางานของระบบผู้ใช้หลายคน ณ ขณะใดขณะหนึ่ง ผู้ใช้
แต่ละคนอาจจะเรียกใช้โปรแกรมเดียวกันพร้อมกันก็ได้ เช่น นาย A, B และ
C เรียกใช้โปรแกรมเอดิเตอร์ (Editor) โปรแกรมเดียวกันพร้อมกันทั้ง 3 คน
ในกรณีเช่นนี้ระบบปฏิบัติการจะต้องนาโคดโปรแกรมเอดิเตอร์ตัวเดียวกัน
นี้โหลดเข้าไปในหน่วยความจาถึง 3 ครั้ง โปรแกรมเอดิเตอร์ก็จะปรากฏอยู่
ในหน่วยความจาถึง 3 แห่ง แต่ถ้าผู้ใช้ทั้ง 3 คนสามารถใช้โคดโปรแกรม
ร่วมกันได้ เราก็จะสามารถประหยัดเนื้อที่ของหน่วยความจาไปได้มาก
เพราะโคดของโปรแกรมเอดิเตอร์จะปรากฏอยู่ในหน่วยความจา เพียงแห่ง
เดียว
- 29. หน่วยความจาเสมือนระบบผสมหน้าและเซ็กเมนต์
วิธีการทาหน่วยความจาเสมือนแบบผสม (Combined
Paging/Segmentation System) นี้ได้รวบรวมเอาลักษณะการทางานของ
ระบบหน้าและระบบเซ็กเมนต์เข้าด้วยกัน กล่าวคือ ระบบจะแบ่ง
หน่วยความจาออกเป็นหน้าที่มีขนาดเท่ากัน ในโปรแกรมของผู้ใช้จะถูกแบ่ง
ออกเป็นเซ็กเมนต์ ภายในเซ็กเมนต์จะถูกแบ่งออกเป็นหลาย ๆ หน้า ดังนั้น
ขนาดของเซ็กเมนต์จะเป็นจานวนเท่าของหน้า แต่ละเซ็กเมนต์ของโปรแกรม
ไม่จาเป็นต้องอยู่เรียงกันในหน่วยความจา และแต่ละหน้าภายในเซ็กเมนต์
เดียวกันก็ไม่จาเป็นต้องอยู่เรียงติดกันในหน่วยความจาจริง การผสมเอาระบบ
หน้าและเซ็กเมนต์เข้าด้วยกันทาให้ประสิทธิภาพการทางานของระบบดีขึ้น
- 31. วิธีการแปลงส่งแอดเดรสจะซับซ้อนขึ้นอีกระดับหนึ่งจากระบบ
หน้า โดยแต่ละโปรเซสจะมีตารางเซ็กเมนต์ 1 ตาราง แต่ละเซ็กเมนต์จะมี
ตารางหน้าของมันเอง ดังนั้นโปรเซสจึงมีตารางหน้าเท่ากับจานวนเซ็ก
เมนต์ของโปรเซสนั้น จานวนซ่องของตารางหน้าของเซ็กเมนต์นั้น การ
แปลงแอดเดรสทาดังนี้นาหมายเลขเซ็กเมนต์ (S) ของแอดเดรสเสมือน
ไปหาแอดเดรสของตารางหน้าที่เก็บอยู่ในตารางเซ็กเมนต์ เมื่อทราบว่า
ตารางหน้าอยู่ที่ใดในหน่วยความจาแล้วใช้หมายเลขหน้า P เพื่อหาค่า
แอดเดรสของหน้า P ในหน่วยความจา นาค่าแอดเดรสนี้บวกกับดีสเพลซ
เมนต์ก็จะได้แอดเดรสจริงในหน่วยความจา
- 33. 1. แบบสุ่ม (Random) เลือกโดยการสุ่มเดา ทุกหน้ามีโอกาสถูก
เลือกเท่ากันหมด
2. FIFO (First In First Out) หน้าใดที่ถูกโหลดเข้ามาใน
หน่วยความจาก่อนก็จะถูกเลือกออกไปก่อนเรียงตามลาดับเวลา
3. NFU (Not Frequently Used) เลือกหน้าที่ถูกใช้น้อยครั้งที่สุด
ทั้งนี้เพราะหน้าที่ถูกใช้น้อย โอกาสที่ถูกใช้ในเวลาต่อมาก็จะน้อยด้วย ดังนั้น
จึงควรเอาออกจากหน่วยความจาแต่วิธีนี้อาจจะทาให้หน้าที่พึ่งถูกโหลดเข้า
มาถูกเลือกออกไปได้ เพราะหน้าที่พึ่งถูกโหลดเข้ามาอยู่ใหม่จานวนการใช้
ย่อมน้อยกว่าหน้าซึ่งอยู่มานานแล้ว
- 35. อัลกอริทึมการแทนที่
เมื่อเกิด Page Fault ของหน้าในระบบหน้า และในหน่วยความจาไม่
มีหน้าใดว่างอยู่เลย ก่อนที่ ระบบปฏิบัติการจะโหลดเอาหน้าใหม่เช้ามาใน
หน่วยความจานั้น ระบบปฏิบัติการ ต้องตัดสินใจก่อน ว่าควรจะเลือกหน้าใด
เพื่อที่จะวางหน้าใหม่ทับลงไป สิ่งที่ระบบปฏิบัติการใช้ในการตัดสินใจเลือก
หน้าเรียกว่า อัลกอริทึมการแทนที่ (Replacement Strategy) ซึ่งมีอยู่ 5 วิธี
ด้วยกัน คือ
- 36. 4. LRU (Least Recently Used) แต่ละหน้าจะมีการบันทึกเวลา
ในการใช้ครั้งหลังสุดไว้ หน้าใดที่ไม่ได้ถูกใช้มานานมากที่สุดจะถูกเลือกวิธีนี้
จะเป็นผลเสียต่อโปรแกรมที่มีการทางานแบบ วนรอบ (Loop) และวนรอบมี
ขนาดใหญ่มาก ๆ (หลาย ๆ หน้า)
5. NUR(Not Used Recently) แต่ละหน้าจะมีบิตกากับอยู่ 2
บิตคือ บิตอ้างอิง (Referent Bit) และบิตแก้ไข (Modify Bit) เมื่อหน้าถูก
โหลดเข้าไปในหน่วยความจา 2 บิตนี้จะเป็น 0 เมื่อ ใดที่มีการอ้างถึงหน้าใด
บิตอ้างอิงของหน้านั้นจะเป็น 1 และเมื่อหน้านั้นถูกแก้ไขอะไรบางอย่าง
ภายในหน้าบิตแก้ไขจะเป็น 1 ทุกๆช่วงเวลาหนึ่ง เช่น 10 มิลลิวินาทีบิต
อ้างอิงของทุก ๆ หน้าจะถูกเปลี่ยนเป็น 0 หมด
- 37. ดังนั้นจาก 2 บิตนี้เราจะแบ่งประเภทของหน้าออกเป็น 4 ประเภทคือ
1.ไม่มีการอ้างถึง ไม่มีการแก้ไข
2.ไม่มีการอ้างถึง มีการแก้ไข
3. มีการอ้างถึง ไม่มีการแก้ไข
4.มีการอ้างถึง มีการแก้ไข
การเลือกหน้าในระบบหน้าใช้อัลกอริทึมการแทนที่เพียงอย่างเดียว
แต่สาหรับในระบบ เซ็กเมนต์ต้องคานึงถึงอัลกอริทึมการวางด้วย Best Fit,
First Fit, Worst Fit เพื่อให้เกิดที่ว่างใน หน่วยความจาเหมาะสมที่สุด ทั้งนี้
เพราะแต่ละเซ็กเมนต์มีขนาดไม่เท่ากัน
- 39. อัลกอริทึมการเฟตซ์
อัลกอริทึมการเฟตซ์ (Fetch Strategy) หมายถึง
วิธีการโหลดหน้า หรือเซ็กเมนต์จากดิสก์เข้าไปใน
หน่วยความจา แบ่งออกได้เป็น 2 วิธี
1. การเฟตซ์แบบต้องการ (Demand Fetch) วิธีนี้
ระบบปฏิบัติการ จะโหลดเฉพาะหน้าหรือ เซ็กเมนต์ที่ต้องการ
ใช้เท่านั้นเข้าไปในหน่วยความจา
- 40. 2. การเฟตซ์แบบคาดเดา (Anticipate Fetch)
ระบบปฏิบัติการจะมีการคาดเดาว่าหน้า หรือ เซ็กเมนต์ไหนจะ
ถูกใช้เป็นหน้าหรือเซ็กเมนต์ต่อไป และจะโหลดหน้าหรือเซ็ก
เมนต์นั้นเข้าไปไว้หน่วยความจาล่วงหน้า (ก่อนเกิดการใช้จริง ๆ)
ซึ่งทาให้โปรแกรมทางานได้เร็วขึ้น (ไม่เสียเวลารอ ขณะเกิดความ
ผิดพลาดของหน้า) แต่ระบบต้องมีการทางานเพิ่มขึ้นและบางครั้ง
เกิดการคาดเดาที่ ผิดพลาดด้วยทาให้หน้าหรือเซ็กเมนต์ที่ถูก
โหลดเข้าไปล่วงหน้าไม่ได้ถูกใช้งาน
- 43. ระดับ 1 ระดับ 2
รูปหน่วยความจา 2 ระดับ
เราอาจมีหน่วยความจาได้หลายระดับ หน่วยความจาระดับต่า
จะมีคุณสมบัติที่ตรงกันข้ามกับ หน่วยความจาในระดับสูงกว่า คือ หน่าย
ความจาในระดับที่ต่าลงจะมีราคาแพงขึ้น ความเร็วในการเข้าถึงสูงขึ้น
ความจุต่าลง แต่หน่วยความจาในระดับสูงขึ้นจะมีราคาถูกกว่า ความเร็ว
ในการเข้าถึงต่าลง ความจุสูงขึ้น