- NT sering dinilai sebagai sistem operasi yang "sangat canggih", tetapi alasannya tidak terlalu dipahami
- Pada akhir 2023, setelah membaca edisi pertama 'Inside Windows NT', diputuskan untuk membandingkan NT dan Unix
- Ini adalah perbandingan desain NT (Juli 1993) dengan sistem Unix pada masa itu (4.4BSD, Linux 1.0)
- Sebagai ahli Unix, penulis tidak terlalu memahami NT, jadi pembahasan difokuskan pada perbedaan NT
- Dibahas pertanyaan tentang apa yang membuat NT lebih baik daripada Unix, dan apakah itu masih berlaku
Misi
- Sejarah Unix jauh lebih panjang daripada NT
- Pengembangan Unix dimulai pada 1969, dan tujuan utamanya adalah menjadi platform yang nyaman bagi programmer
- Unix terinspirasi oleh Multics, tetapi melampauinya dengan berfokus pada kesederhanaan
- Portabilitas dan multitasking bukan tujuan awal desain Unix: fitur-fitur ini ditambahkan beberapa tahun kemudian melalui banyak "fork" dan penemuan ulang Unix
- Sejarah Microsoft
- Rilis pertama MS-DOS diluncurkan pada Agustus 1981, dan rilis pertama "Windows legacy" (versi berbasis DOS) diluncurkan pada November 1985
- MS-DOS meraih kesuksesan luas, tetapi Windows baru benar-benar penting mulai Windows 3.0 pada Mei 1990
- Windows NT mulai digagas pada 1989 dan muncul ke dunia lewat rilis NT 3.1 pada Juli 1993
- Keunggulan Microsoft
- Desain NT dimulai 20 tahun lebih lambat daripada Unix, memberi Microsoft keuntungan
- Microsoft sudah memiliki basis pengguna besar berkat MS-DOS dan Windows legacy
- Tim Microsoft yang merancang NT memiliki wawasan dari perkembangan tersebut, pengalaman mengembangkan sistem operasi lain, dan akses ke teknologi terbaru, sehingga bisa "membidik bulan" saat membuat NT
Kernel
- Unix, dengan beberapa pengecualian seperti Minix atau GNU Hurd, diimplementasikan sebagai kernel monolitik yang mengekspos sekumpulan system call untuk berinteraksi dengan fungsi yang disediakan sistem operasi
- Sebaliknya, NT berada di bentuk tengah antara kernel monolitik dan mikrokernel: komponen berprivileg executive menampilkan dirinya ke subsystems di ruang pengguna sebagai kumpulan komponen modular
- Subsystems di ruang pengguna adalah proses khusus yang "menerjemahkan" API yang digunakan aplikasi (POSIX, OS/2, dll.) menjadi system call executive
- Salah satu bagian penting dari NT executive adalah HAL, yang menyediakan primitive abstrak untuk mengakses hardware mesin dan berfungsi sebagai fondasi bagi sisa kernel
- Lapisan ini adalah kunci yang memungkinkan NT berjalan di berbagai arsitektur termasuk i386, Alpha, dan PowerPC
- Unix pada masa itu terikat pada arsitektur tertentu: konsep Unix portabel, tetapi implementasinya tidak
- SunOS awalnya hanya mendukung Motorola 68000, 386BSD adalah porting BSD pertama ke arsitektur Intel, dan IRIX adalah varian Unix untuk workstation berbasis MIPS milik Silicon Graphics
- Bagian penting lain dari NT executive adalah dukungannya untuk sistem multiprosesor dan kernel preemptive
- Kernel memiliki berbagai tingkat interrupt untuk menentukan apa yang bisa menginterupsi apa (dalam istilah BSD, SPL), tetapi yang lebih penting adalah thread kernel dapat dipreempt oleh thread kernel lain
- Ini adalah hal yang dilakukan semua sistem Unix berperforma tinggi saat ini, tetapi bukan cara banyak Unix memulai
- Sistem-sistem tersebut dimulai dengan kernel yang tidak mendukung preemption atau multiprocessing, lalu menambahkan dukungan multiprocessing di ruang pengguna, kemudian menambahkan preemption kernel
- Tahap terakhir adalah yang paling sulit, dan saga FreeBSD 5.0 menggambarkan tantangannya
- Karena itu, menarik bahwa NT sejak awal dibangun di atas fondasi yang benar
Objek
- NT adalah kernel berorientasi objek
- Unix juga bisa dianggap demikian: proses didefinisikan sebagai struct, dan implementasi sistem file menangani vnode ("virtual node", jangan bingung dengan inode)
- Namun, ini tidak persis sama dengan yang dilakukan NT: NT memaksa semua objek berbeda ini memiliki representasi umum di seluruh sistem
- Mungkin muncul keraguan bagaimana abstraksi yang bermakna bisa diberikan untuk hal-hal yang sangat berbeda seperti proses dan file handle
- Dalam praktiknya ini memang tidak sepenuhnya mungkin, tetapi NT memaksa semuanya mewarisi tipe objek umum, dan mengejutkannya ini memiliki beberapa sifat yang baik
- Kontrol akses terpusat
- Objek hanya dapat dibuat oleh object manager, jadi ada satu lokasi tunggal untuk kode yang menegakkan kebijakan
- Semantik seperti pemeriksaan izin hanya didefinisikan di satu tempat dan dapat diterapkan secara seragam ke seluruh sistem, yang sangat kuat
- NetBSD juga menyimpulkan ini ide yang bagus, tetapi baru mendapatkan framework Kernel Authorization (kauth) pada 2001
- ID bersama
- Objek memiliki ID, dan semuanya direpresentasikan dalam satu pohon tunggal
- Ini berarti ada namespace unik untuk semua objek, baik itu proses, file handle, maupun pipe
- Objek di dalam pohon dapat dialamati berdasarkan nama (path), dan bagian-bagian pohon yang berbeda dapat dimiliki oleh subsistem yang berbeda
- Sebagai contoh, sebagian pohon dapat merepresentasikan sistem file yang di-mount, sehingga menelusuri node akar subpohon itu akan membuat sistem file menyelesaikan sisa path
- Ini mirip dengan lapisan VFS pada sistem Unix, tetapi VFS hanya menangani sistem file, sedangkan pohon objek menangani setiap objek kernel tunggal
- Unix mencoba memasukkan tipe objek non-file ke dalam sistem file melalui
/proc/, /sys/, dan lain-lain, tetapi ini terasa seperti solusi belakangan dibandingkan apa yang disediakan NT
- Penanganan event terpadu
- Semua tipe objek memiliki status signaled, dan maknanya berbeda menurut masing-masing tipe objek
- Sebagai contoh, objek proses beralih ke status signaled saat proses berakhir, dan objek file handle beralih ke status signaled saat permintaan I/O selesai
- Ini membuat penulisan kode berbasis event (kode async) di ruang pengguna menjadi sangat mudah, karena satu system call bergaya wait dapat menunggu sekelompok objek berubah status
- Pada sistem Unix, menunggu I/O dan penyelesaian proses secara bersamaan adalah hal yang menyakitkan
- Objek adalah komponen khas NT, dan tidak dapat digeneralisasi dengan baik ke semua API yang ingin didukung NT
- Misalnya subsystem POSIX: POSIX tidak memiliki konsep objek seperti NT, tetapi NT tetap harus menyediakan semacam kompatibilitas untuk aplikasi POSIX
- Karena itu, saat subsystem POSIX mengalokasikan objek di executive, ia juga harus menyimpan pembukuan sendiri untuk merepresentasikan entitas POSIX tersebut dan segera melakukan konversi logis antara kedua entitas itu
- Sebaliknya, subsystem Win32 meneruskan objek ke klien tanpa perantara
Proses
- Proses adalah objek yang sama-sama ada di NT dan Unix, tetapi tidak sepenuhnya identik
- Di Unix, proses direpresentasikan sebagai pohon sehingga setiap proses memiliki induk dan dapat memiliki nol atau lebih anak
- Namun, NT tidak memiliki hubungan seperti itu: proses dapat "mewarisi" sumber daya dari pembuatnya, tetapi setelah dibuat ia menjadi entitas yang independen
- Saat NT dirancang, thread masih belum umum:
- Mach adalah kernel mirip Unix pertama yang mengintegrasikan thread pada 1985
- Ini berarti Unix lain kemudian harus mengadopsi konsep tersebut dan menyesuaikannya dengan desain yang sudah ada
- Linux memilih untuk merepresentasikan thread sebagai proses dengan PID unik masing-masing pada rilis 2.0 bulan Juni 1996, dan NetBSD baru memiliki thread yang direpresentasikan sebagai entitas terpisah dari proses pada rilis 2.0 tahun 2004
- Tidak seperti Unix, NT sejak awal memilih untuk mendukung thread karena mengetahui bahwa thread sangat penting untuk komputasi berkinerja tinggi pada mesin SMP
- NT tidak memiliki signal dalam arti Unix tradisional
- Sebagai gantinya ada alerts yang bisa berada pada mode kernel maupun mode pengguna
- Alert mode pengguna harus ditunggu seperti objek lain, dan alert mode kernel tidak terlihat oleh proses
- Subsistem POSIX menggunakan alert mode kernel untuk mengemulasikan signal
- Signal sering disebut sebagai cacat di Unix karena cara kerjanya mengganggu eksekusi proses: menangani signal dengan benar benar-benar sulit, sehingga alternatif NT tampak lebih elegan
- Perkembangan menarik yang lebih baru di NT adalah diperkenalkannya picoprocesses
- Sampai fitur ini ditambahkan, proses di NT tergolong cukup berat: proses baru saat startup akan mendapatkan sekumpulan pustaka runtime NT yang dipetakan ke ruang alamatnya
- Dalam picoprocess, proses hanya memiliki keterkaitan minimal dengan arsitektur Windows, dan ini digunakan untuk mengimplementasikan proses kompatibel Linux di WSL 1
- Dalam beberapa hal, picoprocess lebih dekat ke proses Unix daripada proses Windows asli, tetapi sejak peralihan ke WSL 2, fitur ini tidak lagi banyak digunakan meskipun sudah ada sejak Agustus 2016
- Sejauh orang menyalahkan masalah keamanan Windows, NT sebenarnya memulai dengan desain keamanan yang maju untuk standar internet awal karena sistemnya pada dasarnya bekerja sebagai sistem berbasis kapabilitas
- Proses pengguna pertama yang dimulai setelah logon menerima access token dari kernel yang merepresentasikan hak sesi pengguna, dan proses serta subproses harus memberikan token ini ke kernel untuk mengklaim haknya
- Ini berbeda dari Unix, di mana proses hanya memiliki pengenal dan kernel harus melacak dari tabel proses apa yang dapat dilakukan tiap proses
Kompatibilitas
- Tujuan utama NT adalah kompatibel dengan aplikasi yang ditulis untuk Windows lama, DOS, OS/2, dan POSIX
- Salah satu alasannya bersifat teknis, karena ini memaksa sistem untuk memiliki desain yang elegan
- Alasan lainnya bersifat politis: NT dikembangkan bersama IBM, dan meskipun NT pada akhirnya menjadi Windows, ia harus mendukung aplikasi OS/2
- Kebutuhan akan kompatibilitas ini membuat desain NT sangat berbeda dari Unix
- Di Unix, aplikasi ruang pengguna berkomunikasi langsung dengan kernel melalui antarmuka system call, dan antarmuka inilah antarmuka Unix
- Pustaka C menyediakan perekat untuk memanggil kernel dan aplikasi tidak menjalankan system call secara langsung, tetapi itu hanya detail kecil
- Di NT, aplikasi tidak berkomunikasi langsung dengan executive (kernel)
- Sebagai gantinya, setiap aplikasi berkomunikasi dengan subsistem terlindungi tertentu, dan subsistem ini mengimplementasikan API dari berbagai sistem operasi yang ingin didukung NT
- Subsistem ini diimplementasikan sebagai server ruang pengguna (bukan di dalam "mikrokernel" NT)
- Dukungan untuk aplikasi Windows disediakan oleh server Win32, yang istimewa karena ini satu-satunya server yang dapat dilihat langsung oleh pengguna: ia mengendalikan program konsol dan terminal DOS, serta memiliki hak tertentu demi alasan performa
- Dibandingkan dengan Unix tradisional, desain NT sangat berbeda karena BSD dan Linux memiliki kernel monolitik
- Kernel semacam ini mengekspos antarmuka system call yang dimanfaatkan aplikasi ruang pengguna untuk berinteraksi langsung dengan sistem
- Namun, BSD telah lama mendukung eksekusi biner alternatif di dalam kernel monolitiknya: ini bekerja dengan mengekspos tabel system call yang berbeda ke ruang pengguna berdasarkan biner yang sedang dijalankan, lalu menerjemahkan system call "asing" tersebut menjadi sesuatu yang dipahami kernel
- Linux juga menyediakan dukungan terbatas untuk ini melalui personalities
- Meskipun pendekatan BSD sangat berbeda dari cara NT mendukung sistem lain, WSL 1 sangat mirip dan bukan subsistem dalam istilah yang semula didefinisikan
- Di WSL 1, kernel NT menandai proses Linux sebagai picoprocess lalu mengekspos antarmuka system call yang berbeda dari sana
- Di dalam kernel NT, system call terkait Linux itu diterjemahkan menjadi operasi NT dan disediakan di dalam kernel yang sama, seperti halnya kompatibilitas Linux pada BSD
- Satu-satunya masalah adalah karena NT bukan Unix, "emulasi" Linux menjadi rumit dan jauh lebih lambat daripada yang bisa disediakan BSD
- Disayangkan bahwa WSL 2 kehilangan esensi desain ini dan beralih ke desain VM penuh
- Detail menarik dari desain NT
- Tujuan desain NT adalah memungkinkan pengalihan I/O yang mulus antar-subsistem dari satu shell
- Subsistem diekspos ke aplikasi melalui port, yang merupakan objek NT dan mirip dengan cara Mach membuat proses dan server saling berkomunikasi
Memori virtual
- NT, seperti Unix, sama-sama bergantung pada Memory Management Unit (MMU) dengan paging untuk menyediakan proteksi antar-proses dan memori virtual
- Paging untuk proses ruang pengguna adalah mekanisme umum yang menyediakan ruang alamat lebih besar daripada jumlah memori fisik mesin
- Namun, satu hal yang membuat NT lebih maju daripada sistem Unix pada masanya adalah bahwa kernel itu sendiri juga bisa dipaging ke disk
- Jika seluruh kernel bisa dipaging, kita akan menghadapi situasi di mana page fault kernel perlu menyelesaikan kode driver sistem file yang sudah dipaging keluar, tetapi sebagian besar kernel memang dapat dipaging
- Saat ini ini tidak terlalu menarik karena ukuran kernel kecil dibandingkan memori yang umumnya terpasang di mesin, tetapi dulu hal ini membuat perbedaan besar karena setiap byte sangat berharga
- Sekarang kita cenderung menganggap cara kerja memori virtual dan paging sebagai sesuatu yang biasa, tetapi ini merupakan bidang riset besar saat NT dirancang
- Implementasi Unix sebelumnya memiliki cache memori terpisah untuk sistem file dan memori virtual, dan baru pada 1987 SunOS mengimplementasikan arsitektur memori virtual terpadu untuk mengurangi overhead dari desain sebelumnya
- Sebaliknya, NT sejak awal dimulai dengan arsitektur memori terpadu
- Bisa dikatakan hal ini lebih mudah dilakukan karena sudah ada pemahaman tentang inefisiensi yang ditemukan di Unix dan dapat melihat solusi yang diterapkan SunOS sebelum desain NT dimulai
- Namun, perlu dicatat bahwa ini membuat NT "lebih maju" daripada banyak sistem operasi lain saat itu, dan sistem lain baru menyusul pada 2002 dengan implementasi Unified Buffer Cache (UBC) di NetBSD 1.6
- Perbedaan menarik antara NT dan Unix adalah cara mereka mengelola dan merepresentasikan memori bersama
- Di NT, section memori bersama adalah objek, sehingga mendapat pemeriksaan validasi akses yang persis sama seperti semua objek lain
- Ia juga merupakan bagian dari satu pohon objek, sehingga dapat dialamati dengan cara yang sama seperti semua objek lain
- Di Unix, fitur ini ditempelkan begitu saja: objek memori bersama memiliki namespace yang berbeda, API yang berbeda dari semua entitas lain, sehingga izin umum tidak berlaku
Subsistem I/O
- Versi awal Unix hanya mendukung satu sistem file
- Sebagai contoh, BSD baru memperoleh abstraksi Virtual File System (VFS) untuk mendukung lebih dari UFS pada 4.3BSD pada April 1990
- Sebaliknya, NT sejak awal dirancang untuk memungkinkan beberapa sistem file
- Untuk mendukung beberapa sistem file, kernel harus mengekspos namespace terkait dengan suatu cara
- Unix menggabungkan sistem file dalam satu hierarki file melalui mount point: lapisan VFS menyediakan mekanisme untuk mengidentifikasi node yang sesuai dengan root sistem file dan mengalihkan permintaan ke driver sistem file tersebut saat menelusuri path
- NT memiliki desain serupa meskipun dalam antarmuka pengguna standar sistem file tampak sebagai drive yang terpisah: secara internal, executive merepresentasikan sistem file sebagai objek dalam pohon objek, dan tiap objek bertanggung jawab untuk mengurai sisa path
- Objek sistem file tersebut kemudian dipetakan ulang sebagai drive DOS agar bisa diakses dari user space
- Drive DOS juga merupakan objek di bawah subtree terpisah yang mengalihkan I/O ke sistem file yang dirujuknya
- NT pada akhirnya dirilis bersama NTFS
- NTFS, meskipun sering diserang dengan tuduhan performanya buruk (klaim yang keliru), pada masanya benar-benar merupakan sistem file yang sangat maju
- Subsystem I/O NT, dipadukan dengan NTFS, menyediakan pengalamatan 64-bit, journaling, bahkan nama file Unicode
- Linux baru mendapat dukungan file 64-bit pada akhir 1990-an dan baru mendapat journaling saat ext3 dirilis pada 2001
- Mekanisme toleransi kesalahan alternatif, Soft updates, baru muncul di FreeBSD pada 1998
- Unix merepresentasikan nama file sebagai array byte null-terminated, bukan Unicode
- Fitur lain yang disertakan saat NT dirilis mencakup disk striping dan mirroring (yang kini dikenal sebagai RAID) serta hot-plugging perangkat
- Fitur-fitur ini memang bukan hal baru, karena SunOS sudah menyertakan dukungan RAID sejak awal 1990-an, tetapi yang menarik adalah semuanya telah dipertimbangkan sebagai bagian dari desain aslinya
- Pada level yang lebih tinggi, hal yang membuat subsystem I/O NT jauh lebih maju daripada Unix adalah fakta bahwa antarmukanya pada dasarnya bersifat asinkron, dan memang demikian sejak awal
- Sebagai pembanding, FreeBSD baru memiliki dukungan untuk aio(7) pada FreeBSD 3.0 tahun 1998, dan Linux baru memilikinya pada Linux 2.5 tahun 2002
- Meskipun dukungan untuk I/O asinkron telah ada di sistem Unix selama lebih dari 20 tahun, fitur ini tetap tidak banyak digunakan: hampir tidak ada yang mengenal API ini, mayoritas aplikasi tidak memakainya, dan performanya buruk
- io_uring di Linux adalah tambahan yang relatif baru untuk meningkatkan I/O asinkron, tetapi menjadi sumber utama kerentanan keamanan dan juga tidak banyak digunakan
Jaringan
- Saat ini internet ada di mana-mana, tetapi ketika NT dirancang, kondisinya belum seperti itu
- Jika melihat ekosistem Microsoft, DOS 3.1 (1987) memang menyertakan fondasi untuk berbagi file di sistem file FAT, tetapi "OS" itu sendiri tidak menyediakan kemampuan jaringan: hal tersebut ditangani oleh produk terpisah bernama Microsoft Networks (MS-NET)
- Windows 3.0 (1990) menyertakan dukungan untuk NetBIOS yang memungkinkan berbagi printer dan file dasar di jaringan lokal, tetapi tidak ada dukungan TCP/IP
- Sebaliknya, Unix pada dasarnya adalah internet itu sendiri: semua protokol internet dasar ditulis di Unix dan bersama Unix
- Selama perancangan NT, penting untuk mempertimbangkan dukungan jaringan yang baik, dan memang NT dirilis bersama kemampuan jaringan
- Hasilnya, NT mendukung baik protokol internet maupun protokol LAN tradisional yang digunakan di lingkungan Microsoft yang sudah ada, yang membuat NT unggul atas Unix di lingkungan perusahaan
- Contohnya adalah domain jaringan di NT
- Di Unix, administrator jaringan umumnya menyinkronkan akun pengguna antar-mesin secara manual
- Mereka mungkin menggunakan protokol direktori X.500 (1988) dan Kerberos (1980-an), sebagaimana diimplementasikan oleh sistem seperti SunOS, untuk autentikasi pengguna, tetapi teknologi ini tidaklah terlalu sederhana
- Sebaliknya, NT sejak awal menyediakan domain yang mengintegrasikan fungsi direktori dan autentikasi, yang tampaknya "menang" di jaringan perusahaan karena jauh lebih mudah disiapkan dan tertanam langsung dalam sistem
- Tujuan dari akun pengguna yang tersinkronisasi adalah berbagi resource antar-mesin, terutama file, dan dalam konteks ini cara merepresentasikan izin sangat penting
- Selama waktu yang lama, Unix hanya menyediakan himpunan izin baca/tulis/eksekusi yang sederhana untuk setiap file
- Sebaliknya, NT sejak awal hadir dengan ACL tingkat lanjut, yang hingga kini masih menjadi titik lemah Unix
- Linux dan BSD kini juga memiliki ACL, tetapi antarmukanya tidak konsisten antar-sistem dan terasa seperti tambahan yang asing terhadap desain sistem
- Di NT, ACL bekerja pada level objek sehingga diterapkan secara konsisten ke semua fungsi kernel
- Ketika membahas berbagi file, kita juga harus membahas sistem file jaringan
- Di Unix, sistem file de facto adalah NFS, sedangkan di NT adalah SMB
- SMB diwarisi dari MS-NET dan LAN Manager, dan diimplementasikan dalam kernel melalui komponen bernama redirector
- Pada dasarnya, redirector hanyalah sistem file "sederhana" lain yang mencegat operasi file dan mengirimkannya melalui jaringan, sebagaimana NFS berada di Unix
- protobuf dan gRPC mungkin tampak seperti ide baru karena digunakan secara luas, tetapi sebenarnya didasarkan pada ide lama
- Di Unix, Sun RPC telah digunakan sejak awal 1980-an, terutama untuk mendukung NFS
- Demikian pula, NT hadir dengan dukungan RPC bawaan, melalui DSL-nya sendiri (dikenal sebagai MIDL untuk mendeskripsikan definisi antarmuka dan menghasilkan kode untuk prosedur jarak jauh) serta fungsionalitas sendiri untuk mengimplementasikan klien dan server RPC
- Sistem Unix tidak terlalu berfokus pada dukungan driver arbitrer: sistem Unix umumnya terikat pada mesin dan vendor tertentu
- Sebaliknya, NT berusaha menjadi OS untuk "semua" mesin dan dijual oleh perusahaan perangkat lunak, sehingga dukungan untuk driver yang ditulis pihak lain menjadi penting
- Akibatnya, NT menyediakan Network Driver Interface Specification (NDIS), yaitu abstraksi untuk mempermudah dukungan driver kartu jaringan
- Hingga hari ini, driver yang disediakan pabrikan bukanlah hal yang terlalu umum di Linux, dan hal ini melahirkan perangkat menarik seperti ndiswrapper, lapisan yang sangat populer pada awal 2000-an untuk menggunakan kembali driver Windows bagi kartu WiFi di Linux
- Terakhir, perbedaan lain antara NT dan Unix terletak pada implementasi named pipe
- Named pipe adalah komponen lokal di Unix: mekanisme yang memungkinkan dua proses pada mesin yang sama saling berkomunikasi melalui nama file persisten di disk
- NT memiliki fungsi yang sama, tetapi named pipe dapat bekerja melalui jaringan
- Dengan menempatkan named pipe pada sistem file bersama, dua aplikasi di komputer yang berbeda dapat saling berkomunikasi tanpa perlu memikirkan detail jaringan
User-Space
- Konfigurasi:
- NT memusatkan konfigurasi sistem dan aplikasi dalam sebuah basis data bernama Registry, meninggalkan CONFIG.SYS, AUTOEXEC.BAT, dan banyak file INI lama yang digunakan pada Windows lawas
- Ini memang membuat sebagian orang sangat marah, tetapi pada akhirnya antarmuka konfigurasi terpadu menguntungkan semua orang: aplikasi menjadi lebih mudah ditulis karena hanya ada satu fondasi yang perlu didukung, dan pengguna dapat menyesuaikan sistem dengan lebih mudah karena hanya ada satu tempat yang perlu diperiksa
- Sebaliknya, Unix masih mengalami kesulitan karena puluhan DSL dan lokasi file yang tidak konsisten
- Setiap program yang mendukung file konfigurasi memiliki sintaksnya sendiri, dan sulit untuk mengetahui lokasi yang dibaca program, serta hal itu tidak selalu terdokumentasi dengan baik
- Ekosistem Linux mendorong pendekatan serupa NT melalui XDG dan dconf (sebelumnya GConf), tetapi komponen desktop menggunakan teknologi ini secara eksklusif sementara komponen dasar sistem tidak mengadopsinya, sehingga menyisakan kekacauan yang tidak konsisten
- Internasionalisasi:
- Microsoft, sebagai perusahaan besar yang sudah merilis Windows 3.x di seluruh dunia, memahami bahwa pelokalan itu penting dan membuat NT mendukung kemampuan ini sejak awal
- Bandingkan ini dengan Unix, yang dukungan UTF-nya baru mulai muncul pada akhir 1990-an dan mendukung bahasa lain melalui tambahan opsional gettext
- Bahasa C:
- Satu hal yang sudah lama diimpikan sistem Unix seperti FreeBSD dan NetBSD adalah menciptakan dialek C mereka sendiri untuk mengimplementasikan kernel dengan cara yang lebih aman
- Ini tidak membuahkan hasil di mana pun, kecuali Linux yang bergantung pada ekstensi khusus GCC
- Sebaliknya, Microsoft memiliki keuntungan karena memiliki kompiler C sendiri, sehingga dapat melakukan hal ini pada NT yang ditulis dengan Microsoft C
- Sebagai contoh, NT bergantung pada Structured Exception Handling (SEH), sebuah kemampuan untuk menambahkan klausa try/except guna menangani pengecualian perangkat lunak dan perangkat keras
- Saya tidak mengatakan ini adalah keunggulan besar, tetapi ini memang sebuah perbedaan
Kesimpulan
- NT adalah teknologi yang revolusioner pada saat dirilis
- Seperti dijelaskan di atas, banyak fitur yang kini dianggap biasa dalam desain sistem modern sudah ada di NT sejak awal, sementara hampir semua sistem Unix lainnya harus mendapatkannya secara perlahan seiring waktu
- Akibatnya, fitur-fitur tersebut tidak selalu terintegrasi mulus dengan filosofi Unix
- Namun, tidak jelas apakah saat ini NT benar-benar "lebih maju" daripada Linux atau FreeBSD
- NT sejak awal memiliki prinsip desain yang lebih kokoh dan lebih banyak fitur dibanding sistem operasi lain pada zamannya, tetapi saat ini perbedaannya menjadi kabur
- Dengan kata lain, NT memang berkembang, tetapi tidak jauh lebih maju dibanding Unix modern
- Meski NT memiliki semua prinsip desain kokoh ini, tetap mengecewakan bahwa desainnya tidak bisa benar-benar bersinar karena pembengkakan UI
- Bahkan pada mesin yang sangat bertenaga, kelambatan OS ini bisa menyakitkan untuk disaksikan dan bahkan dapat berujung pada kematian OS ini
Ringkasan GN⁺
- Artikel ini membandingkan perbedaan desain NT dan Unix untuk menjelaskan betapa majunya desain awal NT
- NT sejak awal dirancang dengan tujuan portabilitas, dukungan multiprosesor, dan kompatibilitas, yang menjadi perbedaan utama dibanding Unix
- Kernel berorientasi objek NT, arsitektur memori terpadu, dan antarmuka I/O asinkronnya menawarkan fitur yang lebih maju dibanding Unix
- Namun, saat ini perbedaan antara NT dan sistem Unix tidak besar, dan pembengkakan UI NT menyebabkan penurunan kinerja
1 komentar
Opini Hacker News
Kernel NT bagus, tetapi desainnya sudah tua
Perbedaan terbesar antara NT dan Unix adalah pendekatan terhadap driver
Pada WinNT modern, Direct3D merupakan bagian esensial dari kernel
Kernel NT menjalankan thread, bukan proses
WindowsNT pada awalnya adalah sistem yang dirancang jauh lebih baik daripada Linux
NT sebagai sistem ketiga berhasil menghindari second-system syndrome
Dari sudut pandang pengembang, ada perbedaan antara Windows dan Linux
wchar_tdi Win32 merupakan masalahKernel NT memiliki keanggunan, tetapi tidak open source
Pernah ada konvergensi seperti FUSE di Linux