Your SlideShare is downloading. ×
Chapter 9:  Memory Management   บทที่  9  การบริหารจัดการหน่วยความจำ  <ul><li>Background </li></ul><ul><li>Swapping  </li>...
Background  ความเป็นมา  <ul><li>เนื่องจากโปรแกรมต้องมีพื้นที่ในหน่วยความจำเพื่ออาศัยอยู่ในระหว่างทำงาน  </li></ul><ul><li>...
Binding of Instructions and Data to Memory การผูกความสัมพันธ์ ระหว่างคำสั่งกับข้อมูลในหน่วยความจำ  <ul><li>Compile time  ข...
Multistep Processing of a User Program  โปรเซสขั้นตอนต่างๆ ของโปรแกรมของผู้ใช้
Logical vs. Physical Address Space พื้นที่ของแอดเดรสแบบเชิงตรรกและเชิงกายภาพ <ul><li>แนวคิดของพื้นที่แอดเดรสเชิงตรรก เป็นก...
Memory-Management Unit (MMU)  หน่วยบริหารจัดการหน่วยความจำ  <ul><li>อุปกรณ์ฮาร์ดแวร์ ที่ทำการแมพระหว่างแอดเดรสเสมือนกับแอด...
Dynamic relocation using a relocation register การจัดสรรพิ้นที่ใหม่แบบไดนามิก โดยใช้รีจีสเตอร์ ในการจัดสรรพื้นที่ใหม่
Dynamic Loading  การโหลดแบบไดนามิก <ul><li>การทำงานแบบประจำจะไม่ถูกโหลดจนกว่าจะถูกเรียกใช้ </li></ul><ul><li>เป็นการใช้งาน...
Dynamic Linking  การเชื่อมโยงแบบไดนามิก <ul><li>การเชื่อมโยงจะถูกเลื่อนออกไปจนกว่าจะถึงเวลาในการเอ็กซ์ซีคิวท์  </li></ul><...
Overlays  โอเวอร์เลย์  ( การทับซ้อน ) <ul><li>จะคงไว้ในหน่วยความจำก็ต่อเมื่อคำสั่งและข้อมูลต่างๆ ที่จำเป็นในทุกขณะในการทำง...
Overlays for a Two-Pass Assembler  โอเวอร์เลย์สำหรับ การทำงานของแอสเซมเบลอร์
Swapping  การสลับการทำงาน <ul><li>แต่ละโปรเซสสามารถถูกสลับการทำงานออกจากหน่วยความจำไปยังหน่วยจัดเก็บสำรองเป็นการชั่วคราว แ...
Swapping  การสลับการทำงาน   (cont.) <ul><li>Roll out, roll in –  โรลเอ้าท์ และโรลอิน การสลับการทำงานลักษณะต่างๆ ใช้อัลกอริ...
Schematic View of Swapping  มุมมองขอบเขตในการสลับการทำงานของโปรเซส
Contiguous Allocation  การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน <ul><li>โดยปกติหน่วยความจำหลักจะถูกแบ่งออกเป็นสองส่วนหลัก  </li...
Contiguous Allocation  การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน   (cont.) <ul><li>การจัดสรรพื้นที่แบบส่วนเดียว </li></ul><ul><u...
Hardware Support for Relocation and Limit Registers ฮาร์ดแวร์รองรับการจัดสรรพื้นที่ใหม่และรีจีสเตอร์จำกัด
Contiguous Allocation  การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน  (Cont.) <ul><li>การจัดสรรพื้นที่แบบหลายส่วน  Multiple-partitio...
Dynamic Storage-Allocation Problem  ปัญหาของการจัดสรรและการจัดเก็บแบบไดนามิก หรือแปรผัน <ul><li>First-fit :  การกำหนดพื้นท...
Fragmentation  การแฟรกเมนท์ การจัดการกับความแตกกระจาย <ul><li>External Fragmentation  –  การแฟรกเมนท์แบบภายนอก หมายถึงพื้น...
Fragmentation  การแฟรกเมนท์ การจัดการกับความแตกกระจาย <ul><li>Reduce external fragmentation by compaction  การลดการแฟรกเมน...
Paging  การทำเพจจิ้ง หรือการจัดหน้า <ul><li>พื้นที่แอดเดรสแบบตรรก ของโปรเซสสามารถที่จะเกิดขึ้นแบบไม่ต่อเนื่อง  </li></ul><...
Address Translation Scheme  แนวทางการแปลงแอดเดรส  <ul><li>แอดเดรสถูกสร้างหรือกำหนดขึ้นโดยหน่วยประมวลผล ถูกแบ่งออกเป็นแบบต่...
Address Translation Architecture  สถาปัตยกรรมการแปลงแอดเดรส
Paging Example  ตัวอย่างการทำเพจ
Paging Example  ตัวอย่างการทำจัดเพจ
Free Frames  ฟรีเฟรม ก่อนถูกจัดสรร หลังถูกจัดสรร
Implementation of Page Table  การใช้งานตารางเพจ  <ul><li>ตารางเพจจะถูกเก็บอยู่ในหน่วยความจำหลัก </li></ul><ul><li>Page-tab...
Associative Memory  หน่วยความจำร่วม <ul><li>Associative memory  หน่วยความจำร่วม  –  parallel search  -  การค้นหาแบบขนาน  <...
Paging Hardware With TLB ฮาร์ดแวร์การจัดเพจ ด้วย  TLB
Effective Access Time  ผลกระทบเวลาในการเข้าถึง หรือแอกเซสไทม์  <ul><li>Associative Lookup =    time unit </li></ul><ul><l...
Memory Protection  การปกป้องหน่วยความจำ  <ul><li>การปกป้องหน่วยความจำ ถูกนำมาใช้ด้วย บิทของการปกป้องร่วม ในแต่ละเฟรม  </li...
Valid (v) or Invalid (i) Bit In A Page Table บิทบ่งชี้ความถูกต้องและไม่ถูกต้องในตารางเพจ
Page Table Structure  โครงสร้างตารางเพจ <ul><li>Hierarchical Paging </li></ul><ul><li>Hashed Page Tables </li></ul><ul><li...
Hierarchical Page Tables  การจัดเพจเชิงลำดับ <ul><li>ทำการแปลงค่าจากพื้นที่แอดเดรสเชิงตรรกไปเป็นตารางเพจแบบหลายตาราง </li>...
Two-Level Paging Example  ตัวอย่างตารางเพจแบบสองระดับ <ul><li>ส่วนของเลขที่หน้าของเพจ ใช้  24  บิท  </li></ul><ul><li>ส่วน...
Two-Level Page-Table Scheme  รูปแบบของตารางเพจแบบสองระดับ
Address-Translation Scheme  รูปแบบในการแปลงค่าแอดเดรส  <ul><li>รูปแบบในการแปลงค่าแอดเดรส สำหรับสถาปัตยกรรมการจัดเพจแบบ  32...
Hashed Page Tables  ตารางเพจแบบเข้ารหัสด้วยการแฮช  <ul><li>โดยทั่วไปใช้ในพื้นที่แอดเดรสที่มากกว่า  32  บิท  </li></ul><ul>...
Hashed Page Table  ตารางเพจที่ถูกแฮช
Inverted Page Table  ตารางเพจแบบแปลงค่า  <ul><li>การเข้าถึงพื้นที่เพจของหน่วยความจำ แต่ละเพจจริงๆ แต่ละครั้ง  </li></ul><u...
Inverted Page Table Architecture  ตารางเพจแบบแปลงค่า
Shared Pages  เพจร่วม  <ul><li>โค้ดร่วม ( โค้ดที่ถูกแบ่งปันการใช้งาน หรือใช้งานร่วมกัน )  </li></ul><ul><ul><li>ชุดสำเนาหน...
Shared Pages Example   ตัวอย่างการใช้เพจร่วม
Segmentation   การแบ่งส่วนหรือ การทำเซ็กเม้นท์  <ul><li>แนวทางในการบริหารจัดการหน่วยความจำ ที่รองรับการใช้งานหน่วยความจำใน...
User’s View of a Program  มุมมองของผู้ใช้ที่มีต่อโปรแกรม
Logical View of Segmentation  มุมมองเชิงตรรก ของการทำเซ็กเม้นท์  1 3 2 4 user space  physical memory space 1 4 2 3
Segmentation Architecture  สถาปัตยกรรมของการทำเซ็กเม้นท์  <ul><li>แอดเดรสเชิงตรรก ประกอบไปด้วยสองทูเปิล  </li></ul><ul><li...
Segmentation Architecture  สถาปัตยกรรมการทำเซ็กเม้นท์  (Cont.) <ul><li>Relocation. </li></ul><ul><ul><li>dynamic </li></ul...
Segmentation Architecture  สถาปัตยกรรมการทำเซ็กเม้นท์  (Cont.) <ul><li>การปกป้อง ในการเข้าใช้ตารางเซ็กเม้นท์แต่ละครั้งต้อง...
Segmentation Hardware  ฮาร์ดแวร์สำหรับการทำเซ็กเม้นท์
Example of Segmentation  ตัวอย่างการทำเซ็กเม้นท์
Sharing of Segments  การใช้เซ็กเม้นท์ร่วมกัน
Segmentation with Paging – MULTICS การทำเซ็กเม้นท์ด้วยการจัดเพจ  <ul><li>ระบบ  MULTICS  ถูกใช้เพื่อแก้ปัญหา การแตกกระจายภา...
MULTICS Address Translation Scheme รูปแบบการแปลงแอดเดรส  MULTICS
Segmentation with Paging – Intel 386 การทำเซ็กเม้นท์ด้วยการจัดเพจ ใน อินเทล  386  <ul><li>จากที่แสดงดังไดอะแกรม อินเทล  38...
Intel 80386 Address Translation  การแปลงแอดเดรส ในอินเทล  80386
Upcoming SlideShare
Loading in...5
×

Ch09th

9,204

Published on

Operating System
ระบบปฏิบัติการคอมพิวเตอร์
by Nuttha Otanasap (ณัฏฐ์ โอธนาทรัพย์)
Computer Science Dept.,
South-east Asia University
Bangkok 10160 Thailand
email: auisuke@gmail.com
website:auisuke
auisuke.blogspot.com
Hi5:auisuke.hi5.com
Copyrights 2009 SE Asia University All Rights Reserved

Published in: Technology

Transcript of "Ch09th"

  1. 1. Chapter 9: Memory Management บทที่ 9 การบริหารจัดการหน่วยความจำ <ul><li>Background </li></ul><ul><li>Swapping </li></ul><ul><li>Contiguous Allocation </li></ul><ul><li>Paging </li></ul><ul><li>Segmentation </li></ul><ul><li>Segmentation with Paging </li></ul><ul><li>ความเป็นมา </li></ul><ul><li>การสลับการทำงาน </li></ul><ul><li>การจัดสรรพื้นที่ร่วมกัน </li></ul><ul><li>การจัดพื้นที่หน้า หรือ เพจจิ้ง </li></ul><ul><li>การแบ่งส่วน </li></ul><ul><li>การแบ่งส่วนด้วยเพจจิ้ง </li></ul>
  2. 2. Background ความเป็นมา <ul><li>เนื่องจากโปรแกรมต้องมีพื้นที่ในหน่วยความจำเพื่ออาศัยอยู่ในระหว่างทำงาน </li></ul><ul><li>อินพุทคิว Input queue โปรเซสทั้งหมด ที่อยู่บนดิสค์ ซึ่งรอคอยที่จะเข้าไปอยู่ในหน่วยความจำ เพื่อสามารถทำงานตามโปรแกรมที่กำหนด </li></ul><ul><li>โปรแกรมของผู้ใช้งาน จะต้องผ่านขั้นตอนต่างๆ ก่อนที่จะเข้าสู่กระบวนการทำงาน </li></ul>
  3. 3. Binding of Instructions and Data to Memory การผูกความสัมพันธ์ ระหว่างคำสั่งกับข้อมูลในหน่วยความจำ <ul><li>Compile time ขณะเกิดการคอมไพล์ : หากการจัดสรรพื้นที่ของหน่วยความจำทราบถึงระดับความสำคัญ ก็จะสามารถสร้างโค้ดสัมบูรณ์ ต้องคอมไพล์โค้ด หากพื้นที่ในการเริ่มต้นการทำงานเปลี่ยนแปลง </li></ul><ul><li>Load time ขณะเกิดการโหลด : จะต้องสร้างโค้ดที่สามารถจัดสรรพื้นที่หน่วยความจำขึ้นใหม่ หากไม่ทราบถึงการจัดสรรพื้นที่หน่วยความจำ ในขณะคอมไพล์ </li></ul><ul><li>Execution time ขณะเกิดการเอ็กซ์ซีคิวท์ : การผูกความสัมพันธืหรือเชื่อมโยงต้องล่าช้า จนกว่าเกิดการทำงาน หากโปรเซสสามารถถูกเคลื่อนย้ายในระหว่างกำลังเอ็กซ์ซีคิวท์ จากพื้นที่หนึ่งในหน่วยความจำไปยังพื้นที่อื่นๆ จำเป็นต้องอาศัยฮาร์ดแวร์ในการแมพแอดเดรส </li></ul>การผูกแอดเดรสของคำสั่งกับข้อมูลเพื่อแอดเดรสของหน่วยความจำ สามารถเกิดสถานะต่างๆ สามสถานะด้วยกันดังนี้
  4. 4. Multistep Processing of a User Program โปรเซสขั้นตอนต่างๆ ของโปรแกรมของผู้ใช้
  5. 5. Logical vs. Physical Address Space พื้นที่ของแอดเดรสแบบเชิงตรรกและเชิงกายภาพ <ul><li>แนวคิดของพื้นที่แอดเดรสเชิงตรรก เป็นการนำพื้นที่แอดเดรสเชิงกายภาพหลายพื้นที่มารวมกันไว้ที่ส่วนกลางเพื่อการบริหารจัดการหน่วยความจำ </li></ul><ul><ul><li>Logical address – แอดเดรสเชิงตรรก ถูกสร้างขึ้นโดยหน่วยประมวลผลกลาง และถูกอ้างถึงโดยแอดเดรสเสมือน </li></ul></ul><ul><ul><li>Physical address – แอดเดรสเชิงกายภาพ แอดเดรสถูกมองเห็นได้เฉพาะหน่วยย่อยของหน่วยความจำ </li></ul></ul><ul><li>แอดเดรสเชิงตรรกและเชิงกายภาพ ก็คือสิ่งเดียวกันของการผูกแอดเดรส ในขณะคอมไพล์ และขณะโหลด </li></ul><ul><li>แอดเดรสเชิงตรรก ( แอดเดรสเสมือน ) และแอดเดรสเชิงกายภาพ จะแตกต่างกันของการผูกแอดเดรส ในขณะเอ็กซ์ซีคิวท์ </li></ul>
  6. 6. Memory-Management Unit (MMU) หน่วยบริหารจัดการหน่วยความจำ <ul><li>อุปกรณ์ฮาร์ดแวร์ ที่ทำการแมพระหว่างแอดเดรสเสมือนกับแอดเดรสทางกายภาพ </li></ul><ul><li>ในแนวทาง MMU ค่าที่เก็บอยู่ในรีจีสเตอร์เพื่อการจัดสรรพื้นที่ใหม่จะถูกเพิ่มเข้าสู่ แอดเดรสทุกๆ แอดเดรสที่ถูกสร้างขึ้นโดย โปรเซสของผู้ใช้ในขณะที่โปรเซสนั้นถูกส่งเข้าสู่หน่วยความจำ </li></ul><ul><li>การทำงานของโปรแกรมของผู้ใช้ด้วยแอดเดรสเชิงตรรก จะไม่คำนึงถึงแอดเดรสทางกายภาพจริงๆ </li></ul>
  7. 7. Dynamic relocation using a relocation register การจัดสรรพิ้นที่ใหม่แบบไดนามิก โดยใช้รีจีสเตอร์ ในการจัดสรรพื้นที่ใหม่
  8. 8. Dynamic Loading การโหลดแบบไดนามิก <ul><li>การทำงานแบบประจำจะไม่ถูกโหลดจนกว่าจะถูกเรียกใช้ </li></ul><ul><li>เป็นการใช้งานพื้นที่ในหน่วยความจำที่ดีที่สุด โดยส่วนงานประจำที่ไม่ถูกใช้งานก็จะไม่ถูกโหลด </li></ul><ul><li>มีประโยชน์มากเมื่อโค้ดที่มีขนาดใหญ่เป็นที่ต้องการเพื่อจัดการกับกรณีที่เกิดขึ้นไม่บ่อย </li></ul><ul><li>ไม่ต้องรองรับการทำงานพิเศษใดๆ จากระบบปฏิบัติการ ที่ต้องการที่จะต้องถูกใช้งานด้วยการออกแบบโปรแกรม </li></ul>
  9. 9. Dynamic Linking การเชื่อมโยงแบบไดนามิก <ul><li>การเชื่อมโยงจะถูกเลื่อนออกไปจนกว่าจะถึงเวลาในการเอ็กซ์ซีคิวท์ </li></ul><ul><li>โค้ดขนาดเล็ก สตับ ถูกใช้เพิ่อ จัดสรรให้กับการทำงานที่เกิดขึ้นประจำของไลบรารีพื้นที่หน่วยความจำที่เหมาะสม </li></ul><ul><li>สตับจะวางซ้อนบนตัวเองด้วยแอดเดรสของการทำงานที่เกิดขึ้นเป็นประจำ และทำการเอ็กซ์ซีคิวท์งนประจำนั้น </li></ul><ul><li>ระบบปฏิบัติการต้องการตรวจสอบ หากการทำงานประจำอยู่ในแอดเดรสหน่วยความจำของโปรเซส </li></ul><ul><li>การเชื่อมโยงแบบไดนามิกคือการใช้ประโยชน์แบบแบ่งส่วนที่ดีสำหรับไลบรารี่ </li></ul>
  10. 10. Overlays โอเวอร์เลย์ ( การทับซ้อน ) <ul><li>จะคงไว้ในหน่วยความจำก็ต่อเมื่อคำสั่งและข้อมูลต่างๆ ที่จำเป็นในทุกขณะในการทำงาน </li></ul><ul><li>จำเป็นที่ต้องใช้เมื่อโปรเซสมีขนาดใหญ่กว่าพื้นที่ที่สามารถใช้ได้ทั้งหมดในหน่วยความจำ </li></ul><ul><li>การใช้งานโดยผู้ใช้ ไม่จำเป็นต้องมีการรองรับการทำงานเป็นกรณีพิเศษใดๆ จากระบบปฏิบัติการ </li></ul><ul><li>การออกแบบการโปรแกรมของโครงสร้างการโอเวอร์เลย์ มีความมสลับซับซ้อน </li></ul>
  11. 11. Overlays for a Two-Pass Assembler โอเวอร์เลย์สำหรับ การทำงานของแอสเซมเบลอร์
  12. 12. Swapping การสลับการทำงาน <ul><li>แต่ละโปรเซสสามารถถูกสลับการทำงานออกจากหน่วยความจำไปยังหน่วยจัดเก็บสำรองเป็นการชั่วคราว และจากนั้นก็สามารถกลับเข้ามายังหน่วยความจำเพื่อทำการเอ็กซ์ซีคิวท์ต่อไป </li></ul><ul><li>หน่วยจัดเก็บสำรอง </li></ul><ul><li>ดิสค์ความเร็วสูงมีขนาดใหญ่พอที่จะบรรจุสำเนาข้อมูลแบบอิมเมจทั้งหมดของหน่วยความจำ สำหรับผู้ใช้งานทั้งหมด </li></ul><ul><li>โดยต้องรองรับความสามารถในการเข้าถึงแบบโดยตรงสู่อิมเมจของหน่วยความจำ </li></ul>
  13. 13. Swapping การสลับการทำงาน (cont.) <ul><li>Roll out, roll in – โรลเอ้าท์ และโรลอิน การสลับการทำงานลักษณะต่างๆ ใช้อัลกอริธึมการจัดลำดับการทำงานโดยอิงกับระดับความสำคัญเป็นหลัก </li></ul><ul><li>โปรเซสที่มีระดับความสำคัญต่ำกว่าจะถูกสลับออกเพื่อให้โปรเซสที่มีระดับความสำคัญสูงกว่าสามารถถูกโหลดเข้าสู่หน่วยความจำและทำการเฮ็กซ์ซีคิวท์ได้ </li></ul><ul><li>ส่วนเวลาหลักในการสลับการทำงาน ก็คือเวลาที่ใช้ในการเปลี่ยนถ่ายการทำงาน หรือเวลาในการทรานส์เฟอร์ </li></ul><ul><li>เวลาในการทรานส์เฟอร์ทั้งหมด คือเวลาที่ใช้ไปทั้งมหดในการสลับการทำงานในหน่วยความจำ </li></ul><ul><li>จะพบว่าการสลับการทำงานของโปรเซสรูปแบบต่างๆ มีอยู่ในระบบต่างๆ หลายระบบ อาทิเช่น ยูนิกซ์ ลีนุกซ์ และวินโดวส์ </li></ul>
  14. 14. Schematic View of Swapping มุมมองขอบเขตในการสลับการทำงานของโปรเซส
  15. 15. Contiguous Allocation การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน <ul><li>โดยปกติหน่วยความจำหลักจะถูกแบ่งออกเป็นสองส่วนหลัก </li></ul><ul><ul><li>พื้นที่สำหรับระบบปฏิบัติการ โดยปกติจะอยู่ในส่วนพื้นที่ด้านล่างของหน่วยความจำหรือแอดเดรสเริ่มต้น โดยการจัดการของเว็กเตอร์การขัดจังหวะ </li></ul></ul><ul><ul><li>โปรเซสของผู้ใช้ อยู่ในส่วนพื้นที่ด้านบนของหน่วยความจำ หรือแอดเดรสหลังจากระบบปฏิบัติการ </li></ul></ul>
  16. 16. Contiguous Allocation การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน (cont.) <ul><li>การจัดสรรพื้นที่แบบส่วนเดียว </li></ul><ul><ul><li>การจัดสรรพื้นที่ใหม่ ใช้รีจีสเตอร์ในการป้องกันโปรเซสของผู้ใช้จากแหล่งอื่น และจากการเปลี่ยนแปลงโค้ดและข้อมูลของระบบปฏิบัติการ </li></ul></ul><ul><ul><li>รีจีสเตอร์ที่ใช้ในการจัดสรรพื้นที่ใหม่ จะมีค่าของแอดเดรสทางกายภาพที่เล็กที่สุด </li></ul></ul><ul><ul><li>เพื่อจำกัดรีจีสเตอร์ในการเก็บค่าของแอดเดรสเชิกตรรก </li></ul></ul><ul><ul><li>โดยแอดเดรสเชิงตรรกแต่ละค่าจะต้องมีค่าน้อยกว่าขนาดของรีจีสเตอร์จำกัด </li></ul></ul>
  17. 17. Hardware Support for Relocation and Limit Registers ฮาร์ดแวร์รองรับการจัดสรรพื้นที่ใหม่และรีจีสเตอร์จำกัด
  18. 18. Contiguous Allocation การจัดสรรพื้นที่ที่อยู่ประชิดติดกัน (Cont.) <ul><li>การจัดสรรพื้นที่แบบหลายส่วน Multiple-partition allocation </li></ul><ul><ul><li>Hole – พื้นที่ว่าง หมายถึงบล็อกของหน่วยความจำที่พร้อมใช้งาน พื้นที่ว่างขนาดต่างๆ ทั้งนี้โดยต่อเนื่องกันในหน่วยความจำ </li></ul></ul><ul><ul><li>เมื่อมีโปรเซสเกิดขึ้น โปรเซสจะได้รับจัดสรรพื้นที่ในหน่วยความจำ จากพื้นที่ว่างที่มีขนาดใหญ่พอสำหรับโปรเซสนั้น </li></ul></ul><ul><ul><li>ระบบปฏิบัติการบริหารจัดการสารสนเทศต่างๆ ดังต่อไปนี้ </li></ul></ul><ul><ul><ul><li>1 การแบ่งส่วนพื้นที่เพื่อการจัดสรร </li></ul></ul></ul><ul><ul><ul><li>2 การกำหนดส่วนพื้นที่ว่าง </li></ul></ul></ul>OS process 5 process 8 process 2 OS process 5 process 2 OS process 5 process 2 OS process 5 process 9 process 2 process 9 process 10
  19. 19. Dynamic Storage-Allocation Problem ปัญหาของการจัดสรรและการจัดเก็บแบบไดนามิก หรือแปรผัน <ul><li>First-fit : การกำหนดพื้นที่ให้จากพื้นที่ว่างที่มีขนาดใหญ่พอพื้นที่แรก </li></ul><ul><li>Best-fit : การกำหนดพื้นที่ให้พอดีที่พิจารณาแล้วว่าดีที่สุด โดยการจัดสรรพื้นที่ว่างขนาดเล็กที่สุดที่มีขนาดใหญ่เพียงพอ ต้องเลือกจากลีสท์ที่มีอยู่ โดยไม่ต้องคำนึงถึงขนาด สร้างพื้นที่ว่างให้เล็กทีสุด </li></ul><ul><li>Worst-fit : การกำหนดพื้นที่แบบเผื่อ โดยการจัดสรรพื้นที่ว่างที่มีขนาดใหญ่สุด อาจจะเลือกจากลิสท์ที่มีอยู่แล้วเช่นเดียวกัน </li></ul>จะกำหนดขนาดตามที่โปรเซสร้องขอจากพื้นที่ว่างที่มีอยู่ได้อย่างไร First-fit and best-fit แบบที่หนึ่งและที่สองดีกว่าแบบที่สามในด้านความเร็ว และการใช้หน่วยจัดเก็บอย่างมีประสิทธิภาพ
  20. 20. Fragmentation การแฟรกเมนท์ การจัดการกับความแตกกระจาย <ul><li>External Fragmentation – การแฟรกเมนท์แบบภายนอก หมายถึงพื้นที่ในหน่วยความจำทั้งหมดที่มีอยู่ ที่สามารถให้บริการได้ตามที่ร้องขอ แต่ไม่ได้อยู่ต่อเนื่องติดกันโดยตลอด </li></ul><ul><li>Internal Fragmentation – การแฟรกเม้นท์แบบภายใน หมายถึงพื้นที่ในหน่วยความจำที่สามารถถูกใช้งานอาจมีขนาดใหญ่กว่าหน่วยความจำที่ถูกร้องขอ ด้วยพื้นที่ที่มีขนาดแตกต่างกัน ก็คือหน่วยความจำภายในที่ถูกจัดสรรเป็นส่วนๆ แต่ไม่ถูกใช้งาน </li></ul>
  21. 21. Fragmentation การแฟรกเมนท์ การจัดการกับความแตกกระจาย <ul><li>Reduce external fragmentation by compaction การลดการแฟรกเมนท์ภายนอกด้วยการบีบอัด </li></ul><ul><ul><li>เนื้อหาที่อยู่ในหน่วยความจำส่วนนั้นๆ เพื่อใช้สำหรับหน่วยความจำทั้งหมดเข้าไว้ด้วยกันลงในพื้นที่บล๊อกขนาดใหญ่ </li></ul></ul><ul><ul><li>การบีบอัดสามารถทำได้เฉพาะ เมื่อการการกำหนดพื้นที่เป็นแบบไดนามิก และสามารถทำให้สำเร็จลุล่วงในขณะการเอ็กซ์ซีคิวท์ </li></ul></ul><ul><ul><li>ปัญหาในส่วนอินพุทเอ้าท์พุท </li></ul></ul><ul><ul><li>การเกิดการซ้อนทับในหน่วยความจำในขณะที่เกิดการใช้งานอินพุทเอ้าท์พุท </li></ul></ul><ul><ul><li>ใช้งานอินพุทเอ้าท์พุทเฉพาะในบัฟเฟอร์ของระบบปฏิบัติการเท่านั้น </li></ul></ul>
  22. 22. Paging การทำเพจจิ้ง หรือการจัดหน้า <ul><li>พื้นที่แอดเดรสแบบตรรก ของโปรเซสสามารถที่จะเกิดขึ้นแบบไม่ต่อเนื่อง </li></ul><ul><li>โปรเซสจะถูกจัดวางลงในหน่วยความจำทางกายภาพ ก็ต่อเมื่อมีพื้นที่มากเพียงพอในการทำงาน </li></ul><ul><li>การแบ่งหน่วยความจำทางกายภาพออกเป็นบล็อกขนาดคงที่ เรียกว่าเฟรม frames ( มีขนาดเป็นทวีคุณ ระหว่าง 512 ไบท์ ถึง 8192 ไบท์ ) </li></ul><ul><li>การแบ่วหน่วยความจำแบบตรรก ออกเป็นบล็อกขนาดเท่าๆ กัน เรียกว่า เพจ pages . </li></ul><ul><li>หรือหน้า </li></ul><ul><li>จัดแทรกให้กับเฟรมว่างทุกๆ เฟรม </li></ul><ul><li>ในการทำงานโปรแกรมที่มีขนาด n เพจ จำเป็นต้องหา เฟรมว่าง n เฟรม และโหลดโปรแกรม </li></ul><ul><li>กำหนดตารางเพจให้สามารถแปลงแอดเดรสแบบตรรกกับแอดเดรสแบบกายภาพ </li></ul><ul><li>การแฟรกเม้นท์แบบภายใน </li></ul>
  23. 23. Address Translation Scheme แนวทางการแปลงแอดเดรส <ul><li>แอดเดรสถูกสร้างหรือกำหนดขึ้นโดยหน่วยประมวลผล ถูกแบ่งออกเป็นแบบต่างๆ ดังต่อไปนี้ </li></ul><ul><ul><li>Page number (p) – เลขหน้าของเพจ (p) ใช้เสมือนเลขดัชนีบ่งชี้ลงในตารางเพจ ที่ประกอบด้วยแอดเดรสฐานของแต่ละเพจ ในหน่วยความจำกายภาพ </li></ul></ul><ul><ul><li>Page offset (d) – ค่าออฟเซ็ตของเพจ (d) ประกอบด้วยแอดเดรสฐาน เพื่อการกำหนด แอดเดรสในหน่วยความจำกายภาพ ที่ใช้ส่งให้กับหน่วยความจำ </li></ul></ul>
  24. 24. Address Translation Architecture สถาปัตยกรรมการแปลงแอดเดรส
  25. 25. Paging Example ตัวอย่างการทำเพจ
  26. 26. Paging Example ตัวอย่างการทำจัดเพจ
  27. 27. Free Frames ฟรีเฟรม ก่อนถูกจัดสรร หลังถูกจัดสรร
  28. 28. Implementation of Page Table การใช้งานตารางเพจ <ul><li>ตารางเพจจะถูกเก็บอยู่ในหน่วยความจำหลัก </li></ul><ul><li>Page-table base register ( PTBR) รีจีสเตอร์ของตารางเพจหลัก จะชี้ไปยังตารางเพจ </li></ul><ul><li>Page-table length register (PRLR) รีจีสเตอร์ที่ใช้กำหนดขนาดของตารางเพจ บอกให้ทราบถึงขนาดของตารางเพจ </li></ul><ul><li>ด้วยแนวทางเช่นนี้ การเข้าถึง คำสั่งและข้อมูลใดๆ จำเป็นต้อง การเข้าถึงหน่วยความจำสองส่วน โดยหน่วยความจำแรกสำหรับตารางเพจ และอีกหนึ่งสำหรับคำสั่งหรือข้อมูล </li></ul><ul><li>ปัญหาที่เกิดจากการเข้าถึงหน่วยความจำสองหน่วยใดๆ สามารถแก้ปัญหาได้โดยใช้ หน่วยความจำแคชที่ความสามารถในการค้นห้าโดยรวดเร็ว ที่เรียกว่า หน่วยความจำเชิงสัมพันธ์ หรือ การแปลที่อาศัยบัฟเฟอร์ translation look-aside buffers (TLBs) </li></ul>
  29. 29. Associative Memory หน่วยความจำร่วม <ul><li>Associative memory หน่วยความจำร่วม – parallel search - การค้นหาแบบขนาน </li></ul><ul><li>การแปลแอดเดรส Address translation (A´, A´´) </li></ul><ul><ul><li>หาก A’ เป็นรีจีสเตอร์ร่วม รับ frame# </li></ul></ul><ul><ul><li>นอกจากนี้ยังรับ frame# จาก ตารางเพจ ในหน่วยความจำ </li></ul></ul>Page # Frame #
  30. 30. Paging Hardware With TLB ฮาร์ดแวร์การจัดเพจ ด้วย TLB
  31. 31. Effective Access Time ผลกระทบเวลาในการเข้าถึง หรือแอกเซสไทม์ <ul><li>Associative Lookup =  time unit </li></ul><ul><li>Assume memory cycle time is 1 microsecond </li></ul><ul><li>Hit ratio – percentage of times that a page number is found in the associative registers; ration related to number of associative registers. </li></ul><ul><li>Hit ratio =  </li></ul><ul><li>Effective Access Time (EAT) </li></ul><ul><li>EAT = (1 +  )  + (2 +  )(1 –  ) </li></ul><ul><li>= 2 +  –  </li></ul>
  32. 32. Memory Protection การปกป้องหน่วยความจำ <ul><li>การปกป้องหน่วยความจำ ถูกนำมาใช้ด้วย บิทของการปกป้องร่วม ในแต่ละเฟรม </li></ul><ul><li>Valid-invalid bit บิท แสดงความถูกต้อง และไม่ถูกต้อง ถูกควบไว้กับการกำกับการเข้าถึง ในตารางเพจ </li></ul><ul><ul><li>“ valid” บิทแสดงความถูกต้อง บ่งชี้ถึงแต่ละเพจที่ทำงานร่วมอยู่ในพื้นที่แอดเดรสเชิงตรรก </li></ul></ul><ul><ul><li>“ invalid” บิทแสดงความไม่ถูกต้อง บ่งชี้ถึงแต่ละเพจไม่ได้อยู่ในพื้นที่แอดเดรสเชิงตรรก </li></ul></ul>
  33. 33. Valid (v) or Invalid (i) Bit In A Page Table บิทบ่งชี้ความถูกต้องและไม่ถูกต้องในตารางเพจ
  34. 34. Page Table Structure โครงสร้างตารางเพจ <ul><li>Hierarchical Paging </li></ul><ul><li>Hashed Page Tables </li></ul><ul><li>Inverted Page Tables </li></ul><ul><li>การจัดเพจเชิงลำดับ </li></ul><ul><li>ตารางเพจแบบเข้ารหัสด้วยการแฮช </li></ul><ul><li>ตารางเพจแบบแปลงค่า </li></ul>
  35. 35. Hierarchical Page Tables การจัดเพจเชิงลำดับ <ul><li>ทำการแปลงค่าจากพื้นที่แอดเดรสเชิงตรรกไปเป็นตารางเพจแบบหลายตาราง </li></ul><ul><li>เทคนิคอย่างง่ายคือการทำตารางเพจแบบสองระดับ </li></ul>
  36. 36. Two-Level Paging Example ตัวอย่างตารางเพจแบบสองระดับ <ul><li>ส่วนของเลขที่หน้าของเพจ ใช้ 24 บิท </li></ul><ul><li>ส่วนของออฟเซ็ท ใช้ 12 บิท </li></ul><ul><li>เมื่อตารางเพจถูกจัด เลขหน้าของเพจ จะถูกแบ่งออกเป็น ส่วนต่างๆ ดังนี้ </li></ul><ul><ul><li>เลขหน้าเพจ 10 บิท </li></ul></ul><ul><ul><li>ค่าออฟเซ็ทของเพจ 10 บิท </li></ul></ul><ul><ul><li>โดยแอดเดรสเชิงตรรก เป็นดังนี้ </li></ul></ul><ul><li>โดย pi คือดรรชนีบ่งชี้ ตารางเพจภายนอก และ p2 คือ การแทนที่ด้วยเพจของตารางเพจภายนอก </li></ul>page number page offset p i p 2 d 10 10 12
  37. 37. Two-Level Page-Table Scheme รูปแบบของตารางเพจแบบสองระดับ
  38. 38. Address-Translation Scheme รูปแบบในการแปลงค่าแอดเดรส <ul><li>รูปแบบในการแปลงค่าแอดเดรส สำหรับสถาปัตยกรรมการจัดเพจแบบ 32 บิท สองระดับ </li></ul>
  39. 39. Hashed Page Tables ตารางเพจแบบเข้ารหัสด้วยการแฮช <ul><li>โดยทั่วไปใช้ในพื้นที่แอดเดรสที่มากกว่า 32 บิท </li></ul><ul><li>โดยเลขที่หน้าเพจเสมือนจะถูกแฮชไปเป็นตารางเพจ และตารางเพจนี้ประกอบไปด้วยค่าการเชื่อมโยงด้วยส่วนประกอบการแฮช เพื่อบ่งชีไปสู่พื้นที่เดิมก่อนทำการแฮช </li></ul><ul><li>เมื่อเปรียบเทียบ เลขที่หน้าเพจเสมือน ในการค้นหาการเชื่อมโยงที่เข้ากัน หากพบว่ามันเข้ากัน จะได้ผลลัพธ์เป็นเฟรมเชิงกายภาพ </li></ul>
  40. 40. Hashed Page Table ตารางเพจที่ถูกแฮช
  41. 41. Inverted Page Table ตารางเพจแบบแปลงค่า <ul><li>การเข้าถึงพื้นที่เพจของหน่วยความจำ แต่ละเพจจริงๆ แต่ละครั้ง </li></ul><ul><li>การเข้าถึงของแอดเดรสเสมือน ของเพจ ถูกเก็บอยู่ในพื้นที่หน่วยความจำจริงๆ โดยสารสนเทศเกี่ยวกับโปรเซส ที่เป็นเจ้าของเพจนั้น </li></ul><ul><li>ลดความต้องการการใช้หน่วยความจำ เพื่อการจัดเก็บตารางเพจแต่ละตาราง แต่กลับเป็นการเพิ่มระยะเวลาในการค้นหา ตารางเมื่อเกิดการอ้างถึงเพจขึ้น </li></ul><ul><li>ในตารางการแฮชเพื่อจำกัดการค้นหาในแต่ละครั้ง หรือ อย่างมากที่สุดเพื่อให้เกิดการเข้าใช้งานตารางเพจในน้อยที่สุด </li></ul>
  42. 42. Inverted Page Table Architecture ตารางเพจแบบแปลงค่า
  43. 43. Shared Pages เพจร่วม <ul><li>โค้ดร่วม ( โค้ดที่ถูกแบ่งปันการใช้งาน หรือใช้งานร่วมกัน ) </li></ul><ul><ul><li>ชุดสำเนาหนึ่งชุดของ โค้ดแบบอ่านอย่างเดียว ถูกแบ่งปันการใช้งานร่วมกันระหว่างโปรเซส อาทิ เท็กซ์อิดิเตอร์ คอมไพเลอร์ และระบบวินโดวส์ </li></ul></ul><ul><ul><li>โค้ดร่วม จะเกิดขึ้นอยู่ในพื้นที่เดียวกัน ภายในพื้นที่แอดเดรสเชิงตรรก ของทุกๆ โปรเซส </li></ul></ul><ul><li>โค้ดและข้อมูลแบบเอกเทศ หรือแบบไพรเวท </li></ul><ul><ul><li>แต่ละโปรเซส จะมีสำเนาของโค้ดและข้อมูลเป็นของตนเอง </li></ul></ul><ul><ul><li>เพจของโค้ดและข้อมูลแบบไพรเวท สามารถเกิดขึ้นได้ทุกที่ ในพื้นที่แอดเดรสเชิงตรรก </li></ul></ul>
  44. 44. Shared Pages Example ตัวอย่างการใช้เพจร่วม
  45. 45. Segmentation การแบ่งส่วนหรือ การทำเซ็กเม้นท์ <ul><li>แนวทางในการบริหารจัดการหน่วยความจำ ที่รองรับการใช้งานหน่วยความจำในมุมมองของผู้ใช้ </li></ul><ul><li>เป็นโปรแกรมที่ประกอบไปด้วยส่วนประกอบหรือเซ็กเม้นท์ ต่างๆ แต่ละส่วนหรือแต่ละเซ็กเม้นท์ เป็นหน่วยทางตรรก อาทิเช่น </li></ul><ul><li>main program, </li></ul><ul><li>procedure, </li></ul><ul><li>function, </li></ul><ul><li>method, </li></ul><ul><li>object, </li></ul><ul><li>local variables, global variables, </li></ul><ul><li>common block, </li></ul><ul><li>stack, </li></ul><ul><li>symbol table, arrays </li></ul>โปรแกรมหลัก โพรซีเยอร์ พังก์ชั่น แมทธอด อ็อบเจ็ก ตัวแปลโลคอลและ ตัวแปลโกลบอล บล๊อกทั่วไป แสต็ก ตารางสัญลักษณ์ , อะเรย์
  46. 46. User’s View of a Program มุมมองของผู้ใช้ที่มีต่อโปรแกรม
  47. 47. Logical View of Segmentation มุมมองเชิงตรรก ของการทำเซ็กเม้นท์ 1 3 2 4 user space physical memory space 1 4 2 3
  48. 48. Segmentation Architecture สถาปัตยกรรมของการทำเซ็กเม้นท์ <ul><li>แอดเดรสเชิงตรรก ประกอบไปด้วยสองทูเปิล </li></ul><ul><li>< หน้าของเซ็กเม้นท์ , ค่าอ็อฟเซ็ท > </li></ul><ul><li>ตารางเซ็กเม้นท์ เป็นตารางที่ทำการแมพค่าแอดเดรสทางกายภาพแบบสองมิติ โดยแต่ละการเข้าถึงตารางประกอบด้วย </li></ul><ul><ul><li>เบส ประกอบด้วยแอดเดรสทางกายภาพเพื่อใช้ในการเริ่มต้น เมื่อเซ็กเม้นท์ถูกย่อลงไว้ในหน่วยความจำ </li></ul></ul><ul><ul><li>การจำกัด บ่งบอกถึงขนาดของเซ็กเม้นท์ </li></ul></ul><ul><li>รีจีสเตอร์ฐาน ของตารางเซ็กเม้นท์ จะบ่งชี้ไปยังพื้นที่ในหน่วยความจำ ของตารางเซ็กเม้นท์ </li></ul><ul><li>รีจีสเตอร์บอกขนาด ของตารางเซ็กเม้นท์ บ่งชีถึงจำนวนของเซ็กเม้นท์ที่ถูกใช้โดยโปรแกรม </li></ul><ul><li>จำนวนเซ็กเม้นท์ s สามารถใช้งานได้เมื่อ s < STLR </li></ul>
  49. 49. Segmentation Architecture สถาปัตยกรรมการทำเซ็กเม้นท์ (Cont.) <ul><li>Relocation. </li></ul><ul><ul><li>dynamic </li></ul></ul><ul><ul><li>by segment table </li></ul></ul><ul><li>Sharing. </li></ul><ul><ul><li>shared segments </li></ul></ul><ul><ul><li>same segment number </li></ul></ul><ul><li>Allocation. </li></ul><ul><ul><li>first fit/best fit </li></ul></ul><ul><ul><li>external fragmentation </li></ul></ul><ul><li>การจัดลำดับพื้นที่ </li></ul><ul><ul><li>แบบไดนามิก </li></ul></ul><ul><ul><li>โดยตารางเซ็กเม้นท์ </li></ul></ul><ul><li>การใช้งานร่วม </li></ul><ul><ul><li>ใช้งานเซ็กเม้นท์ร่วมกัน </li></ul></ul><ul><ul><li>โดยมีเลขที่เซ็กเม้นท์เดียวกัน </li></ul></ul><ul><li>การจัดสรรพื้นที่ </li></ul><ul><ul><li>โดยจะจัดสรรพื้นที่ที่เหมาะสมให้กับแต่ละโปรเซสโดยคำนึงถึง โปรเซสที่มีขนาดพอเหมาะพอดีกับพื้นที่ว่างนั้นให้สามารถเข้าใช้งานพื้นที่นั้นก่อน </li></ul></ul><ul><ul><li>การจัดการกับการแตกกระจายภายนอก </li></ul></ul>
  50. 50. Segmentation Architecture สถาปัตยกรรมการทำเซ็กเม้นท์ (Cont.) <ul><li>การปกป้อง ในการเข้าใช้ตารางเซ็กเม้นท์แต่ละครั้งต้องคำนึงถึง </li></ul><ul><ul><li>บิทบ่งชี้ความถูกต้อง = 0  เป็นเซ็กเม้นท์ที่ถูกต้อง </li></ul></ul><ul><ul><li>เป็นการทำงาน แบบ อ่าน / เขียน / เอ็กซ์ซีคิวท์ </li></ul></ul><ul><li>บิทเพื่อการปกป้องจะสัมพันธ์อยู่กับเซ็กเม้นท์ การใช้งานโค้ดร่วมกันเกิดขึ้นในระดับเซ็กเม้นท์ </li></ul><ul><li>ในขณะที่แต่ละเซ็กเม้นท์มีขนาดแปรผัน การจัดสรรพื้นที่ในหน่วยความจำ จะเกิดปัญหาการจัดสรรพื้นที่ในการการจัดเก็บแบบไดนามิกขึ้น </li></ul><ul><li>ตัวอย่างการทำเซ็กเม้นท์จะแสดงให้เห็นดังไดอะแกรมต่อไปนี้ </li></ul>
  51. 51. Segmentation Hardware ฮาร์ดแวร์สำหรับการทำเซ็กเม้นท์
  52. 52. Example of Segmentation ตัวอย่างการทำเซ็กเม้นท์
  53. 53. Sharing of Segments การใช้เซ็กเม้นท์ร่วมกัน
  54. 54. Segmentation with Paging – MULTICS การทำเซ็กเม้นท์ด้วยการจัดเพจ <ul><li>ระบบ MULTICS ถูกใช้เพื่อแก้ปัญหา การแตกกระจายภายนอก และระยะเวลาในการค้นหา ของการทำเซ็กเม้นท์ด้วยการจัดเพจ </li></ul><ul><li>ผลลัพท์ที่ได้จะแตกต่างจาก การทำเซ็กเม้นแท้ๆ ด้วยตารางเซ็กเม้นท์ไม่ได้ประกอบไปด้วย แอดเดรสฐานของเซ็กเม้นท์ แต่กลับเป็นแอดเดรสฐานของ ตารางเพจ สำหรับเซ็กเม้นท์ </li></ul>
  55. 55. MULTICS Address Translation Scheme รูปแบบการแปลงแอดเดรส MULTICS
  56. 56. Segmentation with Paging – Intel 386 การทำเซ็กเม้นท์ด้วยการจัดเพจ ใน อินเทล 386 <ul><li>จากที่แสดงดังไดอะแกรม อินเทล 386 ใช้การทำเซ็กเม้นท์ ด้วยการจัดเพจ สำหรับการบริหารจัดการหน่วยความจำ ด้วยรูปแบบการจัดเพจแบบสองระดับ </li></ul>
  57. 57. Intel 80386 Address Translation การแปลงแอดเดรส ในอินเทล 80386

×