Serena adalah sistem operasi eksperimental berdasarkan prinsip -prinsip desain modern dengan dukungan untuk konkurensi preemptive yang meresap dan banyak pengguna. Kernel berorientasi objek dan dirancang untuk menjadi cross-platform dan bukti di masa depan. Ini berjalan pada sistem Amiga dengan 68030 atau CPU yang lebih baik diinstal.
Salah satu aspek yang mengesampingkannya dari OSS berbasis threading tradisional adalah bahwa itu murni dibangun di sekitar antrian pengiriman yang agak mirip dengan pengiriman Grand Central Apple. Tidak ada dukungan untuk membuat utas di ruang pengguna maupun di ruang kernel. Sebaliknya kernel mengimplementasikan konsep prosesor virtual di mana ia secara dinamis mengelola kumpulan prosesor virtual. Ukuran kumpulan secara otomatis disesuaikan berdasarkan kebutuhan antrian pengiriman dan prosesor virtual ditugaskan untuk proses sesuai kebutuhan. Semua kernel dan konkurensi ruang pengguna dicapai dengan membuat antrian pengiriman dan dengan mengirimkan item kerja untuk mengirimkan antrian. Item kerja hanyalah penutupan (fungsi dengan keadaan terkait) dari sudut pandang pengguna.
Aspek menarik lainnya adalah penanganan interupsi. Kode yang ingin bereaksi terhadap interupsi dapat mendaftarkan semaphore penghitungan dengan pengontrol interupsi untuk interupsi yang ingin ditangani. Pengontrol interupsi kemudian akan memberi sinyal semaphore setiap kali interupsi terjadi. Penggunaan semaphore penghitungan memastikan bahwa kode yang tertarik pada interupsi tidak melewatkan terjadinya interupsi. Keuntungan menerjemahkan interupsi ke dalam sinyal pada semaphore adalah bahwa kode penanganan interupsi dieksekusi dalam konteks yang terdefinisi dengan baik yang merupakan jenis konteks yang sama dengan jenis kode lainnya. Ini juga memberikan kode penanganan interupsi lebih fleksibel karena tidak harus segera bereaksi terhadap interupsi. Informasi bahwa interupsi telah terjadi tidak pernah hilang, apakah kode penangan interupsi kebetulan sibuk dengan hal -hal lain pada saat interupsi atau tidak.
Kernel umumnya masuk kembali. Ini berarti bahwa prosesor virtual terus dijadwalkan dan konteks dialihkan sebelumnya bahkan ketika CPU dieksekusi di dalam kernel. Selain itu, pujian penuh penghitungan semafor, variabel kondisi dan API kunci tersedia di dalam kernel. API dari objek -objek tersebut sangat mirip dengan apa yang akan Anda temukan dalam implementasi ruang pengguna dari OS tradisional.
Serena mengimplementasikan struktur proses hierarkis yang mirip dengan POSIX. Suatu proses dapat menelurkan sejumlah proses anak dan dapat melewati garis perintah dan variabel lingkungan kepada anak -anaknya. Proses mengakses sumber daya I/O melalui saluran I/O yang mirip dengan deskriptor file di POSIX.
Ada dua perbedaan penting antara model proses gaya POSIX dan model Serena: Pertama alih -alih menggunakan fork () diikuti oleh exec () untuk menelurkan proses baru, Anda menggunakan fungsi tunggal di serena yang disebut proses_spawn (). Ini membuat pemijahan menjadi proses yang lebih cepat dan rentan secara signifikan lebih sedikit kesalahan.
Kedua, proses anak tidak mewarisi deskriptor file induknya secara default. Satu -satunya pengecualian adalah deskriptor file 0, 1 dan 2 yang mewakili stream input dan output terminal. Model ini jauh lebih sedikit rentan kesalahan dibandingkan dengan model POSIX di mana suatu proses harus berhati -hati untuk menutup deskriptor file yang tidak ingin diteruskan ke proses anak sebelum memunculkan seorang anak. Melakukan hal ini mudah di masa -masa awal UNIX ketika aplikasi cukup banyak mandiri dan ketika tidak ada dukungan untuk perpustakaan yang dinamis. Ini kebalikan hari ini karena aplikasi jauh lebih kompleks dan bergantung pada banyak perpustakaan pihak ke -3.
Format file yang dapat dieksekusi saat ini adalah format file Atari St Gemdos yang merupakan relatif dekat dengan format yang dapat dieksekusi Aout. Format file ini pada akhirnya akan diganti dengan format file yang akan dapat mendukung pustaka dinamis. Namun untuk saat ini cukup baik untuk menyelesaikan pekerjaan.
Kernel mengimplementasikan Serenafs yang merupakan sistem file hierarkis dengan izin dan informasi pengguna dan grup. Sistem file dapat dipasang di atas direktori yang terletak di sistem file lain untuk memperluas file namespace. Semua ini berfungsi mirip dengan cara kerjanya dalam sistem POSIX. Suatu proses yang ingin menelurkan proses anak dapat menentukan bahwa proses anak harus terbatas pada sub-pohon namespace sistem file global.
Sistem file boot saat ini berbasis RAM. ROM berisi gambar disk yang dibuat dengan alat diskimage dan yang berfungsi sebagai templat untuk disk RAM. Gambar ROM Disk ini disalin ke RAM pada waktu boot.
Ruang pengguna memiliki dukungan untuk libc, libsystem, libclap dan awal libm. Libsystem adalah perpustakaan yang mengimplementasikan sisi ruang pengguna antarmuka kernel. LibClap adalah perpustakaan yang mengimplementasikan argumen yang parsing untuk program antarmuka baris perintah.
Serena OS hadir dengan cangkang yang mengimplementasikan bahasa shell yang ditentukan secara formal. Anda dapat menemukan dokumen shell di sini.
Layanan kernel berikut diimplementasikan saat ini:
Layanan ruang pengguna berikut tersedia saat ini:
Program ruang pengguna berikut tersedia saat ini:
Tingkat kelengkapan dan kebenaran berbagai modul bervariasi sedikit saat ini. Hal -hal yang secara umum direncanakan untuk meningkat dari waktu ke waktu :)
Perangkat keras berikut ini didukung saat ini:
Menyiapkan proyek untuk pengembangan dan menjalankan OS sedikit terlibat. Instruksi di bawah ini adalah untuk Windows tetapi mereka harus bekerja hampir sama di Linux dan MacOS.
Hal pertama yang Anda butuhkan adalah emulator komputer Amiga. Saya menggunakan winuae yang dapat Anda unduh dari https://www.winuae.net/download
Unduh pemasang Winuae dan jalankan. Ini akan menempatkan emulator di dalam direktori 'Program Files' di boot drive Anda.
Unduh selanjutnya dan instal kompiler dan assembler VBCC yang diperlukan untuk membangun sistem operasi. Anda dapat menemukan beranda proyek ada di http://www.compilers.de/vbcc.html dan halaman unduhan untuk alat di http://sun.hasenbraten.de/vbcc.
Versi yang saya gunakan untuk pengembangan saya dan yang saya tahu berfungsi dengan benar pada Windows 11 adalah 0,9 jam. Pastikan untuk menambahkan variabel lingkungan dengan nama VBCC yang menunjuk ke folder VBCC pada disk Anda dan tambahkan folder vbccbin ke variabel lingkungan PATH .
Perhatikan bahwa Anda perlu memiliki Microsoft Visual Studio dan alat baris perintah yang diinstal karena kompiler Microsoft C diperlukan untuk membangun alat build di windows.
Akhirnya instal GNU Make for windows dan pastikan bahwa itu ada di variabel lingkungan PATH . Cara langsung untuk melakukan ini adalah dengan mengeksekusi perintah Winget berikut di jendela Shell: winget install GnuWin32.Make .
Anda hanya perlu menjalankan langkah ini sekali dan sebelum Anda mencoba membangun OS. Tujuan dari langkah ini adalah untuk membangun beberapa alat yang diperlukan untuk membangun kernel dan perpustakaan ruang pengguna. Anda dapat menemukan dokumentasi untuk alat -alat ini di sini.
Pertama buka prompt perintah pengembang di terminal windows dan kemudian CD ke folder Serena/Tools . Ketik make and Hit Return. Ini akan membangun semua alat yang diperlukan dan menempatkannya di dalam folder Serena/build/tools . Alat akan disimpan di lokasi ini bahkan jika Anda melakukan pembersihan penuh dari proyek OS.
Buka Folder Proyek Serena dalam kode Visual Studio dan pilih Build All From The Run Build Task... Menu. Ini akan membangun kernel, libsystem, libc, libm dan shell dan menghasilkan satu file Serena.rom di dalam Serena/product/Kernel/ folder. File ROM ini berisi kernel, pustaka ruang pengguna dan shell.
Pertama, Anda harus membuat konfigurasi AMIGA dengan setidaknya 68030 CPU (yaitu Amiga 3000 atau 4000) di Winuae jika Anda belum melakukannya. Cara termudah untuk melakukan ini adalah dengan pergi ke QuickStart dan memilih A4000 sebagai model. Kemudian buka halaman Teks Perangkat Keras/ROM dan perbarui bidang teks "File ROM Utama" sehingga menunjuk ke file Serena.rom di dalam Serena/build/product/ Folder pada disk Anda. Akhirnya berikan Amiga virtual Anda setidaknya 1MB Fast RAM dengan pergi ke halaman perangkat keras/RAM dan mengatur entri "lambat" ke 1MB. Simpan konfigurasi ini sehingga Anda tidak perlu membuatnya kembali lain kali Anda ingin menjalankan OS.
Muat konfigurasi dan kemudian tekan tombol start atau cukup klik dua kali konfigurasi di halaman konfigurasi untuk menjalankan OS. Emulator harus membuka layar yang menampilkan pesan boot dan kemudian prompt shell. Lihat halaman Shell untuk daftar perintah yang didukung oleh shell.
Didistribusikan di bawah lisensi MIT. Lihat LICENSE.txt untuk informasi lebih lanjut.
Dietmar Planitzer - @linkedin
Tautan Proyek: https://github.com/dplanitzer/serena