Apakah Anda pikir OS yang dikelola adalah ide yang bagus? [Tutup]

15

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?

Chinmay Kanchi
sumber
Saya takut untuk menjawab karena saya bias ke bahasa tingkat tinggi karena mereka adalah satu-satunya bahasa yang saya gunakan
TheLQ
2
Dengan komputer yang semakin cepat, saya pikir ini masalah besar. Namun, jika MSFT mengimplementasikannya, itu akan menjadi hebat atau menyedot banyak - tidak ada di antara keduanya.
Ayub
Perhatikan bahwa "legacy crud" adalah apa yang membuat aplikasi yang ada berjalan. Jangan meremehkan pentingnya memiliki sesuatu untuk digunakan.

Jawaban:

8

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.

ChrisF
sumber
3
Saya benar-benar tidak setuju. Tidak ada alasan untuk memiliki gim yang menjalankan gim asli, dan tidak ada kebutuhan nyata untuk menjadi gim asli dari tingkat rendah jika sistem operasi memberi Anda semua titik masuk terkelola yang Anda butuhkan. Tentu saja ada beberapa kekurangan kinerja (sebenarnya dapat diabaikan jika seluruh sistem dikelola) tetapi hari ini kami memiliki banyak kekuatan pemrosesan dan banyak kebutuhan perangkat lunak yang sangat andal.
Wizard79
@Lorenzo Games sudah cukup memberi tekanan pada komputer, sehingga kinerja sangat penting. Namun, saya tidak yakin seberapa besar dampak kinerja jika semua VM tidak membungkus panggilan asli
TheLQ
4
@TheLQ: intinya adalah bahwa gim sudah tidak harus berurusan dengan "hal-hal tingkat rendah" karena selalu ada beberapa middleware (DirectX, Open GL dan sebagainya). Tentu saja mereka intensif secara komputasi, tetapi menggunakan middleware sudah menjadi hit kinerja. Itu hanya akan menjadi middleware yang dikelola (dan diinkubasi).
Wizard79
3
Jika OS menangani JITting, Anda akan mendapatkan kode terkelola yang berjalan kurang lebih secepat kode "asli". Ingat, jika Anda harus memiliki kontrol seperti perakitan atas program, Anda selalu dapat menggunakan program secara langsung dalam byte-code.
Chinmay Kanchi
3
Afaik, MS Singularity mendapat kinerja yang signifikan dorongan dari kenyataan bahwa itu tidak perlu beralih antara modus kernel dan user mode sama sekali. Forking menjadi jauh lebih murah juga.
9000
3

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

Walter
sumber
3

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.

Wizard79
sumber
Apakah Anda yakin tentang saklar konteks tidak diperlukan? Anda masih perlu menjalankan banyak program sekaligus.
Ayub
Jika kedua program dan kode berjalan di VM mungkin tidak ada saklar konteks. Namun itu akan membutuhkan implementasi ulang MMU dalam bahasa HL jadi saya benar-benar ragu akan ada banyak manfaat kinerja.
Maciej Piechotka
2

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:

  • Kernel tingkat rendah ditulis dalam C / assembler
  • Kernel tingkat lebih tinggi ditulis dalam bahasa yang dikelola

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.

Misalnya, Anda tiba-tiba membuat pointer acak menjadi usang.

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.

Dan jika ditulis dengan baik, Anda menyingkirkan satu ton warisan mentah yang dimiliki kebanyakan OS modern saat ini.

  1. Ada banyak perangkat keras warisan. Lebih dari itu dalam perangkat lunak. Pertama-tama Anda mulai dalam mode nyata, lalu aktifkan gerbang A20 (jangan tanya) lompat ke mode terlindung, lalu ke mode lama.
  2. Kompatibilitas API / ABI baik. Katakanlah mereka telah menulis OS seperti itu - apa yang akan Anda jalankan di atasnya Firefox - nggak (C dan C ++ menggunakan WinAPI). Java - mungkin perlu porting atau memiliki beberapa masalah kecil melalui ikvm - kecuali jika senang menggunakan JNI. Saya kira MSSQL (dan pastinya Oracle, MySQL, Postgresql ...) tidak ditulis dalam bahasa yang dikelola sehingga tidak akan cocok untuk server.
  3. Bahkan kompatibilitas bug adalah "baik". AFAIK MS menghabiskan banyak waktu hanya menguji dan memeriksa apakah beberapa perangkat lunak tidak menggunakan API dengan cara yang pintar (salah baca). Seperti masalah menggunakan pointer setelah freeitu ketika Windows benar-benar mulai membebaskan memori.

Saya kira itu akan mendapatkan popularitas sekitar waktu yang sama dengan microkernels.

Maciej Piechotka
sumber
2

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.

Jason Baker
sumber
2
Kernel OS tidak terlalu penting untuk penerimaan. MS menyusun kernel NT yang benar-benar baru, tidak kompatibel dengan apa pun, dan itu berhasil. Apple mengubah arsitektur kernelnya secara drastis (dan arsitektur CPU-nya, tiga kali), dan masih berkembang. Kuncinya adalah kompatibilitas dengan perangkat lunak yang ada dan kemudahan porting. Lapisan kompatibilitas dan / atau virtualisasi yang memungkinkan transisi yang mulus dari kode lama ke kode baru tidak terlihat terlalu sulit di OS yang dikelola.
9000
2

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
1

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.

Ini sebenarnya tidak benar. Di JNode misalnya, ada Unsafekelas (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 Unsafedan kelas terkait dapat menyebabkan sistem crash segera, atau menuruni jalur.

Stephen C
sumber
0

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.

Pete
sumber
1
Sangat menyenangkan untuk membuang Windows sekaligus, jika Anda bisa.
Pekerjaan
1
Kecenderungan untuk mem-sandbox browser dan hal-hal lain yang berhubungan dengan internet mungkin menunjukkan bahwa OS atau desktop yang dikelola, atau setidaknya terkotak, juga diinginkan.
9000