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

- หลังจากใช้ค่าอินพุตของแผนกหน่วยความจำสถานะปัจจุบันของพวกเขา (ฟรี/ไม่ฟรี) และหมายเลขกระบวนการเราพิมพ์ตารางปัจจุบันของการจัดสรรหน่วยความจำ

- ดังนั้นตอนนี้เราใช้ขนาดของกระบวนการอินพุตและเมนูขึ้นมา


- เอาท์พุทสำหรับพอดีที่ดีที่สุด

- เอาต์พุตสำหรับพอดีที่แย่ที่สุด

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

หากกระบวนการอินพุตมีขนาด 200 kb แล้ว:
การจัดสรรหน่วยความจำ - พอดีแรก

การจัดสรรหน่วยความจำ - เหมาะสมที่สุด

การจัดสรรหน่วยความจำ - พอดีที่สุด

การตั้งค่าท้องถิ่น
- ดาวน์โหลดเวอร์ชันล่าสุดของ Java - Java SE - ดาวน์โหลด | Oracle.
- โคลนที่เก็บ:
git clone https://github.com/tusharnankani/MemoryAllocationSimulator.git - เปิดไดเรกทอรีนี้ในคำสั่ง PROMT หรือเชลล์
- รวบรวมไฟล์โดยใช้คำสั่ง:
javac MemoryAllocation.java - เรียกใช้ไฟล์โดยใช้คำสั่ง:
java MemoryAllocation
ผู้เขียน
Tushar Nankani
LinkedIn | Twitter
ใบอนุญาต
ใบอนุญาต GPU