POSIX nedir? Okudum Wikipedia makalesi ve ben terimle karşılaşırsanız her zaman okudum. Gerçek şu ki, ne olduğunu gerçekten anlamadım.
Herkes bana "POSIX ihtiyacını" açıklayarak açıklayabilir mi?
POSIX nedir? Okudum Wikipedia makalesi ve ben terimle karşılaşırsanız her zaman okudum. Gerçek şu ki, ne olduğunu gerçekten anlamadım.
Herkes bana "POSIX ihtiyacını" açıklayarak açıklayabilir mi?
Yanıtlar:
POSIX , Unix-y işletim sistemleri tarafından sağlanan uygulama programlama arabirimlerini (ve komut satırı kabuğu yardımcı programları gibi yardımcı sorunları) netleştirmek ve üniform hale getirmek için IEEE tarafından belirtilen bir standart ailesidir . Programlarınızı POSIX standartlarına dayanacak şekilde yazdığınızda, bunları büyük bir Unix türevi ailesi (Linux dahil ancak bunlarla sınırlı değil!) Arasında kolayca taşıyabileceğinizden emin olabilirsiniz; Posix'in bir parçası olarak standartlaştırılmamış bazı Linux API'lerini kullanıyorsanız ve kullandığınızda, ileride bu programı veya kitaplığı diğer Unix-y sistemlerine (örn. MacOSX) taşımak istiyorsanız, daha zor zamanınız olacaktır.
Microsoft's market share on desktops, at least, makes it "what the world follows"
- 2009 yorumundan bu yana ne kadar değiştiğini belirtmek ilginç :)
POSIX 7'nin tanımladığı en önemli şeyler
ANSI C'yi aşağıdakilerle büyük ölçüde genişletir :
mkdir
, dirname
, symlink
, readlink
, link
(sabit bağlarının), poll()
, stat
, sync
,nftw()
fork
, execl
, wait
, pipe
, semaphors sem_*
(paylaşılan hafızayı shm_*
) kill
, zamanlama parametreleri ( nice
, sched_*
), sleep
, mkfifo
,setpgid()
socket()
mmap
, mlock
, mprotect
, madvise
,brk()
reg*
)Bu API'ler ayrıca bağımlı oldukları temel sistem kavramlarını da belirler, örneğin fork
bir süreç kavramını gerektirir.
Birçok Linux sistem çağrıları örneğin belirli bir POSIX C API işlevi uygulamak için var ve Linux uyumlu hale getirmek sys_write
, sys_read
... o sistem çağrıları birçoğu da ancak Linux özgü uzantılara sahiptir.
Büyük Linux masaüstü uygulaması: glibc, çoğu durumda sistem çağrılarına sığ bir sargı sağlar.
Örn: cd
, ls
, echo
, ...
Birçok kamu hizmeti, örneğin karşılık gelen bir Cı API işlevi, doğrudan muhafaza ön uçları vardır 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 .
Örneğin, a=b; echo "$a"
Büyük Linux masaüstü uygulaması: GNU Bash .
Örneğin: HOME
, PATH
.
PATH
eğik çizgilerin PATH
aramayı nasıl önlediği de dahil olmak üzere arama semantiği belirtilir .
ANSI C, başarısızlık için 0
ya da EXIT_SUCCESS
başarı için diyor EXIT_FAILURE
ve geri kalan uygulamayı tanımlı bırakıyor.
POSIX ekler:
126
: komut bulundu ancak yürütülebilir değil.
127
: komut bulunamadı.
> 128
: bir sinyal ile sonlandırıldı.
Ancak POSIX, 128 + SIGNAL_ID
Bash tarafından kullanılan kuralı belirtmiyor gibi görünüyor : /unix/99112/default-exit-code-when-process-is-terminated
İki tür vardır: BRE (Temel) ve ERE (Genişletilmiş). Basic kullanımdan kaldırılmıştır ve yalnızca API'ları ihlal etmeyecek şekilde tutulur.
Bunlar C API işlevleri tarafından uygulanır ve CLI yardımcı programlarında kullanılır, örneğin grep
varsayılan olarak BRE'leri ve ERE'leri kabul eder -E
.
Örneğin: echo 'a.1' | grep -E 'a.[[:digit:]]'
Başlıca Linux uygulaması: glibc, regex.h altındaki gibi programların grep
arka uç olarak kullanabileceği işlevleri uygular .
Ör: /dev/null
,/tmp
Linux FHS, POSIX'i büyük ölçüde genişletiyor.
/
yol ayırıcıNUL
kullanılamaz.
olduğunu cwd
, ..
ebeveyna-zA-Z0-9._-
Ayrıca bkz: dosya sistemi için posix uyumluluğu nedir?
Komut satırı yardımcı programı API kuralları
Zorunlu değil, POSIX tarafından kullanılıyor, ancak neredeyse hiçbir yerde, özellikle GNU'da değil. Ancak doğru, çok kısıtlayıcıdır, örneğin yalnızca tek harfli bayraklar (örneğin -a
), çift kısa çizgi uzun versiyonları (ör. --all
).
Yaygın olarak kullanılan birkaç kural:
-
bir dosyanın beklendiği yerde stdin anlamına gelir--
bayrakları sonlandırır, örn ls -- -l
. adlı bir dizini listelemek için-l
Ayrıca bkz: Linux komut satırı anahtarları ve bağımsız değişkenleri için standartlar var mı?
"POSIX ACL" (Erişim Kontrol Listeleri), örneğin arka uç olarak kullanılır setfacl
.
Bu geri çekildi, ancak Linux ilesetxattr
de dahil olmak üzere çeşitli işletim sistemlerinde uygulandı .
POSIX'e kimler uygundur?
Birçok sistem POSIX'i yakından takip eder, ancak çok azı standardı koruyan Açık Grup tarafından onaylanmıştır. Önemli sertifikalılar şunları içerir:
Çoğu Linux dağıtımı çok uyumludur, ancak uyumluluk denetimini ödemek istemedikleri için onaylanmamıştır. Inspur'un K-UX ve Huawei'nin EulerOS sertifikalı iki örneğidir.
Sertifikalı sistemlerin resmi listesi https://www.opengroup.org/openbrand/register/ adresinde ve ayrıca wiki sayfasında bulunabilir .
pencereler
Windows, bazı profesyonel dağıtımlarında POSIX'i uyguladı.
İsteğe bağlı bir özellik olduğundan, programcılar çoğu son kullanıcı uygulaması için ona güvenemedi.
Windows 8'de destek kullanımdan kaldırıldı:
2016 yılında "Linux için Windows Alt Sistemi" adında yeni bir Linux benzeri API açıklandı. ELF, çalışan parçaları, Linux sistem çağrıları içeren /proc
dosya sistemi Bash, GCC, (? YAPILACAK muhtemel glibc), apt-get
: ve daha https://channel9.msdn.com/Events/Build/2016/P488 İnanıyorum yüzden öyle Windows'un POSIX'in tümü olmasa da çok çalışmasına izin verir. Ancak, son kullanıcılar yerine geliştiricilere / konuşlandırmaya odaklanmıştır. Özellikle, Windows GUI'ye erişime izin verme planı yoktu.
Resmi Microsoft POSIX uyumluluğuna geçmişe 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 uygulamanızı "Windows üzerinde çalışmasını istiyorsanız kaynağından yeniden oluşturmanızı" gerektirir. MSYS2 , Cygwin'in üstüne daha fazla işlevsellik ekleyen bir projedir.
Android
Android, Android O'dan itibaren POSIX'i tam olarak desteklemeyen kendi C kütüphanesine (Bionic) sahiptir: Android POSIX uyumlu mu?
Bonus seviyesi
Linux Standard Base ayrıca POSIX uzanır.
Çerçevesiz dizinleri kullanın, çok daha okunabilir ve aranabilir: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Grevleme için HTML sayfalarının tam sıkıştırılmış bir sürümünü edinin: POSIX C API işlevlerinin listesi nerede?
POSIX :
POSIX (telaffuz / ˈpɒzɪks /) veya "Taşınabilir İşletim Sistemi Arayüzü [Unix için]" 1 , yazılım için kabuk ve yardımcı program arabirimlerinin yanı sıra uygulama programlama arabirimini (API) tanımlamak için IEEE tarafından belirtilen ilgili standartlar ailesinin adıdır standart herhangi bir işletim sistemi için geçerli olsa da, Unix işletim sisteminin varyantlarıyla uyumludur.
Temel olarak, (çoğunlukla) ortak bir API ve yardımcı programa sahip olarak UNIX'in farklı tatlarının gelişimini ve kullanımının acısını hafifletmek için bir dizi önlemdi. Sınırlı POSIX uyumluluğu, Windows'un çeşitli sürümlerine de genişletilmiştir.
Küfürü "gayri resmi" açıklamama izin verin.
POSIX, "UNIX" ve UNIX benzeri sistemleri kendileriyle uyumlu olmayan sistemlerden ayırmaya çalışan bir standartlar kümesidir. ABD hükümeti tarafından tedarik amacıyla oluşturuldu. Buradaki fikir, ABD federal tedariklerinin, çeşitli teklif ve sözleşmelere ilişkin gereksinimleri, belirli bir mevcut kod tabanının veya programlama personelinin taşınabilir OLMAYACAK sistemleri hariç tutmak için kullanılabilecek şekilde yasal olarak belirtmek için bir yola ihtiyaç duymasıydı.
POSIX, fiilen ... benzer gevşek bir dizi rakip sistemi tanımlamak için yazıldığından beri ... uygulanabilecek bir şekilde DEĞİL yazılmıştır.
Bu nedenle, örneğin, Microsoft NT, bazı tekliflere hak kazanmak için yeterli POSIX uyumu ile yazılmıştır ... POSIX alt sistemi UNIX sistemleri ile pratik taşınabilirlik ve uyumluluk açısından temelde işe yaramaz olsa da.
Onlarca yıldır UNIX için çeşitli başka standartlar da yazılmıştır. SPEC1170 (uyumlu bir şekilde uygulanması gereken onbir yüz yetmiş fonksiyon çağrısı belirtildi) ve SUS'un çeşitli enkarnasyonları (Tek UNIX Spesifikasyonu) gibi şeyler.
Çoğunlukla bu "standartlar" herhangi bir pratik teknik uygulama için yetersizdir. En çok argümantasyon, yasal zorbalık ve diğer işlevsiz nedenlerle var olurlar.
POSIX, platformlar arası yazılım yazmayı kolaylaştıran işletim sistemleri için bir standarttır. Unix dünyasında özellikle büyük bir anlaşma.
POSIX, ideal bir Unix'in nasıl çalışacağını açıklayan IEEE ve The Open Group tarafından ortaya konan bir standartlar dizisidir. Programcılar, kullanıcılar ve yöneticilerin tümü POSIX belgesini tanıyabilir ve POSIX şikayet Unix'in belirtilen tüm standart olanakları sağlamasını bekleyebilir.
Her Unix işleri biraz farklı yaptığından - Solaris, Mac OS X, IRIX, BSD ve Linux'un hepsinin tuhaflıkları var - POSIX, faaliyet gösterecek standart bir ortam tanımladığı için özellikle sektördeki kişiler için kullanışlıdır. Örneğin, C kütüphanesindeki fonksiyonların çoğu POSIX tabanlıdır; bu nedenle bir programcı başvurusunda bir tane kullanabilir ve çoğu Unice için aynı şekilde davranmasını bekleyebilir.
Bununla birlikte, Unix'in ıraksak alanları standart alanlardan ziyade tipik olarak odak noktasıdır.
POSIX ile ilgili en güzel şey, kendiniz okuyabileceğinizdir:
Sayı 7 POSIX.1-2008 olarak bilinir ve orada yeni şeyler vardır - ancak POSIX.1 için Google-fu ve bu, Unix'in ardındaki tüm geçmişi görmenizi sağlayacaktır.
1985 yılında, bilgisayar endüstrisindeki şirketlerden bireyler, büyük ölçüde UNIX Sistem V Arayüz Tanımı (SVID) ve daha önceki diğer standartlaştırma çabalarına dayanan POSIX (Bilgisayar Ortamları için Taşınabilir İşletim Sistemi Arayüzü) standardını geliştirmek için bir araya geldi. Bu çabalar, eğitim ve tedarik maliyetlerini en aza indirmek için standart bir bilgi işlem ortamına ihtiyaç duyan ABD hükümeti tarafından teşvik edildi. 1988'de piyasaya sürülen POSIX, bir işletim sistemi için API, kabuk ve yardımcı program arabirimlerini tanımlayan bir grup IEEE standardıdır. UNIX benzeri sistemlere yönelik olmasına rağmen, standartlar herhangi bir uyumlu işletim sistemi için geçerli olabilir. Artık bu standartlar kabul edildiğine göre, yazılım geliştiricileri UNIX, Linux'un tüm uyumlu sürümlerinde çalışan uygulamalar geliştirebilirler.
Kitaptan: Linux İçin Pratik Bir Kılavuz
Posix daha çok bir işletim sistemi, bir "işletim sistemi standardı" dır. Aslında var olmayan, ancak bir belgeye sahip olan hayali bir işletim sistemi olarak hayal edebilirsiniz. Bu belgeler, ABD'nin büyük standart kuruluşu olan IEEE tarafından tanımlanan "posix standardı" dır. Bu spesifikasyonu uygulayan işletim sistemleri "Posix uyumlu" dur.
Hükümet düzenlemeleri yatırımlarında Posix uyumlu çözümleri tercih etmektedir, bu nedenle Posix uyumlu olmak, özellikle ABD'nin büyük IT şirketleri için önemli bir finansal avantaja sahiptir.
Bir işletim sisteminin tam olarak posix uyumlu olması, tüm Posix uyumlu uygulamaları sorunsuz bir şekilde derleyip çalıştıracağının garantisidir.
Linux en tanınmış olanıdır. OSX, Solaris, NetBSD ve Windows NT de burada oynuyor. Free ve OpenBSD yalnızca "neredeyse" Posix uyumludur. WinNT'nin posix uyumluluğu yukarıdaki hükümet düzenlemesinden kaçınmak için sadece sahte bir çözümdür.
Bu standart, Unix benzeri işletim sistemleri için ortak bir temel sağlar. Kabuğun nasıl çalışması gerektiğini, ls ve grep gibi komutlardan ne bekleyeceğini ve C yazarlarının kullanılabilir olmasını bekleyebilecek bir dizi C kütüphanesini belirtir.
Örneğin, komut satırı kullanıcılarının komutları birleştirmek için kullandığı borular burada ayrıntılı olarak belirtilmiştir, bu da C'nin pop (boru açık) işlevinin ISO C standardı değil POSIX standardı olduğu anlamına gelir.
POSIX, Taşınabilir İşletim Sistemi Arayüzü anlamına gelir ve uygulama taşınabilirliğini kolaylaştırmak için tasarlanmış bir IEEE standardıdır. POSIX, satıcılardan oluşan bir konsorsiyumun UNIX'in tek bir standart sürümünü yaratma girişimidir.
POSIX, bir işletim sistemi veya program için standartlar kümesini tanımlar. Amaç UNIX benzeri sistemlerle uyumlu yeni bir yazılım yazmaktır.
Örneğin Linux üzerinde çalışan bir program da Solaris, HP-UX ve AIX gibi UNIX benzeri sistemlerde derlenebilir ve çalıştırılabilir.
En popüler örnekler GNU Bash
% 100 POSIX uyumluluğu ve gawk
faydasıdır.
Posix birlikte çalışabilirliği, taşınabilirliği ve çatalın kullanımı ve mekanizması, izinler ve / etc, / var, / usr gibi dosya sistemi standartlarını yönetir . Bu nedenle, geliştiriciler örneğin Linux gibi Posix uyumlu bir sistem altında bir program yazdıklarında, IBM'in AIX sistemi veya Unix'in diğer ticari varyantları gibi başka bir posix uyumlu sistemde çalışması genellikle garanti edilmez. Posix, sahip olması gereken maksimum taşınabilirlik için yazılım geliştirmeyi kolaylaştırdığı için iyi bir şeydir. Umarım bu cevap mantıklıdır.
Hatamı - benim kötü işaret Jed Smith & Tinkertim için teşekkürler! :(
Bir işletim sisteminin geç UNIX işletim sistemi ile uyumlu hale getirilmesine ilişkin bir şartname (taslak) (Tanrı onu kutsasın!). Bu nedenle macOS ve GNU / Linux çok benzer terminal komut satırlarına, GUI'lere, kütüphanelere vb. Sahiptir. Çünkü ikisi de POSIX planına göre tasarlanmıştır.
POSIX, mühendislere ve programcılara nasıl kodlama yapılacağını değil, ne kodlama yapılacağını söyler.
POSIX hakkında çok parlak olmayan bazı gerçekler.
POSIX aynı zamanda sistem çağrısı arayüzü veya API'sıdır ve yaklaşık 30 yaşındadır.
Tek CPU'lu tek bilgisayarlar kullanılarak yerel depolamaya seri veri erişimi için tasarlanmıştır .
Güvenlik, tasarımla POSIX'te büyük bir endişe kaynağı değildi ve yıllar boyunca çok sayıda yarış durumu saldırısına yol açtı ve programcıları bu sınırlamalar üzerinde çalışmaya zorladı.
Daha güvenli POSIX API tasarımıyla önlenebilecek hatalar hala ciddi hatalar keşfedilmektedir.
POSIX, kullanıcıların bir seferde bir senkronize çağrı yapmasını ve bir sonrakini vermeden önce sonuçlarını beklemesini bekler. Bugünün programcıları, genel verimi artırmak için bir seferde birçok eşzamansız istek yayınlamayı bekliyor.
Bu senkronize API, özellikle gecikmenin önemli olduğu uzak ve bulut nesnelerine erişmek için kötüdür.