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

ใบงานที่ 4 เรื่อง การจัดการหน่วยความจำ 


จัดทำโดย นาย โสรฬ เดชศักดา 6031280065

    หน่วยความจำเป็นส่วนที่ส าคัญที่สุดในระบบคอมพิวเตอร์ ถือเป็น ศูนย์กลางให้การด าเนินการด้านต่างๆ ในระบบคอมพิวเตอร์เป็นไปอย่าง ราบรื่นและมีประสิทธิภาพสูงสุด โดยภายในหน่วยความจ าจะมีการท างาน หลายส่วน เช่น การท างานของโปรแกรมจ านวนมาก ซึ่งต้องมีการแบ่งพื้นที่ การใช้งานและวิธีการจัดการด้านต่างๆ ซึ่งหน่วยความจ าที่ใช้ในการจัดเก็บ แบ่งออกเป็น 2 ส่วน ได้แก่ 1.หน่วยความจำหลัก (Main Memory) 2. หน่วยความจ าเสมือน (Virtual Memory) โดยแต่ละวิธีในการจัดเก็บข้อมูลทั้งสองส่วนมีข้อดีและข้อเสียต่างกัน ขึ้นอยู่กับซอฟต์แวร์และฮาร์ดแวร์ที่เลือกใช้ว่าสอดคล้องและสนับสนุนการ ท างานและวิธีการที่จัดเก็บในหน่วยความจ าที่เลือกใช้มากน้อยเพียงใด

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

 ประกอบไปด้วยอารเรย์ขนาดใหญ่ (large array) ซึ่งภายในประกอบไป เวิร์ด (words) และไบต์ (bytes) ซึ่งแต่ละที่จะมีเลขต าแหน่ง (address) เป็นของตัวเอง นอกจากนี้หน่วยความจ าหลักยังท าหน้าที่เก็บชนิด กระบวนการในการประมวลผลค าสั่ง (a typical instruction-execution cycle) เพื่อให้หน่วยประมวลผลกลาง (Central Processing Unit: CPU) น าไปใช้ในการประมวลแล้วจึงส่งผลลัพธ์ของค าสั่งนั้นๆ กลับมาจัดเก็บ กลับไว้ในหน่วยความจ าหลักอีก

หน่วยความจำเสมือน

 เป็นเทคนิคที่อนุญาตให้โปรเซส (Process) สามารถประมวลผลได้นอก หน่วยความจ าหลักโดยไม่ต้องคำนึงถึงขนาดพื้นที่ใช้ในการประมวลผลว่า เพียงพอกับขนาดของโปรแกรมหรือไม่ นอกจากนี้ยังง่ายต่อการแชร์ไฟล์ (Share files) พื้นที่ว่าง (Address Space) และเพิ่มประสิทธิภาพให้ โปรเซสท างานได้เร็วขึ้น เพราะไม่ต้องคอยตรวจสอบขนาดของ หน่วยความจ าทางกายภาพ (Physical Memory)


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

 1.ช่วงเวลาคอมไฟล์ (Compile time) คือ ช่วงเวลาที่ค าสั่งหรือข้อมูลถูก แปลค าสั่งโดยการคอมไพล์ด้วยตัวคอมไพเลอร์ (Compiler) ตัวคอมไฟเลอร์จะท าการแปลโปรแกรมโช้ต าแหน่งสัมบูรณ์ (Absolute Code) หรือต าแหน่งจริงได้เลย เช่นถ้า ก าหนดให้กระบวนการ ของผู้ใช้เริ่มที่ ต าแหน่ง R ตัวแปลภาษาสามารถแปลต าแหน่งต่างๆ ได้โดย เริ่มจากค่า R เป็นต้นไป ถ้ามีการเปลี่ยนแปลงต าแหน่งเริ่มต้นก็จะต้องท า การแปลโปรแกรมกันใหม่ 
  2.ช่วงเวลาโหลด (Load time) ช่วงเวลาที่ค าสั่งหรือข้อมูลถูกโหลดเข้าสู่ หน่วยความจ า เมื่อในขณะที่แปลโปรแกรม เราไม่สามารถทราบได้ว่าโปรแกรมจะ ท างานที่ต าแหน่งใดในหน่วยความจ าหลัก ต าแปลจะต้องแปลต าแหน่งให้ เป็นแบบย้ายต าแหน่งได้ (Relocatable Code) ดังนั้นการก าหนดต าแหน่ง จริงๆ โดยจะเกิดขึ้นขณะที่ก าลังน าโปรแกรมเข้าสู่หน่วยความจำ หลัก 
  3.ช่วงเวลาประมวลผล (Execution time) ช่วงเวลาที่ค าสั่งหรือข้อมูลถูก ประมวลผล กระบวนการอาจถูกย้ายไปมาได้ในระหว่างการท างาน การ ก าหนดค่าต าแหน่งจริง จะกระท าก่อนไม่ได้ ต้องท าในขณะท างานจริง เท่านั้น จะต้องมีอุปกรณ์พิเศษ (ฮาร์ดแวร์) ช่วย จึงจะสามารถใช้วิธีนี้ได้

การเชื่อมต่อโปรเเกรมแบบสัมพัทธ์

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

การแบ่งส่วน

 ถ้าเราต้องการนำโปรแกรมทั้งหมดลงสู่หน่วยความจำหลัก เราต้องมี หน่วยความจำหลักขนาดอย่างน้อย 200 K ถ้าหากเรามีเพียง 150 K (ที่ เหลือจากส่วนของระบบปฏิบัติการ) ก็จะทำงานไม่ได้ จึงต้องใช้วิธีแบ่งส่วน (overlays) โดยก าหนดส่วนแรก (A) ประกอบด้วย ตารางสัญลักษณ์ โปรแกรมย่อยร่วม และส่วนการแปลรอบที่ 1 ส่วนที่สอง (B) ประกอบด้วย ตารางสัญลักษณ์ โปรแกรมย่อยร่วมและส่วน การแปลรอบที่สองเราเพิ่มตัวควบคุมการแบ่งส่วน (overlay driver) (ขนาด 10 K) และรวม กับส่วนแรก A นำลงในหน่วยความจำหลัก หลังจากท าการแปลรอบที่หนึ่งเสร็จแล้ว ตัวควบคุมการแบ่งส่วนจะอ่าน ส่วน B ลงสู่พื้นที่ของส่วน A และส่งการควบคุมต่อไปยังการแปลรอบที่ สอง จะเห็นได้ว่าส่วนแบ่ง A มีขนาด 120 K และส่วนแบ่ง B มีขนาด 130 K

การสับเปลี่ยน

 กระบวนการที่ก าลังทำงานต้องอยู่ในหน่วยความจ าหลักเสมอ แต่ อาจถูกย้ายไปอยู่ในหน่วยเก็บโปรแกรมชั่วคราว (Backing Store) ได้ และ น ากลับมาใหม่เพื่อท างานต่อ ในระบบการท างานแบบหลายโปรแกรมที่ใช้ การจัดตารางการท างานแบบเวียนเทียน (round-robin) เมื่อส่วนแบ่งเวลา (Time Quantum) สิ้นสุด ตัวจัดการหน่วยความจ าจะย้ายกระบวนการ ปัจจุบันออกไปและเอากระบวนการใหม่เข้ามาทำงานแทนในทางทฤษฏีตัวจัดการหน่วยความจ าต้องสามารถสับเปลี่ยนกระบวนการ ได้เร็วมาก จนกระทั่งตัวจัดตารางหน่วยประมวลผลเห็นว่ามีกระบวนการอยู่ใน หน่วยความจำตลอดเวลา ในทางปฏิบัติเวลาที่ใช้ในการสับเปลี่ยนงานนี้ (context-switch time) ค่อนข้างมาก สมมติว่ากระบวนการผู้ใช้มีขนาด 100 K หน่วยเก็บโปรแกรม ชั่วคราว (backing store) มีอัตราการถ่ายโอนข้อมูล 1 M ต่อวินาที เวลาที่ใช้ใน การถ่ายโอนกระบวนการผู้ใช้จะเท่ากับ 100 K / 1 M = 100 มิลลิวินาที ถ้าอัตราเฉลี่ยในการที่หัวอ่านเคลื่อนไปยังต าแหน่งที่ต้องการ (Latency Time) เป็น 8 มิลลิวินาที เวลาในการสับเปลี่ยนจะเป็น 100 + 8 = 108 มิลลิวินาที การสับเปลี่ยนงานมักต้องสับงานเก่าออก และสับงานใหม่เข้าแทนที่ ดังนั้นเวลารวมในการสับเปลี่ยนงานครั้งหนึ่ง ๆ จะเท่ากับ 216 มิลลิวินาทีการสับเปลี่ยนงานจะตองแนใจวาไมมีโปรเซสอะไรติดคางอยูโดยเฉพาะ การรอคอยข้อมูล การสับเปลี่ยนโปรเซสเกออกไปและโปรเซสใหมแทนที่ อาจทำให้อุปกรณ์ รับสงขอมูลสงผิดโปรเซสได้ วิธีการแกปญหา คือ 1. หามสับเปลี่ยนงานขณะที่มีการรอคอยการรับสงขอมูล 2. การรับสงขอมูลจะต้องใช้ที่ พักขอมูลภายในเนื้อที่ของ ระบบปฏิบัติการเทานั้น และระบบจะสงตอใหโปรเซส เมื่อโปรเซสกำลัง ทำงานในหนวยความจำหลักเทานั้น

การจัดสรรหน่วยความจำที่ต่อเนื่องกัน

 หน่วยความจำหลักต้องจำเป็นจะต้องอำนวยความสะดวกให้กับ ระบบปฏิบัติการ แต่ละโปรเซส (Process) มีความต้องการใช้พื้นที่ในหน่วยความจ าอย่าง ต่อเนื่อง จึงเป็นหน้าที่ของระบบปฏิบัติการในการจัดสรรพื้นที่ หน่วยความจ าในหน่วยความจ าให้มีปะสิทธิภาพสูงสุด โดยทั่วไปแล้วหน่วยความจำหลัก (Main Memory) จะถูกแบ่งออกเป็น 2 ส่วน คือ หน่วยความจ าระดับบน (High Memory) ซึ่งเป็นส่วนที่ใช้ ติดต่อกับส่วนของผู้ใช้ (User) และหน่วยความจำระดับล่าง (Low Memory) ซึ่งเป็นส่วนของระบบปฏิบัติการ (Operating System)

ระบบโปรแกรมเดี่ยว

รันโปรแกรมได้เพียงทีละ 1 โปรแกรมเท่านั้น ณ เวลาใดเวลาหนึ่ง ไม่แบ่งหน่วยความจ าเป็นส่วนๆ  a :อยู่ในระบบคอมพิวเตอรเมนเฟรม และมินิคอมพิวเตอรสมัยตน ๆ b : ใชในเครื่องปาลมและคอมพิวเตอรขนาดเล็ ก  c : ใช้ในPC ยุคแรก ๆ(MS-DOS)

การจัดสรรพื้นที่ในหน่วยความจำ

 1.การจัดสรรหน่วยความจำแบบพื้นที่เดียว (Single-partition Allocation) 

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

 2.การจัดสรรหน่วยความจำแบบหลายพื้นที่ (Multiple-partition Allocation) 

วิธีนี้หน่วยความจำจะถูกแบ่งตามจำนวน Process มีวิธีการจัดสรร 2 รูปแบบ ดังนี้ 2.1 การแบ่งแบบคงที่ (Fixed Partition) 2.2 การแบ่งแบบพลวัต (Dynamic Partition)

  2.1 การแบ่งแบบคงที่ (Fixed Partition) 

โดยการแบ่งพื้นที่หน่วยความจ าอออกเป็นหลาย ๆ พาร์ทิชั่น (Partition) ให้มีขนาดเท่ากันและบรรจุโปรเซสอยู่ภายในเพียงหนึ่งโปรเซส เท่านั้น ข้อเสียของวิธีคือ หากโปรเซสที่บรรจุอยู่ในหน่วยความจำมีขนาดเล็ก กว่าพาร์ทิชั่นที่กำหนดจะทำให้เหลือพื้นที่ในหน่วยความจำ(พาร์ทิชั่นมีพื้นที่ ว่างเหลือ) เรียกพื้นที่ว่างที่เหลือนี้ว่า “Internal Fragmentation” กรณีที่ ขนาดของโปรเซสมีขนาดใหญ่กว่าพาร์ทิชั่นที่กำหนดก็จะไม่สามารถนำ โปรเซสนั้นเข้าไปใช้งานพื้นที่ในหน่วยความจำหลักได้

 2.2 การแบ่งแบบพลวัต (Dynamic Partition) 

เป็นการแบ่งพื้นที่ตามขนาดของโปรเซส โดยการใช้พื้นที่ว่างทางกายภาพ ที่เรียกว่า โฮล (Hold) เมื่อมีโปรเซสต้องการใช้งานพื้นที่ในหน่วยความจ า ระบบปฏิบัติการจ ามีหน้าที่ในค้นหาพื้นที่โฮล (Hold) ที่มีขนาดใหญ่ เพียงพอกับโปรเซส แล้วจึงน าโปรเซสนั้นเข้าไปใช้งานหน่วยความจ า ระบบปฏิบัติการจะมีตารางที่เก็บข้อมูลว่าพื้นที่ในหน่วยความจ าหลักส่วน ใดถูกครอบครองและส่วนใดยังว่างอยู่ พื้นที่ที่เหลืออยู่ก็จะเก็บไว้ใช้ในการจัดสรร ครั้งต่อไป  ตัวอย่างเช่น ระบบมีหน่วยความจ าหลักขนาด 2560 K มีโปรแกรมของระบบ ใช้พื้นที่อยู่ 400 K ส่วนว่างที่เหลืออีก 2160 K ส าหรับผู้ใช้ สมมติให้ใน แถวคอยขาเข้า (input queue)

การจัดสรรหน่วยความจำแบบหลยพื้นที่

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

แหล่งที่มา

https://sites.google.com/site/operatingsytemsyvc/bth-thi3-kar-cadkar-hnwy-khwam-ca

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ความรู้เบื่องต้นเกี่ยวกับระบบปฎิบัติการ