Adakah Linux Sesuai dengan POSIX?

Is Linux Posix Compliant

Perisian ditulis oleh banyak pembangun dengan pelbagai latar belakang. Algoritma umum tersedia di bawah lesen percuma atau telah diterbitkan secara ilmiah, dan mungkin juga tersedia secara percuma untuk tujuan belajar. Ini menghasilkan pelbagai implementasi dan versi perisian yang sesuai dengan berbagai keperluan. Piawaian antara muka dan format data diperlukan untuk membuat pelaksanaan yang berbeza ini boleh ditukar ganti dan modular.

Ringkasnya, POSIX [1] melakukan yang tepat untuk sistem seperti UNIX dan UNIX (lihat artikel Zak H [4] untuk sejarah yang lebih terperinci mengenai topik ini). Ini menentukan antaramuka pertukaran, mekanisme panggilan, dan data yang dipindahkan untuk perisian tetapi menyerahkan pelaksanaan dalaman kepada pemaju atau penyelenggara perisian. Tujuannya adalah untuk menyatukan semua pelbagai garpu UNIX dan sistem seperti UNIX sedemikian rupa sehingga pelaksanaan perisian yang berbeza dapat saling berinteraksi antara satu sama lain. Kelebihan utama POSIX adalah memiliki dokumentasi yang mengikat untuk komponen ini - antaramuka, mekanisme, dan data - tersedia dalam bentuk bertulis.



Sistem operasi yang mengikuti standard POSIX secara keseluruhan diklasifikasikan sebagai mematuhi POSIX. Dalam artikel ini, kami menerangkan apa maksud POSIX, menentukan sama ada Linux tergolong dalam kategori ini, dan menyenaraikan komponen Linux mana yang mesti dikecualikan dari klasifikasi ini.



Apa maksud Istilah POSIX?

POSIX adalah singkatan untuk antara muka sistem operasi mudah alih. Seperti yang dijelaskan secara ringkas di atas, POSIX adalah nama untuk koleksi piawaian yang diperlukan untuk mengekalkan keserasian antara sistem operasi. Seperti yang dinyatakan dalam [1], [itu] menentukan antarmuka pengaturcaraan aplikasi (API), bersama dengan shell baris perintah dan antara muka utiliti, untuk keserasian perisian dengan varian Unix dan sistem operasi lain. Versi pertama POSIX diterbitkan pada tahun 1988. Sejak itu, POSIX terus dikembangkan dan diperbaharui oleh Austin Common Standards Revision Group (juga dikenali sebagai The Austin Group) [7].



Pada tahun 2021, standard POSIX mengandungi bahagian-bahagian berikut:

  1. Perkhidmatan Teras (Memasukkan ANSI C Standard) (IEEE std 1003.1-1988) - Pembuatan dan Pengendalian Proses, Isyarat, Operasi Fail dan Direktori, Paip, perpustakaan C, Antaramuka dan Kawalan Pelabuhan I / O, Pemicu Proses
  1. Sambungan (Pautan Simbolik)
  2. Sambungan masa nyata dan I / O (IEEE Std 1003.1b-1993) - Penjadualan Keutamaan, Isyarat Masa Nyata, Jam dan Pemasa, Semafora, Pemesejan Mesej, Memori Bersama, I / O Asinkron dan Sinkron, Antara Muka Mengunci Memori
  3. Sambungan benang (IEEE Std 1003.1c-1995) - Pembuatan Benang, Pengendalian, dan Pembersihan, Penjadualan Benang, Penyegerakan Benang, Pengendalian Isyarat
  4. Lebih banyak sambungan masa nyata
  5. Sambungan keselamatan (Senarai kawalan akses)
  1. Shell dan Utiliti (IEEE Std 1003.2-1992) - Jurubahasa Perintah, Program Utiliti

Piawaian ini dikaji secara berkala untuk menggambarkan perubahan dan penambahbaikan teknikal. Kadang-kadang diperlukan beberapa tahun sebelum versi baru diterbitkan dan perubahan digabungkan. Ini boleh merugikan, tetapi dapat difahami berdasarkan skop standard.

Dalam beberapa tahun kebelakangan ini, pelanjutan pemprosesan masa nyata telah ditambahkan. Versi semasa dikeluarkan pada awal 2018 [3]. Pengarang SibylFS [5] juga telah menerbitkan banyak anotasi pada standard POSIX untuk menentukan logik dan interaksi yang lebih tinggi.



Apa Makna Mematuhi POSIX?

Istilah patuh POSIX bermaksud bahawa sistem operasi memenuhi semua kriteria POSIX. Sistem operasi dapat menjalankan program UNIX secara semula jadi, atau aplikasi dapat dibawa dari sistem UNIX ke sistem lain. Memindahkan aplikasi dari UNIX ke sistem operasi sasaran adalah mudah, atau paling tidak lebih mudah, daripada jika tidak menyokong POSIX. Untuk berada di sisi yang selamat, sistem operasi semestinya berjaya mencapai pensijilan POSIX [2]. Langkah ini dicapai (dengan kos) dengan lulus ujian pensijilan automatik. Suite ujian yang sesuai boleh didapati di sini [11].

Mulai tahun 2021, senarai sistem operasi yang diperakui POSIX mengandungi AIX dari IBM, HP-UX dari HP, IRIX dari SGI, EulerOS [6] dari Huawei, Mac OS X dari Apple (sejak 10.5 Leopard), Solaris dan QNX Neutrino dari Oracle, Inspur's K-UX [11], dan OS INTEGRITY masa nyata dari Perisian Green Hills [15]. Pada masa ini tidak jelas apakah versi baru ketiga pengganti Solaris, OpenSolaris, Illumos, dan OpenIndiana, juga diklasifikasikan sebagai patuh sepenuhnya POSIX. Sistem operasi ini mematuhi POSIX sehingga POSIX 2001.

Sistem operasi lain yang dilihat kebanyakannya (tetapi tidak sepenuhnya) mematuhi POSIX termasuk Android, BeOS, FreeBSD, Haiku, Linux (lihat di bawah), dan VMWare ESXi. Untuk Microsoft Windows, Cygwin menyediakan persekitaran pembangunan dan jangka masa yang mematuhi POSIX.

Adakah Linux Sesuai dengan POSIX?

Istilah Linux merujuk kepada keseluruhan sistem operasi Linux, tanpa mempedulikan rasa, seperti Debian GNU / Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora, dan CentOS, misalnya. Tepatnya, Linux hanyalah nama kernel yang merupakan komponen inti dari sistem operasi percuma ini.

Seperti yang dijelaskan Linus Torvalds dalam buku Just For Fun [8], untuk mengembangkan kernel Linux, dia meminta salinan standard POSIX. Ini membantunya untuk menerapkan mekanisme yang sama yang digunakan dalam sistem UNIX komersial. Selanjutnya, ini membolehkannya menghubungkan kernel Linux dengan alat GNU yang terutama mengikuti pendekatan yang sama. Agar adil, perisian pada sistem Linux disumbangkan dari pelbagai sumber yang mematuhi standard POSIX, tetapi kadang-kadang juga menerapkan konsep mereka sendiri. Namun, pada saat yang sama, ini juga menunjukkan kepelbagaian yang menjadikan Linux sebagai sistem operasi.

Salah satu contohnya ialah cara penulisan argumen baris perintah. Hujah dengan dua tanda hubung (mis., –Help) adalah konvensyen GNU, sedangkan perintah POSIX tidak pernah menggunakan argumen dua titik tetapi sebaliknya hanya satu (mis., -Help). Sejak awal, Linux dirancang dengan mempertimbangkan GNU, dan itulah sebabnya perintah tersebut mengandungi gaya GNU

hujah. Untuk mencapai kepatuhan POSIX, argumen gaya POSIX telah ditambahkan langkah demi langkah. Namun, keputusan akhir dibuat oleh pemaju. Mulai hari ini, kebanyakan perintah menerima argumen pendek dan panjang, atau bahkan argumen tanpa tanda hubung, seperti perintah mencari, misalnya. Untuk bersikap adil, tidak ada konsistensi antara perintah pada satu sistem, dan ini dapat menjadi masalah ketika Anda berniat menggunakan perintah yang sama pada sistem berbasis UNIX yang berbeda, terutama ketika beralih antara Linux, OS X, dan Solaris.

Buat masa ini, Linux tidak diperakui POSIX kerana kos yang tinggi, kecuali untuk dua edaran Linux komersial Inspur K-UX [12] dan Huawei EulerOS [6]. Sebaliknya, Linux dilihat sebagai sebahagian besarnya mematuhi POSIX.

Penilaian ini disebabkan oleh fakta bahawa pengedaran Linux utama mengikuti Pangkalan Standard Linux (LSB) dan bukannya POSIX [9]. LSB bertujuan untuk meminimumkan perbezaan antara pengedaran Linux individu [14]. Ini merujuk pada struktur sistem perisian, termasuk Filesystem Hierarchy Standard (FHS) yang digunakan dalam kernel Linux. LSB didasarkan pada spesifikasi POSIX, Spesifikasi Tunggal UNIX (SUS) [10], dan beberapa standard terbuka yang lain, tetapi juga memperluasnya di kawasan tertentu.

Pengedaran Linux berdasarkan LSB termasuk RedHat Linux, Debian GNU / Linux (2002-2015), dan Ubuntu (hingga 2015), untuk beberapa nama.

Membangunkan dengan mempertimbangkan POSIX

Untuk memahami POSIX dengan lebih terperinci, kami mengesyorkan mendapatkan salinan standard POSIX dan membacanya secara lengkap. Anda boleh mendapatkan buku dari laman web Kumpulan Terbuka. Ini memerlukan bayaran pendaftaran tetapi memberi anda akses penuh ke sumber berharga ini. Piawaian membantu kerana membolehkan anda mengembangkan perisian sedemikian rupa sehingga berperilaku dengan cara yang sama di semua platform UNIX.

Pautan dan Rujukan

Terima kasih

Penulis ingin mengucapkan terima kasih kepada Axel Beckert dan Veit Schiele atas bantuan dan nasihat mereka semasa menyiapkan artikel ini.