OS_Filesystem - Sistem File Virtual (C ++)
Perkenalan
Ini adalah sistem file virtual yang meniru Linux. Sistem ini di -host oleh file disk virtual. Ini mensimulasikan pembacaan disk dan menulis dengan membaca file dan menulis tanpa melibatkan driver yang mendasarinya.
Untuk menulis sistem file Linux imitasi sederhana, Anda harus terlebih dahulu merancang kerangka dasar yang mencakup inode, blok, superblock, tata letak disk virtual, alokasi ruang dan informasi lainnya. Awal sistem file adalah superblock yang berisi informasi penting tentang sistem, termasuk jumlah dan ukuran inode dan blok. Untuk inode, umumnya perlu menempati satu persen dari ruang disk, tetapi ini adalah sistem kecil dengan ukuran total hanya 5m, sehingga sangat sedikit ruang yang dialokasikan ke area inode, dan sebagian besar ruang yang tersisa adalah area blok.
Rencana keseluruhan untuk sistem file ini adalah sebagai berikut:

Karena waktunya sangat ketat saat menulis program, saya hanya menulisnya selama 4 hari sebelum menerimanya, jadi kodenya tidak punya waktu untuk mengoptimalkannya, dan beberapa tempat akan tampak berlebihan, jadi jangan kaget.
Meskipun waktunya terbatas, ia juga mengimplementasikan fungsi editor VI. Tulisannya relatif sederhana dan kodenya sangat berantakan. Jika Anda punya waktu untuk memperbaikinya.
Secara umum, kode masih perlu dioptimalkan. Selamat datang untuk memberikan lebih banyak saran dan temukan lebih banyak kesalahan.
Cara menggunakan
Langkah 1: Unduh proyek
git clone https://github.com/windcode/os_filesystem.git
Langkah 2: Buka proyek dengan VC ++ 6.0
Klik dua kali file Mingos.dsw di direktori, atau seret file ke antarmuka VC ++ 6.0.
Langkah 3: Kompilasi, tautan, jalankan

atau
Langkah 1: Jalankan file Mingos.exe langsung di folder /debug
ciri
- First Run, Buat File Disk Virtual

Pengguna default adalah root dan kata sandi adalah root

- Perintah Bantuan (Bantuan)

- Pengguna Tambah, Hapus, Masuk, Masuk (UserAdd, UserDel, Logout)

- Ubah Izin File atau Direktori (CHMOD)

- Menulis dan dibaca dibatasi oleh izin

- Tambah dan hapus file/folder (Touch, RM, MKDIR, RMDIR)

- Lihat Informasi Sistem (Super, Inode, Blok)

- Meniru editor teks VI (VI)

Inode mengelola informasi file dan direktori
Gunakan metode tautan grup untuk mengelola alokasi blok idle
- Proses Alokasi Blok: Ketika sebuah blok perlu dialokasikan, bagian atas tumpukan blok gratis mengeluarkan alamat blok idle sebagai blok yang baru dialokasikan. Ketika tumpukan kosong, tumpukan di blok bebas yang diwakili oleh alamat tumpukan bawah digunakan sebagai tumpukan blok gratis yang baru.
- Proses Daur Ulang Blok: Saat mendaur ulang blok, periksa apakah tumpukannya penuh. Jika tidak puas, penunjuk tumpukan saat ini akan dipindahkan dan alamat blok yang akan didaur ulang ditempatkan di bagian atas tumpukan baru. Jika tumpukan penuh, blok yang akan didaur ulang akan digunakan sebagai tumpukan blok gratis yang baru, dan alamat elemen bawah dari tumpukan blok gratis ini diatur ke tumpukan blok gratis sekarang.
- Bitmap blok dan superblock perlu diperbarui saat mengalokasikan dan mendaur ulang.
Distribusi/Daur Ulang Inode
- Alokasi dan daur ulang inode relatif sederhana, dan alokasi dan daur ulang berurutan diadopsi.
- Saat alokasi diperlukan, temukan inode idle dari bitmap inode secara berurutan, dan temukan nomor yang mengembalikan inode berhasil.
- Saat mendaur ulang, cukup perbarui bitmap inode.
- Baik alokasi dan daur ulang memerlukan pembaruan bitmap inode.
Melihat
- Lingkungan berjalan adalah VC ++ 6.0