Saya melihat POSIX sering disebutkan dan di mana-mana, dan saya menganggapnya sebagai standar UNIX standar .. sampai saya perhatikan kutipan berikut pada halaman Wikipedia: Grup Terbuka
Open Group paling terkenal sebagai badan sertifikasi untuk merek dagang UNIX, dan penerbitan standar teknis Spesifikasi Tunggal UNIX , yang memperluas standar POSIX dan merupakan definisi resmi sistem UNIX .
Jika definisi resmi sistem UNIX adalah perpanjangan dari POSIX, lalu apa sebenarnya POSIX? ,,, Ini sepertinya menjadi batu ujian bagi dunia UNIX, tapi saya tidak tahu bagaimana itu cocok dengan gambaran keseluruhan.
Jawaban:
POSIX pertama adalah standar pada tahun 1988 jauh sebelum Spesifikasi UNIX Tunggal. Itu adalah salah satu upaya menyatukan semua garpu UNIX dan sistem seperti UNIX. POSIX adalah Standar IEEE, tetapi karena IEEE tidak memiliki merek dagang UNIX®, standarnya bukanlah UNIX® meskipun didasarkan pada API UNIX yang ada saat itu. Standar pertama POSIX.1 secara resmi dikenal sebagai IEEE std 1003.1-1988. [ 1 ] IEEE membebankan biaya besar untuk mendapatkan salinan standar.
Open Group merilis Spesifikasi Tunggal UNIX (SUSv2) pada tahun 1997 berdasarkan karya IEEE dari standar POSIX. SUSv3 dirilis pada tahun 2001 dari kelompok kerja bersama antara IEEE dan Grup Terbuka yang dikenal sebagai Grup Austin. SUSv3 juga dikenal sebagai POSIX: 2001 [ 2 ]. Sekarang ada juga POSIX: 2004 dan POSIX: 2008 yang merupakan inti dari SUSv4. Mengenai UNIX®, UNIX® adalah apa pun yang dikatakan oleh pemegang merek dagang terdaftar saat ini. Sejak 1994, itulah The Open Group.
Novell memperoleh bisnis sistem UNIX® dari AT&T / USL yang merupakan tempat kelahiran UNIX®. Pada tahun 1994, mereka menjual hak atas merek dagang UNIX® kepada X / Open [ 3 ] yang sekarang dikenal sebagai Grup Terbuka. Mereka kemudian menjual kode sumber UNIX® ke SCO sebagai UNIXWARE®. [ 3 ] UNIX® sendiri telah berkali-kali bercabang [ 4 ] [ 5 ] sebagian karena model lisensi AT&T. Membeli UNIX® memberi Anda sumber lengkap sistem operasi dan rantai alat lengkap untuk membangunnya. Modifikasi ke sumber dapat didistribusikan dan digunakan oleh siapa saja yang memiliki lisensi untuk UNIX® dari AT&T. Biaya lisensi mencapai ribuan.
BSD adalah proyek di Berkeley yang menambahkan sejumlah perangkat tambahan ke sistem operasi UNIX®. Kode BSD dirilis di bawah lisensi yang jauh lebih liberal daripada sumber AT&T dan tidak memerlukan biaya lisensi atau bahkan persyaratan untuk didistribusikan dengan sumber, tidak seperti GPL yang digunakan oleh Proyek GNU dan Linux. Ini telah menyebabkan sebagian besar kode BSD disertakan dengan berbagai garpu UNIX komersial. Sekitar 4.3BSD, mereka hampir mengganti semua kebutuhan untuk kode sumber AT&T UNIX® asli. FreeBSD / NetBSD / OpenBSD adalah semua garpu dari 4.3BSD yang merupakan sistem operasi lengkap dan tidak memiliki kode sumber AT&T asli. Mereka juga tidak memiliki hak atas merek dagang UNIX®, tetapi sebagian besar kode mereka digunakan oleh sistem operasi UNIX komersial.
Linux dikembangkan pada tahun 1991, tetapi dikembangkan dari awal tidak seperti BSD dan menggunakan Proyek GNU yang ada yang merupakan implementasi ruang bersih dari banyak ruang pengguna UNIX. Ini mengimplementasikan banyak POSIX untuk kompatibilitas dan mirip dengan UNIX dalam desain, tetapi tidak memiliki koneksi dekat dengan AT&T atau UNIX® yang dimiliki oleh BSD.
sumber
Hal terpenting yang didefinisikan POSIX 7
API C
Sangat memperluas ANSI C dengan hal-hal seperti:
mkdir
,dirname
,symlink
,readlink
,link
(hardlinks),poll()
,stat
,sync
,nftw()
fork
,execl
,wait
,pipe
, semaphorssem_*
, memori bersama (shm_*
),kill
, parameter penjadwalan (nice
,sched_*
),sleep
,mkfifo
,setpgid()
socket()
mmap
,mlock
,mprotect
,madvise
,brk()
reg*
)API tersebut juga menentukan konsep sistem yang mendasari di mana mereka bergantung, misalnya
fork
membutuhkan konsep proses.Banyak panggilan sistem Linux ada untuk melaksanakan fungsi API POSIX C tertentu dan membuat Linux compliant, misalnya
sys_write
,sys_read
... Banyak dari mereka syscalls juga memiliki ekstensi Linux-spesifik namun.Implementasi desktop utama Linux: glibc, yang dalam banyak kasus hanya menyediakan pembungkus dangkal untuk panggilan sistem.
Utilitas CLI
Misalnya:
cd
,ls
,echo
, ...Banyak utilitas adalah ujung depan shell langsung untuk fungsi API C yang sesuai, misalnya
mkdir
.Implementasi besar desktop Linux: GNU Coreutils untuk yang kecil, proyek GNU terpisah untuk orang-orang besar:
sed
,grep
,awk
, ... Beberapa utilitas CLI dilaksanakan oleh Bash sebagai built-in .Bahasa shell
Misalnya,
a=b; echo "$a"
Implementasi desktop utama Linux: GNU Bash .
Variabel lingkungan
Misalnya:
HOME
,PATH
.PATH
semantik pencarian ditentukan , termasuk bagaimana garis miring mencegahPATH
pencarian .Status keluar program
ANSI C mengatakan
0
atauEXIT_SUCCESS
untuk kesuksesan,EXIT_FAILURE
untuk kegagalan, dan membiarkan implementasi sisanya didefinisikan.POSIX menambahkan:
126
: perintah ditemukan tetapi tidak dapat dieksekusi.127
: perintah tidak ditemukan.> 128
: diakhiri oleh sinyal.Tapi POSIX tampaknya tidak menentukan
128 + SIGNAL_ID
aturan yang digunakan oleh Bash: Kode keluar default saat proses dihentikan?Ekspresi reguler
Ada dua jenis: BRE (Dasar) dan ERE (Diperpanjang). Dasar sudah usang dan hanya disimpan agar tidak merusak API.
Itu diimplementasikan oleh fungsi C API, dan digunakan di seluruh utilitas CLI, mis.
grep
Menerima BRE secara default, dan ERE dengan-E
.Misalnya:
echo 'a.1' | grep -E 'a.[[:digit:]]'
Implementasi Linux utama: glibc mengimplementasikan fungsi-fungsi di bawah regex.h yang mana program suka
grep
gunakan sebagai backend.Struktur direktori
Misalnya:
/dev/null
,/tmp
Linux FHS sangat memperluas POSIX.
Nama file
/
adalah pemisah jalurNUL
tidak dapat digunakan.
adalahcwd
,..
orang tuaa-zA-Z0-9._-
Lihat juga: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
Konvensi API utilitas baris perintah
Tidak wajib, digunakan oleh POSIX, tetapi hampir tidak ada di tempat lain, terutama di GNU. Tapi benar, itu terlalu ketat, misalnya hanya bendera huruf tunggal (mis.
-a
), Tidak ada versi panjang tanda hubung ganda (mis--all
.).Beberapa konvensi yang banyak digunakan:
-
berarti stdin tempat file diharapkan--
mengakhiri flags, misalnyals -- -l
untuk daftar direktori bernama-l
Lihat juga: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments
"POSIX ACLs" (Daftar Kontrol Akses), misalnya seperti yang digunakan sebagai backend untuk
setfacl
.Ini telah ditarik tetapi diimplementasikan di beberapa OS, termasuk di Linux dengan Linux
setxattr
.Siapa yang sesuai dengan POSIX?
Banyak sistem mengikuti POSIX dengan seksama, tetapi hanya sedikit yang benar-benar disertifikasi oleh Grup Terbuka yang mempertahankan standar. Yang tersertifikasi termasuk:
Kebanyakan distro Linux sangat patuh, tetapi tidak bersertifikat karena mereka tidak ingin membayar cek kepatuhan. K-UX Inspur dan Huawei EulerOS adalah dua contoh yang disertifikasi.
Daftar resmi sistem bersertifikat dapat ditemukan di: https://www.opengroup.org/openbrand/register/ dan juga di halaman wiki .
Windows
Windows menerapkan POSIX pada beberapa distribusi profesionalnya.
Karena ini adalah fitur opsional, pemrogram tidak dapat mengandalkannya untuk sebagian besar aplikasi pengguna akhir.
Dukungan sudah tidak digunakan lagi di Windows 8:
Pada tahun 2016, sebuah API mirip Linux resmi yang disebut "Windows Subsystem for Linux" diumumkan. Ini termasuk panggilan sistem Linux, ELF berjalan, bagian dari
/proc
filesystem, Bash, GCC, (TODO kemungkinan glibc?),apt-get
Dan banyak lagi: https://channel9.msdn.com/Events/Build/2016/P488 jadi saya percaya itu akan memungkinkan Windows untuk menjalankan banyak, jika tidak semua, POSIX. Namun, ini difokuskan pada pengembang / penyebaran bukan pengguna akhir. Secara khusus, tidak ada rencana untuk mengizinkan akses ke GUI Windows.Tinjauan historis kompatibilitas Microsoft POSIX resmi: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwin adalah proyek pihak ketiga GPL terkenal untuk itu "menyediakan fungsionalitas POSIX API substansial" untuk Windows, tetapi mengharuskan Anda "membangun kembali aplikasi Anda dari sumber jika Anda ingin itu berjalan pada Windows". MSYS2 adalah proyek terkait yang tampaknya menambahkan lebih banyak fungsi di atas Cygwin.
Android
Android memiliki perpustakaan C sendiri (Bionic) yang tidak sepenuhnya mendukung POSIX pada Android O: https://stackoverflow.com/questions/27604455/is-android-posix-compatible
Tingkat bonus
The Linux Standard Base lebih lanjut memperluas POSIX.
Gunakan indeks non-frame, mereka jauh lebih mudah dibaca dan dicari: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Dapatkan versi penuh zip dari halaman HTML untuk memahami: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939
sumber
POSIX adalah standar Sistem Operasi Portabel. Ini menjelaskan utilitas, API, dan layanan tertentu yang harus disediakan oleh sistem operasi yang sesuai untuk perangkat lunak (misalnya soket, file I / O dan threading) bersama dengan konvensi tentang bagaimana ini harus dipanggil dari suatu program.
Idenya adalah bahwa sebuah program yang ditulis untuk satu OS yang Memenuhi Syarat POSIX akan lebih mudah untuk port ke OS yang sesuai dengan POSIX daripada melakukan porting antara OS yang tidak sesuai dengan POSIX. Inilah sebabnya mengapa lebih mudah untuk mem-port aplikasi dari, katakanlah, FreeBSD ke Linux daripada port dari FreeBSD ke Windows (meskipun Windows seolah-olah mendukung subset POSIX.)
sumber
POSIX adalah subset dari UNIX yang dimaksudkan untuk mencakup berbagai lingkungan seperti Unix untuk sistem operasi lain; ini awalnya termasuk lingkungan seperti Eunice untuk VMS, kepribadian POSIX Windows NT, dan Apollo Domain / OS. Anda dapat menganggapnya sebagai API portabilitas standar untuk subset dari layanan sistem operasi yang perilakunya sama antara Unix dan non-Unix. Lihat http://standards.ieee.org/develop/wg/POSIX.html untuk informasi lebih lanjut.
sumber