หลักสูตรการออกแบบระบบปฏิบัติการระบบปฏิบัติการของมหาวิทยาลัยหวู่ฮั่น: การทำซ้ำระบบปฏิบัติการเคอร์เนล
อ้างอิง: ระบบปฏิบัติการโฮมเมด 30 วัน
กระบวนการทั้งหมดของการทดลองนี้และปัญหาที่พบอยู่ตรงกลางหลักการและการแก้ปัญหาจะถูกบันทึกไว้ที่นี่ งานและเนื้อหารหัสของแต่ละวันได้รับการปรับปรุงในโฟลเดอร์ที่เกี่ยวข้อง ไดเรกทอรีที่เกี่ยวข้องเป็นเพียงไฟล์รหัสสุดท้ายที่เสร็จสมบูรณ์ในวันเดียวกัน
แต่ละเนื้อหาโฟลเดอร์สามารถเรียกใช้โดยตรงโดยไม่ต้องติดตั้งเพิ่มเติมและทำงานภายใต้ระบบปฏิบัติการ Windows
เรียกใช้โปรแกรมในวัน {day}
make -C day{DAY}ตัวอย่างเช่นรันในวันที่ 10
make -C day10ล้างไฟล์ที่สร้างขึ้น
make -C day{DAY} cleanQEMU จะมีข้อผิดพลาดในการจำลองสถานะระบบปฏิบัติการบางอย่างในคอมพิวเตอร์ของฉันและจะมีการหยุดชะงักข้อยกเว้นในวันที่ 10 และวันที่ 11 เพื่อออก
อินพุตของคีย์บอร์ด Day7 ติดอยู่และอินพุตของตัวอักษรใน Day14 และภายหลังซ้ำแล้วซ้ำอีกและไม่สามารถขัดจังหวะได้ นี่เป็นเพราะวิธีการป้อนข้อมูลภาษาจีน การเปลี่ยนไปใช้วิธีการป้อนข้อมูลภาษาอังกฤษเมื่อป้อนสามารถแก้ปัญหาได้ แต่สถานการณ์นี้ไม่ได้เกิดขึ้นกับคอมพิวเตอร์เพื่อนร่วมห้องและคอมพิวเตอร์ของเพื่อนร่วมชั้น มันไม่ปรากฏในระบบปฏิบัติการ Win10 ของเครื่องเสมือน VMware ของฉันดังนั้นข้อผิดพลาดนี้ไม่สามารถทำซ้ำได้ หากคุณพบข้อผิดพลาดนี้คุณสามารถรวบรวมไฟล์ภาพดิสก์ฟลอปปี้ IMG และนำเข้าเครื่องเสมือน VMware ดูบล็อกของวันที่ 1 สำหรับวิธีการใช้งานที่เกี่ยวข้อง
โปรดเปลี่ยนไปใช้วิธีการป้อนข้อมูลภาษาอังกฤษเมื่อป้อนแป้นพิมพ์มิฉะนั้นสถานการณ์ที่ผิดปกติจะเกิดขึ้น
วันที่ 1
พื้นที่เริ่มต้นขั้นพื้นฐาน
วันที่ 10
บัฟเฟอร์อินพุตและเอาต์พุต, GDT IDT, การประมวลผลขัดจังหวะ, การจัดการหน่วยความจำ, การวาดกราฟิก, อินพุตเมาส์, การประมวลผลซ้อนทับ
วันที่ 20
การเพิ่มประสิทธิภาพหน้าต่าง, ตัวจับเวลา, การเพิ่มประสิทธิภาพการประมวลผลขัดจังหวะ, การกำหนดเวลากระบวนการหลายงาน, หน้าต่างบรรทัดคำสั่ง, การเพิ่มประสิทธิภาพอินพุตแป้นพิมพ์, การดำเนินการของแอปพลิเคชัน, API
รองรับ Dir mem type cls hello directive
วันที่ 30
การใช้งานขั้นพื้นฐาน
คำสั่งบรรทัดคำสั่ง
DIR: ดูไฟล์ไดเรกทอรี
MEM: ดูหน่วยความจำและที่เหลืออยู่
CLS: เนื้อหาคอนโซลที่ชัดเจน
NCST: ใช้ NCST + คำสั่งต่อไปนี้เพื่อเรียกใช้โปรแกรมโดยไม่ส่งผลกระทบต่ออินพุตของคอนโซลปัจจุบัน
star1: วาดเล็กน้อย (ดาว)
ดาว: วาดจุดหนึ่งจุด
เดิน: ย้ายเคอร์เซอร์ (ขึ้น, ลง, ซ้ายและขวา)
สี, สี 2: สองแผ่นสี
NOTREC: หน้าต่างที่ไม่ใช่ REC
Bball: วงกลมที่วาดโดยเส้น
Invader: แอพ masturbation มนุษย์ต่างดาว
langmode + {mode}: การสลับโหมดภาษา, langmode 0 คือโหมดภาษาอังกฤษ, 1 คือโหมดญี่ปุ่นและ 2 คือโหมด EUC ญี่ปุ่น
type + {filename}: ดูเนื้อหาไฟล์ (โปรดทราบว่า langmode, langmode จะปรากฏอ่านไม่ออกหากไม่ถูกต้องและอย่าพยายามดูรูปภาพรูปแบบแปลก ๆ )
tview + {filename}: สร้างกล่องข้อความใหม่เพื่อดูเนื้อหาไฟล์
mmmlplay + {filename}: เปิดเครื่องเล่นเพลง
mmlplay daigo.mmlgview + {filename}: ดูตัวอย่างรูปภาพ
gview night.bmp
gview fujisan.jpgcalc + {format}: เครื่องคิดเลข
อินพุตแป้นพิมพ์ของฉันเองดูเหมือนจะเป็นปัญหาเล็กน้อยแปลก ๆ
รูปต่อไปนี้เป็นการสาธิตฟังก์ชั่นบางอย่าง
ข้อมูลที่เกี่ยวข้องกับการทดลองหลักสูตร