Apa itu POSIX? Saya telah membaca artikel Wikipedia dan saya membacanya setiap kali saya menemukan istilah itu. Faktanya adalah saya tidak pernah benar-benar mengerti apa itu.
Adakah yang bisa menjelaskannya kepada saya dengan menjelaskan "perlunya POSIX" juga?
linux
unix
posix
terminology
cakar
sumber
sumber
Jawaban:
POSIX adalah keluarga standar, yang ditentukan oleh IEEE , untuk mengklarifikasi dan membuat seragam antarmuka pemrograman aplikasi (dan masalah tambahan, seperti utilitas shell commandline) yang disediakan oleh sistem operasi Unix-y. Ketika Anda menulis program Anda untuk bergantung pada standar POSIX, Anda bisa yakin untuk dapat port mereka dengan mudah di antara keluarga besar turunan Unix (termasuk Linux, tetapi tidak terbatas pada itu!); jika dan ketika Anda menggunakan beberapa Linux API yang tidak terstandarisasi sebagai bagian dari Posix, Anda akan mengalami kesulitan jika dan ketika Anda ingin port program atau pustaka itu ke sistem Unix-y lain (misalnya, MacOSX) di masa depan.
sumber
Microsoft's market share on desktops, at least, makes it "what the world follows"
- Menarik untuk dicatat berapa banyak hal telah berubah sejak komentar ini dari tahun 2009 :)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 menerapkan tertentu POSIX C fungsi API 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
.Mayor Linux pelaksanaan desktop yang: 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.Tetapi POSIX tampaknya tidak menentukan
128 + SIGNAL_ID
aturan yang digunakan oleh Bash: /unix/99112/default-exit-code-when-process-is-terminatedEkspresi reguler
Ada dua jenis: BRE (Basic) dan ERE (Extended). 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: apa kepatuhan posix untuk sistem file?
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: Apakah ada standar untuk saklar dan argumen baris perintah Linux?
"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 2016 API mirip Linux resmi baru bernama "Windows Subsystem untuk 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 berfokus 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 yang terkenal untuk itu "menyediakan fungsionalitas POSIX API substansial" untuk Windows, tetapi mengharuskan Anda "membangun kembali aplikasi Anda dari sumber jika Anda ingin dijalankan 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: Apakah Android POSIX-kompatibel?
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 dipahami: Di manakah daftar fungsi API POSIX C?
sumber
POSIX adalah:
Pada dasarnya itu adalah serangkaian langkah-langkah untuk meringankan rasa sakit pengembangan dan penggunaan rasa UNIX yang berbeda dengan memiliki (kebanyakan) API dan utilitas umum. Kepatuhan POSIX terbatas juga diperluas ke berbagai versi Windows.
sumber
Biarkan saya memberikan penjelasan "tidak resmi" churlish.
POSIX adalah seperangkat standar yang berusaha membedakan sistem "UNIX" dan UNIX dari yang tidak kompatibel dengannya. Itu dibuat oleh pemerintah AS untuk keperluan pengadaan. Idenya adalah bahwa pengadaan federal AS membutuhkan cara untuk secara legal menentukan persyaratan untuk berbagai jenis penawaran dan kontrak dengan cara yang dapat digunakan untuk mengecualikan sistem yang basis kode atau staf program yang ada TIDAK akan portabel.
Karena POSIX dituliskan post facto ... untuk mendeskripsikan serangkaian sistem persaingan yang mirip ... itu TIDAK ditulis dengan cara yang dapat diimplementasikan.
Jadi, misalnya, Microsoft NT ditulis dengan kesesuaian POSIX yang cukup untuk memenuhi syarat untuk beberapa tawaran ... meskipun subsistem POSIX pada dasarnya tidak berguna dalam hal portabilitas praktis dan kompatibilitas dengan sistem UNIX.
Berbagai standar lain untuk UNIX telah ditulis selama beberapa dekade. Hal-hal seperti SPEC1170 (sebelas ratus tujuh puluh panggilan fungsi tertentu yang harus diterapkan secara kompatibel) dan berbagai inkarnasi dari SUS (Spesifikasi UNIX Tunggal).
Sebagian besar "standar" ini tidak memadai untuk aplikasi teknis praktis apa pun. Mereka paling ada untuk argumentasi, perselisihan hukum dan alasan disfungsional lainnya.
sumber
POSIX adalah standar untuk sistem operasi yang seharusnya membuatnya lebih mudah untuk menulis perangkat lunak lintas platform. Ini merupakan masalah besar di dunia Unix.
sumber
POSIX adalah seperangkat standar yang diajukan oleh IEEE dan The Open Group yang menjelaskan bagaimana Unix yang ideal akan beroperasi. Pemrogram, pengguna, dan administrator semua dapat mengenal dokumen POSIX, dan mengharapkan Unix pengaduan POSIX untuk menyediakan semua fasilitas standar yang disebutkan.
Karena setiap Unix melakukan hal-hal yang sedikit berbeda - Solaris, Mac OS X, IRIX, BSD, dan Linux semuanya memiliki keanehan mereka - POSIX sangat berguna bagi mereka yang ada di industri karena ia mendefinisikan lingkungan standar untuk beroperasi. Misalnya, sebagian besar fungsi di pustaka C berbasis di POSIX; seorang programmer dapat, karenanya, menggunakan satu dalam aplikasinya dan mengharapkannya berperilaku sama di sebagian besar Unices.
Namun, area yang berbeda dari Unix biasanya fokus, bukan yang standar.
Hal terbaik dari POSIX adalah Anda dapat membacanya sendiri:
Edisi 7 dikenal sebagai POSIX.1-2008, dan ada hal-hal baru di sana - namun, Google-fu untuk POSIX.1 dan semacamnya akan memungkinkan Anda untuk melihat seluruh sejarah di balik apa itu Unix.
sumber
Dari buku: Panduan Praktis Untuk Linux
sumber
Posix lebih sebagai OS, itu adalah "standar OS". Anda dapat membayangkannya sebagai OS imajiner, yang sebenarnya tidak ada, tetapi memiliki dokumentasi. Makalah ini adalah "standar posix", yang didefinisikan oleh IEEE, yang merupakan organisasi standar besar di Amerika Serikat. OS yang menerapkan spesifikasi ini adalah "Sesuai dengan persyaratan POSIX".
Peraturan pemerintah lebih suka solusi yang sesuai dengan Posix dalam investasi mereka, sehingga menjadi yang sesuai dengan Posix memiliki keuntungan finansial yang signifikan, terutama untuk perusahaan IT besar di AS.
Hadiah untuk OS yang sepenuhnya memenuhi persyaratan POSIX, itu adalah jaminan bahwa ia akan mengkompilasi dan menjalankan semua aplikasi yang sesuai dengan POSIX dengan mulus.
Linux adalah yang paling terkenal. OSX, Solaris, NetBSD dan Windows NT juga bermain di sini. Free- dan OpenBSD hanya "hampir" sesuai dengan Posix. Kepatuhan positif WinNT hanyalah solusi palsu untuk menghindari peraturan pemerintah ini di atas.
sumber
Standar ini memberikan dasar umum untuk sistem operasi mirip Unix. Ini menentukan bagaimana shell harus bekerja, apa yang diharapkan dari perintah seperti ls dan grep, dan sejumlah perpustakaan C yang penulis C harapkan telah tersedia.
Misalnya, pipa yang digunakan pengguna baris perintah untuk merangkai perintah ditentukan secara rinci di sini, yang berarti fungsi popen (pipa terbuka) adalah standar-POSIX, bukan standar ISO-C.
sumber
POSIX adalah singkatan dari Portable Operating System Interface, dan merupakan standar IEEE yang dirancang untuk memfasilitasi portabilitas aplikasi. POSIX adalah upaya oleh konsorsium vendor untuk membuat versi standar UNIX.
sumber
POSIX mendefinisikan serangkaian standar untuk sistem operasi atau program. Tujuannya adalah untuk menulis perangkat lunak baru yang kompatibel dengan sistem mirip UNIX.
Misalnya program yang berjalan di Linux juga dapat mengkompilasi dan dijalankan pada sistem seperti UNIX lain seperti Solaris, HP-UX, dan AIX dll.
Contoh paling populer
GNU Bash
adalah 100% kepatuhan dangawk
utilitas POSIX .sumber
Posix mengatur interoperabilitas, portabilitas, dan di area lain seperti penggunaan dan mekanisme fork, perizinan
dan standar sistem file seperti / etc, / var, / usr dan sebagainya. Oleh karena itu, ketika pengembang menulis sebuah program di bawah sistem yang sesuai dengan Posix seperti misalnya Linux, umumnya, tidak selalu, dijamin untuk berjalan pada sistem yang sesuai dengan posix lainnya seperti sistem AIX IBM atau varian komersial Unix lainnya. Posix adalah hal yang baik untuk dimiliki sehingga memudahkan pengembangan perangkat lunak untuk portabilitas maksimum yang diupayakan. Semoga jawaban ini masuk akal.Terima kasih kepada Jed Smith & Tinkertim karena menunjukkan kesalahan saya - kesalahan saya !!! :(
sumber
Spesifikasi (cetak biru) tentang cara membuat OS yang kompatibel dengan OS UNIX terlambat (semoga Tuhan memberkatinya!). Inilah sebabnya mengapa macOS dan GNU / Linux memiliki baris perintah terminal yang sangat mirip, GUI, perpustakaan, dll. Karena keduanya dirancang sesuai dengan cetak biru POSIX.
POSIX tidak memberi tahu insinyur dan pemrogram bagaimana cara membuat kode tetapi apa yang harus dikodekan.
sumber
Beberapa fakta tentang POSIX yang tidak begitu cerah.
POSIX juga merupakan antarmuka panggilan sistem atau API, dan sudah hampir 30 tahun.
Itu dirancang untuk akses data serial ke penyimpanan lokal , menggunakan komputer tunggal dengan CPU tunggal.
Keamanan bukanlah masalah utama dalam desain POSIX, yang mengarah ke berbagai serangan kondisi ras selama bertahun-tahun dan memaksa programmer untuk mengatasi keterbatasan ini.
Bug serius masih ditemukan, bug yang bisa dihindari dengan desain API POSIX yang lebih aman.
POSIX mengharapkan pengguna untuk mengeluarkan satu panggilan sinkron pada satu waktu dan menunggu hasilnya sebelum mengeluarkan yang berikutnya. Pemrogram hari ini berharap untuk mengeluarkan banyak permintaan tidak sinkron sekaligus untuk meningkatkan throughput keseluruhan.
API sinkron ini sangat buruk untuk mengakses objek jarak jauh dan cloud, di mana masalah latensi tinggi.
sumber