Desain kursus "Sistem Operasi" Universitas Tongji: Sistem File
Proyek ini dirancang untuk kursus sistem operasi Departemen Ilmu Komputer dan Teknologi Universitas Tongji pada tahun 2021. Menerapkan sistem file seperti UNIX.

Tugas besar termudah semester ini (terutama tanpa GUI), butuh 10 hari untuk mengembangkan sistem file
Jika gudang ini membantu Anda, beri saya bintang?
Jika Anda memiliki pertanyaan, Anda juga dapat mengangkatnya dalam masalah ini agar orang lain merujuk atau mendiskusikannya bersama?
Repositori Mengikuti MIT Open Source Protocol
Variabel ini terutama digunakan untuk merekam panjang file yang saat ini dibaca. Keberadaan variabel ini mengurangi kesulitan pengindeksan file campuran. Fungsi tidak perlu menghitung berapa banyak blok indeks yang digunakan file, juga tidak perlu tahu apa struktur indeks campuran file tersebut. Mereka secara langsung menganggap file indeks sebagai file raksasa dengan semua blok indeks mencapai ukuran maksimum. Mulai melintasi file dari indeks langsung, kemudian ke indeks tingkat pertama, dan kemudian ke indeks tingkat kedua. Ketika panjang mencapai ukuran file, Anda dapat langsung keluar dari traversal file dengan ukuran apa pun. Namun, kerugian dari metode ini adalah bahwa setiap kali Anda membaca file, itu dimulai dari header file, yang mengurangi efisiensi membaca dan menulis acak.
Variabel ini terutama digunakan untuk menunjukkan garis mana yang mulai menampilkan teks. Variabel ini mulai berlaku ketika jumlah baris file melebihi ketinggian konsol. Jumlah baris yang dipetakan ke teks aktual dari kursor konsol harus ditambahkan ke variabel start_line. Ketika kursor bergerak ke garis bawah, tekan tombol panah lagi, start_line akan menambahkan halaman-bawah teks di editor, dan sebaliknya.
Variabel ini termasuk dalam kelas antarmuka pengguna baris perintah dan terutama mencatat jalur pengguna dalam sistem file. Karena dalam sistem file, semua antarmuka operasi didasarkan pada jalur absolut, dan perintah yang dimasukkan oleh pengguna di antarmuka baris perintah didasarkan pada jalur relatif cur_dir. Oleh karena itu, ketika antarmuka pengguna menggunakan antarmuka sistem file, cur_dir harus disambung dengan input jalur oleh pengguna, dan jalur absolut harus dilewatkan sebagai parameter ke fungsi antarmuka sistem yang tenang.


Sistem file ini berjalan dengan sistem operasi Windows 64-bit. Ukuran volume file simulasi sistem file adalah 128MB. Pastikan ada cukup ruang kosong di direktori program.
Dilarang untuk menutup program secara langsung saat keluar dari program. Anda harus menggunakan perintah EXIT untuk keluar dari sistem file, jika tidak dapat menyebabkan kesalahan sistem file atau crash.
Modifikasi dengan hati -hati file file /etc/users.txt dan /etc/groups.txt. Kedua file ini terkait dengan manajemen pengguna. Jika format tidak dimodifikasi dengan benar, itu dapat menyebabkan sistem file tidak dapat masuk atau masalah izin lainnya.
Jika dua masalah di atas terjadi, coba memformat sistem file.
Perintah tersedia saat tidak masuk:
| Memesan | parameter | Fungsi |
|---|---|---|
| login | Nama pengguna (string) | Login pengguna |
| KELUAR | Keluar dari sistem | |
| format | Format sistem file | |
| membantu | Tampilkan daftar prompt perintah |
Perintah yang tersedia dalam keadaan login:
| Memesan | parameter | Fungsi |
|---|---|---|
| Logout | Logout Pengguna | |
| KELUAR | Keluar dari sistem | |
| mkdir | Nama direktori (string, panjang kurang dari 28 byte, tidak bisa menjadi direktori multi-level) | Buat subdirektori |
| CD | Nama Direktori (string, panjang kurang dari 28 byte, nama subdirektori di direktori saat ini tidak dapat menjadi direktori multi-level) | Pergi ke subdirektori |
| ls | Tunjukkan daftar direktori saat ini | |
| rmdir | Nama Direktori (string, panjang kurang dari 28 byte, nama subdirektori di direktori saat ini tidak dapat menjadi direktori multi-level) | Hapus subdirektori |
| menyentuh | Nama file (string, panjang kurang dari 28 byte, tidak bisa menjadi direktori multi-level) | Buat file baru |
| Chmod | Nama file (string, panjang kurang dari 28 byte, nama file dalam direktori saat ini tidak dapat berupa direktori multi-level) (nomor oktal tiga digit) | Memodifikasi izin file atau direktori |
| rm | Nama file (string, panjang kurang dari 28 byte, nama file di direktori saat ini tidak dapat menjadi direktori multi-level) | Hapus file |
| useradd | Nama grup pengguna (string) (String, grup pengguna harus sudah ada) | Tambahkan pengguna |
| Userdel | Nama pengguna (string, pengguna harus sudah ada) | Hapus pengguna |
| groupadd | Nama Grup Pengguna (String) | Tambahkan Grup Pengguna |
| Groupdel | Nama grup pengguna (String, grup pengguna harus sudah ada) | Hapus Grup Pengguna |
| df | Periksa penggunaan disk | |
| menunjukkan | Nama file (string, panjang kurang dari 28 byte, nama file di direktori saat ini tidak dapat menjadi direktori multi-level) | Cetak konten file. Jika file bukan file karakter, itu dapat menyebabkan kesalahan |
| vi | Nama file (string, panjang kurang dari 28 byte, nama file di direktori saat ini tidak dapat menjadi direktori multi-level) | Buka file dengan editor |
| format | Format sistem file | |
| win2fs | Jalur file di bawah windows (string, sesuai dengan spesifikasi jalur file windows) Nama file di bawah direktori saat ini dari sistem file fs (string, panjang kurang dari 28 byte, nama file di bawah direktori saat ini tidak dapat berupa direktori multi-level) | Salin Konten File Windows ke File Sistem File FS |
| fs2win | Nama File Dalam direktori saat ini dari sistem file FS (string, panjang kurang dari 28 byte, nama file dalam direktori saat ini tidak dapat berupa direktori multi-level) jalur file di windows (string, sesuai dengan spesifikasi jalur file windows) | Salin isi sistem file FS ke file Windows |
| cls | Hapus layar | |
| membantu | Tampilkan daftar prompt perintah |
Instruksi Editor:
Setelah memasuki editor, Anda dapat memindahkan kursor melalui tombol panah. Ketika kursor terletak di batas atas dan bawah, Anda dapat memindahkan kursor ke batas lagi untuk menyelesaikan halaman berputar konten teks, masukkan tombol ENTER untuk menghapus karakter sebelum kursor, masukkan karakter lain untuk memasukkan karakter di kursor, tekan tombol ESC untuk keluar dan menyimpan teks. "□" di editor menunjukkan tombol Enter, dan "#" menunjukkan akhir file. Perhatikan bahwa editor hanya dapat menangani karakter ASCII.
Program ini dapat menyebabkan berbagai pengecualian karena input perintah yang tidak tepat, ruang sistem file penuh, izin ilegal, dll. Ketika pengecualian terjadi, program akan menghasilkan informasi pengecualian ke konsol. Harap selesaikan pengecualian berdasarkan informasi output. Jika pengecualian tidak pernah diselesaikan, coba format sistem file.
Definisi makro dari parameter yang dapat disetel terletak di file fileSystem.h
| parameter | menjelaskan |
|---|---|
| VERSI | Versi sistem file |
| Disk_name | Simulasikan nama file volume file |
| Disk_size | Ukuran disk volume file setidaknya lebih besar dari 1024*512 byte. Disarankan untuk mengaturnya ke (261120+1024) *512 byte, yaitu, 128MB |
| Nama file | menjelaskan |
|---|---|
| filesystem.h | File Header Sistem File |
| filesystem.cpp | File sistem file c ++ |
| Main.cpp | Program Utama C ++ File (Antarmuka Pengguna Baris Perintah) |
| test.cpp | File Tes Antarmuka File Sistem File tidak dikompilasi ke dalam program akhir yang dapat dieksekusi. |
| Fs.data | Simulasikan volume file disk |
| File System.exe | Program yang Dapat Dieksekusi (Antarmuka Pengguna Baris Perintah) |







