Apakah Linux POSIX-Compliant?

Is Linux Posix Compliant



Perangkat lunak ditulis oleh banyak pengembang dengan berbagai latar belakang. Algoritme umum tersedia di bawah lisensi gratis atau telah dipublikasikan secara ilmiah, dan mungkin juga tersedia secara gratis untuk tujuan pembelajaran. Ini menghasilkan implementasi yang berbeda dan versi perangkat lunak yang sesuai dengan berbagai kebutuhan. Standarisasi antarmuka dan format data diperlukan untuk membuat implementasi yang berbeda ini dapat dipertukarkan dan modular.

Singkatnya, POSIX [1] melakukan hal itu untuk UNIX dan sistem mirip UNIX (lihat artikel Zak H [4] untuk sejarah yang lebih rinci tentang topik ini). Ini mendefinisikan antarmuka pertukaran, mekanisme panggilan, dan data yang ditransfer untuk perangkat lunak tetapi meninggalkan implementasi internal ke pengembang atau pengelola perangkat lunak. Tujuannya adalah untuk menyatukan semua garpu UNIX dan sistem mirip UNIX sedemikian rupa sehingga implementasi perangkat lunak yang berbeda dapat berinteraksi satu sama lain. Keuntungan utama POSIX adalah memiliki dokumentasi yang mengikat untuk komponen ini – antarmuka, mekanisme, dan data – tersedia dalam bentuk tertulis.







Sistem operasi yang mengikuti standar POSIX secara keseluruhan diklasifikasikan sebagai sesuai dengan POSIX. Dalam artikel ini, kami menjelaskan singkatan dari POSIX, menentukan apakah Linux termasuk dalam kategori ini, dan mencantumkan komponen Linux mana yang harus dikecualikan dari klasifikasi ini.



Apa Arti Istilah POSIX?

POSIX adalah singkatan dari Portable Operating System Interface. Seperti yang dijelaskan secara singkat di atas, POSIX adalah nama untuk kumpulan standar yang diperlukan untuk menjaga kompatibilitas antar sistem operasi. Sebagaimana dinyatakan dalam [1], [itu] mendefinisikan antarmuka pemrograman aplikasi (API), bersama dengan shell baris perintah dan antarmuka utilitas, untuk kompatibilitas perangkat lunak dengan varian Unix dan sistem operasi lainnya. Versi pertama POSIX diterbitkan pada tahun 1988. Sejak itu, POSIX terus diperluas dan diperbarui oleh Grup Revisi Standar Umum Austin (juga dikenal sebagai Grup Austin) [7].



Pada tahun 2021, standar POSIX berisi bagian-bagian berikut:





  1. Layanan utama (Menggabungkan Standar ANSI C) (IEEE std 1003.1-1988) – Pembuatan dan Kontrol Proses, Sinyal, Operasi File dan Direktori, Pipa, pustaka C, Antarmuka dan Kontrol Port I/O, Pemicu Proses
  1. Ekstensi (Tautan Simbolik)
  2. Ekstensi waktu nyata dan I/O (IEEE Std 1003.1b-1993) – Penjadwalan Prioritas, Sinyal Real-Time, Jam dan Timer, Semaphore, Message Passing, Memori Bersama, I/O Asinkron dan Sinkron, Antarmuka Penguncian Memori
  3. Ekstensi utas (IEEE Std 1003.1c-1995) – Pembuatan Thread, Kontrol, dan Pembersihan, Penjadwalan Thread, Sinkronisasi Thread, Penanganan Sinyal
  4. Lebih banyak ekstensi waktu nyata
  5. Ekstensi keamanan (Daftar kontrol akses)
  1. Shell dan Utilitas (IEEE Std 1003.2-1992) – Penerjemah Perintah, Program Utilitas

Standar ini ditinjau secara berkala untuk mencerminkan perubahan dan peningkatan teknis. Kadang-kadang dapat memakan waktu beberapa tahun sebelum versi baru diterbitkan dan perubahan dimasukkan. Hal ini dapat merugikan, tetapi dapat dimengerti mengingat ruang lingkup standar.

Dalam beberapa tahun terakhir, ekstensi untuk pemrosesan waktu nyata telah ditambahkan. Versi saat ini dirilis pada awal 2018 [3]. Penulis SibylFS [5] juga telah menerbitkan banyak anotasi pada standar POSIX untuk menentukan logika dan interaksi tingkat tinggi.



Apa Artinya Menjadi Sesuai POSIX?

Istilah POSIX-compliant berarti bahwa sistem operasi memenuhi semua kriteria POSIX. Sistem operasi dapat menjalankan program UNIX secara native, atau aplikasi dapat dipindahkan dari sistem UNIX ke sistem lain. Port aplikasi dari UNIX ke sistem operasi target mudah, atau setidaknya lebih mudah, daripada jika tidak mendukung POSIX. Agar aman, sistem operasi harus berhasil mencapai sertifikasi POSIX [2]. Langkah ini dicapai (dengan biaya) dengan lulus uji sertifikasi otomatis. Test suite yang sesuai dapat ditemukan di sini [11].

Pada tahun 2021, daftar sistem operasi bersertifikasi POSIX berisi 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, K-UX Inspur [11], dan INTEGRITAS OS real-time dari Green Hills Software [15]. Saat ini tidak jelas apakah versi yang lebih baru dari tiga penerus Solaris, OpenSolaris, Illumos, dan OpenIndiana, juga diklasifikasikan sebagai sepenuhnya sesuai dengan POSIX. Sistem operasi ini sesuai dengan POSIX hingga POSIX 2001.

Sistem operasi lain yang sebagian besar (tetapi tidak sepenuhnya) sesuai dengan POSIX termasuk Android, BeOS, FreeBSD, Haiku, Linux (lihat di bawah), dan VMWare ESXi. Untuk Microsoft Windows, Cygwin menyediakan lingkungan pengembangan dan run-time yang sebagian besar sesuai dengan POSIX.

Apakah Linux POSIX-Compliant?

Istilah Linux mengacu pada keseluruhan sistem operasi Linux, apa pun rasanya, seperti Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora, dan CentOS, misalnya. Lebih tepatnya, Linux hanyalah nama kernel yang merupakan komponen inti dari sistem operasi gratis ini.

Seperti yang dijelaskan Linus Torvalds dalam buku Just For Fun [8], untuk mengembangkan kernel Linux, ia meminta salinan standar POSIX. Ini membantunya untuk mengimplementasikan mekanisme yang sama yang digunakan dalam sistem UNIX komersial. Lebih jauh lagi, ini memungkinkan dia untuk menghubungkan kernel Linux dengan alat-alat GNU yang sebagian besar mengikuti pendekatan yang sama. Agar adil, perangkat lunak pada sistem Linux disumbangkan dari berbagai sumber yang menghormati standar POSIX, tetapi terkadang juga mengimplementasikan konsep mereka sendiri. Namun, pada saat yang sama, ini juga menunjukkan keragaman yang membentuk Linux sebagai sistem operasi.

Salah satu contohnya adalah cara penulisan argumen baris perintah. Argumen dengan dua tanda hubung (misalnya, –help) adalah konvensi GNU, sedangkan perintah POSIX tidak pernah menggunakan argumen dua tanda hubung melainkan hanya satu (misalnya, -help). Sejak awal, Linux dirancang dengan mempertimbangkan GNU, dan itulah sebabnya perintahnya mengandung gaya GNU

argumen. Untuk mencapai kepatuhan POSIX, argumen gaya POSIX telah ditambahkan langkah demi langkah. Namun, keputusan akhir dibuat oleh pengembang. Sampai hari ini, sebagian besar perintah menerima argumen pendek dan panjang, atau bahkan argumen tanpa tanda hubung, seperti perintah find, misalnya. Agar adil, tidak ada konsistensi antara perintah pada satu sistem, dan ini bisa menjadi masalah ketika Anda bermaksud menggunakan perintah yang sama pada sistem berbasis UNIX yang berbeda, terutama ketika beralih antara Linux, OS X, dan Solaris.

Untuk saat ini, Linux tidak bersertifikasi POSIX karena biayanya yang tinggi, kecuali untuk dua distribusi Linux komersial Inspur K-UX [12] dan Huawei EulerOS [6]. Sebaliknya, Linux dipandang sebagian besar sesuai dengan POSIX.

Penilaian ini disebabkan oleh fakta bahwa distribusi Linux utama mengikuti Basis Standar Linux (LSB) bukan POSIX [9]. LSB bertujuan untuk meminimalkan perbedaan antara masing-masing distribusi Linux [14]. Ini mengacu pada struktur sistem perangkat lunak, termasuk Filesystem Hierarchy Standard (FHS) yang digunakan di kernel Linux. LSB didasarkan pada spesifikasi POSIX, Spesifikasi UNIX Tunggal (SUS) [10], dan beberapa standar terbuka lainnya, tetapi juga memperluasnya di area tertentu.

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

Berkembang dengan mempertimbangkan POSIX

Untuk memahami POSIX secara lebih rinci, kami sarankan untuk mendapatkan salinan standar POSIX dan membacanya secara lengkap. Anda bisa mendapatkan buku dari situs web Open Group. Ini memerlukan biaya pendaftaran tetapi memberi Anda akses penuh ke sumber daya yang berharga ini. Standar membantu karena memungkinkan Anda untuk mengembangkan perangkat lunak sedemikian rupa sehingga berperilaku dengan cara yang sama pada semua platform UNIX.

Tautan dan Referensi

Terima kasih

Penulis ingin mengucapkan terima kasih kepada Axel Beckert dan Veit Schiele atas bantuan dan saran mereka selama mempersiapkan artikel ini.