การจัดการหน่วยความจำในระบบปฏิบัติการ: ติดกัน การสลับ การแยกส่วน
การจัดการหน่วยความจำคืออะไร?
การจัดการหน่วยความจำ เป็นกระบวนการควบคุมและประสานงานหน่วยความจำคอมพิวเตอร์ โดยกำหนดส่วนที่เรียกว่าบล็อกให้กับโปรแกรมต่างๆ ที่รันอยู่เพื่อปรับประสิทธิภาพโดยรวมของระบบให้เหมาะสม
เป็นฟังก์ชันที่สำคัญที่สุดของระบบปฏิบัติการที่จัดการหน่วยความจำหลัก ช่วยให้กระบวนการต่างๆ ย้ายกลับไปกลับมาระหว่างหน่วยความจำหลักและดิสก์ที่ใช้ดำเนินการ ช่วยให้ระบบปฏิบัติการติดตามตำแหน่งหน่วยความจำทุกตำแหน่ง โดยไม่คำนึงว่าหน่วยความจำนั้นได้รับการจัดสรรให้กับกระบวนการใดหรือว่าหน่วยความจำนั้นยังคงว่างอยู่
เหตุใดจึงต้องใช้การจัดการหน่วยความจำ
ต่อไปนี้เป็นเหตุผลในการใช้การจัดการหน่วยความจำ:
- ช่วยให้คุณสามารถตรวจสอบจำนวนหน่วยความจำที่ต้องจัดสรรให้กับกระบวนการที่ตัดสินใจว่าโปรเซสเซอร์ตัวใดควรได้รับหน่วยความจำในเวลาใด
- ติดตามเมื่อใดก็ตามที่สินค้าคงคลังได้รับการปลดปล่อยหรือไม่ได้ถูกจัดสรร ตามนั้นก็จะทำการอัพเดตสถานะ
- จัดสรรพื้นที่ให้กับรูทีนของแอปพลิเคชัน
- นอกจากนี้ยังตรวจสอบให้แน่ใจว่าแอปพลิเคชันเหล่านี้ไม่รบกวนซึ่งกันและกัน
- ช่วยปกป้องกระบวนการที่แตกต่างกันจากกัน
- มันวางโปรแกรมไว้ในหน่วยความจำเพื่อให้หน่วยความจำถูกใช้อย่างเต็มที่
เทคนิคการจัดการหน่วยความจำ
ต่อไปนี้เป็นเทคนิคการจัดการหน่วยความจำที่สำคัญที่สุดบางส่วน:
การจัดสรรต่อเนื่องกันเดี่ยว
เป็นเทคนิคการจัดการหน่วยความจำที่ง่ายที่สุด ในวิธีนี้ หน่วยความจำทุกประเภทของคอมพิวเตอร์ ยกเว้นหน่วยความจำส่วนเล็ก ๆ ที่สงวนไว้สำหรับระบบปฏิบัติการ จะสามารถใช้กับแอปพลิเคชันหนึ่งได้ ตัวอย่างเช่น ระบบปฏิบัติการ MS-DOS จะจัดสรรหน่วยความจำในลักษณะนี้ ระบบฝังตัวยังทำงานบนแอปพลิเคชันเดียวอีกด้วย
การจัดสรรแบบแบ่งพาร์ติชัน
โดยจะแบ่งหน่วยความจำหลักออกเป็นพาร์ติชันหน่วยความจำต่างๆ ซึ่งส่วนใหญ่เป็นพื้นที่หน่วยความจำที่อยู่ติดกัน ทุกพาร์ติชั่นจะจัดเก็บข้อมูลทั้งหมดสำหรับงานหรืองานเฉพาะ วิธีการนี้ประกอบด้วยการจัดสรรพาร์ติชันให้กับงานเมื่อเริ่มต้นและยกเลิกการจัดสรรเมื่อสิ้นสุด
การจัดการหน่วยความจำเพจ
วิธีการนี้จะแบ่งหน่วยความจำหลักของคอมพิวเตอร์ออกเป็นหน่วยขนาดคงที่ที่เรียกว่าเฟรมหน้า หน่วยจัดการหน่วยความจำฮาร์ดแวร์นี้แมปเพจต่างๆ ลงในเฟรมซึ่งควรได้รับการจัดสรรตามเพจ
การจัดการหน่วยความจำแบบแบ่งส่วน
หน่วยความจำแบบเซ็กเมนต์เป็นวิธีการจัดการหน่วยความจำเดียวที่ไม่ได้จัดเตรียมพื้นที่ที่อยู่เชิงเส้นและต่อเนื่องให้กับโปรแกรมของผู้ใช้
เซ็กเมนต์ต้องการการสนับสนุนฮาร์ดแวร์ในรูปแบบของตารางเซ็กเมนต์ ประกอบด้วยที่อยู่ทางกายภาพของส่วนในหน่วยความจำ ขนาด และข้อมูลอื่นๆ เช่น บิตและสถานะการป้องกันการเข้าถึง
การแลกเปลี่ยนคืออะไร?
การสลับเป็นวิธีการที่กระบวนการควรสลับชั่วคราวจากหน่วยความจำหลักไปยังที่จัดเก็บสำรอง จากนั้นจะนำกลับเข้าสู่หน่วยความจำเพื่อดำเนินการต่อ
Backing store คือฮาร์ดดิสก์หรืออุปกรณ์จัดเก็บข้อมูลรองอื่นๆ ที่ควรมีขนาดใหญ่พอที่จะรองรับสำเนาของอิมเมจหน่วยความจำทั้งหมดสำหรับผู้ใช้ทุกคน นอกจากนี้ยังสามารถเสนอการเข้าถึงภาพหน่วยความจำเหล่านี้ได้โดยตรง
ประโยชน์ของการแลกเปลี่ยน
นี่คือประโยชน์/ข้อดีหลักๆ ของการแลกเปลี่ยน:
- มันมีระดับของการเขียนโปรแกรมหลายโปรแกรมที่สูงขึ้น
- อนุญาตให้มีการย้ายตำแหน่งแบบไดนามิก ตัวอย่างเช่น หากมีการใช้การเชื่อมโยงที่อยู่ ณ เวลาดำเนินการ กระบวนการก็สามารถสลับในตำแหน่งที่ต่างกันได้ ในกรณีอื่นของการคอมไพล์และการเชื่อมโยงเวลาโหลด กระบวนการควรถูกย้ายไปยังตำแหน่งเดียวกัน
- ช่วยให้สามารถใช้งานหน่วยความจำได้ดีขึ้น
- การสิ้นเปลืองเวลา CPU ขั้นต่ำเมื่อเสร็จสิ้น จึงสามารถนำไปใช้กับวิธีการกำหนดเวลาตามลำดับความสำคัญได้อย่างง่ายดาย เพื่อปรับปรุงประสิทธิภาพ
การจัดสรรหน่วยความจำคืออะไร?
การจัดสรรหน่วยความจำเป็นกระบวนการที่โปรแกรมคอมพิวเตอร์กำหนดหน่วยความจำหรือพื้นที่
ที่นี่หน่วยความจำหลักแบ่งออกเป็นพาร์ติชั่นสองประเภท
- หน่วยความจำต่ำ - Operaระบบติ้ง อยู่ในความทรงจำประเภทนี้
- หน่วยความจำสูง– กระบวนการของผู้ใช้ถูกเก็บไว้ในหน่วยความจำสูง
การจัดสรรพาร์ติชัน
หน่วยความจำแบ่งออกเป็นบล็อกหรือพาร์ติชันต่างๆ แต่ละกระบวนการได้รับการจัดสรรตามความต้องการ การจัดสรรพาร์ติชันเป็นวิธีการที่เหมาะสมที่สุดในการหลีกเลี่ยงการกระจายตัวภายใน
ด้านล่างนี้เป็นรูปแบบการจัดสรรพาร์ติชันต่างๆ:
- ฟิตครั้งแรก: ในประเภทนี้พอดี พาร์ติชันจะถูกจัดสรร ซึ่งเป็นบล็อกแรกที่เพียงพอจากจุดเริ่มต้นของหน่วยความจำหลัก
- เหมาะสมที่สุด: จะจัดสรรกระบวนการให้กับพาร์ติชันที่เป็นพาร์ติชันที่เล็กที่สุดตัวแรกในบรรดาพาร์ติชันที่ว่าง
- พอดีแย่ที่สุด: มันจัดสรรกระบวนการให้กับ ซึ่งเป็นพาร์ติชั่นว่างที่ใหญ่ที่สุดเพียงพอในหน่วยความจำหลัก
- พอดีถัดไป: ส่วนใหญ่จะคล้ายกับ Fit แรก แต่ Fit นี้ค้นหาพาร์ติชันแรกที่เพียงพอจากจุดการจัดสรรครั้งล่าสุด
เพจจิ้งคืออะไร?
การเพจเป็นกลไกการจัดเก็บข้อมูลที่ช่วยให้ระบบปฏิบัติการดึงกระบวนการจากที่เก็บข้อมูลรองไปยังหน่วยความจำหลักในรูปแบบของเพจ ในวิธีการเพจจิ้ง หน่วยความจำหลักจะถูกแบ่งออกเป็นบล็อกหน่วยความจำฟิสิคัลขนาดคงที่ขนาดเล็ก ซึ่งเรียกว่าเฟรม ขนาดของเฟรมควรคงขนาดเท่ากับขนาดเพจเพื่อให้ใช้งานหน่วยความจำหลักได้สูงสุด และเพื่อหลีกเลี่ยงการแตกแฟรกเมนต์ภายนอก เพจจิ้ง ใช้เพื่อการเข้าถึงข้อมูลที่รวดเร็วขึ้น และเป็นแนวคิดเชิงตรรกะ
การกระจายตัวคืออะไร?
กระบวนการต่างๆ จะถูกจัดเก็บและลบออกจากหน่วยความจำ ซึ่งจะสร้างพื้นที่หน่วยความจำว่าง ซึ่งน้อยเกินกว่าที่กระบวนการอื่นจะใช้ได้
หลังจากนั้นในบางครั้ง กระบวนการนั้นไม่สามารถจัดสรรให้กับบล็อกหน่วยความจำได้เนื่องจากขนาดที่เล็กและบล็อกหน่วยความจำยังคงไม่ได้ใช้งานอยู่เสมอเรียกว่าการกระจายตัว ปัญหาประเภทนี้เกิดขึ้นระหว่างระบบจัดสรรหน่วยความจำแบบไดนามิกเมื่อบล็อกว่างมีขนาดเล็ก ดังนั้นจึงไม่สามารถดำเนินการตามคำขอใดๆ ได้
วิธีการแยกส่วนมี 2 วิธีคือ:
- การกระจายตัวภายนอก
- การกระจายตัวภายใน
- การแตกแฟรกเมนต์ภายนอกสามารถลดลงได้โดยการจัดเรียงเนื้อหาหน่วยความจำใหม่เพื่อรวมหน่วยความจำที่ว่างทั้งหมดไว้ด้วยกันในบล็อกเดียว
- การกระจายตัวภายในสามารถลดลงได้โดยการกำหนดพาร์ติชันที่เล็กที่สุด ซึ่งยังคงดีพอที่จะดำเนินการกระบวนการทั้งหมด
การแบ่งส่วนคืออะไร?
วิธีการแบ่งส่วนทำงานเกือบจะเหมือนกับการแบ่งหน้า ข้อแตกต่างเพียงอย่างเดียวระหว่างสองส่วนนี้คือ ส่วนต่างๆ ที่มีความยาวผันแปรได้ ในขณะที่วิธีการแบ่งหน้านั้น หน้าจะมีขนาดคงที่เสมอ
ส่วนโปรแกรมประกอบด้วยฟังก์ชันหลักของโปรแกรม โครงสร้างข้อมูล ฟังก์ชันยูทิลิตี้ ฯลฯ ระบบปฏิบัติการจะรักษาตารางแผนผังส่วนสำหรับกระบวนการทั้งหมด นอกจากนี้ยังรวมถึงรายการบล็อกหน่วยความจำว่างพร้อมทั้งขนาด หมายเลขส่วน และตำแหน่งหน่วยความจำในหน่วยความจำหลักหรือ หน่วยความจำเสมือน.
การโหลดแบบไดนามิกคืออะไร?
การโหลดแบบไดนามิกเป็นกิจวัตรของโปรแกรมที่ไม่ได้โหลดจนกว่าโปรแกรมจะเรียกใช้ รูทีนทั้งหมดควรมีอยู่บนดิสก์ในรูปแบบโหลดที่ย้ายตำแหน่งได้ โปรแกรมหลักจะถูกโหลดเข้าสู่หน่วยความจำและจะดำเนินการ การโหลดแบบไดนามิกยังช่วยให้ใช้พื้นที่หน่วยความจำได้ดีขึ้น
การเชื่อมโยงแบบไดนามิกคืออะไร?
การลิงก์เป็นวิธีการที่ช่วยให้ OS รวบรวมและรวมโมดูลโค้ดและข้อมูลต่างๆ ไว้ในไฟล์ปฏิบัติการไฟล์เดียว สามารถโหลดไฟล์ลงในหน่วยความจำและดำเนินการได้ ระบบปฏิบัติการสามารถเชื่อมโยงไลบรารีระดับระบบเข้ากับโปรแกรมที่รวมไลบรารี ณ เวลาที่โหลด ในวิธีการลิงก์แบบไดนามิก ไลบรารีจะถูกลิงก์ ณ เวลาดำเนินการ ดังนั้นโค้ดโปรแกรมจึงสามารถมีขนาดเล็กได้
ความแตกต่างระหว่างการโหลดแบบคงที่และแบบไดนามิก
กำลังโหลดแบบคงที่ | กำลังโหลดแบบไดนามิก |
---|---|
การโหลดแบบคงที่จะใช้เมื่อคุณต้องการโหลดโปรแกรมของคุณแบบคงที่ จากนั้นในขณะที่ทำการคอมไพล์ โปรแกรมทั้งหมดจะถูกเชื่อมโยงและคอมไพล์โดยไม่จำเป็นต้องพึ่งพาโมดูลภายนอกหรือโปรแกรมใดๆ | ในโปรแกรมที่โหลดแบบไดนามิก จะมีการอ้างอิงและการโหลดจะดำเนินการ ณ เวลาที่ดำเนินการ |
ในขณะโหลด โปรแกรมทั้งหมดจะถูกโหลดเข้าสู่หน่วยความจำและเริ่มดำเนินการ | กิจวัตรของไลบรารีจะถูกโหลดลงในหน่วยความจำเมื่อจำเป็นในโปรแกรมเท่านั้น |
ความแตกต่างระหว่างการเชื่อมโยงแบบคงที่และแบบไดนามิก
นี่คือข้อแตกต่างหลักระหว่างการเชื่อมโยงแบบคงที่กับแบบไดนามิก:
การเชื่อมโยงแบบคงที่ | การเชื่อมโยงแบบไดนามิก |
---|---|
การเชื่อมโยงแบบคงที่ใช้เพื่อรวมโมดูลอื่นๆ ทั้งหมดซึ่งจำเป็นโดยโปรแกรมให้เป็นโค้ดปฏิบัติการเดียว ซึ่งจะช่วยระบบปฏิบัติการป้องกันการพึ่งพารันไทม์ | เมื่อใช้การลิงก์แบบไดนามิก ไม่จำเป็นต้องลิงก์โมดูลหรือไลบรารีจริงกับโปรแกรม แทนที่จะใช้การอ้างอิงถึงโมดูลไดนามิกที่ให้ไว้ ณ เวลาที่รวบรวมและเชื่อมโยง |
สรุป
- การจัดการหน่วยความจำเป็นกระบวนการในการควบคุมและประสานงานหน่วยความจำคอมพิวเตอร์ โดยกำหนดส่วนที่เรียกว่าบล็อกให้กับโปรแกรมต่างๆ ที่รันอยู่เพื่อปรับประสิทธิภาพโดยรวมของระบบให้เหมาะสมที่สุด
- ช่วยให้คุณสามารถตรวจสอบจำนวนหน่วยความจำที่ต้องจัดสรรให้กับกระบวนการที่ตัดสินใจว่าโปรเซสเซอร์ตัวใดควรได้รับหน่วยความจำในเวลาใด
- ในการจัดสรรต่อเนื่องกันครั้งเดียว หน่วยความจำของคอมพิวเตอร์ทุกประเภทยกเว้นส่วนเล็กๆ ที่สงวนไว้สำหรับระบบปฏิบัติการจะพร้อมใช้งานสำหรับแอปพลิเคชันเดียว
- วิธีการจัดสรรแบบแบ่งพาร์ติชันจะแบ่งหน่วยความจำหลักออกเป็นพาร์ติชันหน่วยความจำต่างๆ ซึ่งส่วนใหญ่เป็นพื้นที่ที่อยู่ติดกันของหน่วยความจำ
- วิธีการจัดการหน่วยความจำแบบเพจจะแบ่งหน่วยความจำหลักของคอมพิวเตอร์ออกเป็นหน่วยขนาดคงที่ที่เรียกว่าเฟรมเพจ
- หน่วยความจำแบบเซ็กเมนต์เป็นวิธีการจัดการหน่วยความจำเดียวที่ไม่ได้จัดเตรียมพื้นที่ที่อยู่เชิงเส้นและต่อเนื่องให้กับโปรแกรมของผู้ใช้
- การสลับเป็นวิธีการที่กระบวนการควรสลับชั่วคราวจากหน่วยความจำหลักไปยังที่จัดเก็บสำรอง จากนั้นจะนำกลับเข้าสู่หน่วยความจำเพื่อดำเนินการต่อ
- การจัดสรรหน่วยความจำเป็นกระบวนการที่โปรแกรมคอมพิวเตอร์กำหนดหน่วยความจำหรือพื้นที่
- การเพจเป็นกลไกการจัดเก็บข้อมูลที่ช่วยให้ระบบปฏิบัติการดึงกระบวนการจากที่เก็บข้อมูลรองไปยังหน่วยความจำหลักในรูปแบบของเพจ
- การกระจายตัวหมายถึงสภาพของดิสก์ซึ่งไฟล์จะถูกแบ่งออกเป็นชิ้น ๆ ที่กระจัดกระจายอยู่รอบดิสก์
- วิธีการแบ่งส่วนทำงานเกือบจะเหมือนกับการแบ่งหน้า ข้อแตกต่างเพียงอย่างเดียวระหว่างสองส่วนนี้คือ ส่วนต่างๆ ที่มีความยาวผันแปรได้ ในขณะที่วิธีการแบ่งหน้านั้น หน้าจะมีขนาดคงที่เสมอ
- การโหลดแบบไดนามิกเป็นกิจวัตรของโปรแกรมที่ไม่ได้โหลดจนกว่าโปรแกรมจะเรียกใช้
- การลิงก์เป็นวิธีการที่ช่วยให้ OS รวบรวมและรวมโมดูลโค้ดและข้อมูลต่างๆ ไว้ในไฟล์ปฏิบัติการไฟล์เดียว