ระบบปฏิบัติการง่าย ๆ ที่สามารถทำงานบนโปรเซสเซอร์มัลติคอร์ X86-64
นี่คือการบ้านของฉันที่ทำในหลักสูตรการทดลองระบบปฏิบัติการ เนื่องจากชั้นเรียนพูดถึงการออกแบบระบบปฏิบัติการในซีพียูเดี่ยว 32 บิตและฉันสนใจในระบบปฏิบัติการที่ทำงานบนโปรเซสเซอร์แบบหลายคอร์ฉันเลือกที่จะเขียนระบบปฏิบัติการบนตัวประมวลผลมัลติสมาร์ตเมทริก X64
พัฒนาโดยใช้ Ubuntu 16.04 การพึ่งพาการติดตั้ง:
apt install make gcc gdb qemu
วิ่ง
make qemu

จัดเตรียม API กระบวนการ/เธรดสำหรับแอปพลิเคชันการสนับสนุนกระบวนการ/การสร้างเธรดการรอการยกเลิกการนอนหลับและการดำเนินการอื่น ๆ
ใช้เทคโนโลยีการคัดลอกหน่วยความจำในระหว่างการสร้างกระบวนการ
หลีกเลี่ยงเงื่อนไขการแข่งขันเมื่อซีพียูหลายคำสั่งดำเนินการผ่านกลไก mutex แบบซิงโครนัสที่เหมาะสม
ใช้ lapic/ioapic เพื่อตระหนักถึงการเริ่มต้นและการควบคุมการขัดจังหวะของซีพียูหลายคอร์
ตัวแปรเก็บที่เกี่ยวข้องกับ CPU เฉพาะผ่านตัวแปร Thread_local
| หมายเลขซีเรียล | ชื่อ |
|---|---|
| 0 | ส้อม |
| 1 | การออก |
| 2 | Thread_create |
| 3 | Thread_exit |
| 4 | wait_process |
| 5 | wait_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | นอน |
| 11 | เปิด |
| 12 | ปิด |
| 13 | อ่าน |
| 14 | เขียน |
| 15 | ไม่เชื่อมโยง |
| 16 | readdir |
| 17 | สถิติ |
| 18 | mkdir |
| 19 | Rmdir |
| 20 | lseek |
| ยี่สิบเอ็ด | ผู้บริหาร |
ใช้กลไกสัญญาณ
ใช้การสนับสนุนสำหรับระบบไฟล์ที่ใช้กันทั่วไป
สแต็กโปรโตคอล TCP/IP