Please enable JavaScript.
Coggle requires JavaScript to display documents.
การจัดการหน่วยความจำ, 6221608040 นางสาวนงนุช วายลม เลขที่ 48 หมู่ 700 -…
การจัดการหน่วยความจำ
ประเภทของ
หน่วยความจำ
หน่วยความจำหลัก
เป็นหน่วยความจำความเร็วสูงใช้สำหรับเก็บคำสั่งและข้อมูล
ระหว่างการทำงาน cpu สามารถเข้าถึงได้โดยตรง
หน่วยความจำสำรอง
มีความเร็วน้อยกว่าใช้สำหรับเก็บข้อมูลที่มีขนาดใหญ่ และเป็น
ข้อมูลที่ยังไม่ต้องการนำมาประมวลผล
หน่วยความจำภายใน
หรือเรียกว่าหน่วยความจำแคช ประกอบด้วยรีจีสเตอร์ความเร็ว
สูงนี้ถูกใช้สำหรับเก็บคำสั่งและข้อมูลที่ต้องการทำงานด้วย
ความเร็วสูงมากเป็นหน่วยความจำที่ซีพียูสามารถเข้าถึงได้
โดยตรงและรวดเร็ว
หน่วยความจำหลัก
หน่วยความจำหลัก เป็นศูนย์กลางของการทำงานต่างๆของระบบคอมพิวเตอร์ในปัจจุบัน นอกจากนี้หน่วยความจำหลักยังทำหน้าที่
เก็บชนิดกระบวนการในการประมวลผลคำสั่งเพื่อให้หน่วยประมวลผล
กลางนำไปใช้ในการประมวลแล้วจึงทำการส่งผลลัพธ์ของคำสั่งนั้นๆ
กลับมาจัดเก็บไว้ในหน่วยความจำหลักอีกที
Dynamic Linking and Shared Libraries
Linking จะเลื่อนออกไปจนกระทั่งอยู่ในช่วง Execution time มีชุด
คำสั่งเล็กๆเรียกว่า Stub ใช้สำหรับ Locate ไลบรารีของโปรแกรมย่อย
ที่เหมาะสมในหน่วยความจำหลัก Stub จะแทนที่ตัวเองด้วยแอดเดรส
ของโปรแกรมย่อยและจะทำงานตามโปรแกรมย่อยนั้น
การเชื่อมโยงตำแหน่ง
มีการพัฒนาการเขียนโปรแกรมให้มีการใช้
เลขที่อยู่เชิงสัญลักษณ์ด้วยการกำหนด
ตัวระบุ โดยโปรแกรมสามารถโหลดลง
ตำแหน่งใดก็ได้ในหน่วยความจำหลัก
Load time
ซอฟต์แวร์ระบบที่จะนำโปรแกรมที่ต้องการเข้ามาบรรจุบนหน่วยความจำหลัก
ดังนั้นทุกครั้งที่ทำการโหลดโปรแกรมมาใช้งาน โหลดเดอร์จะต้องหาตำแหน่ง
ของหน่วยความจำหลักที่จะโหลดโปรแกรมเข้ามา
-
Compile time
เมื่อนำโปรแกรมต้นฉบับที่มีการระบุตำแหน่งของหน่วยความจำ
หลักด้วยเลขที่อยู่สัมบูรณ์มาผ่านการแปลด้วยคอมไพเลอร
Dynamic Loading
Routine จะไม่ถูกโหลด จนกระทั่งถูกเรียกใช้งานเป็นการใช้
หน่วยความจำเป็นประโยชน์มากกว่าโปรแกรมย่อยที่ไม่ได้ใช้
-
-
การจัดการ
หน่วยความจำหลัก
วิธีการซ้อนทับ
หากมีความจำเป็นที่ต้องใช้โพรเซสที่มีขนาดมากกว่าขนาดของ
หน่วยความจำหลักสามารถทำได้โดยวิธีซ้อนทับ
โพรเซสที่จะทำงานด้วยวิธีซ้อนทับ จะต้องถูกแบ่งออกเป็นส่วนย่อย
ที่อิสระต่อกัน คือแต่ละส่วนไม่จำเป็นต้องถูกเรียกใช้งานพร้อมกัน
วิธีการสับเปลี่ยน
เพื่อให้หน่วยความจำหลักมีพื้นที่ว่างมากเพียงพอที่จะบรรจุ
โพรเซสอื่น เป็นการสับเปลี่ยนให้โพรเซสอื่นทำงาน
-
-
การแบ่งพื้นที่หน้า
เพจจิ้งคือ การแบ่งหน่วยความจำเป็นหน้าๆ ขนาดเท่ากัน
หน่วยความจำจะถูกแบ่งออกเป็นพื้นที่เท่าๆกัน เรียงต่อ
กันไปเรื่อยๆ ไม่มีช่องว่างจนหมดพื้นที่หน่วยความจำ
การจัดสรรหน่วยความจำทางกายภาพ เป็นวิธีการแบ่งพื้นที่ให้มีขนาดคงที่เรียกพื้นที่ส่วนนี้ว่า เฟรมโดยที่ขนาดของเพจถูกกำหนดโดยฮาร์ดแวร์
การจัดสรรหน่วยความจำทางตรรกะ เป็นวิธีการแบ่งพื้นที่แบบ
บล็อกเรียกพื้นที่ส่วนนี้ว่า เพจโดยกำหนดขนาดเพจเท่ากับขนาด
เฟรมทุกๆ ตำแหน่งจะถูกจัดสรรโดยหน่วยประมวลผลกลาง
การทำงานของ Paging
Paging สามารถใช้จำนวนหน้าที่ไม่ติดกันได้ และในการจองพื้นที่ก็จะไม่เหลือ
พื้นที่ว่างคั่นไว้ จึงทำให้ไม่เกิดปัญหา External fragmentation
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า
การนำฮาร์ดแวร์กับการสนับสนุนการจัดการตารางเพจทำได้หลายทาง วิธีมาตรฐานที่ใช้
แก้ปัญหาจำเป็นต้องใช้ฮาร์ดแวร์ขนาดเล็กที่มีความเร็วในการอ่านและจัดเก็บข้อมูลสูง
ซึ่งเรียกฮาร์ดแวร์ชนิดนี้ว่า Translation Look-aside Buffer
การป้องกันหน่วยความจำ
จำนวนบิตที่เก็บอยู่ในตารางเพจ สามารถกำหนดบิตเพื่อใช้
ตรวจสอบและกำหนดเพจในการอ่าน-เขียนหรืออ่านข้อมูล
เท่านั้น ซึ่งเรียกบิตพิเศษนี้ว่า กลุ่มบิตป้องกัน
บิตใช้งานได้ เป็นบิตสถานะที่บอกว่าข้อมูลในเพจถูกอ่านเข้าสู่
หน่วยความจำทางกายภาพแล้ว และสามารถนำไปใช้งานได้ทันที
บิตใช้งานไม่ได้ เป็นบิตสถานะที่บอกว่าข้อมูลในเพจนั้นไม่มีอยู่
ในหน่วยความจำทางกายภาพแล้ว และไม่สามารถนำไปใช้งานได้
-
-
การแบ่งส่วน
การสูญเปล่าพื้นที่ย่อย
การจัดสรรพื้นที่จะเหมือนกับการจัดสรรพื้นที่แบบขนาดไม่เท่ากัน ซึ่งนิยมใช้แบบ
First-fit หรือ Best-fit การแบ่งเป็นตอนมักทำให้เกิดการสูญเปล่าพื้นที่ย่อยภาย
นอกซึ่งเกิดจากพื้นที่ว่างอยู่กระจัดกระจายกัน
การป้องกันและการใช้ตอนร่วมกัน
ข้อดีหลักของการแบ่งเป็นตอนคือ สามารถผนวกการป้องกันไป
กับแต่ละตอนได้ เพราะแต่ละตอนคือส่วนต่างๆของโปรแกรมที่
มีลักษณะต่างๆกัน ข้อมูลในตอนเดียวกันมักจะมีการใช้งาน
เหมือนๆกัน
ข้อดีอีกข้อหนึ่งก็คือ สามารถใช้ข้อมูลหรือโปรแกรมร่วมกันได้
สะดวก กระบวนการแต่ละตัวจะมีตารางเลขตอนของตนเอง
การสร้างตารางเลขตอน
โปรแกรมหนึ่งๆอาจมีได้หลายส่วน(หรือหลายตอน) การแบ่งเป็นตอนจึงมีความ
ซับซ้อนกว่าาอาจเก็บตารางเลขตอนไว้ใน รีจีสเตอร์พิเศษ (ความเร็วสูง) หรือใน
หน่วยความจำหลัก เหมือนกับตารางเลขหน้า ฮาร์ดแวร์ของเครื่อง
Hardware
หน่วยความจำจริง
ยังคงเป็นแบบมิติเดียวคือเป็นแถวของคำเรียงต่อกันไป จึงต้องมีวิธีการจับคู่
ตำแหน่งทางตรรกะแบบสองมิติ ให้เป็นตำแหน่งจริงมิติเดียว โดยใช้ตารางเลขตอน
วิธีพื้นฐาน
เป็นการจัดสรรพื้นที่ในหน่วยความจำหลักออกเป็น
ส่วนๆ ตามขนาดของโปรแกรมหรือโมดูลย่อย
เรียกพื้นที่นี้ว่า Segment
การใช้เพจร่วมกัน
โครงสร้างของตารางเพจ
โครงสร้างแบบลำดับชั้น
เป็นการแบ่งพื้นที่ทางตรรกะออกเป็นตารางเพจหลายตาราง ใช้อัลกอริทึมในการแบ่งเพจแบบ 2 ระดับ
คือ 1.หมายเลขเพจ 2.ขอบเขตเพจ
โครงสร้างแบบตารางเฮช
ต้องมีตำแหน่งขนาดพื้นที่มากกว่า 32 บิต โดยค่าของเฮชจะอยู่ภายในหมายเลขเพจเสมือน จะมีลิงก์ลิสต์เชื่อมโยงไปยังหน่วยที่อยู่ในพื้นที่เดียวกันคือ ค่าหมายเลขเพจเสมือน ค่าดรรชนีที่ชี้ไปยังเฟรม
และค่าพอยเตอร์ ที่ชี้ไปยังหน่วยเชื่อมโยงในลิงก์ลิสต์
-
-
-