OS yang dikelola seperti Microsoft Singularity dan JNode adalah konsep yang cukup menarik. Pada dasarnya, OS bootstrap dengan kode yang ditulis dalam bahasa tingkat rendah (C / C ++ / Majelis), yang pada dasarnya mengimplementasikan mesin virtual. Sisa OS (dan semua aplikasi pengguna tanah) berjalan di mesin virtual. Ada beberapa hal hebat tentang ini. Misalnya, Anda tiba-tiba membuat pointer acak menjadi usang. Dan jika ditulis dengan baik, Anda menyingkirkan satu ton warisan mentah yang dimiliki kebanyakan OS modern saat ini.
Namun, sebagai kerugiannya, Anda berada jauh dari perangkat keras, dan sebagai pengembang, Anda kehilangan kemampuan untuk jatuh ke tingkat abstraksi yang lebih rendah dan membuat tangan Anda kotor.
Apa pendapat Anda tentang hal ini?
sumber
Jawaban:
Saya pikir ini adalah kasus lain di mana "itu tergantung".
Jika Anda sedang menulis aplikasi seperti browser web, pengolah kata, dll. Di mana kinerja cepat kilat tidak selalu menjadi masalah maka pendekatan ini memiliki kelebihannya. Dengan menggunakan pendekatan ini, Anda dapat menawarkan pelanggan Anda pengalaman yang lebih aman dan lebih terkontrol. Anda tidak hanya membatasi kerusakan yang dapat dilakukan oleh malware, tetapi Anda juga berjalan di lingkungan yang lebih konsisten.
Ini seperti perbedaan antara game konsol dan game PC. Yang pertama tahu persis perangkat keras apa yang mereka butuhkan untuk bekerja sehingga dapat menggunakan pengetahuan itu sedangkan yang kedua harus mampu mengatasi beragam kartu grafis, kartu suara, kecepatan hard disk dll.
Namun, akan ada aplikasi (seperti game!) Yang memerlukan akses tingkat rendah dan masih harus dijalankan secara "asli".
Seperti bahasa yang dikelola, Anda harus menggunakan alat yang sesuai untuk pekerjaan itu.
sumber
Secara umum saya pikir mereka adalah ide yang bagus, tetapi karena tidak banyak dari mereka di sekitar atau hampir sepenuhnya dipanggang, sulit untuk mengatakan bagaimana kinerja mereka di dunia nyata. Saya berharap bahwa MS telah memperbarui proyek Singularity sehingga kami dapat melihat ke mana perginya, tetapi tebakan saya adalah bahwa sebagian sedang dikerjakan ke dalam beberapa versi Windows
sumber
Saya pikir manfaat dari OS yang sepenuhnya dikelola sangat besar dan itu bisa benar-benar menjadi masa depan, tetapi akan membutuhkan bertahun-tahun untuk pergi.
Sistem operasi yang dikelola dengan baik akan memberikan Anda semua titik masuk terkelola yang perlu Anda lakukan setiap hal tingkat rendah yang Anda butuhkan, terlepas dari dikelola: menangkap gangguan dan melakukan I / O dengan perangkat. C # juga memungkinkan untuk kode yang tidak aman (berurusan dengan pointer) tetapi akan diizinkan hanya di "driver perangkat" (yang akan menjadi jenis lain dari proses perangkat lunak yang diisolasi).
Manfaat dalam keamanan, keseragaman, portabilitas, dan terutama ketergantungan tentu akan melebihi segala kekurangan kinerja. Maka sistem yang sepenuhnya dikelola sangat cepat, karena tidak perlu lagi melakukan pergantian konteks.
sumber
OS yang dikelola mungkin entah bagaimana seperti microkernels - Anda mengorbankan kinerja demi keamanan.
Mungkin ada masalah yang sama karena memerlukan kode pemisahan dalam 2 bagian:
Bergantung pada biaya untuk memasuki / meninggalkan bahasa HL dengan aman, hal itu dapat menimbulkan masalah yang sama seperti microkernels - mungkin sedikit lebih cepat (meninggalkan HL lebih cepat daripada konteks penuh tetapi IIRC misalnya JNI cukup mahal).
Aplikasi pengguna juga mungkin akan membutuhkan konteks terpisah karena banyak aplikasi yang ditulis pada platform lain (misalnya C, Java atau .Net). Dalam kasus yang sama, aplikasi mungkin terikat dengan CPU (kompiler, konverter musik, dll.) Dan bahkan perlu optimisasi assembler untuk bekerja dengan kecepatan yang memadai. Selain itu - perlindungan MMU diimplementasikan dalam bahasa HL mungkin tidak akan secepat perangkat keras bahkan jika mungkin jauh lebih baik.
Bahasa HL juga tidak mahir dalam operasi tingkat rendah. Sementara perangkat lunak biasanya dirancang dengan driver praktik pengkodean "baik" tidak perlu begitu. Saya tidak berpikir mereka akan melindungi terhadap setidaknya beberapa kesalahan karena kernel kadang-kadang membutuhkan memori pengelolaan tangan.
Akhirnya saya tidak berpikir bahwa OS seperti itu akan membutuhkan VM penuh. Karena OS tidak dapat dibangun dengan prinsip kompilasi-sekali-jalankan-di mana saja bahasa HL (bahkan dengan GC & co.) Akan menjadi kandidat yang lebih baik.
OS pada dasarnya tingkat rendah. Anda melewati perangkat keras tidak hanya 'penunjuk sewenang-wenang' tetapi mungkin alamat fisik daripada virtual. Beberapa DMA hanya dapat menangani 16MiB memori pertama. Meskipun OS semacam itu dapat menyederhanakan banyak hal, ia tidak akan menghilangkan alamat.
free
itu ketika Windows benar-benar mulai membebaskan memori.Saya kira itu akan mendapatkan popularitas sekitar waktu yang sama dengan microkernels.
sumber
Secara pribadi, saya pikir ide OS yang dikelola sedikit seperti Komunisme: baik secara teori, tetapi tidak praktis untuk diterapkan.
Masalahnya adalah saya hanya tidak melihat cara apa pun untuk mewujudkan OS yang dikelola tanpa sepenuhnya menulis ulang OS dari awal (dan saya berharap seseorang dapat membuktikan saya salah pada bagian ini). Plus, bagaimana Anda membuat dekade kode yang tidak dikelola masuk ke OS yang dikelola?
Kernel OS paling populer di luar sana telah teruji pertempuran dan telah matang selama beberapa dekade. Anda tidak hanya menulis ulang dengan iseng. Belum lagi bahwa sejarah penuh dengan contoh-contoh desain prosesor dan arsitektur kernel yang tidak dapat disangkal lebih baik tetapi tidak pernah dapat meyakinkan siapa pun bahwa mereka sepadan dengan biaya untuk mengubahnya.
Terakhir, bagaimana perusahaan seperti Microsoft atau Apple akan menjual OS yang dikelola kepada pelanggan? Apakah pengguna komputer rata-rata akan peduli jika OS mereka dikelola atau tidak dikelola?
Di atas dicatat, saya harap saya salah dan bahwa OS yang dikelola akan menjadi kenyataan. Tapi saya skeptis. Jika kita pernah melihatnya, itu mungkin tidak akan terjadi selama satu atau dua dekade lagi.
sumber
Managed code hanyalah ekstrapolasi dari apa yang dibeli oleh perlindungan memori virtual Anda hari ini, yaitu kemampuan komputer untuk menolak akses ke sumber daya.
IBM sudah melakukan ini pada sistem mainframe mereka (mereka menyebutnya sesuatu yang lain), jadi menurut saya hanya masalah waktu sebelum ini akan terjadi pada sistem yang tersedia untuk masyarakat umum.
Apakah Anda peduli jika Laptop Google (yang menjalankan Chrome dan pada dasarnya tidak ada yang lain) berjalan pada kode yang dikelola atau tidak?
sumber
Ini sebenarnya tidak benar. Di JNode misalnya, ada
Unsafe
kelas (dan lain-lain) yang memungkinkan Anda untuk mengakses lokasi memori dan sebagainya. Ada juga beberapa kelas / metode "ajaib" yang diterjemahkan ke dalam instruksi privilisasi oleh kompiler JIT. Akses ke kelas / metode ini (atau akan) dibatasi oleh manajer keamanan, kompiler JIT dan sebagainya. Tetapi jika Anda menulis kode yang dijalankan pada tingkat sistem operasi, fasilitas ini tersedia untuk Anda.Peringatannya adalah (tentu saja) bahwa penggunaan yang salah
Unsafe
dan kelas terkait dapat menyebabkan sistem crash segera, atau menuruni jalur.sumber
Saya ragu kegunaannya untuk komputer desktop. Tetapi waktu dapat membuktikan saya salah tentang hal ini.
Tetapi satu potensi menarik di mata saya adalah sebagai sistem operasi server, lebih khusus sebagai sistem operasi tamu di lingkungan tervirtualisasi. Tidak pernah duduk dengan saya untuk menginstal instalasi server windows penuh di lingkungan server virtual, mengetahui berapa banyak layanan yang tidak perlu dijalankan, termasuk GUI lengkap.
Sekarang menginstal sesuatu seperti Singularity pada server virtual untuk hosting aplikasi ASP.NET, itu lebih masuk akal. Dengan asumsi bahwa mereka dapat menyimpannya sebagai OS yang ringan.
sumber