Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่ 7 การจัดการหน่วยความจำ, 6221654696 โชติชญานนท์ เร้ารุ่งอรุณ -…
บทที่ 7
การจัดการหน่วยความจำ
ประเภทของหน่วยความจำ
หน่วยความจำภายใน (Internal memory)
หน่วยความจำภายใน หรือเรียกว่าหน่วยความจำแคช (Cache memory) ประกอบด้วยรีจีสเตอร์ความเร็วสูง โดยหน่วยความจำส่วนนี้ถูกใช้
สำหรับเก็บคำสั่ง และข้อมูลที่ต้องการทำงานด้วยความเร็วสูงมาก และเป็นหน่วยความจำที่ซีพียูสามารถเข้าถึงได้โดยตรงและรวดเร็ว
หน่วยความจำหลัก (Main memory)
หน่วยความจำหลัก เป็นหน่วยความจำความเร็วสูงใช้
สำหรับเก็บคำสั่งและข้อมูลระหว่างการทำงาน โดยเป็นหน่วยความจำที่ซีพียูสามารถเข้าถึงได้โดยตรง และรวดเร็ว
หน่วยความจำสำรอง (Secondary memory)
หน่วยความจำสำรองเป็นหน่วยความจำที่มีความเร็วน้อยกว่าหน่วยความจำสองประเภทแรก ใช้สำหรับเก็บข้อมูลที่มีขนาดใหญ่ และเป็นข้อมูลที่ยังไม่ต้องการนำมาประมวลผล
แนวคิดพื้นฐานการจัดการหน่วยความจำหลัก
ขั้นตอนที่ 1 ไปนำมา (Fetch) คือ การเริ่มต้นการทำงานซึ่งระบบจะทำการดึงคำสั่งแรกจากหน่วยความจำ
ขั้นตอนที่ 2 ถอดรหัส (Decode) คือ การทำงานต่อจากขั้นตอนที่ 1 โดยนำคำสั่งนี้ไปทำการถอดรหัส ซึ่งอาจจะได้ตัวดำเนินการหรือข้อมูล เพื่อใช้กับคำสั่งถัดไป
ขั้นตอนที่ 3 กระทำการ (Execution) คือ การทำงานต่อจากขั้นตอนที่ 2 ซึ่งหลังจากนั้นคำสั่งจะทำงานตามตัวดำเนินการที่ได้
ขั้นตอนที่ 4 จัดเก็บ (Store) ผลลัพธ์จะถูกเก็บกลับไปในหน่วยความจำหลักต่อไป
หน่วยความจำหลัก
การเชื่อมโยงตำแหน่ง (Address Binding)
เวลาแปลโปรแกรม (Compile time)
เวลาโหลดโปรแกรม (Load time)
เวลากระท าการ (Execution time)
Dynamic Loading
Routine จะไม่ถูกโหลด จนกระทั่งถูกเรียกใช้งาน เป็นการใช้หน่วยความจำเป็นประโยชน์มากกว่า
โปรแกรมย่อยที่ไม่ได้ใช้ (Unused routine) จะไม่ถูกโหลดมาในหน่วยความจำหลักซึ่งมีประโยชน์สำหรับโปรแกรมขนาดใหญ
Dynamic Linking and Shared Libraries
Linking จะเลื่อนออกไปจนกระทั่งอยู่ในช่วง Execution time มีชุดคำสั่งเล็ก ๆ เรียกว่า Stub ใช้
สำหรับ Locate ไลบรารีของโปรแกรมย่อยที่เหมาะสมในหน่วยความจ าหลัก Stub จะแทนที่ตัวเองด้วย
แอดเดรสของโปรแกรมย่อยและจะทำงานตามโปรแกรมย่อยนั้น
ตำแหน่งที่ว่างทางกายภาพกับตำแหน่งที่ว่างทางตรรกะ
ตำแหน่งที่ถูกสร้างโดยซีพียูมักหมายถึงตำแหน่งทางตรรกะ (Logical address) ส่วนตำแหน่งใน
หน่วยความจำจะหมายถึง Physical address เป็นตำแหน่งบนหน่วยความจ าคือ ตำแหน่งทางกายภาพ Logical และ Physical address เป็นตำแหน่งเดียวกันในช่วงของ Compile time และ Load time การเชื่อมโยง Logical address เข้ ากับแต่ละ Physical address ถือเป็นหัวใจสำคัญในการจัดการหน่วยความจำหลัก
การจัดการหน่วยความจำหลัก
วิธีการซ้อนทับ (Overlays)
โดยทั่วไปโพรเซสที่ต้องการประมวลผลด้วยซีพียูจะต้องถูกบรรจุอยู่ในหน่วยความจำหลัก ซึ่งโพรเซสจะต้องมีขนาดน้อยกว่าหรือเท่ากับขนาดของหน่วยความ จำหลักลบด้วยขนาดของระบบปฏิบัติการ ดังนั้นหากมีความจำเป็นที่ต้องใช้โพรเซสที่มีขนาดมากกว่าขนาดของหน่วยความจำหลักสามารถทำได้โดยวิธีซ้อนทับ (Overlays)
วิธีการสับเปลี่ยน (Swapping)
หน่วยความจำหลักมีขนาดพื้นที่จำกัด บางครั้งระบบมีพื้นที่หน่วยความจำหลักไม่เพียงพอกับการใช้งาน ทำให้ระบบจำเป็นต้องนำบางโพรเซสออกจากหน่วยความจำหลักก่อน เพื่อให้หน่วยความจำหลักมีพื้นที่ว่างมากเพียงพอที่จะบรรจุโพรเซสอื่น เป็นการสับเปลี่ยน (Swap) ให้โพรเซสอื่นทำงาน
การจัดสรรหน่วยความจำแบบต่อเนื่อง
การจัดสรรพื้นที่แบบขนาดคงที่ (Fixed-Size Partition)
การจัดสรรพื้นที่แบบขนาดคงที่หรือแบบส่วนเดียว (Single-partition allocation) ชุดของรีจิสเตอร์ย้ายตำแหน่ง (Relocation-register scheme) จะใช้สำหรับป้องกันการทำงานโพรเซสของผู้ใช้จากโพรเซสอื่น และจากการเปลี่ยนรหัสของระบบปฏิบัติการ และข้อมูลชุดของรีจิสเตอร์ย้ายตำแหน่ง บรรจุด้วยค่าเลขที่อยู่เชิงกายภาพที่เล็กที่สุด, Base register
การแบ่งหน่วยความจำออกเป็นพาร์ติชั่น
การกำหนดขนาดพาร์ติชั่นคงที่ (Static Partition)
การกำหนดขนาดของพาร์ติชั่นให้เปลี่ยนแปลงได้(Dynamic Partition)
การจัดการหน่วยความจำหลักแบบพาร์ติชั่นและย้ายที่อยู่
ปัญหาการจัดสรรหน่วยเก็บแบบพลวัต
First-Fit คือ เลือกช่องโหว่แรกที่พบและมีขนาดใหญ่เพียงพอกับพื้นที่ที่ต้องการ เป็นวิธีที่ง่าย
ที่สุดและเสียเวลาน้อยที่สุด
Best-Fit คือ การเลือกช่องโหว่ที่เหมาะสมที่สุด ต้องหาเนื้อที่ว่างโดยต้องตรวจดูพื้นที่ว่าง
ทั้งหมดในระบบ เพื่อหาเนื้อที่ว่างที่มีขนาดเท่ากัน หรือใกล้เคียงกับขนาดของโพรเซสจริง
Worst-Fit คือ การเลือกช่องโหว่ที่ใหญ่ที่สุด เป็นวิธีป้องกันไม่ให้เกิดปัญหาการเกิดเนื้อที่ว่าง
เล็ก ๆ เป็นจ านวนมากอย่าง Best-Fit เริ่มต้นเนื้อที่ว่างโดยต้องตรวจดูพื้นที่ว่างทั้งหมดในระบบ
ปัญหาของการจัดการหน่วยความจำ
การสูญเปล่าของพื้นที่ย่อยภายนอก (External Fragmentation)
เป็นปัญหาที่เกิดจากการขอพื้นที่หน่วยความจำ เมื่อทำงานในการแจกพื้นที่และตามเก็บพื้นที่ไป
สักช่วงเวลาหนึ่ง จะพบว่าพื้นที่ว่างถูกพื้นที่ใช้งานแบ่ง ทำให้พื้นที่ว่างต่อเนื่องยาว ๆ ไม่มีให้ใช้ การที่
ระบบมีพื้นที่ว่างพอแต่ไม่สามารถนำมาใช้งานได้ เพราะพื้นที่ว่างถูกพื้นที่ใช้งานแบ่งเป็นพื้นที่ย่อย ๆ มากจนเกินไปจนไม่สามารถนำมาใช้งานได้
การแก้ปัญหาการสูญเปล่าของพื้นที่ย่อยภายนอก
เป็นปัญหาที่เกิดจากการขอพื้นที่หน่วยความจำ เมื่อทำงานในการแจกพื้นที่และตามเก็บพื้นที่ไป
สักช่วงเวลาหนึ่ง จะพบว่าพื้นที่ว่างถูกพื้นที่ใช้งานแบ่ง ทำให้พื้นที่ว่างต่อเนื่องยาว ๆ ไม่มีให้ใช้ การที่
ระบบมีพื้นที่ว่างพอแต่ไม่สามารถนำมาใช้งานได้ เพราะพื้นที่ว่างถูกพื้นที่ใช้งานแบ่งเป็นพื้นที่ย่อย ๆ มากจนเกินไปจนไม่สามารถนำมาใช้งานได้
การสูญเปล่าของพื้นที่ย่อยภายใน (Internal Fragmentation)
ปัญหาที่เกิดจากการจองพื้นที่หน่วยความจ ามากกว่าขนาดข้อมูล พื้นที่ที่จองเกินนั้นจะเกิด
เป็นช่องว่างของพื้นที่สูญเปล่าเพราะถูกจองไว้แต่ไม่ได้ใช้ เป็นปัญหาที่เกิดขึ้นภายในพื้นที่ที่จองไว้
การแบ่งพื้นที่เป็นหน้า
การจัดสรรหน่วยความจ าทางกายภาพ (paging model of physical memory)
การจัดสรรหน่วยความจ าทางตรรกะ (paging model of logical memory)
การทำงานของ Paging
Paging สามารถใช้จำนวนหน้าที่ไม่ติดกันได้ และในการจองพื้นที่ก็จะไม่เหลือพื้นที่ว่างคั่นไว้ จึงทำ
ให้ไม่เกิดปัญหา External fragmentation
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า (Hardware Support)
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า (Hardware Support)การนำฮาร์ดแวร์กับการสนับสนุนการจัดการตารางเพจทำได้หลายทาง ซึ่งการเข้าถึงตำแหน่งในหน่วยความจำแต่ละครั้ง จะต้องอ่านข้อมูลจากหน่วยความจำทางกายภาพถึงสองครั้ง ครั้งที่หนึ่งจากตารางเพจ และครั้งที่สองจากตำแหน่งข้อมูลทางกายภาพ
การป้องกันหน่วยความจำ
บิตใช้งานได้ (Valid bit)
เป็นบิตสถานะที่บอกว่าข้อมูลในเพจถูกอ่านเข้าสู่หน่วยความจำทางกายภาพแล้ว และสามารถนำไปใช้งานได้ทันที
บิตใช้งานไม่ได้ (Invalid bit)
เป็นบิตสถานะที่บอกว่าข้อมูลในเพจนั้นไม่มีอยู่ในหน่วยความจำทางกายภาพแล้ว และไม่สามารถนำไปใช้งานได้ อาจเกิดจากกรณีที่ระบบปฏิบัติการยังไม่ได้อ่านข้อมูลจากเพจเข้าสู่หน่วยความจำหลัก
การใช้เพจร่วมกัน
โครงสร้างของตารางเพจ (Memory Protection)
โครงสร้างแบบล าดับชั้น (Hierarchical paging)
โครงสร้างแบบตารางเฮช (Hash page table)
โครงสร้างเพจแบบผกผัน (Inverted page table)
Paging และการแก้ไขปัญหา External Fragmentation
การจองพื้นที่ในเพจจิ้งจะจองเป็น nPage เสมอ โดยค่า n จะเป็นจำนวนเต็ม และ Page คือ
ปริมาณข้อมูลใน 1 หน้ากระดาษ
การแก้ปัญหา Internal Fragmentation
ปัญหา Internal fragmentation คือ การใช้งานพื้นที่ไม่คุ้มค่า จากหลักการของเพจจิ้ง จะมีน้อยครั้งมากที่ขนาดของข้อมูลกับขนาดหน้าจะเท่ากันพอดี ส่วนใหญ่จะเหลื่อม ทำให้ต้องเสียหน้าเพิ่มขึ้นอีก
หน้า เกิดช่องว่างไม่ได้ใช้ภายในพื้นที่ที่จอง
การแบ่งส่วน
1.วิธีพื้นฐาน (Basic Method)
2.ฮาร์ดแวร์(Hardware)
3.การสร้างตารางเลขตอน (Implementation of Segmentation Tables)
4.การป้องกันและการใช้ตอนร่วมกัน (Protection and Sharing)
5.การสูญเปล่าพื้นที่ย่อย (Fragmentation)
6221654696 โชติชญานนท์ เร้ารุ่งอรุณ