Saya sering menemukan istilah "unix-like" di banyak situs web.
Tidak ada standar; itu hanya dalam cara berperilaku.
Tetapi jika saya mengembangkan kernel dari awal, apa yang membuatnya dianggap "unix-like"?
Pada dasarnya, apa saja hal-hal yang membuat kode tertulis seperti Unix?
linux
unix-philosophy
satu akson hilang
sumber
sumber
Jawaban:
Saya percaya sebagian besar OS "unix-like" memang melakukan upaya yang sangat serius untuk mematuhi standar POSIX , yang diawasi oleh Open Group, yang juga mengendalikan Spesifikasi UNIX Tunggal yang mendefinisikan "UNIX sejati". Yang pertama adalah inti dari yang belakangan.
Jadi, pada kenyataannya, ada standar yang mendefinisikan kepraktisan sistem operasi mirip-unix . Lihat daftar "sepenuhnya" dan "sebagian besar" OS yang sesuai di akhir artikel wikipedia di POSIX.
Ada beberapa alasan yang jelas bahwa linux secara khusus mungkin tidak dianggap sepenuhnya memenuhi atau disertifikasi oleh Single Unix Spesifikasi (SUS), tetapi ini bukan karena sistem linux yang diberikan tentu tidak kompatibel dengan itu. Artikel wikipedia meringkas spesifikasi dengan cara ini:
Ini jelas merujuk secara khusus pada banyak komponen userland (seperti shell) yang sama sekali bukan bagian dari kernel linux. Jadi tidak mungkin linux.org et. Al. dapat memiliki kernel yang disertifikasi - dalam hal ini, ini bukan sistem operasi sama sekali. Mereka bisa, tentu saja, mencoba untuk mensertifikasi beberapa sistem tertentu menggunakan kernel, tetapi ini akan menjadi tidak berarti mengingat skema distribusi umum: kernel dan orang-orang yang memeliharanya adalah independen dari orang-orang yang mempertahankan core userland (GNU) yang independen dari orang-orang yang mempertahankan distribusi OS rakitan yang sebenarnya (Debian, Fedora, dll).
Saya kira Debian atau Fedora sendiri dapat terlibat dalam proses sertifikasi (jadi, misalnya, RedHat Enterprise bisa menjadi "unix bersertifikat"), tetapi ini menimbulkan pertanyaan bahwa hal itu sebenarnya diinginkan. Saya akan berasumsi bahwa alasan utama untuk sistem SUS adalah untuk menjalankan (skala komersial, non-konsumen) perangkat lunak yang ditulis untuk itu, yang sama sekali bukan ceruk linux - orang yang melakukan ini akan membayar ribuan dolar per lisensi untuk OS termasuk banyak dukungan, dll., karena mereka juga membayar puluhan atau ratusan ribu dolar per lisensi untuk perangkat lunak tambahan apa pun yang ingin mereka jalankan pada sistem. Linux dan outlier lainnya, di sisi lain, telah mengejar tujuan desain di luar kepatuhan sederhana untuk tujuan komersial, dan ada berbagai contohnya, misalnya (darihttp://en.wikipedia.org/wiki/STREAMS ):
Akomodasi menarik yang menyoroti titik bahwa SUS dan The Open Group! = Linux,! = BSD, dll.
sumber
Untuk memperluas jawaban pertama tentang POSIX, untuk memahami apa arti "seperti-unix", yah, yang pertama harus mencoba untuk memahami apa sebenarnya UNIX. Melihat dokumentasi dari Open Group , yang memiliki merek dagang Unix, Anda akan menemukan detail tentang evolusi spesifikasi Single UNIX - inilah UNIX03 :
UNIX98 :
UNIX95 (penekanan saya):
Versi server standar menambahkan Internet Server dan IPv6 dalam beberapa kasus.
Jadi tentu saja kita melihat referensi ke AT&T Bell Laboratories dan bahasa C adalah jantung dari apa UNIX adalah: bahasa C, alat basis modular, dan shell dan bagaimana kernel, sistem file dan komponen OS kunci lainnya dirancang dan diimplementasikan .
Di situlah buku Desain Sistem Operasi UNIX oleh Maurice J. Bach menjadi bacaan yang tak ternilai karena itu masalah sejarah pada saat ini. Dari catatan tentu saja adalah bagaimana ini terkait dengan penemuan lain seperti bahasa C memang. C dikembangkan oleh AT&T Bell untuk mengimplementasikan Unix dengan bahasa yang bisa secepat perakitan tetapi portabel di berbagai perangkat keras, dan banyak POSIX merupakan perluasan ke standar C.
Sejauh menyangkut kernel itu sendiri, Anda akan sering menemukan diagram konseptual seperti ini untuk menggambarkan apa yang dimaksud dengan kernel UNIX secara tradisional:
Berikut adalah beberapa kutipan dari buku klasik Mr Bach (1986) yang membahas dasar-dasar kernel UNIX System V:
Jika Anda tertarik dengan implementasi kernel yang berbeda di sistem operasi mirip unix, Anda juga dapat melihat implementasi FreeBSD (4.4BSD) atau di kernel Mach atau melihat perbandingan fitur-fiturnya.
Semakin banyak Anda tahu tentang desain UNIX, semakin Anda memahami apa yang terjadi dalam diagram berikut tentang nenek moyang UNIX dan sejarahnya . Mr Bach kebanyakan berbicara tentang Sistem V dalam bukunya, tetapi ia juga membahas BSD:
Ada lebih dari ini benar-benar memenuhi mata . Sebagai contoh, Mac OSX bersertifikat UNIX03 tetapi apakah Anda melihatnya terhubung ke UNIX murni (sebagian besar berwarna merah)?
Di atas Anda dapat melihat bagaimana kontribusi BSD, GNU, Microsoft dan beragam individu ke alam semesta ini. Meskipun GNU dan akhirnya linux tidak memiliki garis keturunan langsung ke UNIX, Anda melihat bahwa GNU adalah upaya untuk merekayasa ulang di dunia open source alat dan perangkat lunak dari UNIX komersial yang telah ditutup. Jadi melihat perangkat lunak yang dikelola GNU memberikan ide misalnya di aplikasi prototipe awal dan perpustakaan.
Perang lisensi memainkan peran dalam evolusi (dan terkadang stagnasi) UNIX. Anda dapat segera melihat bahwa UNIX berbaris sesuai dengan jenis lisensi - ditutup vs BSD ( BSD memungkinkan untuk membuat kode sumber tertutup ... lihat OSX) dan GPL yang memungkinkan Linux dan GNU untuk melengkapi diri mereka di dunia copyleft. Berikut adalah peta klasik dari kernel linux yang awalnya dikembangkan oleh Linus Torvalds, yang juga mengungkapkan apa yang kernel "dapat" berada dalam sistem operasi mirip Unix:
Ini mengisyaratkan gagasan bahwa tipe desain " kernel " bukanlah yang membuat standar UNIX atau apa yang mendefinisikan OS seperti-unix. Ini dibuktikan oleh fakta bahwa banyak OS mirip unix mungkin memiliki kernel monolitik atau microkernel - monolitik adalah tipe desain klasik untuk UNIX. Bahkan, bahkan di dalam UNIXes murni, HPUX memiliki kernel monolitik sedangkan AIX menggunakan microkernel. Ini perdebatan tentang desain adalah tentang kinerja dan tidak berhubungan dengan Unix keturunan atau identitas. Di sisi lain, ada pendekatan konseptual tradisional untuk menyediakan layanan untuk perangkat lunak, berurusan dengan sistem file dll di bawah sistem operasi UNIX / unix-like.
Saya percaya pertimbangan seperti itu akan menambah konteks ke bagian OS dari pertanyaan Anda.
sumber