Deodeokos
Ini adalah proyek OS yang ditulis berdasarkan prinsip 64 -bit Multicore OS dan Buku Penyelamatan.
Mudah untuk direkam, jadi mungkin ada seringnya perubahan dan kesalahan!
Lingkungan dan konstruksi
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / AMD64)
- Karena GCC, Qemu ... adalah OS yang ditulis di lingkungan X86_64, jika Anda M1, Anda perlu menambahkan opsi platform Docker.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Referensi
- Lingkungan QEMU yang diperkenalkan dalam buku '64 -Bit -Core OS Prinsip dan Penyelamatan 'adalah 0,10,4, jadi jika Anda menggunakan QEMU terbaru, OS tidak akan muncul dengan benar. Saya menggunakan versi QEMU 2 dan saya perlu memodifikasi boot loader untuk menyelesaikannya. Ubah 80 -Line
cmp al, 19 dari Bootloader.asm menjadi cmp al, 37 untuk bekerja.
Debugging
GDB
Jika Anda melanjutkan dengan debugging melalui GDB, Anda akan membutuhkan dua cangkang.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
Debugging Kemajuan Setelah Menetapkan Breakpoint
vscode
Pertama, pasang ekstensi debug asli.
Jika Anda melanjutkan dengan debugging di lingkungan vScode, ikuti proses berikut.
-
.vscode/task.json Qemu Bangun Eksekusi - Jalankan QEMU Debug di
.vscode/task.json - Breakpoint
- Debugging dengan F5
Anda dapat menyesuaikan perintah dengan memodifikasi konten .vscode/launch.json dan .vscode/task.json .
Mengubah
- 210125: implementasi sinkronisasi spinlock
- 211220: Pemrosesan dispersi interupsi dalam mode I/O simetris
- 211116: Multi -Core Implementasi 2 (Aktivasi Inti)
- 211028: Implementasi Multicore 1 (Implementasi Tabel MP)
- 211020: Implementasi Driver Perangkat Port Serial
- 211017: cache sistem file dan implementasi rampdic
- 211002: File I / O Implementasi
- 210927: Konfigurasi Lingkungan Debugging
- 210902: Implementasi Sistem File Sederhana
- 210830: Menambahkan Hard Disk Driver
- 210824: Implementasi Alokasi Memori Dinamis
- 210813: Implementasi Multisreading
- 210809: Solusi kondisi balapan melalui mutex
- 210807: Implementasi Penjadwal Antrian Multi -Level
- 210802: Implementasi Penjadwal Robin Round
- 210725: Implementasi multitasking sederhana
- 210723: Tambahkan perangkat pengatur waktu
- 210720: Implementasi Shell Konsol
- 210719: Implementasi interupsi menggunakan pengontrol PIC
- 210717: Tambahkan interupsi keyboard dasar (jajak pendapat)
- 210716: Tambahan driver keyboard
- 210712: dikonversi dari mode perlindungan ke mode IA-32E
- 210708: Buat kernel pertama
- 210706: Transisi dari mode nyata ke mode perlindungan
- 210701: Tambahkan boot loader