POSIX tam olarak nedir?


139

POSIX’in sık sık ve her yerde bahsettiğini gördüm ve bunun temel UNIX standardı olduğunu varsaymıştım .. bir Wikipedia sayfasında aşağıdaki alıntıyı fark edene kadar: Açık Grup

Açık Grup sertifika UNIX ticari marka için vücut ve yayımı gibi en ünlü Tek UNIX Şartname teknik standart , POSIX standartları uzanır ve UNIX sisteminin resmi tanımıdır .

Bir UNIX sisteminin resmi tanımı POSIX'in bir uzantısıysa, tam olarak POSIX nedir? ,,, kesinlikle UNIX dünyasının bir mihenk taşı gibi görünüyor, ama genel resme nasıl uyduğunu bilmiyorum.


2
SUS, IEEE değil, Açık Grup'un UNIX ticari markasına sahip olması nedeniyle UNIX'in resmi tanımıdır. Aşağıda cevabımı gör.
penguin359


Yanıtlar:


125

POSIX ilk, 1988 yılında, Tek UNIX Spesifikasyonundan çok önce bir standarttır. Tüm UNIX çatallarını ve UNIX benzeri sistemleri birleştirme girişimlerinden biriydi. POSIX bir IEEE Standardıdır, ancak IEEE, UNIX® ticari markasına sahip olmadığı için, o sırada mevcut UNIX API'sına dayanmasına rağmen, standart UNIX® değildir. İlk standart POSIX.1 resmen IEEE std 1003.1-1988 olarak bilinir. [ 1 ] IEEE standardın bir kopyasını almak için önemli bir ücret talep etti.

Açık Grup, IEEE'nin POSIX standardı çalışmalarına dayanarak 1997 yılında Tek UNIX Spesifikasyonunu (SUSv2) yayınladı. SUSv3, 2001 yılında IEEE ile Austin Grubu olarak bilinen Açık Grup arasındaki ortak bir çalışma grubundan serbest bırakıldı. SUSv3, POSIX: 2001 [ 2 ] olarak da bilinir . Artık SUSv4'ün çekirdeği olan POSIX: 2004 ve POSIX: 2008 de var. UNIX® ne ise, UNIX® mevcut tescilli ticari marka sahibinin söylediği şeydir. 1994'ten beri Açık Grup'tur.

Novell, UNIX® sistemleri işini UNIX®'in doğduğu AT & T / USL'den satın aldı. 1994 yılında UNIX® ticari markasına X / Open [ 3 ] 'e artık Open Group adını verdiği hakkı sattılar . Daha sonra UNIX kaynak kodunu UNIXWARE® olarak SCO'ya sattılar. [ 3 ] UNIX® , AT & T'nin lisanslama modeli nedeniyle, birçok kez [ 4 ] [ 5 ] çatal kullandı . UNIX®'i satın almak size işletim sisteminin tam kaynağını ve onu inşa etmek için tam takım zincirini verdi. Kaynaktaki değişiklikler AT&T'den UNIX® lisansına sahip olan herkes tarafından dağıtılabilir ve kullanılabilir. Lisans ücreti binlercesindeydi.

BSD, Berkeley'de UNIX® işletim sistemine bir dizi yenilik ekleyen bir projedir. BSD kodu AT & T'nin kaynağından çok daha liberal bir lisans altında yayınlandı ve GNU Projesi ve Linux'un kullandığı GPL'nin aksine bir lisans ücreti veya hatta kaynakla dağıtılması gerekmedi. Bu, BSD kodunun iyi bir kısmının çeşitli ticari UNIX çatallarına dahil edilmesine neden olmuştur. Yaklaşık 4.3BSD'de, orijinal AT&T UNIX® kaynak koduna olan ihtiyacı neredeyse değiştirdiler. FreeBSD / NetBSD / OpenBSD, tam bir işletim sistemi olan ve orijinal AT&T kaynak kodunun hiçbirine sahip olmayan, 4.3BSD'nin çatallarıdır. UNIX® ticari markasına da sahip değiller, ancak kodlarının çoğu ticari UNIX işletim sistemleri tarafından kullanılıyor.

Linux 1991'de geliştirildi, ancak BSD'den farklı olarak sıfırdan geliştirildi ve UNIX kullanıcı alanının çoğunun temiz oda uygulaması olan mevcut GNU Projesini kullanıyor. Uyumluluk için pek çok POSIX uygular ve tasarımda UNIX benzeridir, ancak BSD'lerin sahip olduğu AT&T veya UNIX® ile yakın bir bağlantısı yoktur.


1
Harika bir cevap .. tüm (3) cevaplar iyiydi, ama bu oldukça bilgilendirici oldu (özellikle diğer 2 tarafından hazırlandıktan sonra); tam ihtiyacım olanı ... ve SUS hakkındaki yorum için (soru gövdesinin altında) teşekkür ederim, şimdi yeterince iyi anlıyorum, teşekkürler ... (ve sadece bir paragraf olduğunu fark etmedim ... ilginç :)
Peter.O

2
@Mikel inşallah benim düzenleme biraz yardımcı olur
penguin359

1
Bu harika bir cevap @ penguin359!
boehj

X'in ne anlama geldiği hakkında iyi bir fikri olan var mı? Unix ile bir ilişki belirtmek sadece bir ekse, küçük harf olmamalı mı?
Alex W

Mükemmel. Teşekkür ederim. Bu tarihin çoğunu hesaplamıştım, ama olayların nasıl gerçekleştiğinin "dedikodu" detayları üzerinde durduğum bir şey değildi. İzi görmek güzel.
Ken Ingram,

55

POSIX 7'nin tanımladığı en önemli şeyler

  1. C API

    Büyük ölçüde ANSI C uzanır gibi şeylerle:

    • daha fazla dosya işlemleri: mkdir, dirname, symlink, readlink, link(sabit bağlarının), poll(), stat, sync,nftw()
    • işlem ve iplik: fork, execl, wait, pipe, semaphors sem_*, paylaşılan hafıza ( shm_*), kill, zamanlama parametreleri ( nice, sched_*), sleep, mkfifo,setpgid()
    • ağ: socket()
    • bellek yönetimi: mmap, mlock, mprotect, madvise,brk()
    • yardımcı programlar: normal ifadeler ( reg*)

    Bu API'ler ayrıca dayandıkları temel sistem kavramlarını da belirler, örneğin forkbir süreç kavramı gerektirir.

    Birçok Linux sistem çağrıları örneğin belirli bir POSIX C API işlevi uygulamak ve Linux uyumlu hale getirmek için var sys_write, sys_read... o sistem çağrıları birçoğu da ancak Linux özgü uzantılara sahiptir.

    Başlıca Linux masaüstü uygulaması: birçok durumda sadece sistem çağrılarına sığ bir sarmalayıcı sağlayan glibc.

  2. CLI yardımcı programları

    Örn: cd, ls, echo, ...

    Birçok yardımcı program, karşılık gelen bir C API işlevi için doğrudan kabuk ön uçlarıdır, örn mkdir.

    Başlıca Linux masaüstü uygulaması: küçük olanlar için GNU coreutils, büyük olanlar için ayrı GNU projeleri: sed, grep, awk, ... Bazı CLI yardımcı programları Bash tarafından uygulanmaktadır yerleşik ins olarak .

  3. Kabuk dili

    Örneğin, a=b; echo "$a"

    Binbaşı Linux masaüstü uygulaması: GNU Bash .

  4. Ortam Değişkenleri

    Örn .: HOME, PATH.

    PATH eğik çizgilerin PATHaramayı nasıl önlediği de dahil olmak üzere, arama semantiği belirtilir .

  5. Program çıkış durumu

    ANSI C diyor ki 0ya da EXIT_SUCCESSbaşarı EXIT_FAILUREiçin, başarısızlık ve geri kalan uygulamayı tanımlanmış olarak bırakır.

    POSIX ekler:

  6. Düzenli ifade

    İki tür vardır: BRE (Temel) ve ERE (Genişletilmiş). Temel kullanımdan kaldırılmıştır ve yalnızca API'leri bozmamak için saklanır.

    Bunlar, C API işlevleri tarafından uygulanır ve CLI yardımcı programları boyunca kullanılır, örneğin grepvarsayılan olarak BRE'leri ve ERE'leri ile birlikte kabul eder -E.

    Örneğin: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Başlıca Linux uygulaması: glibc, regex.h altındaki işlevleri, hangi programların greparka uç olarak kullanabileceğini uygular .

  7. Dizin dikmesi

    Ör: /dev/null,/tmp

    Linux FHS, POSIX’i büyük ölçüde genişletmektedir.

  8. Dosya adları

    • / yol ayırıcı
    • NUL kullanılamaz
    • .olduğu cwd, ..ebeveyn
    • taşınabilir dosya isimleri
      • tam yol için en fazla 14 karakter ve 256
      • sadece şunları içerebilir: a-zA-Z0-9._-

    Ayrıca bakınız: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem

  9. Komut satırı yardımcı programı API kuralları

    Zorunlu değildir, POSIX tarafından kullanılır, ancak neredeyse hiçbir yerde, özellikle de GNU'da değil. Ancak doğrudur, çok kısıtlayıcıdır, örneğin sadece tek harf bayrakları (örneğin -a), çift kısa çizgi uzun versiyonları (örneğin --all) yoktur.

    Yaygın olarak kullanılan birkaç sözleşme:

    • - bir dosyanın beklendiği yerde stdin anlamına gelir
    • --bayrakları sonlandırır, örneğin ls -- -lbir dizini listelemek için-l

    Ayrıca bakınız: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments

  10. "POSIX ACL'ler" (Erişim Kontrol Listeleri), örneğin arka uç olarak kullanıldığı gibi setfacl.

    Bu geri çekildi ancak Linuxsetxattr dahil birçok işletim sisteminde uygulandı .

POSIX'e kimler uygundur?

Pek çok sistem POSIX'i yakından takip ediyor, ancak birkaçı standardı koruyan Open Group tarafından onaylandı. Önemli sertifikalı olanlar şunlardır:

Çoğu Linux dağıtımı çok uyumludur, ancak onay çeki ödemek istemedikleri için sertifikalandırılmamıştır. Inspur'un K-UX'i ve Huawei'nin EulerOS'u iki sertifikalı örnek.

Sertifikalı sistemlerin resmi listesi: https://www.opengroup.org/openbrand/register/ ve ayrıca wiki sayfasında bulunabilir .

pencereler

Windows, POSIX'i bazı profesyonel dağıtımlarına uyguladı.

İsteğe bağlı bir özellik olduğundan, programcılar çoğu son kullanıcı uygulamasında buna güvenemediler.

Windows 8'de destek kullanımdan kaldırıldı:

2016 yılında "Linux için Windows Alt Sistemi" adlı yeni bir Linux benzeri API tanıtıldı. Linux sistem çağrıları, ELF çalışan, parçalarını içeren /procdosya sistemi Bash, GCC, (? YAPILACAK olasılıkla glibc), apt-getve daha fazlası: https://channel9.msdn.com/Events/Build/2016/P488 ben inanıyorum bu yüzden Windows'un POSIX'in tümü olmasa da çok çalışmasına izin verecektir. Bununla birlikte, son kullanıcılar yerine geliştiricilere / konuşlandırmaya odaklanmıştır. Özellikle, Windows GUI'ye erişime izin verecek plan yoktu.

Resmi Microsoft POSIX uyumluluğu ile ilgili genel bakış: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin , Windows için "önemli POSIX API işlevselliği sağlar" için iyi bilinen bir GPL üçüncü taraf projesidir, ancak "Windows'ta çalışmasını istiyorsanız uygulamanızı kaynaktan yeniden kurmanızı" gerektirir. MSYS2 , Cygwin'in üstüne daha fazla işlevsellik katan bir projedir.

Android

Android, Android O'dan itibaren POSIX'i tam olarak desteklemeyen kendi C kitaplığına (Bionic) sahiptir: https://stackoverflow.com/questions/27604455/is-android-posix-compatible

Bonus seviyesi

Linux Standard Base ayrıca POSIX uzanır.

Kare olmayan dizinleri kullanın, çok daha okunaklı ve aranabilir: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Grepping için HTML sayfalarının tam sıkıştırılmış sürümünü edinin: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939


Soru POSIX ve
SUS'la ilgiliydi

1
@Kidburla, kendi cevabınızı eklemek ve bazı temsilciler almak için harika bir fırsat :-) (veya benimkiyle düzenleyiniz ve bana rep hehe veriniz)
Ciro Santilli


@ phuclv teşekkürler, cevabına bunu da ekledim.
Ciro Santilli,

16

POSIX, Taşınabilir İşletim Sistemi standardıdır. Bu, bir programdan nasıl çağrılmaları gerektiğine ilişkin sözleşmelerle birlikte yazılıma (örneğin soketler, dosya giriş / çıkış ve iş parçacığı) sağlaması gereken uyumlu bir işletim sisteminin belirli yardımcı programları, API'leri ve hizmetleri açıklar.

Buradaki fikir, bir POSIX Uyumlu işletim sistemi için yazılmış bir programın POSIX uyumlu olmayan işletim sistemleri arasında geçiş yapmaktan başka bir POSIX uyumlu işletim sistemine geçiş yapmasının daha kolay olacağı yönündedir. Bu nedenle, bir uygulamayı FreeBSD'den Linux'a taşımak, FreeBSD'den Windows'a taşımaktan çok daha kolaydır (Windows görünüşte bir POSIX alt kümesini desteklese de).


14

POSIX, diğer işletim sistemleri için çeşitli Unix benzeri ortamları kapsaması amaçlanan bir UNIX alt kümesidir; Bu başlangıçta VMS için Eunice, Windows NT'nin POSIX kimliği ve Apollo Domain / OS gibi ortamları içeriyordu. Unix ve Unix olmayanlar arasında davranışları ortak olan işletim sistemi hizmetlerinin alt kümesi için standart bir taşınabilirlik API olarak düşünebilirsiniz. Daha fazla bilgi için http://standards.ieee.org/develop/wg/POSIX.html adresini ziyaret edin.


Şu an hakkında daha fazla şey okudum ve kesinlikle Uinx'in tavuk ve POSIX'in yumurta olduğu anlaşılıyor .. ama UNIX'in hala bu tüneli yönetip yönetmediğini merak ediyorum. ve UNIX POSIX'e uymalı mı? ... btw. Görünüşe göre POSIX Richard Stallman tarafından ...
Peter.O

@ fred.bear: Kısa cevap: UNIX (ticari marka) POSIX'e uygun olmalıdır; Unix (ürün) POSIX'in ana temelidir; sendikalar (işletim sistemi ailesi) çoğunlukla uyuyor ancak daha çok ortak noktaları var. Bkz Is Linux Unix? ve Mac OS X, UNIX mı? ilgili tartışmalar için.
Gilles

@ fred-bear Birçok insan POSIX standardının bugünlerde Linux çekirdek geliştirme topluluğu tarafından yönlendirildiğini iddia ediyor (ki eğer doğruysa) IMHO iyi bir şey değil ...
sakisk

1
@faif Bunu hiç duymadım ve olası bulmuyorum, bir referans gönderebilir misiniz?
penguin359

2
@Gilles UNIX® ticari markasının sahibi olan Open Group, UNIX® sertifikası ve Tek UNIX Spesifikasyonu veya SUS dedikleri şartnameden de sorumludur. POSIX, UNIX®'in sorumluluğu altında olmayan IEEE tarafından geliştirilmiştir. 2001'den beri, büyük ölçüde senkronize olarak geliştirildiler, ancak teknik olarak şu anda UNIX®'i tanımlayan 4. sürümde olan SUS.
penguin359
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.