การจัดการหน่วยความจำในระบบปฏิบัติการ: ติดกัน การสลับ การแยกส่วน

การจัดการหน่วยความจำคืออะไร?

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

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

เหตุใดจึงต้องใช้การจัดการหน่วยความจำ

ต่อไปนี้เป็นเหตุผลในการใช้การจัดการหน่วยความจำ:

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

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

ต่อไปนี้เป็นเทคนิคการจัดการหน่วยความจำที่สำคัญที่สุดบางส่วน:

การจัดสรรต่อเนื่องกันเดี่ยว

เป็นเทคนิคการจัดการหน่วยความจำที่ง่ายที่สุด ในวิธีนี้ หน่วยความจำทุกประเภทของคอมพิวเตอร์ ยกเว้นหน่วยความจำส่วนเล็ก ๆ ที่สงวนไว้สำหรับระบบปฏิบัติการ จะสามารถใช้กับแอปพลิเคชันหนึ่งได้ ตัวอย่างเช่น ระบบปฏิบัติการ MS-DOS จะจัดสรรหน่วยความจำในลักษณะนี้ ระบบฝังตัวยังทำงานบนแอปพลิเคชันเดียวอีกด้วย

การจัดสรรแบบแบ่งพาร์ติชัน

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

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

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

การจัดการหน่วยความจำแบบแบ่งส่วน

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

เซ็กเมนต์ต้องการการสนับสนุนฮาร์ดแวร์ในรูปแบบของตารางเซ็กเมนต์ ประกอบด้วยที่อยู่ทางกายภาพของส่วนในหน่วยความจำ ขนาด และข้อมูลอื่นๆ เช่น บิตและสถานะการป้องกันการเข้าถึง

การแลกเปลี่ยนคืออะไร?

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

Backing store คือฮาร์ดดิสก์หรืออุปกรณ์จัดเก็บข้อมูลรองอื่นๆ ที่ควรมีขนาดใหญ่พอที่จะรองรับสำเนาของอิมเมจหน่วยความจำทั้งหมดสำหรับผู้ใช้ทุกคน นอกจากนี้ยังสามารถเสนอการเข้าถึงภาพหน่วยความจำเหล่านี้ได้โดยตรง

แลกเปลี่ยน

ประโยชน์ของการแลกเปลี่ยน

นี่คือประโยชน์/ข้อดีหลักๆ ของการแลกเปลี่ยน:

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

การจัดสรรหน่วยความจำคืออะไร?

การจัดสรรหน่วยความจำเป็นกระบวนการที่โปรแกรมคอมพิวเตอร์กำหนดหน่วยความจำหรือพื้นที่

ที่นี่หน่วยความจำหลักแบ่งออกเป็นพาร์ติชั่นสองประเภท

  1. หน่วยความจำต่ำ - Operaระบบติ้ง อยู่ในความทรงจำประเภทนี้
  2. หน่วยความจำสูง– กระบวนการของผู้ใช้ถูกเก็บไว้ในหน่วยความจำสูง

การจัดสรรพาร์ติชัน

หน่วยความจำแบ่งออกเป็นบล็อกหรือพาร์ติชันต่างๆ แต่ละกระบวนการได้รับการจัดสรรตามความต้องการ การจัดสรรพาร์ติชันเป็นวิธีการที่เหมาะสมที่สุดในการหลีกเลี่ยงการกระจายตัวภายใน

ด้านล่างนี้เป็นรูปแบบการจัดสรรพาร์ติชันต่างๆ:

  • ฟิตครั้งแรก: ในประเภทนี้พอดี พาร์ติชันจะถูกจัดสรร ซึ่งเป็นบล็อกแรกที่เพียงพอจากจุดเริ่มต้นของหน่วยความจำหลัก
  • เหมาะสมที่สุด: จะจัดสรรกระบวนการให้กับพาร์ติชันที่เป็นพาร์ติชันที่เล็กที่สุดตัวแรกในบรรดาพาร์ติชันที่ว่าง
  • พอดีแย่ที่สุด: มันจัดสรรกระบวนการให้กับ ซึ่งเป็นพาร์ติชั่นว่างที่ใหญ่ที่สุดเพียงพอในหน่วยความจำหลัก
  • พอดีถัดไป: ส่วนใหญ่จะคล้ายกับ Fit แรก แต่ Fit นี้ค้นหาพาร์ติชันแรกที่เพียงพอจากจุดการจัดสรรครั้งล่าสุด

เพจจิ้งคืออะไร?

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

การกระจายตัวคืออะไร?

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

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

วิธีการแยกส่วนมี 2 วิธีคือ:

  1. การกระจายตัวภายนอก
  2. การกระจายตัวภายใน
  • การแตกแฟรกเมนต์ภายนอกสามารถลดลงได้โดยการจัดเรียงเนื้อหาหน่วยความจำใหม่เพื่อรวมหน่วยความจำที่ว่างทั้งหมดไว้ด้วยกันในบล็อกเดียว
  • การกระจายตัวภายในสามารถลดลงได้โดยการกำหนดพาร์ติชันที่เล็กที่สุด ซึ่งยังคงดีพอที่จะดำเนินการกระบวนการทั้งหมด

การแบ่งส่วนคืออะไร?

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

ส่วนโปรแกรมประกอบด้วยฟังก์ชันหลักของโปรแกรม โครงสร้างข้อมูล ฟังก์ชันยูทิลิตี้ ฯลฯ ระบบปฏิบัติการจะรักษาตารางแผนผังส่วนสำหรับกระบวนการทั้งหมด นอกจากนี้ยังรวมถึงรายการบล็อกหน่วยความจำว่างพร้อมทั้งขนาด หมายเลขส่วน และตำแหน่งหน่วยความจำในหน่วยความจำหลักหรือ หน่วยความจำเสมือน.

การโหลดแบบไดนามิกคืออะไร?

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

การเชื่อมโยงแบบไดนามิกคืออะไร?

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

ความแตกต่างระหว่างการโหลดแบบคงที่และแบบไดนามิก

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

ความแตกต่างระหว่างการเชื่อมโยงแบบคงที่และแบบไดนามิก

นี่คือข้อแตกต่างหลักระหว่างการเชื่อมโยงแบบคงที่กับแบบไดนามิก:

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

สรุป

  • การจัดการหน่วยความจำเป็นกระบวนการในการควบคุมและประสานงานหน่วยความจำคอมพิวเตอร์ โดยกำหนดส่วนที่เรียกว่าบล็อกให้กับโปรแกรมต่างๆ ที่รันอยู่เพื่อปรับประสิทธิภาพโดยรวมของระบบให้เหมาะสมที่สุด
  • ช่วยให้คุณสามารถตรวจสอบจำนวนหน่วยความจำที่ต้องจัดสรรให้กับกระบวนการที่ตัดสินใจว่าโปรเซสเซอร์ตัวใดควรได้รับหน่วยความจำในเวลาใด
  • ในการจัดสรรต่อเนื่องกันครั้งเดียว หน่วยความจำของคอมพิวเตอร์ทุกประเภทยกเว้นส่วนเล็กๆ ที่สงวนไว้สำหรับระบบปฏิบัติการจะพร้อมใช้งานสำหรับแอปพลิเคชันเดียว
  • วิธีการจัดสรรแบบแบ่งพาร์ติชันจะแบ่งหน่วยความจำหลักออกเป็นพาร์ติชันหน่วยความจำต่างๆ ซึ่งส่วนใหญ่เป็นพื้นที่ที่อยู่ติดกันของหน่วยความจำ
  • วิธีการจัดการหน่วยความจำแบบเพจจะแบ่งหน่วยความจำหลักของคอมพิวเตอร์ออกเป็นหน่วยขนาดคงที่ที่เรียกว่าเฟรมเพจ
  • หน่วยความจำแบบเซ็กเมนต์เป็นวิธีการจัดการหน่วยความจำเดียวที่ไม่ได้จัดเตรียมพื้นที่ที่อยู่เชิงเส้นและต่อเนื่องให้กับโปรแกรมของผู้ใช้
  • การสลับเป็นวิธีการที่กระบวนการควรสลับชั่วคราวจากหน่วยความจำหลักไปยังที่จัดเก็บสำรอง จากนั้นจะนำกลับเข้าสู่หน่วยความจำเพื่อดำเนินการต่อ
  • การจัดสรรหน่วยความจำเป็นกระบวนการที่โปรแกรมคอมพิวเตอร์กำหนดหน่วยความจำหรือพื้นที่
  • การเพจเป็นกลไกการจัดเก็บข้อมูลที่ช่วยให้ระบบปฏิบัติการดึงกระบวนการจากที่เก็บข้อมูลรองไปยังหน่วยความจำหลักในรูปแบบของเพจ
  • การกระจายตัวหมายถึงสภาพของดิสก์ซึ่งไฟล์จะถูกแบ่งออกเป็นชิ้น ๆ ที่กระจัดกระจายอยู่รอบดิสก์
  • วิธีการแบ่งส่วนทำงานเกือบจะเหมือนกับการแบ่งหน้า ข้อแตกต่างเพียงอย่างเดียวระหว่างสองส่วนนี้คือ ส่วนต่างๆ ที่มีความยาวผันแปรได้ ในขณะที่วิธีการแบ่งหน้านั้น หน้าจะมีขนาดคงที่เสมอ
  • การโหลดแบบไดนามิกเป็นกิจวัตรของโปรแกรมที่ไม่ได้โหลดจนกว่าโปรแกรมจะเรียกใช้
  • การลิงก์เป็นวิธีการที่ช่วยให้ OS รวบรวมและรวมโมดูลโค้ดและข้อมูลต่างๆ ไว้ในไฟล์ปฏิบัติการไฟล์เดียว

จดหมายข่าว Guru99 รายวัน

เริ่มต้นวันใหม่ของคุณด้วยข่าวสาร AI ล่าสุดและสำคัญที่สุดที่ส่งมอบทันที