การจัดการหน่วยความจำ

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ประกาศกรมสวัสดิการและคุ้มครองแรงงาน เรื่อง หลักเกณฑ์และวิธีการเลือกตั้งคณะกรรมการสวัสดิการในสถานประกอบกิจการ ประกาศราชกิจจานุเบกษา วันที่ 22 พฤษภาคม.
Advertisements

เรื่อง แนวทางการเลือกซื้อคอมพิวเตอร์
เฉลยใบงานที่ 1 องค์ประกอบและหลักการทำงานของคอมพิวเตอร์
การจัดทำเว็บไซต์สำเร็จรูปด้วยโปรแกรม Joomla!
 เครือข่ายคอมพิวเตอร์  การที่ระบบเครือข่ายมีบทบาทและ ความสำคัญเพิ่มขึ้น เพราะไมโครคอมพิวเตอร์ได้รับ การใช้งานอย่างแพร่หลาย จึงเกิดความต้องการที่จะ.
เป็นหลักสำคัญในการนำเสนอเนื้อหา ของบทเรียนคอมพิวเตอร์ช่วยสอนก็คือ ควร นำเสนอภาพที่เกี่ยวข้องกับเนื้อหา ประกอบ กับคำอธิบายสั้นๆ ง่ายๆ แต่ได้ใจความ การใช้ภาพประกอบจะทำให้ผู้เรียน.
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
ซอฟต์แวร์ระบบที่รู้จักกันดี คือซอฟต์แวร์ควบคุมการปฏิบัติการ ของคอมพิวเตอร์ที่เรียกว่า ระบบปฏิบัติการ ระบบปฏิบัติการเป็นชุดคำสั่งที่ใช้ควบคุมระบบฮาร์ดแวร์และ.
ซอฟต์แวร์และการเลือกใช้
องค์ประกอบของคอมพิวเตอร์
การรักษาความปลอดภัยข้อมูลขั้นพื้นฐาน
วิธีการเลือกซื้อ คอมพิวเตอร์. เนื้อหาในส่วนนี้จะให้รายระเอียดและขั้นตอน ในการเลือกซื้อ เครื่องคอมพิวเตอร์ เพื่อให้เราได้เครื่อง คอมพิวเตอร์ที่ตรงกับความ.
บทที่ 3 นักวิเคราะห์ระบบและการ วิเคราะห์ระบบ. 1. นักวิเคราะห์ระบบ (System Analysis) 1.1 ความหมายของนักวิเคราะห์ระบบ นักวิเคราะห์ระบบ (System Analysis:
วิชาเทคโนโลยีสารสนเทศเพื่อชีวิต
วาระที่ สรุปผลการปฏิบัติงาน ณ วันที่ 30 มิถุนายน 2559
นำเสนอวิธีปฏิบัติที่ดี ด้านกิจกรรมพัฒนานักศึกษา
Material requirements planning (MRP) systems
“วิธีการใช้งาน PG Program New Version สำหรับ PGD”
การจัดการโปรเซส T.Kunlaya Charoenmongkonvilai
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
IP-Addressing and Subneting
IP-Addressing and Subneting
บทสรุป ความรู้พื้นฐานเกี่ยวกับระบบฐานข้อมูล
อาจารย์อภิพงศ์ ปิงยศ บทที่ 2 : แบบจำลองเครือข่าย (Network Models) part1 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ อาจารย์อภิพงศ์
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
การพัฒนาการใช้งานในระบบเว็บ
แนวทางการออกแบบโปสเตอร์
อาจารย์อภิพงศ์ ปิงยศ บทที่ 4 : สื่อกลางส่งข้อมูลและการมัลติเพล็กซ์ (Transmission Media and Multiplexing) Part3 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ.
โครงสร้างภาษา C Arduino
บทที่ 1 โครงสร้างคอมพิวเตอร์พื้นฐาน
Integrated Information Technology
กลุ่มคำและประโยค ภาษาไทย ม. ๓
Basic Input Output System
Presentation การจัดการข้อร้องเรียนในธุรกิจบริการ Customer Complaint Management for Service.
บทที่ 8 การควบคุมโครงการ
One Point Lesson (OPL).....บทเรียนประเด็นเดียว
บทที่ 3 แฟ้มข้อมูลและฐานข้อมูล
บัตรยิ้ม สร้างเสริมกำลังใจ
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
บทที่ 7 การวิเคราะห์และพัฒนาระบบ
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
วาระที่ ผลการประชุมเชิงปฏิบัติการ เรื่อง การเตรียมความพร้อมบุคลากร สำนักแผนงานและโครงการพิเศษเพื่อสนับสนุนการปฏิบัติงาน ของหน่วยงานในพื้นที่
บริษัท พัฒนาวิชาการ (2535) จำกัด
แผนการตลาดสำหรับ [ชื่อผลิตภัณฑ์]
SMS News Distribute Service
ตัวชี้วัดที่ 5 : ระดับความสำเร็จของการดำเนินการตามมาตรการประหยัดน้ำ
สร้างภูมิคุ้มกัน (แสงหิ่งห้อย)
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
บทที่ 3 : รูปแบบการเชื่อมต่อเครือข่ายและส่วนประกอบของเครือข่ายท้องถิ่น (Topologies and LAN Components) Part1.
โซ่อุปทานและโลจิสติกส์ ญาลดา พรประเสริฐ คณะวิทยาการจัดการ
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
สถาปัตยกรรมของฐานข้อมูล
บทที่ 6 เงินลงทุนในตราสารหนี้และตราสารทุน
การเปลี่ยนแปลงประมาณการทางบัญชี และข้อผิดพลาด
งานนำเสนอสำหรับโครงการ นิทรรศการวิทยาศาสตร์
หน่วยการเรียนรู้ที่ 2 การกำหนดประเด็นปัญหา
ค่ารูรับแสง - F/Stop ค่ารูรับแสงที่มีค่าตัวเลขต่ำใกล้เคียง 1 มากเท่าไหร่ ค่าของรูรับแสงนั้นก็ยิ่งมีความกว้างมาก เพราะเราเปรียบเทียบค่าความสว่างที่ 1:1.
การวางแผนกำลังการผลิต
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
เงื่อนไขการสร้างเอกสารเลือกวันหยุด
ชัยพฤกษ์รัตนาธิเบศร์ - วงแหวน
การจัดทำแผนการสอบบัญชีโดยรวม
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
โครงการถ่ายทอดเทคโนโลยีถนนรีไซเคิลเพื่อลดขยะพลาสติกใน 4 ภูมิภาค
ระบบการส่งต่อข้อมูลอาการไม่พึงประสงค์จากการแพ้ยา
กระดาษทำการ (หลักการและภาคปฏิบัติ)
ใบสำเนางานนำเสนอ:

การจัดการหน่วยความจำ บทที่ 4 การจัดการหน่วยความจำ Memory Management

หน้าที่หน่วยความจำหลัก เก็บระบบปฏิบัติการ เก็บโปรแกรมของผู้ใช้ เก็บข้อมูลที่จะใช้

องค์ประกอบหน่วยความจำ แอดเดรส (address) ข้อมูล (data) หน่วยความจำหลัก องค์ประกอบหน่วยความจำ แอดเดรส (address) ข้อมูล (data)

หน่วยความจำหลัก ความต้องการหน่วยความจำ ความเร็วสูง มีความเสถียรสูง ความจุสูง ราคาต่ำ

ชนิดของหน่วยความจำ หน่วยความจำหลัก ROM เป็นหน่วยความจำถาวร ไม่สูญเสียข้อมูลแม้ไฟดับ มักใช้เก็บข้อมูลพื้นฐานที่จำเป็น RAM มักจะใช้เป็นหน่วยความจำหลัก มีอยู่ 2 ประเภท คือ static ram และ dynamic ram หน่วยความจำสำรอง มีความเร็วช้า เก็บไว้ได้นาน เช่น ดิสก์ ฮาร์ดดิสก์

การจัดการหน่วยความจำ (Memory Management) หน่วยความจำหลักเป็นศูนย์กลางของการทำงานต่าง ๆ ของระบบคอมพิวเตอร์ในปัจจุบัน หน่วยความจำหลักคือพื้นที่เก็บข้อมูลขนาดใหญ่ ประกอบด้วย พื้นที่เก็บข้อมูลย่อย มีหน่วยเป็น Byte ตำแหน่งหรือที่อยู่ของพื้นที่ย่อย (Address) Memory 1 2 3

การจัดการหน่วยความจำ (Memory Management)….ต่อ ส่วนของ OS ที่ทำหน้าที่จัดการกับหน่วยความจำได้แก่ ตัวจัดการหน่วยความจำ (Memory Manager) ซึ่งมีหน้าที่ต่าง ๆ ดังนี้ ตรวจสอบว่าส่วนใดของหน่วยความจำที่กำลังถูกใช้งาน ส่วนใดว่าง จัดหน่วยความจำให้กับงานที่ทำงาน ส่งหน่วยความจำคืนสู่ระบบเมื่องานเสร็จ จัดการสลับหน่วยความจำหลัก กับพื้นที่ฮาร์ดดิสก์ เมื่อหน่วยความจำหลักมีขนาดเล็กเกินไปที่จะให้งานทำงานได้

การจัดการหน่วยความจำ (Memory Management) การจัดสรรหน่วยความจำแบบต่อเนื่อง การจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง

การจัดการหน่วยความจำ (Memory Management) … ต่อ การจัดสรรหน่วยความจำแบบต่อเนื่อง โปรแกรมหนึ่ง ๆ จะถูกโหลดลงหน่วยความจำได้ก็ต่อเมื่อมีหน่วยความจำขนาดใหญ่ที่จะวางโค้ดของโปรแกรมนั้นลงไปทั้งโปรแกรม โปรแกรมจะอยู่ติดต่อกันในหน่วยความจำหลักเป็นผืนเดียวกัน ไม่มีส่วนหนึ่งของโปรแกรมแยกจากกัน ถ้ามีพื้นที่ว่างไม่พอก็จะรอจนกว่าจะมีหน่วยความจำว่างเหลือพอ

การจัดการหน่วยความจำ (Memory Management) … ต่อ การจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง โปรแกรมจะถูกแบ่งออกเป็นกลุ่มหรือส่วนย่อย ๆ หลาย ๆ ส่วน เมื่อรันโปรแกรมจะโหลดลงหน่วยความจำที่ไหนก็ได้ที่มีที่ว่างพอ แต่ละส่วนไม่จำเป็นต้องเรียงต่อเป็นผืนเดียว

การจัดการหน่วยความจำหลักแบบต่าง ๆ การจัดการหน่วยความจำนั้นมีหลายวิธี ตั้งแต่การจัดการแบบพื้นฐาน จนถึงแบบที่ซับซ้อน การจัดการหน่วยความจำจึงมีการแบ่งออกเป็น 2 ระบบดังนี้ ระบบโปรแกรมเดี่ยว (Monoprogramming or Single program) ระบบหลายโปรแกรม (Multiple program)

ระบบโปรแกรมเดี่ยว Monoprogramming or Single program เป็นวิธีการจัดการหน่วยความจำที่ง่ายที่สุด เนื่องจากจะมีโปรแกรมเพียง 1 โปรแกรมทำงานในขณะใดขณะหนึ่ง ดังนั้นการใช้งานหน่วยความจำจะมีเพียงโปรแกรมนั้น ๆ กับระบบปฏิบัติการเท่านั้น ดังรูป OS โปรแกรมของ ผู้ใช้ ว่าง

ระบบโปรแกรมเดี่ยว Monoprogramming or Single program … ต่อ Operating system in ROM Device Manager in ROM User program User program User program Operating system in RAM Operating system in RAM

ระบบโปรแกรมเดี่ยว Monoprogramming or Single program … ต่อ จากรูปเราอาจแบ่งหน่วยความจำหลักออกเป็น 2 ส่วนคือ ส่วนของ OS เป็นหน่วยความจำที่ถูกครอบครองโดย OS ส่วนของผู้ใช้ (User area) คือส่วนที่สามารถนำโปรแกรมของผู้ใช้ลงไปวางได้ ซึ่งก็คือหน่วยความจำหลักทั้งหมดที่เหลือจากส่วนของ OS

ระบบโปรแกรมเดี่ยว Monoprogramming or Single program … ต่อ เมื่อหน่วยความจำหลักถูกแบ่งออกเป็น 2 ส่วนแล้ว ตัว OS จึงจำเป็นต้องมีวิธีการป้องกันไม่ให้โปรแกรมของผู้ใช้รุกล้ำเข้ามาในส่วนของ OS ถ้า OS ปล่อยให้ผู้ใช้เข้ามาใช้หน่วยความจำที่ OS ใช้อยู่ โปรแกรมของผู้ใช้อาจทำลายตัวโปรแกรมของ OS เสียหายจนระบบทำงานไม่ได้

ระบบโปรแกรมเดี่ยว Monoprogramming or Single program … ต่อ วิธีที่นิยมในการป้องกันการรุกล้ำได้แก่การสร้างรีจีสเตอร์ขึ้นมาในซีพียูเรียกว่ารีจีสเตอร์ขอบเขต (boundary register) รีจีสเตอร์จะทำหน้าที่เก็บค่าแอสเดรสที่เป็นรอยต่อระหว่างส่วนของ os และส่วนของผู้ใช้

ระบบหลายโปรแกรม Multiple program ระบบคอมพิวเตอร์ส่วนใหญ่ในปัจจุบันอนุญาตให้มีงานหลาย ๆ งานทำงานในเวลาเดียวกัน การที่ระบบมีหลายงานทำงานพร้อมกันนั้น หมายความว่าแต่ละงานต้องถูกบันทึกอยู่ในหน่วยความจำหลัก ดังนั้นเพื่อให้คอมพิวเตอร์สามารถทำงานหลายงานพร้อมกัน จึงจำเป็นต้องทำการแบ่งพื้นที่หน่วยความจำออกเป็นส่วน ๆ สำหรับแต่ละงานเพื่อไม่ให้ปะปนกัน

ระบบหลายโปรแกรม Multiple program การแบ่งหน่วยความจำสำหรับระบบหลายโปรแกรมมี 2 แบบ การแบ่งหน่วยความจำขนาดคงที่ (Fixed partition multi-programming) การแบ่งหน่วยความจำขนาดไม่คงที่ (Variable partition multi-programming)

การแบ่งหน่วยความจำขนาดคงที่ วิธีนี้หน่วยความจำจะถูกแบ่งออกเป็นหลายส่วน แต่ละส่วนมีขนาด คงที่ และในแต่ละส่วนจะมีเพียงงานเดียว และการแบ่งนั้นจะเปลี่ยนแปลงอีกไม่ได้ ดังนั้นจำนวนงานที่ทำงานได้พร้อมกันจะเท่ากับจำนวนส่วนย่อยของหน่วยความจำหลัก

การแบ่งหน่วยความจำขนาดคงที่ การแบ่งหน่วยความจำขนาดคงที่ แบ่งได้เป็น 2 แบบ การแปลงและโหลดด้วยค่าสัมบูรณ์ (Absolute translation and loading) การแปลงและโหลดด้วยค่าสัมพัทธ์ (Relocatable translation and loading)

การแปลงและโหลดด้วยค่าสัมบูรณ์ Absolute translation and loading ค่าแอดเดรสสัมบูรณ์ คือค่าแอดเดรสจริง ๆ ในหน่วยความจำ หน่วยความจำหลักจะถูกแบ่งออกเป็นส่วนที่มีขนาดคงที่ และแต่ละส่วนจะมีแอดเดรสที่เป็นขอบเขตบน และล่างอยู่ ดังนั้นเมื่องานต้องการใช้หน่วยความจำหลักในส่วนย่อยใดก็ตาม OS จะต้องกำหนดแอดเดรสจริงให้กับงาน เพื่อให้งานเข้าไปครอบครองหน่วยความจำหลักในส่วนที่ถูกต้อง นิยมใช้กับคิวงานที่เป็นแบบ Multiple queues

การแปลงและโหลดด้วยค่าสัมบูรณ์ Absolute translation and loading … ต่อ OS ส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 คิวของส่วนที่ 1 คิวของส่วนที่ 2 คิวของส่วนที่ 3 65000 งานที่เหมาะกับส่วนที่ 1 60000 งานที่เหมาะกับส่วนที่ 2 50000 งานที่เหมาะกับส่วนที่ 3

การแปลงและโหลดด้วยค่าสัมบูรณ์ Absolute translation and loading … ต่อ ข้อเสียของวิธีนี้คือ ถ้างานพร้อมจะรันแล้ว แต่ส่วนของหน่วยความจำหลักที่ต้องการ กำลังถูกใช้โดยงานอื่น ก็ต้องรอจนกว่างานที่ใช้หน่วยความจำที่ต้องการทำงานเสร็จสิ้น ถึงแม้ว่าส่วนอื่น ๆ จะว่างอยู่ก็ตาม ทำให้สูญเสียหน่วยความจำในส่วนอื่นโดยเปล่าประโยชน์ ถ้างานส่วนใหญ่เป็นงานที่มีขนาดเล็ก คิวของส่วนที่มีขนาดเล็กจะเต็มอยู่ตลอดเวลา ในขณะที่คิวของส่วนที่มีขนาดใหญ่ยังคงว่างอยู่ ทำให้งานที่มีขนาดเล็กจะต้องรอในคิว ในขณะที่หน่วยความจำหลักยังเหลืออยู่มาก

การแปลงและโหลดด้วยค่าสัมพัทธ์ Relocatable translation and loading เพื่อแก้ปัญหาที่เกิดขึ้นในการแปลงและโหลดด้วยค่าสัมบูรณ์ จึงทำให้เกิดวิธีการที่เรียกว่าการแปลงและโหลดด้วยค่าสัมพัทธ์ งานจะถูกแปลงให้ได้แอดเดรสเป็นค่าสัมพัทธ์กับจุดเริ่มต้นของงาน จุดเริ่มต้นของงานก็คือแอดเดรส 0 นั่นเอง ถ้างานมีขนาด 100 byte เมื่องานถูกโหลดลงในหน่วยความจำหลักจะไม่รอให้แอดเดรส 0 ถึง 100 ว่าง แต่จะโหลดลงส่วนที่มีขนาดมากกว่าหรือเท่ากับขนาดของงาน ดังนั้นคิวงานจึงไม่จำเป็นต้องเป็น Multiple Queues ใช้เป็น Single Queues

การแปลงและโหลดด้วยค่าสัมพัทธ์ Relocatable translation and loading … ต่อ วิธีการจัดคิวใช้วิธี FCFS คืองานใดมาก่อนก็มีสิทธิ์โหลดลงในส่วนของหน่วยความจำหลักที่ชี้อยู่ แต่ถ้าขนาดของงานมีขนาดใหญ่กว่าส่วนของหน่วยความจำหลักที่ชี้อยู่ OS จะข้ามงานนั้นไปทำให้กับงานอื่น ๆ ที่อยู่ถัดไป สำหรับงานที่ถูกข้ามก็จะต้องคอยอยู่ในคิว ซึ่ง OS จะกำหนดว่างานจะถูกมองข้ามได้ไม่เกินจำนวนครั้งที่กำหนด ถ้าเกินระบบจะต้องเลือกงานนั้นเข้าไปทำงาน

การแปลงและโหลดด้วยค่าสัมพัทธ์ Relocatable translation and loading … ต่อ OS ส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 65000 งาน คิว 60000 50000

การแปลงและโหลดด้วยค่าสัมพัทธ์ Relocatable translation and loading … ต่อ การป้องกัน OS ในระบบหลายโปรแกรมประเภทแบ่งหน่วยความจำนิยมใช้รีจีสเตอร์ขอบเขตหลาย ๆ ตัว ส่วนย่อยแต่ละส่วนจะใช้รีจีสเตอร์ขอบเขต 2 ตัว ในการแยกแยะส่วนแต่ละส่วน เรียกว่ารีจีสเตอร์ขอบเขตบน (high boundary register) และรีจีสเตอร์ขอบเขตล่าง (Low boundary register) โปรแกรมของผู้ใช้สามารถข้ามเข้าไปในขอบเขตของ OS ได้โดยผ่านทางคำสั่งเรียกระบบ

ข้อเสียของการแบ่งหน่วยความจำขนาดคงที่ การแบ่งหน่วยความจำขนาดคงที่เป็นวิธีการที่ง่ายและไม่ซับซ้อนต่อการสร้าง OS อย่างไรก็ตามมีข้อเสียดังนี้ พื้นที่ที่กำหนดให้มีขนาดและจำนวนที่คงที่เมื่อระบบเริ่มทำงานนั้น จะเป็นตัวจำกัดจำนวนของงานที่สามารถเข้ามาใช้ระบบได้ เนื่องจากระบบมีการกำหนดพื้นที่แบบคงที่ ดังนั้นงานที่มีขนาดเล็กจะไม่สามารถใช้พื้นที่ของหน่วยความจำได้อย่างเต็มประสิทธิภาพ การจัดแบ่งพื้นที่แบบคงที่จะทำให้เกิดส่วนที่ไม่ถูกใช้งาน ซึ่งเราเรียกว่าเกิดการแตกกระจาย (Fragmentation) ซึ่งมีอยู่ 2 รูปแบบ การแตกกระจายภายนอก (External fragmentation) การแตกกระจายภายใน (Internal fragmentation)

ข้อเสียของการแบ่งหน่วยความจำขนาดคงที่ OS ส่วนที่ 1 ว่าง ส่วนที่ 2 (งานของผู้ใช้) ส่วนที่ 3 การแตกกระจายภายนอก การแตกกระจายภายใน

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming จากปัญหาที่พบของการทำงานของการแบ่งหน่วยความจำขนาดคงที่ ผู้ออกแบบ OS จึงได้ทำการปรับปรุงการแบ่งหน่วยความจำให้ดีขึ้น โดยระบบจะกำหนดให้มีการแบ่งหน่วยความจำตามความต้องการของงาน และไม่มีการจำกัดขอบเขตของหน่วยความจำหลัก การแบ่งหน่วยความจำแบบนี้เรียกว่า การแบ่งหน่วยความจำขนาดไม่คงที่

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ ตัวอย่าง ถ้าเรามีหน่วยความจำหลักทั้งหมด 1 MB ดังรูป OS 128 K 896 K ว่าง OS 576 K 320 K ว่าง โปรเซส A (ต้องการ 320 K)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ OS 576 K 320 K A ว่าง OS 224 K 320 K A B 352 K ว่าง โปรเซส B (ต้องการ 224 K)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ OS 224 K 320 K A B 352 K ว่าง OS 224 K 320 K A B 288 K C 64 K ว่าง โปรเซส C (ต้องการ 288 K)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ OS 224 K 320 K A B 288 K C 64 K ว่าง OS 224 K 320 K A B 288 K C 64 K ว่าง โปรเซส D (ต้องการ 128 K)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ OS 224 K 320 K A B 288 K C 64 K ว่าง OS 224 K 320 K A 288 K C 64 K ว่าง โปรเซส B (ทำงานเสร็จ)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ OS 128 K 320 K A 288 K C 64 K D 96 K ว่าง OS 224 K 320 K A 288 K C 64 K ว่าง โปรเซส D (ต้องการ 128 K)

การแบ่งหน่วยความจำขนาดไม่คงที่ Variable partition multi-programming … ต่อ จากรูปจะเห็นว่าเมื่อระบบทำงานไปได้สักระยะหนึ่ง เราจะพบช่องว่างเกิดขึ้นอย่างมากมายในหน่วยความจำหลัก ซึ่งจะทำให้การใช้งานหน่วยความจำหลักมีประสิทธิภาพลดลง เราเรียกช่องว่างเล็ก ๆ เหล่านี้ว่า การแตกกระจายภายนอก (External fragmentation) ดังนั้นการที่จะวางโปรเซสลงในหน่วยความจำหลักนั้นจะต้องมีการตัดสินใจที่ดี ซึ่ง OS เรียกว่า การจัดยุทธวิธีการวาง

การจัดยุทธวิธีการวาง เมื่อมีโปรเซสถูกส่งเข้ามาในหน่วยความจำหลัก ซึ่งขณะนั้นหน่วยความจำหลักอาจมีช่องว่างเกิดขึ้นกระจายไปทั่ว การจะจัดว่าโปรเซสใดควรจะวางไว้ในช่องว่างใด มีวิธีการอยู่ 3 แบบดังนี้ เลือกช่องว่างที่พบก่อน (First-Fit) เลือกช่องว่างที่เหมาะสม (Best-Fit) เลือกช่องว่างที่ใหญ่ที่สุด (Worst-Fit)

การจัดยุทธวิธีการวาง … ต่อ เลือกช่องว่างที่พบก่อน (First-Fit) วิธีการนี้ OS จะตรวจหาช่องว่างในหน่วยความจำ เมื่อใดที่พบช่องว่างที่มีขนาดใหญ่พอที่จะวางโปรเซสใหม่ลงไปได้ OS จะเลือกช่องว่างนั้นทันที ทำให้การเลือกช่องว่างทำได้รวดเร็ว

การจัดยุทธวิธีการวาง … ต่อ เลือกช่องว่างที่เหมาะสม (Best-Fit) วิธีการนี้ OS จะตรวจหาช่องว่างที่มีอยู่ในหน่วยความจำทั้งหมด แล้วเลือกเอาช่องว่างที่เมื่อวางโปรเซสลงไปแล้วจะเกิดช่องว่างขนาดเล็กที่สุด

การจัดยุทธวิธีการวาง … ต่อ เลือกช่องว่างที่ใหญ่ที่สุด (Worst-Fit) การเลือกช่องว่างแบบนี้จะตรงกันข้ามกับแบบที่ 2 OS จะเลือกช่องว่างที่เมื่อวางโปรเซสลงไปแล้วจะเกิดช่องว่างขนาดใหญ่ที่สุด

การจัดยุทธวิธีการวาง … ต่อ OS ใช้งาน 16 K 14 K 5 K 30 K โปรเซสใหม่ขนาด 13 K คำถาม จงใช้ยุทธวิธีทั้ง 3 แบบวางโปรเซสใหม่นี้

การรวมโฮล (Coalescing Holes) เมื่อมีช่องว่าง 2 ช่องติดกันในหน่วยความจำ OS สามารถที่จะรวมช่องว่างทั้ง 2 นี้เป็นช่องว่างขนาดใหญ่ช่องเดียว ซึ่งเราเรียกว่า การรวมโฮล (Coalescing Holes) แสดงดังรูป OS โปรแกรมอื่น ๆ 2 K โปรแกรม A 5 K OS โปรแกรมอื่น ๆ 2 K 5 K OS โปรแกรมอื่น ๆ 7 K โปรแกรม A จบ

การบีบอัดหน่วยความจำ (Storage Compaction) ถึงแม้ว่าจะมีการรวมโฮลเกิดขึ้น แต่ช่องว่างที่ไม่อยู่ติดกันก็ยังคงมีกระจายอยู่ในหน่วยความจำ ซึ่งการมีช่องว่างขนาดเล็ก ๆ หลายช่อง เมื่อนำมารวมกันก็จะทำให้เกิดช่องว่างขนาดใหญ่ซึ่งมากพอสำหรับ 1 โปรเซสได้ OS จะต้องสามารถที่จะทำการบีบอัดหน่วยความจำ โดยย้ายเอาหน่วยความจำที่ถูกครอบครองโดยโปรเซสต่าง ๆ ไปอยู่ชิดติดกันที่ด้านใดด้านหนึ่ง ซึ่งจะทำให้เกิดช่องว่างใหญ่เพียงช่องเดียว จึงทำให้โปรเซสอื่น ๆ สามารถเข้ามาใช้หน่วยความจำที่เหลือได้

การบีบอัดหน่วยความจำ (Storage Compaction) … ต่อ OS ใช้งาน 1 ใช้งาน 2 ใช้งาน 3 16 K 14 K 5 K 30 K ว่าง

การบีบอัดหน่วยความจำ (Storage Compaction) … ต่อ ข้อเสียของการบีบอัดหน่วยความจำ ระบบจะต้องหยุดการทำงานของโปรเซสทุกโปรเซสไว้ชั่วขณะหนึ่งเพื่อที่จะทำการบีบอัด ซึ่งอาจจะต้องใช้เวลามากทำให้การทำงานของระบบช้าลง โดยเฉพาะกับการทำงานในระบบโต้ตอบ (Interactive)

ระบบหลายโปรแกรมแบบสลับหน่วยความจำ (multiprogramming with storage swapping) เป็นการสลับโปรแกรมไปสู่หน่วยความจำสำรองเมื่อโปรแกรมไม่ต้องการหน่วยความจำหลักเรียกว่าการสลับออก (swapped out) และนำโปรแกรมเข้ามาใช้หน่วยความจำใหม่เมื่อต้องการใช้หน่วยความจำเรียกว่าการสลับเข้า (swapped in) โปรแกรมจะอยู่ในหน่วยความจำและถูกสลับออกเมื่อเกิดเหตุการณ์ 3 กรณี คือ โปรแกรมจบ โปรแกรมต้องการใช้งานอินพุต-เอาต์พุต หมดเวลาควอนตัม

ระบบหลายโปรแกรมแบบสลับหน่วยความจำ (multiprogramming with storage swapping) … ต่อ สลับเข้า swapped In A B C D OS โปรแกรมของ ผู้ใช้ ว่าง สลับออก swapped out โปรแกรมของผู้ใช้

การทำโอเวอร์เลย์ เนื่องจากโปรแกรมของผู้ใช้มีขนาดใหญ่กว่าหน่วยความจำหลัก จึงต้องแก้ปัญหานี้ ถ้าเป็นกรณีโปรแกรมเดี่ยวจะแก้ปัญหาด้วยการทำโอเวอร์เลย์ การทำโอเวอร์เลย์ (overlay) เป็นหน้าที่ของผู้เขียนโปรแกรมเอง OS ไม่ได้ จัดการให้ ผู้เขียนโปรแกรมแบ่งโปรแกรมออกเป็นส่วนย่อยหลาย ๆ ส่วน แต่ละส่วนต้องมีขนาดเล็กกว่าหน่วยความจำ อาศัยหลักการสลับโปรแกรม โดยที่ส่วนแรกจะอยู่ในหน่วยความจำตลอดเวลาแล้วโหลดส่วนอื่นเข้ามาทับ

การทำโอเวอร์เลย์ … ต่อ โปรแกรมย่อย โปรแกรมหลัก OS ส่วนที่ 1 ส่วนที่ 2 หน่วยความจำ โปรแกรมของผู้ใช้แบ่งเป็นส่วนย่อยต่าง ๆ

หน่วยความจำเสมือน (Virtual Memory) การใช้หน่วยความจำของโปรแกรมผู้ใช้ที่กล่าวมานั้น จะเห็นว่าขนาดของโปรแกรมต้องมีขนาดเล็กกว่าขนาดของหน่วยความจำที่เหลืออยู่ แต่ถ้าโปรแกรมของผู้ใช้มีขนาดใหญ่กว่า ไม่ว่าเราจะใช้วิธีการจัดการหน่วยความจำที่กล่าวมาแล้วชนิดใดก็ตามไม่สามารถจะทำงานได้ ดังนั้นถ้าโปรแกรมของผู้ใช้มีขนาดใหญ่กว่าหน่วยความจำที่เหลือ เราแก้ปัญหาโดยใช้หน่วยความจำเสมือน (Virtual Memory) ใช้ในกรณีแบบหลายโปรแกรม

Question & Answer

แบบฝึกหัดบทที่ 4 1. นักศึกษาคิดว่าทำไมจึงต้องมีหน่วยความจำหลัก 2. จงอธิบายภาพข้างล่างนี้ตามความเข้าใจ 3. การจัดการหน่วยความจำเป็นหน้าที่ของ OS ส่วนใด และจัดการเรื่องใดบ้าง

แบบฝึกหัดบทที่ 4 4 .การรวมโฮล (Coalescing Holes) มีวิธีการทำงานอย่างไร จงอธิบาย 5. การแตกกระจาย (Fragmentation) เกิดขึ้นได้อย่างไร จงอธิบาย 6. การจะจัดว่าโปรเซสควรจะวางไว้ในช่องว่างใดในหน่วยความจำมีหลักการทำงานอย่างไร จงอธิบาย 7. การแปลงและโหลดด้วยค่าสัมบูรณ์ และการแปลงและโหลดด้วยค่าสัมพัทธ์ แตกต่างกันอย่างไร 8. การป้องกันไม่ให้โปรแกรมล่วงล้ำมายังส่วนของ OS ภายในหน่วยความจำ ใช้วิธีการใด 9. การบีบอัดหน่วยความจำ (Storage Compaction) มีหลักการทำงานอย่างไร 10. Holes เกิดขึ้นได้อย่างไร อธิบายมาพอเข้าใจ