เขียนด้วย BCPL เวอร์ชันที่ดัดแปลงเล็กน้อย
(http://rabbit.eng.miami.edu/class/een521/bcpl-2.pdf)
สำหรับตัวจำลอง Intel 80486
- http://rabbit.eng.miami.edu/class/een521/hardware-1.pdf
- http://rabbit.eng.miami.edu/class/een521/hardware-2a.pdf
- http://rabbit.eng.miami.edu/class/een521/intel486vm.pdf
อีมูเลเตอร์เขียนโดยดร. สตีเฟ่นเมอร์เรล
(ซอร์สโค้ด: http://rabbit.eng.miami.edu/class/een521/een521.zip)
ภายใน repot นี้:
- start.b: หน่วยความจำเสมือน (สำหรับ 80846. หน่วยความจำ 4GB = 512 หน้า * 2048 คำต่อหน้าคำศัพท์ = 32 บิต)
ไดเรกทอรีหน้าพร้อมตารางหน้าสำหรับหกภูมิภาคแยกกัน
ของพื้นที่ที่อยู่เสมือน (รหัสผู้ใช้และระบบกองและสแต็ก) - OS.B: Handler Fault Page เพื่อปลูกซ้อนและสแต็ก
ความสามารถในการอ่านและดำเนินการโปรแกรมผู้ใช้
ออก () การเรียกระบบเพื่อกู้คืนระบบ FP, SP และ PC ตั้งค่าสถานะ CPU และรีไซเคิลหน้ากระบวนการผู้ใช้
ระบบอินพุตแป้นพิมพ์แบบขัดจังหวะ
เชลล์บรรทัดคำสั่ง
(ในกระบวนการ) คิวกระบวนการที่รันได้ - newVec.B: การจัดสรรและรีไซเคิลกองกับ newVec และ freevec
- file_system.b: ระบบไฟล์พื้นฐาน (mkdir, cd, rmdir, fcreate, fdelete, fopen, fclose, fwrite, froad)
- SYS_LIB.B: API ระบบพื้นฐานสำหรับกระบวนการผู้ใช้
- ผู้ใช้ประมวลผล XB, YB: สำหรับการทดสอบ
สำหรับตอนนี้รายการไดเรกทอรีจะถูก จำกัด ไว้ที่หนึ่งบล็อกแต่ละรายการ (128 คำ = 512 ไบต์)
ซึ่งหมายความว่าไดเรกทอรีจะถูก จำกัด ไว้ที่ 16 ไฟล์เด็กและไดเรกทอรี เด็กเหล่านี้
ไดเรกทอรีก็ จำกัด อยู่ที่ 16 รายการ ฯลฯ
แต่ละไดเรกทอรีมี:
- 512 ไบต์
- มากถึง 16 structs ของ 28 ไบต์แต่ละอธิบายไฟล์เด็กหรือไดเรกทอรี
- 6 ไบต์สำหรับชื่อไดเรกทอรี
- 4 ไบต์สำหรับตำแหน่งบนแผ่นดิสก์ของไดเรกทอรีหลักของมัน
ไฟล์ทำหน้าที่เป็นผู้ถือสถานที่เช่นกันและรวมบล็อกส่วนหัวหนึ่งบล็อกด้วย
28 คำของข้อมูลเชิงพรรณนา: ชื่อ, สิทธิ์, เวลาที่สร้างขึ้น ฯลฯ
และ 100 พอยน์เตอร์ไปยังเนื้อหาของไฟล์
100 พอยน์เตอร์ * 512 ไบต์ต่อบล็อก = ขนาดไฟล์สูงสุด 50KB
- ไดเรกทอรีต้องอ่านแผ่นดิสก์หนึ่งแผ่นเพื่อเปิด
- ไฟล์ใช้แผ่นดิสก์หนึ่งแผ่นเพื่อเปิดบล็อกส่วนหัว
บวกแผ่นดิสก์หนึ่งแผ่นอ่านเพื่อเข้าถึงเนื้อหาทั้งหมดสูงสุด 100 บล็อก
เป้าหมายคือการมีระบบไฟล์พื้นฐาน (รองรับไฟล์และไดเรกทอรี)
เพื่อทดสอบระบบปฏิบัติการพื้นฐานและตรวจสอบปัญหาใด ๆ
ก่อนที่จะปรับให้เหมาะสม คุณสมบัติที่ผ่านการทดสอบคือ
- หน่วยความจำเสมือนจริงไดเรกทอรีหน้าพร้อมตารางหน้าสำหรับหกภูมิภาคแยกกัน
ของพื้นที่ที่อยู่เสมือน (รหัสผู้ใช้และระบบกองและสแต็ก) - ตัวจัดการความผิดพลาดหน้าเพื่อปลูกกองและสแต็ก
- ความสามารถในการอ่านและดำเนินการโปรแกรมผู้ใช้
- ออกจากระบบ () การโทรเพื่อกู้คืนระบบ FP, SP และ PC
ตั้งค่าสถานะ CPU, รีไซเคิลหน้ากระบวนการผู้ใช้ - ระบบอินพุตแป้นพิมพ์แบบขัดจังหวะ
- การจัดสรรและการรีไซเคิลกองกับ newVec และ freevec
การดำเนินการ
- คิวกระบวนการของผู้ใช้ที่ผลัดกันทำงาน
- การทดสอบ fread และ fwrite
ถัดไป
- B+ Tree เพื่อรองรับไฟล์ขนาดใหญ่ที่มีการอ่านดิสก์น้อยที่สุด