GNU/Linux >> Belajar Linux >  >> Linux

Mengapa mirip Linux Unix jika kernelnya monolitik?

Saya percaya jawabannya terletak pada bagaimana Anda mendefinisikan "mirip Unix". Sesuai entri wikipedia untuk "mirip Unix", sepertinya tidak ada definisi standar.1

Sistem operasi mirip Unix (terkadang disebut sebagai UN*X atau *nix) adalah sistem yang berperilaku serupa dengan sistem Unix, sementara tidak perlu menyesuaikan atau disertifikasi untuk versi apa pun dari Spesifikasi UNIX Tunggal.

Tidak ada standar untuk mendefinisikan istilah ini, dan beberapa perbedaan pendapat mungkin mengenai sejauh mana sistem operasi tertentu "mirip Unix".

Istilah ini dapat mencakup sistem operasi bebas dan sumber terbuka yang terinspirasi oleh Bell Labs 'Unix atau dirancang untuk meniru fitur-fiturnya, karya komersial dan hak milik, dan bahkan versi berdasarkan kode sumber UNIX berlisensi (yang mungkin cukup "mirip Unix" untuk lulus sertifikasi. dan menanggung merek dagang "UNIX").

Mungkin alasan yang paling jelas adalah bahwa UNIX dan MINIX adalah anteseden Linux, yang mengilhami pembuatannya.2

Torvalds memulai pengembangan kernel Linux di MINIX dan aplikasi yang ditulis untuk MINIX juga digunakan di Linux. Kemudian, Linux menjadi matang dan pengembangan kernel Linux lebih lanjut terjadi pada sistem Linux.

Linus Torvalds ingin menyebut penemuannya Freax, gabungan dari "bebas", "aneh", dan "x" (sebagai kiasan untuk Unix).

Apakah sistem itu monolitik atau mikrokernel tampaknya tidak dipertimbangkan saat menyebut sistem operasi "mirip Unix". Setidaknya, tidak sesering apakah sistem sesuai dengan POSIX atau sebagian besar sesuai dengan POSIX.


"Cara UNIX" benar-benar mengacu pada pengalaman pengguna. Satu set kecil utilitas dapat digabungkan untuk membangun baris perintah sistem operasi yang efektif. Terkait hal ini, utilitas sistem operasi sama sekali tidak "khusus" atau memiliki kekuatan melebihi program yang dapat Anda tulis sendiri.

Ini adalah poin yang sulit untuk dibuat saat ini, karena UNIX sangat sukses dalam aspek ini sehingga menjadi cara yang diharapkan sistem operasi untuk menyajikan antarmuka baris perintah mereka. Intinya paling baik diilustrasikan dengan contoh tandingan:inilah cara melakukan cp a.txt b.txt pada mainframe IBM:

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

Ini bahkan tidak akan menyalin setiap jenis file.

UNIX membuat sejumlah asumsi yang menyederhanakan kegunaan dengan mengorbankan kinerja. Saluran file 1 (stdin), 2 (stdout) dan 3 (stderr) pergi ke dan dari terminal, menghapus banyak boilerplate dari JCL di atas. Sistem file mendukung satu jenis data -- byte -- dan satu mode akses -- berurutan (walaupun penunjuk tempat data berurutan dapat dibaca atau ditulis dapat dipindahkan untuk mengimplementasikan semacam "akses acak"). Ini berarti utilitas sistem hanya perlu berurusan dengan satu jenis file dan satu jenis data untuk mencakup semua file dan tipe data. Sistem file tidak memerlukan pra-alokasi. Menambahkan file ke direktori (alias "katalog disk" di mainframe IBM) terjadi secara otomatis jika nama file diketahui oleh sistem operasi.

Asumsi-asumsi ini begitu sukses sehingga hari-hari ini kita bahkan tidak memikirkannya lagi. Padahal pada saat itu mereka akan tampak boros -- bayangkan saja overhead sistem file yang tidak diberitahu sebelumnya tentang ukuran maksimum file.

Tetapi UNIX tidak berhenti di situ. Itu mempromosikan pendekatan "kotak alat" untuk utilitas sistem. IEBGENER mainframe dapat mencetak file, mengatur ulang bidang dalam catatan, menjatuhkan catatan, membuat catatan kosong. Sebaliknya, di UNIX cp menyalin file, cat mencantumkan konten file, memotong bidang pegangan. Ada sintaks yang rapi untuk merangkai stdout dari perintah ke stdin dari file berikutnya, semuanya dalam satu baris terminal. Dengan menggunakan sintaks "pipa" ini dan perintah-perintah kecil itu kita dapat melakukan semua yang dapat dilakukan oleh IEBGENER. Dan hal-hal yang tidak pernah diimpikan oleh penulis IEBGENER.

Kernighan dan Plauger menulis sebuah buku berpengaruh pada tahun 1976 tentang pendekatan ini -- Alat perangkat lunak -- dan itu benar-benar eksposisi pertama dari "cara UNIX". Kernighan dan Pike menyatakan kembali pendekatan ini dalam buku mereka tahun 1984 Lingkungan pemrograman UNIX .


Linux
  1. Cara memeriksa versi Kernel di Linux

  2. Linux – Apakah Linux Sebuah Unix?

  3. Linux – Apakah Kernel Linux/unix yang Berbeda Dapat Dipertukarkan?

  1. Linux – Mengapa Tidak Ada Sistem File Rootfs Di Sistem?

  2. Di kernel linux 2.6.26, saya menemukan #define atom_read(v) ((v)->counter + 0), mengapa +0?

  3. Mengapa nomor panggilan sistem Linux di x86 dan x86_64 berbeda?

  1. Linux – Mengapa Kernel Tidak Dapat Menjalankan Init?

  2. Perbedaan Utama Linux Vs UNIX Kernel

  3. Panggilan sistem Linux tercepat