Menü
Bedava
kayıt
ev  /  sorunlar/ İşletim sistemlerinin ve posix'in Unix standardizasyonu. Gerçek zamanlı işletim sistemi standartları

İşletim sistemlerinin ve posix'in Unix standardizasyonu. Gerçek zamanlı işletim sistemi standartları

Genel olarak standartlar hakkında

Pratisyen programcılar arasında, programlamada standartların hiç gerekli olmadığına dair bir görüş vardır, çünkü:

(1) yazarları bilgisayar programları yazmadığından başlangıçta anlamsızdırlar;

(2) programcıların inisiyatifini zincirlerler;

(3) programcılar her zaman standartlar olmadan hemfikir olacaktır.

Belki de iki durum olmasa da bu görüş dikkate alınmamalıydı:

(1) uygulayıcılar tarafından, yani tam olarak "yazılım yayınlayanlar" tarafından ifade edilir;

(2) Yukarıdaki akıl yürütme, bu makalenin yazarı tarafından, İnternet'teki C programlama dili standardına ayrılmış yayınlardan birinde keşfedildi; bu, böyle bir görüşün "uluslararası ölçekte" yaygın olduğu ve sadece kibirli Rus "süper programcılar" arasında.

"Standart" kelimesi genellikle maddi bir şeyle ilişkilendirilir (standart boyutlar, standart elektrik gerilimi vb.), bir bilgisayar programı maddi olmayan bir nesneyken ("Yeni maddi olmayan") ve belki de maddi olmayan alandaki standartlar gerçekten anlamsızdır?

Ancak çürüten bir örnek var. Rus dili için yazım kuralları seti, standardizasyon kuruluşları tarafından onaylanmamasına rağmen, esasen bir standarttır. Ayrıca, yazım kurallarına (veya dilerseniz gereksinimlerine) ek olarak, sözdizimsel kurallar ve en önemlisi anlambilim vardır. İkincisi, "çocukça" soruyu iyi göstermektedir: bir kediye neden kedi denir? Bu sorunun kesin bir cevabı var: çünkü atalarımız da aynı fikirde; İngilizlerin ataları, aynı canavar kediyi, Almanların atalarını - yavru kedi, vb. Ve genel olarak, herhangi bir kelimenin veya kelime kombinasyonunun anlamı veya semantiği veya yorum kuralları bir anlaşma meselesidir.

POSIX standardının amacı ve "süper görevi"

Adından da anlaşılacağı gibi, POSIX (Taşınabilir İşletim sistemi Arayüz), bir işletim sistemi ile bir uygulama programı arasındaki arayüz (arayüz) için bir standarttır. Programcıların "çıplak" bir makine için programlar yazdığı (kendi giriş/çıkış program paketlerini, trigonometrik fonksiyonları vb. uygulayan) günler geride kaldı. POSIX metni, standardın işletim sisteminin uygulama ayrıntılarına herhangi bir gereksinim getirmediğini tekrar tekrar vurgular; uygulama programcıları ve geliştiriciler arasındaki bir dizi anlaşma olarak görülebilir. işletim sistemleri... Bu nedenle (yine, oldukça yaygın görüşün aksine), POSIX yalnızca işletim sistemi geliştiricileri için değil, her şeyden önce çok daha geniş bir programcı kategorisi - uygulamalı olarak ilgilenmektedir.

Bu tür bir standarda duyulan ihtiyaç, UNIX işletim sistemlerinin yaygınlaştığı 1980'lerde fark edildi. Bu sistem birleşik bir sistem olarak tasarlanmasına rağmen, belirli uygulamaları arasındaki farklılıklar, bir sistem için yazılan uygulama programlarının her zaman başka bir sistemde yürütülememesine yol açtı. Hareketlilik sorunu olarak bilinen bu özel sorunu çözmek için yazılım POSIX tarafından hedeflenir. Standardın ilk baskısı 1988'de yayınlandı (bir çeviri var, bakınız), program taşınabilirliği ile ilgili tüm çeşitli konuların iki bölüme ayrıldığı: (1) uygulama programı arayüzü, (2) komut yorumlayıcısı ve yardımcı programlar (kullanıcı arayüzü); bu bölümler sırasıyla POSIX.1 ve POSIX.2 olarak adlandırılır1.

Bu yazıda sadece ikinci (ve bugüne kadarki) baskısı 12 Temmuz 1996'da onaylanan uygulama programı arayüzü standardı POSIX.1'den bahsedeceğimize açıklık getirelim.

Standardın bilgilendirici kısmı ayrıca POSIX'in bazı "ideal" işletim sistemlerinin arayüzünün bir tanımı olmadığını, UNIX işletim sistemlerinin geliştirilmesinde kazanılan deneyimin genelleştirilmesi ve sistemleştirilmesinin bir sonucu olduğunu vurgular. Ek olarak, bilgilendirici kısım programcı ipuçları ve program parçaları içermesine rağmen, POSIX işletim sistemleri hakkında bir kılavuz veya öğretici olarak hizmet edemez.

Standart, yalnızca içinde açıklanan arayüz işlevlerine odaklanarak tam teşekküllü bir işletim sistemi oluşturmanın imkansız olduğunu doğrudan belirtir. (Özellikle, POSIX.1, ağ oluşturma ve ilgili arabirim işlevleri veya grafik arabirim gibi sorunları ele almaz.) Bununla birlikte, yazılım hareketsizliğinin finansal maliyetleri ve bunun sonucunda ortaya çıkan arabirim birleştirme ihtiyacı o kadar büyüktür ki çoğu satıcı, en azından bazılarına sahip olmayı tercih eder. hiç olmamasından daha standart. Bu nedenle, birçok yazılım geliştiricisi POSIX'e odaklanma eğilimindedir. Bu, programların hareketsizliğini tamamen ortadan kaldırmasa bile, en azından programın hareketsiz kısmını önemli ölçüde azaltmaya izin verir.

anlambilim hakkında

Daha önce tartışıldığı gibi, POSIX, bir işletim sistemi geliştiricisi ile bir uygulama programcısı arasındaki bir dizi anlaşma olarak görülebilir. "Anlaşma", her şeyden önce, kelimelerin ve ifadelerin aynı yorumu (anlambilimi) anlamına gelir. Aşağıdakiler, bir “anlaşmaya” ulaşmanın zorluğunu gösteren örneklerdir.

Çeviride anlam nasıl aktarılır

Her şeyden önce, POSIX standardının aşağıdaki bölümlerde düzenlendiğini hatırlamak gerekir. ingilizce dili doğası gereği belirsizliğe neden olan (örneğin, aynı kelime bir isim, sıfat ve fiil olabilir) ve "anlamsal tuzaklar" neredeyse her sayfada pusuda beklemektedir. Bunun iyi bir örneği kurgudan bir örnektir. İngiliz dilinin bu özelliğini zekice kullanan Oscar Wilde'ın en ünlü eserlerinden biri olan - Ciddi Olmanın Önemi - Rusça'da "Ciddi Olmanın Önemi" olarak bilinir. Bununla birlikte, İngilizce adının ikinci bir anlamı vardır: Earnest (ciddi), karakterlerden birinin soyadıdır ve isim farklı şekilde çevrilebilir: "Ernst olmak ne kadar önemli." Bir Rus soyadı Serebryany var ve eğer Ciddi bir soyadı olsaydı, her iki anlamın da aktarılmasıyla çeviri tamamen doğru olurdu.

Durum, standardın kendi adıyla benzer: Taşınabilir İşletim Sistemi Arayüzü. Portable (mobil) sıfatı hem işletim sistemini hem de uygulama programını ifade eder, ancak Rusça'da bu kadar kısa ifade edilemez, “Mobil işletim sisteminin arayüzü” veya “Bir işletim sisteminin arayüzü” olarak tercüme edilebilir. uygulama programlarının hareketliliği”. İkinci seçenek, standardın geliştiricilerinin niyetlerini daha iyi yansıtır, ancak aynı zamanda ilk anlam kaybolur (çeviri sırasında daha tanıdık olan ilk seçenek korunur).

"Standart" kelimesinin anlamı

Standardın ana metninin önünde, IEEE Standartları2 kelimelerinin anlamlarını açıklayan bir önsöz bulunur. Bu açıklamalardan anlaşılacağı üzere, Rusça GOST teriminden en az üç anlamsal farklılık vardır:

(1) GOST'un, ihlali kovuşturulan yasanın gücüne sahip olduğu sezgisel olarak kabul edilir; POSIX, bağlılığı tamamen gönüllü olan bir dizi gereksinimdir.

(2) GOST, iptal edilene kadar geçerlidir (birçoğu muhtemelen “GOST iptal edilmedi” ifadesini duymuştur); POSIX'in önsözü, standart 5 yıl boyunca revize edilmemişse, bunun içinde ele alınan konuların alaka düzeyini kaybedeceği ve otomatik olarak iptal edilmiş sayılabileceği anlamına gelir;

(3) GOST anonimdir; POSIX'in giriş kısmı, bu standardın geliştirilmesine katılanların bir listesini sağlar ve ayrıca yorum taleplerinin gönderilebileceği bir adres sağlar; ayrıca her talebe verilen yanıtın bir onay prosedürüne tabi olduğunu belirtir (başka bir deyişle, standardın yazarları bir yanıt vermeden önce kendi aralarında anlaşırlar).

Bu nedenle, Standard gibi iyi bilinen bir kelimenin bile “standart” kelimesiyle tercümesi yorum gerektirir.

"Should", "belirtilmemiş", "tanımlanmamış", "uygulama tanımlı" kelimelerinin anlamı

Standardın 2. Bölümü, Terminoloji ve Genel Gereksinimler olarak adlandırılır. Yalnızca özel terimlerin ("süreç" veya "semafor" gibi) tanımlarını değil, aynı zamanda "gerekir" veya "olabilir" gibi görünüşte aşikar sözcükleri de içerir. POSIX.1 bir arayüz standardı olduğundan, gereksinimleri hem işletim sistemi hem de uygulama programı için geçerlidir. Açık bir gereklilik "olacak" kelimesiyle ifade edilir, örneğin: "Başarılı olursa, bağlantı () sıfır döndürür." Bu örnekte, bir işletim sistemi gereksiniminden bahsediyoruz: link () işlevi, başarı durumunda sıfır döndürmesi için uygulanmalıdır.

"Belirtilmemiş" ve "tanımlanmamış" terimleri, standardın seçim özgürlüğüne izin verdiği fikrini ifade eder, ancak bu terimlerin anlamı farklıdır. "Belirtilmemiş" terimi, bazı doğrulardan (eylemler, program yapıları vb.) ve "tanımlanmamış" teriminden - yanlış (hatalı) hakkında konuştuğumuz anlamına gelir. Standardın bilgilendirici kısmı aşağıdaki açıklamayı sağlar.

"Belirtilmemiş" terimi, çeşitli seçeneklerin (sonuçlar, bir işlev çağrısının sonuçları, vb.) bilindiğinin varsayıldığı anlamına gelir ve standart bunlardan herhangi birine izin verir; bir işletim sisteminin belirli bir uygulamasında herhangi biri seçilebilir ve böyle bir sistemin standarda uygun olduğu kabul edilir. Uygulama programı (standartlara kesinlikle uygun) herhangi bir varyantta doğru çalışacak şekilde yazılmalıdır; bu haliyle, bu terim, bir uygulama programı için bir gerekliliği zımnen ifade eder.

Bir örnek verelim: “readdir() fonksiyonu, dizinin bir sonraki elemanı ile ilgili bir yapıya işaretçi döndürmelidir. "Nokta" ve "noktadan noktaya" olarak adlandırılan katalog öğelerinin iade edilip edilmeyeceği standart tarafından belirtilmemiştir. Bu örnekte, dört olası sonuç vardır ve uygulamanın gereksinimi, bunlardan herhangi biri için tasarlanmış olmasıdır.

Başka bir örnek: “Eğer sigwait () işlevi, bir sinyal beklemesini söyler. belirtilen sayı, birkaç kontrol iş parçacığında çağrılır, daha sonra bunlardan birine bir sinyal ulaştığında, sigwait () geri dönmelidir. Bunun ne tür bir kontrol akışında olacağı standartta belirtilmemiş." Bu örnekte, daha birçok olası sonuç olabilir, ancak bunların hepsi de bilinmektedir ve başvurunun şartı, herhangi bir sonuç için doğru çalışması gerektiğidir.

"Tanımlanmamış" terimi, birçok sonucun bilinmediğini, herhangi bir sonucun mümkün olduğunu, hatta felaketle sonuçlanabileceğini (örneğin, sistem çökmesi, veri kaybı vb.) ima eder. Esasen, bu terim, bir uygulamanın ilgili verileri veya yapıları kullanmaması için bir gerekliliği dolaylı olarak ifade eder. Örneğin: "readdir() işlevindeki dirp argümanı o anda açık olan dizine atıfta bulunmuyorsa, sonuç tanımsızdır."

Bu örnek, uygulamanın readdir () işlev bağımsız değişkeni için yalnızca bir açık dizin başvurusunu değiştirmesini gerektirir; bu şartın ihlali feci sonuçlara yol açabilir ve bunun sorumluluğu uygulama programcısına aittir.

İşte başka bir örnek: “Başarılı olursa, read () işlevi gerçekte okunan bayt sayısını temsil eden bir tamsayı döndürmelidir. Aksi takdirde, işlev hata kodunu errno'ya atamalı ve -1 döndürmelidir ve buf ile gösterilen arabelleğin içeriği tanımsızdır."

Standart, read () işlevinde bir hata olması durumunda uygulama programında arabellekten verilerin kullanılmasını yasaklar ve bu gereksinimin ihlal edilmesinin sonuçları uygulama programcısına atanır.

"Uygulama tanımlı" teriminin anlamı sezgisel olandan farklıdır. Açıkçası, belirli bir işletim sisteminde "belirtilmemiş" veya "tanımsız" bir sonuç olamaz, belirli bir sonuç hatasız olarak elde edilecektir. "Uygulama tanımlı" terimi, standardın işletim sistemi dokümantasyonu gereksinimini ifade eder: sonuç yalnızca belirtilmemeli (işletim sistemi geliştiricisinin bunu zaten yapması gerekecektir), ayrıca sistem dokümantasyonuna açıkça yansıtılmalıdır.

Varsayılan anlambilim

Tek bir düzenleyici belge, uygulamada meydana gelebilecek tüm vakaları kapsayamaz, bu nedenle kaçınılmaz olarak bir şey hakkında sessizdir3. Örneğin bir fonksiyonun açıklaması, argümanının belirli bir aralıktan değerler alabileceğini söyleyebilir, ancak argümanın bu aralığa düşmemesi durumunda sonucun ne olacağı hakkında hiçbir şey söylenmez. Açıkçası, yanlış anlamaları önlemek için, tek tip bir varsayılan anlambilime sahip olmak gerekir. Standardın bilgilendirici bölümünde ilginç bir ifade vardır: "genel olarak kabul edilen varsayılan anlambilimi yasaktır." Bu açıklama, on yıllık meşhur sloganla çelişiyor: "Açıkça yasaklanmayan her şeye izin verilir." Görünüşe göre, vatandaşların zihnine o kadar yerleşmiş ki, çoğu programcı bile, standardın alıntılanan ifadesiyle aynı fikirde değil. Bu arada, herhangi bir yapının kullanımına açıkça izin verilmiyorsa ve bu açıklamayı takip etmiyorsa, o zaman pratik yapan herhangi bir programcı, onu kullanmanın riskli olduğunu anlar ve işe yaramazsa, bir iddiada bulunmak aklına gelmez.

Kontrol süreçleri ve akışları

Bu terimlerin her ikisi de paralel yürütme fikrini ifade eder. UNIX işletim sistemi başlangıçta çok kullanıcılı bir işletim sistemi olarak tasarlanmıştı ve bu işletim sistemini çalıştıran programlar farklı kullanıcılar tarafından, yanlışlıkla "yabancı" verileri bozmamak için birbirinden güvenilir bir şekilde izole edilmelidir. Bu izolasyon, kullanıcı programının kendi sanal adres alanında gelişen bir süreç içerisinde yürütülmesi ile sağlanmaktadır. Program global veriler içerse bile, farklı süreçlerde başlatıldığında, bunlar otomatik olarak farklı adres alanlarına "boşanacaktır".

Ancak, gerçek zamanlı görevler programlanırken süreç mekanizması tamamen tatmin edici değildir. Gerçek zamanlı bir uygulama (aynı kullanıcı adına çalışan) genellikle doğal olarak, iş parçacığı adı verilen aynı anda çalışan parçalar olarak temsil edilebilir. Süreçlerden en önemli farkı, tüm kontrol akışlarının tek bir adres alanında gelişmesidir; Bu garanti eder hızlı erişim küresel verilere, ancak aynı zamanda kasıtsız bozulma riski vardır ve bunun olmasını önlemek için bazı programlama disiplinlerini gözlemlemek gerekir. İlgili tavsiyeler standardın bilgilendirici bölümünde yer almaktadır.

Çoklu iş parçacığı fikrinin birçok gerçek zamanlı işletim sisteminde uygulandığı ve her bir kontrol iş parçacığının farklı bir dizi öznitelik ve arayüz işlevine sahip olması anlamında farklı şekillerde uygulandığı vurgulanmalıdır; bazen iş parçacığı yerine görev terimi kullanılır. Karışıklığı önlemek için standart, yalnızca POSIX iş parçacıklarıyla ilgilendiğini ve karşılık gelen arabirim işlevlerinin adlarının önüne pthread_ (örneğin, pthread_create (), pthread_join (), vb.) getirildiğini vurgular.

Standarda uygunluk. "Eşleşme" kelimesinin anlamı

Sezgisel olarak, iki öğe aynı standarda göre yapılırsa, o zaman birbirleriyle "eşleşme"lerinin garanti edildiğine ve çiftler halinde birlikte çalışacaklarına inanılır; bu tam olarak bir arayüz (arayüz) standardı sunmanın amacıdır. POSIX bir arayüz standardı olduğu için hem işletim sisteminin hem de işletim sisteminin standarda uygunluğundan bahsedebiliriz. uygulama programı.

POSIX.1 standardı birkaç yüz (binlerce değilse) gereksinim içerir; Bunlardan en az birinin yerine getirilmemesi durumunda sistemin (veya uygulama programının) standardı karşılamadığı aşikar kabul edilir. Aynı zamanda bugüne kadar o kadar çok UNIX sınıfı işletim sistemi ve uygulama programı yazılmıştır ki, belirtilen anlamda tam uyumluluk talep etmek pek mantıklı değildir. Bu tür bir uluslararası standart geliştirmedeki zorluklar, farklı ulusal dillerin varlığıyla daha da kötüleşiyor. Ulusal dillerdeki metinleri işlemeye yönelik uygulama programlarını unutsak bile, hemen hemen her uygulama programı bir tür teşhis mesajları yayınlamalı ve / veya operatör tarafından girilen metinleri algılamalıdır.

  • POSIX.1 standardına sıkı uyum;
  • uluslararası sürüm POSIX.1 ile uyumluluk;
  • POSIX.1'in ulusal versiyonuna uygunluk;
  • Uzantılarla POSIX.1 uyumluluğu.

İkincisi, arayüz olanaklarının çoğu isteğe bağlıdır; Standart, isteğe bağlı arabirim işlevlerinin ya standart tarafından belirtildiği gibi davranmasını ya da her zaman özel bir hata kodu olan ENOSYS (işlev uygulanmadığı anlamına gelir) döndürmesini gerektirir. Seçenekler, her biri ilgili başlık dosyasında (#define ifadesi tarafından) bildirilen bazı yapılandırma sabitlerine karşılık gelen birkaç gruba ayrılır; bu, derleme aşamasında bir işlevin uygulanıp uygulanmadığını bulmayı mümkün kılar.

Açıklanan hareketliliğe ulaşma yöntemi, POSIX'in yazarları tarafından icat edilmedi, ancak pratikte uzun süredir kullanılmaktadır; birçok işletim sisteminde, sistemin kendisini veya sürümünü tanımlamak için yapılandırma sabitleri kullanılır. Ve burada standart temelde yeni bir şey sunmuyor, sadece mevcut uygulamayı sistematize ediyor.

Standardizasyon nesneleri ve standardın yapısı

Kısacası, POSIX.1 standardizasyon nesneleri isimler ve anlambilimdir. Daha spesifik olarak, aşağıdakilerden bahsediyoruz.

  • Arayüz fonksiyonlarının isimleri. Standart C kitaplıklarından (matematiksel, dize işleme, giriş/çıkış, vb.) alınan 107 işlev ile 357 işlev standartlaştırılmıştır; bu işlevler POSIX.1 standardının bir parçası olarak kabul edilir, ancak C standardında tam olarak açıklanmıştır.
  • Sistem veri türlerinin adları. Bu adların sonuna _t eklenir.
  • İsimler başlık dosyaları, ayrıca bu dosyaların minimum bileşimi.
  • Sistem genelinde genel değişken adları (örneğin, errno).
  • İşlev yürütme sırasında ayarlanabilen hata kodlarının sembolik adları. Bu isimler E harfi ile başlar (EPERM, ENOTEMPTY, vb.).
  • Yapılandırma sabit adları. Bu adların önüne _POSIX_ eklenir.
  • Sinyal numaralarının sembolik isimleri; bu adların önüne SIG eklenir. 20 "geleneksel" sinyale (SIGABRT, SIGALRM, vb.) ek olarak, sayıları SIGRTMIN'den SIGRTMAX'e kadar en az RTSIG_MAX sayıları içeren belirli bir sürekli aralığı kapsaması gereken gerçek zamanlı sinyaller standartlaştırılmıştır.
  • Bazı fonksiyonların bireysel argümanlarının değerlerine karşılık gelen sembolik isimler (örneğin, fcntl() fonksiyonunun cmd argümanı F_DUPFD, F_GETFD, F_GETLK vb. değerleri alabilir).
  • Makroların, sabitlerin, bit bayraklarının, ortam değişkenlerinin adları.

Genel olarak standart, yaklaşık olarak aynı hacme sahip iki büyük parçadan oluşur. İlk yarı - normatif kısım - standardın gerekliliklerini ve tavsiyelerini içerir (18 bölüm), ikincisi - bilgilendirici kısım - normatif kısma referansların, yorumların ve açıklamaların bir listesini, başlığın bileşimini sağlayan Ekleri içerir. dosyalar, (Danimarka için) standardın bir profili ("projeksiyon") örneği, en önemli işlevlerin performansını ölçmek için özellikler ve metodoloji ve ayrıca dosyalarla gerçek zamanlı olarak çalışmak için ek arayüz işlevlerinin açıklaması; Standardın gelecekteki sürümlerinde bu işlevlerin normatif bölüme dahil edilmesi beklenmektedir.

“Standart maddelerinin özetleri” kenar çubuğu, standardın hangi tür işletim sistemi hizmetlerini kapsadığı hakkında bir fikir verir.

Çözüm

POSIX standardının ana içeriği, arayüz fonksiyonlarının semantiğidir. Semantiğin standardizasyonu kendi başına kolay bir iş değildir (herkes iki kişi için bile bir anlaşmaya varmanın ne kadar zor olduğunu bilir) ve şu anda birçok insanın programlamaya dahil olması, zorlukları daha da ağırlaştırmaktadır. Örneğin, eşzamanlılık paradigması “süreç”, “görev” ve “kontrol akışı” gibi terimlerle ifade edilirken, pratik programlama açısından IBM OS / 360 işletim sisteminde “görev” ve gerçek- zaman işletim sistemi VxWorks aynı değildir. ve ayrıca. Başka bir örnek semaforlardır. Semaforlar ikili, tamsayı ("bir sayaçlı") ve karşılıklı dışlamadır (bu arada, programcılar kendi aralarında "mutex" derler, kendiliğinden yanlış anlamaları önlemeye çalışırlar). Ve örneğin VxWorks işletim sistemindeki tamsayı semaforları, POSIX semaforlarıyla hiç de aynı değildir.

İnsanların alışkanlıklarını ("yerleşik uygulama" olarak adlandırdıkları) bırakmalarının ne kadar zor olduğunun çok iyi farkında olan POSIX standardının yazarları, geleneksel olarak hizmetlerin çoğunu kapsayan tutarlı ve minimal bir arayüz işlevleri sistemi derlediklerini beyan ederler. işletim sistemi tarafından sağlanan, bu işlevlerin tam anlamını ayrıntılı olarak açıklamış ve herkesi geliştirmelerinde kullanmaya davet etmiştir4.

Standardı okurken, bazen bazı ifadelerin tek bir amacı olduğu izlenimi edinilir: standardı karşılama kategorisinden bazı uygulama programları veya işletim sistemleri çıkarmamak. Böyle bir hedef gerçekten Giriş'te belirlenmiş ve açıkça formüle edilmiştir: standart, geçerli uygulamayı mümkün olduğunca dikkate almalıdır. Ancak yine de asıl amaç uygulama programlarının hareketliliğini sağlamaktır.

Yazar hakkında

Sergey Romanyuk - Sistem Araştırmaları Araştırma Enstitüsü'nde kıdemli araştırmacı, POSIX standart çevirmen grubunun başkanı. onunla iletişime geçebilirsiniz e-posta adrese göre: [e-posta korumalı]

1 Standarda yönelik çalışmaların uzun yıllardır devam ettiğini de eklemek gerekir; yeni sorunlar belirlenir ve bunlar ya mevcut bölümlerden birine dahil edilir ya da daha sonra iptal edilebilecek ayrı bir bölüm olarak resmileştirilir. Bu, örneğin, ilk olarak POSIX.4 olarak ilan edilen ve daha sonra POSIX.1'e dahil edilen gerçek zamanlı ön uç tesisleri ile oldu.

2 IEEE, POSIX standardını geliştiren kuruluştur.

3 Burada "varsayılan" varsayılan değil sessiz anlamına gelir; aslında beyan edilen herhangi bir zımni değerden bahsetmiyoruz, ancak referansların yokluğundan bahsediyoruz.

4 Standardın Rusça çevirisi 2000 yılının başlarında yayınlanacaktır.

Edebiyat

Uluslararası Standart ISO / IEC 9945-1 (ANSI / IEEE Std 1003.1) İkinci Baskı. 1996-07-12. Bilgi Teknolojisi - Taşınabilir İşletim Sistemi Arayüzü (POSIX) - Bölüm 1: Sistem Uygulama Programı Arayüzü (API).

M.I.Belyakov, Yu.I. Rabover, A.L. Fridman. Mobil işletim sistemi. Dizin. Moskova, "Radyo ve İletişim", 1991.

ISO/IEC 9899: 1990, Programlama dilleri - C.

Bölüm 1 - Tanıtım
Bölüm 2 - Terminoloji ve tanımlar
3. Bölüm - Süreçleri (görüntü oluşturma, değiştirme, tamamlama) ve sinyalleri (maskeleri yönetme, sinyallere yanıt verme) yönetme işlevleri
Bölüm 4 - Tanımlama (süreçler, kullanıcılar, sistem, terminal), sürecin yürütülmesi için harcanan zamanın yoklanması, ortam değişkenlerinin yoklanması.
5. Bölüm - Dosya ve dizin yönetimi
6. Bölüm - Giriş ve çıkış fonksiyonları
Bölüm 7 - Terminal kontrol fonksiyonları
Bölüm 8 - C dil standardından ödünç alınan işlevler
9. Bölüm - Kullanıcıların ve kullanıcı gruplarının veritabanlarına erişim
10. Bölüm - Arşivleme ve değiş tokuş için veri biçimleri (tar ve cpio)
11. Bölüm - Senkronizasyon olanakları: semaforlar, muteksler ve koşul değişkenleri
Bölüm 12 - Bellek yönetimi işlevleri: işlemin adres alanını sabitleme ve sabitlemeyi kaldırma, dosyaları belleğe eşleme, bellek koruması, paylaşılan bellek
Bölüm 13 - Zamanlama süreçleri ve kontrol akışlarıyla ilgili işlevler
Bölüm 14 - Saat ve zamanlayıcı yönetimi
15. Bölüm - Mesaj kuyruğu yönetimi
Bölüm 16 - Kontrol akışlarıyla ilgili temel işlevler
Bölüm 17 - İpliğe özel veriler
18. Bölüm - Kontrol akışlarının yok edilmesi araçları

STANDARTLAR

Sergey Zolotarev,

Bu makalenin amacı, gerçek zamanlı işletim sistemlerine (RT OS) uygulanan POSIX standardının gelişim tarihine biraz açıklık getirme girişimidir.

Giriş olarak: programlama arayüzü standardizasyonu neden gereklidir?

POSIX standardının en önemli özelliklerinden biri, karmaşık yazılım ve donanım sistemlerinin geliştiricilerinin uyması gereken "standartlaştırılmış bir programlama arabirimi" tanımlamasıdır. Bu sistemlerin yaratıcıları, (şiddetli rekabet nedeniyle) pazara sunma süresinin kısıtlı olması, maliyetlerin en aza indirilmesi ve yatırım getirisinin hızlandırılması gibi gereksinimlerle yüzleşmek zorunda kalıyor. Aynı zamanda, geliştirme sürecindeki yavaşlamadan kaynaklanan maliyetlerdeki aslan payı, programcıların uzun süredir mevcut olan işlevselliği tekrar tekrar uygulayarak "tekerleği yeniden icat etmeleri" gerektiği gerçeğiyle ilişkilidir. Ancak bu şu şekilde önlenebilirdi:

Geçmiş ve paralel projelerden kodu yeniden kullanın;

Diğer işletim sistemlerinden kod taşıma;

Diğer projelerden geliştiricileri çekmek (diğer işletim sistemlerini kullananlar dahil).

Tüm bunlar, standartlaştırılmış bir API'ye sahip bir işletim sisteminin kullanılması sayesinde mümkündür. Ve ilk durumda, bir kuruluşun belirli bir dahili standarda sahip olması yeterliyse (bu, özellikle tescilli işletim sistemleri için tipiktir), o zaman ikinci iki durum, yalnızca genel kabul görmüş standartların varlığını gerektirir - örneğin, POSIX.

Böylece, projeleri için bir platform olarak POSIX uyumlu bir işletim sistemi kullanan geliştirici, hazır kod hem geçmiş veya paralel projelerinden hem de üçüncü şahısların projelerinden kaynak metin düzeyinde. Bu, yalnızca yazılım geliştirme süresini önemli ölçüde azaltmakla kalmaz, aynı zamanda test edilen kod her zaman daha az hata içerdiğinden kalitesini de artırır.

POSIX Geliştirmede Kim Kimdir

Ve POSIX standardının kendisiyle değil, üzerinde çalışmaya dahil olan kuruluşların rollerinin sıralanmasıyla başlayacağız.

İlk katılımcı IEEE(Elektrik ve Elektronik Mühendisleri Enstitüsü, Elektrik ve Elektronik Mühendisleri Enstitüsü), kar amacı gütmeyen bir kamu profesyonelleri derneği. IEEE 1884'e (resmi olarak - 1963'ten) kadar uzanır, 150 ülkeden 380.000 bireysel üyeyi birleştirir, bilgisayar, kontrol, elektrik ve bilgi teknolojisi kullanımıyla ilgili teknik literatürün üçüncü bir bölümünü ve ayrıca 100'den fazla dergi yayınlar. profesyoneller arasında popüler; ek olarak, dernek yılda 300'den fazla büyük konferans düzenlemektedir. IEEE, 900'den fazla mevcut standardın geliştirilmesine katılmıştır (www.ieee.ru/ieee.htm). Bugün bu enstitü standartların hazırlanması, koordinasyonu, onaylanması, yayınlanması ile uğraşmaktadır, ancak resmi statüsü nedeniyle uluslararası veya ulusal standartlar gibi belgeleri benimseme yetkisine sahip değildir. Bu nedenle, IEEE'nin anlaşılmasındaki "standart" terimi, dernek tarafından kabul edilen belgelerin statüsü ile daha tutarlı olan "spesifikasyon" anlamına gelir. IEEE uyarınca, IEC, ISO, ITU (Uluslararası Telekomünikasyon Birliği), ETSI (Avrupa Telekomünikasyon Standartları Enstitüsü), CENELEC (European Committee for Electrotechnical Standardization) ve ulusal düzeyde bir dizi uluslararası ve bölgesel kuruluşun programlarına katılır. programlar, örneğin, ANSI gibi bir kuruluşun programında.

IEEE, POSIX standartlar ailesini geliştiren bir birliktelik komitesi olan PASC'yi (Taşınabilir Uygulama Standartları Komitesi; www.pasc.org/) içerir. PASC, daha önce İşletim Sistemleri Teknik Komitesi olarak biliniyordu.

Çalışmaya ikinci katkıda bulunan kişi, Amerika Birleşik Devletleri'ndeki standardizasyon faaliyetlerini yöneten ve koordine eden, kar amacı gütmeyen özel bir kuruluş olan ANSI'dir (Amerikan Ulusal Standartlar Enstitüsü; www.ansi.org). Yalnızca 75 kişiyi istihdam etmektedir, ancak ANSI üyeleri arasında 1.000'den fazla şirket, kuruluş, devlet kurumu ve kurumu bulunmaktadır. ANSI, Amerika Birleşik Devletleri'ni iki büyük uluslararası standart kuruluşu olan ISO ve IEC'de temsil eder.

Üçüncü katılımcı - ISO(Uluslararası Standardizasyon Örgütü; www.iso.org). 1946 yılında Standartların Koordinasyon Komitesi ve BM Genel Kurulu kararı ile oluşturuldu ve resmi olarak 23 Şubat 1947'de çalışmaya başladı. ISO, 146 ülkeden (bir ülke - bir ISO üyesi) ulusal standartlar enstitüleri ağıdır. Cenevre'de (İsviçre) merkezi bir sekreterya ile. ISO standartları, ilk ürünü Uluslararası Taslak Standardı (DIS) olan ve birkaç onaydan sonra Nihai Taslak Uluslararası Standardı (FDIS) haline gelen teknik komitelerde geliştirilir. Bundan sonra, bu belgenin onaylanması konusu oylamaya sunulur; başarılı olursa, uluslararası bir standart haline gelir.

Ve sonunda - IEC(Uluslararası Elektroteknik Komisyonu, Uluslararası Elektroteknik Komisyonu - IEC; www.iec.ch/), 1906 yılında kurulan IEC, tüm elektrik, elektronik ve ilgili teknolojiler için uluslararası standartlar hazırlar ve yayınlar. 1 Kasım 2004 itibariyle 64 ülkenin ulusal komiteleri bu komisyonun aktif üyeleriydi. IEC ayrıca İngilizce ve Fransızca yayınlanan ve uluslararası standart statüsüne sahip tavsiyeler de yayınlamaktadır. Bunların temelinde, bölgesel ve ulusal standartlar geliştirilir. Teknik komiteler (TC), belirli bir TC'nin faaliyetleriyle ilgilenen ulusal komitelerin yer aldığı IEC faaliyetlerinin çeşitli alanlarında standartların hazırlanmasından sorumludur.

IEC- için uluslararası standartların hazırlanmasında kilit bir organizasyon bilgi Teknolojisi... Bu alanda, IEC ve ISO arasındaki bir anlaşmaya uygun olarak 1987'de oluşturulan bilgi teknolojisi - JTC 1 ortak bir teknik komitesi bulunmaktadır. JTC1, yazılımdan programlama dillerine, bilgisayar grafikleri ve görüntü düzenleme, ekipman ara bağlantısı ve güvenlik uygulamalarına kadar her şeyi denetleyen 17 alt komiteye sahiptir.

Yeni IEC standartlarının hazırlanması birkaç aşamayı içerir (ön hazırlık, teklif aşaması, hazırlık aşaması, teknik komite aşaması, talep aşaması, onay aşaması, yayın). IEC belgesinin uluslararası bir standart olmayıp yalnızca teknik bir şartname olması amaçlanıyorsa, belgenin revize edilmiş bir versiyonu yayın için merkeze gönderilir. Uluslararası standardın (FDIS) nihai taslağının tamamlanması dört ay sürecektir. Teknik komitenin tüm üyeleri tarafından onaylandığı takdirde, FDIS onay aşamasına geçilmeden yayımlanmak üzere merkeze gönderilir. Bundan sonra, FDIS, iki ay içinde onaylaması gereken ulusal komitelere gider. Ulusal komitelerin üçte ikisinden fazlasının lehte oy kullanması ve olumsuz oyların sayısı %25'i geçmemesi durumunda FDIS onaylanmış kabul edilir. Belgenin onaylanmaması durumunda teknik komite ve alt komitelere revizyona gönderilir. Standart, FDIS onayından sonra en geç iki ay içinde yayınlanmalıdır.

POSIX standartlarının geliştirilmesinde ve benimsenmesinde başka birçok kuruluş yer almaktadır.

Grubu Aç bilgi teknolojisi alanında çalışan yaklaşık 200 üretici ve kullanıcı topluluğunu bir araya getiren uluslararası bir yazılım standardizasyonu organizasyonudur (www.opengroup.org/).OpenGroup 1995 yılında iki öncülünün birleştirilmesiyle oluşturulmuştur: X / Open ve Açık Yazılım Vakfı (OSF). Open Group, yazılım sertifikasyon metodolojilerinin ve uyumluluk testlerinin geliştirilmesinde uzmanlaşmıştır. Özellikle Open Group, COE Platformu, CORBA, LDAP, Linux Standard Base, Schools Interoperability Framework (SIF), S/MIME Gateway, Single UNIX Spesifikasyonu, Kablosuz Uygulama Protokolü Spesifikasyonları (WAP) ve son olarak POSIX standart ailesi (www.opengroup.org/certification/).

AustinCommonStandardsRevisionGroup (CSRG)- ortak teknik çalışma Grubu oluşturmak ve sürdürmek için 2002 yılında ISO, IEC ve Open Group tarafından kuruldu. en son sürümler ISO/IEC 9945-1-1996, ISO/IEC 9945-2-1993, IEEE Std 1003.1-1996, IEEE Std 1003.2-1992 ve Single UNIX Spesifikasyonu temelinde oluşturulacak olan standart 1003.1 (www.opengroup.org) /basın/ 14nov02.htm).

Ulusal Standartlar ve Teknoloji Enstitüsü (NIST)- 1901'de Amerika Birleşik Devletleri'nde kurulan Ticaret Departmanı'nın Teknoloji İdaresi (www.nist.gov/public_affairs/general2.htm) bünyesinde bir federal ajans. NIST'in misyonu, ürün kalitesini iyileştirmek için standartlar ve teknolojiler geliştirmek ve teşvik etmektir. NIST bir bilgi teknolojisi laboratuvarı içerir (Bilgi Teknolojileri Laboratuvarı - ITL) sonuçlarından biri Federal Bilgi İşleme Standartları (FIPS, www.opengroup.org/testing/fips/general_info.html) NIST/ITL 1991'de FIPS PUB 151-1 kapsamında POSIX sertifikası için bir başlangıç ​​test seti önerdi. 1990.

POSIX nedir?

resmen terim POSIX Richard Stallman tarafından bir kısaltma olarak önerilmiştir. P masa Ö perating S un için sistem arayüzü IX(Unix için taşınabilir işletim sistemi arayüzü). POSIX, uygulamalara kaynak taşınabilirliği sağlamak amacıyla UNIX benzeri işletim sistemleri (en eski sürümleri 1970'lerin başına kadar uzanır) için geliştirilmiştir.

Arayüzün ilk açıklaması 1986'da yayınlandı, ardından IEEE-IX (IEEE'nin UNIX versiyonu) olarak adlandırıldı. Ancak, ad hızla POSIX olarak değişti ve bir sonraki yayın (1986'da) bu yeni varyantı kullandı. Bir süredir POSIX, bir grup ilgili belge IEEE 1003.1-1988'e ve ISO / IEC 9945'in bölümlerine bir referans (veya eşanlamlı) olarak anlaşıldı ve eksiksiz ve onaylanmış bir uluslararası standart olarak ISO / IEC 9945.1: 1990 POSIX kabul edildi. 1990.POSIX spesifikasyonları, standardı uygulama programı ile işletim sistemi arasındaki etkileşim mekanizmasını tanımlar ve şu anda IEEE, ISO, IEC ve ANSI himayesinde 30'dan fazla standart içermektedir.

Tarihi boyunca, POSIX, spesifikasyonların gösterimi, spesifik içerikleri, prosedürleri ve doğrulama lojistiğinin birçok kez değişmesiyle uzun bir yol kat etti. O zamandan beri, çeşitli uluslararası kuruluşlar çerçevesinde POSIX standardının çeşitli sürümleri yayınlandı.

POSIX standardının gelişim tarihi

IEEE Std 1003.1 spesifikasyonunun ilk versiyonu 1988'de yayınlandı. Daha sonra, IEEE Std 1003.1'in çok sayıda baskısı uluslararası standartlar olarak kabul edildi. POSIX geliştirme aşamaları:

- 1990 yılı 1988'de yayınlanan baskı revize edildi ve daha sonraki baskılar ve eklemeler için temel oldu. Uluslararası bir standart olarak ISO/IEC 9945-1: 1990 olarak onaylanmıştır.

- 1993 yılı Sürüm 1003.1b-1993 yayınlandı.

- 1996 yılı IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995 ve 1003.1i-1995'te değişiklikler yapıldı, ancak belgenin çoğu değişmeden kaldı. 1996 yılında IEEE Std 1003.1'in revizyonu da uluslararası standart ISO/IEC 9945-1: 1996 olarak onaylanmıştır.

- 1998"Gerçek zamanlı" için ilk standart ortaya çıktı - IEEE Std 1003.13-1998. Gerçek zamanlı gömülü uygulamalar için POSIX standardının bir uzantısıdır.

- 1999 O zamana kadar ayrı standartlar olduklarından, standart 1003.2 (Kabuk ve yardımcı programlar) ile birleştirme de dahil olmak üzere, son 10 yılda standardın ana metninde ilk önemli değişikliklerin yapılmasına karar verildi. PASC, IEEE standartları 1003.1a, 1003.1d, 1003.1g, 1003.1j, 1003.1q ve 1003.2b'nin tamamlanmasının ardından temel metin değişikliklerini tamamlamaya karar verdi.

- 2004 g. 1003.1'in en son revizyonu 30 Nisan'da yayınlandı ve Austin Ortak Standartlar Revizyon Grubu'nun himayesinde yayınlandı. Standardın 2001 baskısı için değiştirilmiştir. Resmi olarak, 2004 baskısı IEEE Std 1003.1, 2004 Edition, The Open Group Technical Standard Base Spesifikasyonları, Sayı 6 olarak bilinir ve IEEE Std 1003.1-2001, IEEE Std 1003.1-2001 / Cor 1-2002 ve IEEE Std 1003.1-2001 / Cor 2-2004.

RT OS için en önemli POSIX standartları

Gerçek zamanlı işletim sistemleri için, standardın yedi özelliği çok önemlidir, ancak ticari işletim sistemlerinde yalnızca üçü yaygın destek almıştır:

1003.1a (OS Tanımı), temel işletim sistemi arayüzlerini, iş kontrolünü, sinyalleri, işlevleri tanımlar dosya sistemi ve cihazlar, kullanıcı grupları, boru hatları, FIFO arabellekleri ile çalışın;

1003.1b (Gerçek Zamanlı Uzantılar) gerçek zamanlı sinyaller, öncelikli gönderim, zamanlayıcılar, senkron ve asenkron G/Ç, semaforlar, paylaşılan hafıza, mesajlar gibi gerçek zamanlı uzantıları açıklar. Başlangıçta (1993'ten önce) bu standarda POSIX.4 adı verildi;

1003.1c (İş parçacığı), iş parçacığı (thread) için destek işlevlerini tanımlar - iş parçacığı kontrolü, iş parçacığı nitelikleri, muteksler, gönderme. Başlangıçta POSIX.4a olarak belirlenmiştir.

Bu standartlara ek olarak, Std 1003.1-2001 projesinde yapılan çalışmaların bir parçası olarak uygulanan RT OS için aşağıdaki standartlar önemlidir:

IEEE 1003.1d-1999. Ek gerçek zamanlı uzantılar. Orijinal olarak POSIX.4b olarak belirlenmiştir;

IEEE 1003.1j-2000. İyileştirilmiş (gelişmiş) gerçek zamanlı uzantılar;

IEEE 1003.1q-2000. İzleme.

sertifikasyon prosedürü

POSIX uyumlu olması için, bir işletim sisteminin uygun test paketine göre sertifikalandırılması gerekir. POSIX'in piyasaya sürülmesinden bu yana, test paketi resmi ve fiili değişikliklere uğradı.

1991'de NIST, FIPS 151-1 kapsamında bir POSIX test programı geliştirdi (http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf). Bu test seçeneği, IEEE 1003.3 "POSIX'e Uygunluğun Ölçülmesi için Test Yöntemleri Standardı" Taslak 10, 3 Mayıs 1989'a dayanıyordu. 1993'te NIST, FIPS 151-1 için POSIX Test Programını tamamladı ve FIPS 151 -2 programına başladı (www.itl.nist.gov/fipspubs/fip151-2.htm) FIPS 151-2'ye uyarlanmış "Bilgi Teknolojisi - Taşınabilir İşletim Sistemi Arayüzü (POSIX) - Bölüm 1: Sistem Uygulama Programı Arayüzü (API)," ISO / IEC 9945-1: 1990 standardı. FIPS 151-2 için test takımları, IEEE 2003.1-1992 "POSIX'e Uygunluğun Ölçülmesi için Test Yöntemleri Standardı"na dayanıyordu.

NIST, iki sertifikasyon metodolojisi arasında ayrım yapar: kendi kendine sertifikalandırma ve IEEE tarafından akredite edilmiş test laboratuvarları tarafından sertifikalandırma (Accredited POSIX Testing Laboratories - APTL). İlk durumda, şirket testleri kendi başına, ancak NIST tarafından onaylanan bir plana göre yürütür. İkinci durumda, test bağımsız bir laboratuvar tarafından otomatikleştirilmiş test takımları kullanılarak gerçekleştirilir. Toplamda iki APTL laboratuvarı akredite edilmiştir: Mindcraft (www.mindcraft.com) ve Perennial (www.peren.com).

1997 yılında NIST / ITL, FIPS 151-2 sertifikasını bu yılın sonunda (resmi olarak 31 Aralık 1997) sona erdirme niyetini açıklarken, Open Group o yılın 1 Ekim'inden itibaren devralacağını açıkladı. NIST / ITL programına dayalı FIPS 151-2 uyarınca yıllık sertifika hizmeti. Aynı işlevler, 1 Ocak 1998'den beri IEEE Standards Association (IEEE-SA) tarafından üstlenilmiştir ve ayrıca FIPS 151-2'ye dayanmaktadır.

2003 yılında, IEEE-SA ve Open Group, en son POSIX sürümleri için IEEE 1003.1 (tm) 2001 ile başlayan yeni bir ortak sertifika programı duyurdu. Open Group'un artık IEEE Std 1003.1-1996, IEEE Std'yi kapsayan birkaç test paketi var. 1003 ...

2-1992, IEEE Std 1003.1-2003 ve IEEE Std 1003.13-1998 (www.opengroup.org/testing/testsuites/posix.html). Bir ürün, tam sertifikasyon prosedürünü geçmişse, test sonuçlarına göre tüm gereklilikleri karşılıyorsa ve sertifikalı ürünlerin resmi siciline girilmişse POSIX sertifikalı olarak kabul edilir.

Test paketleri şunları içerir:

VSX-PCTS1990 (www.opengroup.org/testing/testsuites/vsxpcts1990.htm), aşağıdakiler için bir dizi uygunluk testidir: sistem arayüzleri IEEE Std 1003.1-1990;

VSPSE54 (www.opengroup.org/testing/testsuites/VSPSE54.htm) - IEEE Std 1003.13-1998 Profil PSE54 (çok amaçlı gerçek zamanlı) için bir dizi uygunluk testi;

VSX-PCTS2003 (www.opengroup.org/testing/testsuites/vsxpcts2003.htm) - sistem arayüzleri için bir dizi uygunluk testi IEEE Std 1003.1-2003 (yalnızca zorunlu parçalar);

VSC-PCTS2003 (www.opengroup.org/testing/testsuites/vscpcts2003.htm), IEEE Std 1003.1-2003 (kabuk ve yardımcı programlar - yalnızca gerekli parçalar) için bir dizi uygunluk testidir.

Ayrıca Open Group, POSIX Gerçek Zamanlı Standartları ve Gömülü POSIX Standartları Profili için karşılaştırma ölçütleri geliştirmiştir. POSIX Gerçek Zamanlı Test Paketi (www.opengroup.org/testing/testsuites/realtime.html) aşağıdaki testleri içerir:

IEEE POSIX 1003.1b-1993 / 1003.1i-1995 Gerçek zamanlı uzantı ve IEEE POSIX 1003.1,2003 Sürümü;

IEEE Std POSIX 1003.1c-1995 Threads (pthreads) uzantısı ve IEEE POSIX 1003.1,2003 Edition;

IEEE POSIX 1003.1d-1999 Ek Gerçek Zamanlı Uzantı ve IEEE POSIX 1003.1,2003 Sürümü;

IEEE POSIX 1003.1j-2000 Gelişmiş Gerçek Zamanlı Uzantı ve IEEE POSIX 1003.1,2003 Sürümü;

IEEE POSIX 1003.1q-2000 Trace ve IEEE POSIX 1003.1,2003 Sürümü ve IEEE POSIX 1003.1,2003 Sürümü;

Gömülü POSIX Standartları Profil Test Takımı (www.opengroup.org/testing/testsuites/embedded.html) aşağıdaki testleri içerir:

IEEE POSIX 1003.1-1990 (5310 testleri);

IEEE POSIX 1003.1b-1993 / 1003.1i-1995 Gerçek zamanlı uzatma (1430 test);

IEEE Std POSIX 1003.1c-1995 Threads (pthreads) uzantısı (1232 test);

IEEE POSIX 1003.13-1998 Profil 52.

Terminolojideki karışıklık hakkında biraz

İngilizce'deki POSIX standartlar grubuyla ilgili olarak, genellikle bir değil üç terim kullanılır. Ne yazık ki, anlam olarak benzerler ve genellikle aynı şekilde tercüme edilirler, bu da biraz kafa karışıklığına neden olur. Bu terimler aşağıdaki gibidir:

Uyumluluk (kelimenin tam anlamıyla - "uyumluluk");

Uyumluluk (kelimenin tam anlamıyla - "uyum");

Uygunluk (kelimenin tam anlamıyla - "tutarlılık").

POSIX'e uygulanan ilk terim resmi olarak tanımlanmamıştır. İkincisi, kuruluşun - yazılım ürününün üreticisinin bağımsız olarak bu ürünün (tamamen veya kısmen) listelenen NIST-PCTS standartlarına uygun olduğunu beyan ettiği anlamına gelir. Üçüncü terim şunu ifade eder: yazılım geçti kurulu sistem ya akredite bir laboratuvarın yardımıyla ya da Açık Grup içinde testler yapılır ve bunun için belgesel kanıt vardır (Uygunluk Beyanı olarak adlandırılır). Ayrıca makale metninde, belirsizliği ortadan kaldırmak için her yerde terimlerin orijinallerine atıfta bulunulacaktır.

Sertifikalı OS RV

Sertifikalı RT işletim sistemi hakkındaki verilerin resmi kayıtta yayınlanmasını ve testin bu düzeyde yapılmasını gerektiren katı kurallara bağlı kalırsanız uygunluk, o zaman şu anda yalnızca iki sertifikalı RT işletim sistemi vardır (veriler kronolojik sırayla verilmiştir):

- LynxOS v.3(Lynx Gerçek Zamanlı Sistemlerin bir ürünü, şimdi LynuxWorks, Inc., www.lynuxworks.com olarak anılmaktadır), gerçek zamanlı olarak çalışan gömülü sistemler, OEM ve telekomünikasyon ekipmanı üreticileri, özellikle yerleşik sistem üreticileri için yazılım geliştirmek üzere tasarlanmıştır. askeri uygulamalar için... Geliştirme hem hedef sistemin kendisinde (kendi kendine barındırılan) hem de araçsal bilgisayarda (ana bilgisayar) gerçekleştirilebilir, bitmiş yazılım hedef sistem (hedef) üzerinde çalışmak üzere tasarlanmıştır. LynxOS v.3 Sertifikalı Tutarlılık (uyum) Intel ve PowerPC platformlarında POSIX. Bununla ilgili bilgiler IEEE web sitesinde bulunabilir http://standards.ieee.org/regauth/posix/posix2.html LynxOS, NIST FIPS üzerinde bir IEEE POSIX Akredite POSIX Test Laboratuvarı olan Mindcraft tarafından POSIX 1003.1-1996 sertifikalıdır. 151- 2 Uygunluk Testi Paketi. Sertifikasyon belge numarası: Referans Dosyası: IP-2LYX002, Referans Dosyası: IP-2LYX001.

- BÜTÜNLÜK v.5(Green Hills Yazılımının bir ürünü, www.ghs.com) Tutarlılık Sertifikası (uyum) POSIX 1003.1-2003 tarafından, Temmuz 2004'te PowerPC Architecture için Sistem Arayüzleri (http://get.posixcertified.ieee.org/select_product.tpl). VSX-PCTS 2003 test paketi.

POSIX ve QNX işletim sistemi

QNX v.4.20(QNX Software Systems tarafından geliştirilmiştir, www.qnx.com) uygunluk sertifikasına sahiptir (uyma) platform için POSIX 1003.1-1988 tarafından Intel tarafından DataFocus Incorporated. Test 13 Eylül 1993'te yapıldı ve 1 Kasım 1993'te yayınlandı. NIST PCTS 151-1 Test Suite, Sürüm 1.1.

QNX Neutrino (sürüm 6.3), aşağıdaki POSIX ailesi standartlarına uygundur (www.qnx.com/download/download/8660/portability.pdf):

POSIX.1 (IEEE 1003.1);

POSIX.1a (IEEE 1003.1a);

POSIX.2 (IEEE 1003.2);

POSIX.4 (IEEE 1003.1b);

POSIX.4a (IEEE 1003.1c);

POSIX.1b (IEEE 1003.1d), IEEE 1003.1j;

POSIX.12 (IEEE 1003.1g).

QNX Neutrino'nun yaratıcısı olan QNX Software Systems, QNX Neutrino'nun bu standartlardan bazılarına uygunluğunu da planlıyor; çalışmalar 2005 yılı için planlanmıştır (www.qnx.com/news/pr_959_1.html).

Edebiyat

1. IEEE Standards Association Kullanım Kılavuzu. IEEE, Ekim 2004.

2. Kevin M. Obeland... Gerçek Zamanlı POSIX, Gömülü Sistem Programlama, 2001.

3. IEEE / ANSI Standardı 1003.1: Bilgi Teknolojisi - (POSIX) - Bölüm1: Sistem Uygulaması: Program Arayüzü (API).

4. Gallmeister B.O. Gerçek Dünya için Programlama, POSIX.4 Sebastopol, CA: O'Reilly & Associates, 1995.

5. Ulusal Standartlar ve Teknoloji Enstitüsü, PCTS: 151-2, POSIX Test Suite.

6. POSIX: IEEE ve The Open Group tarafından onaylanmıştır. Sertifikalı Politika. Açık Grup, 21 Ekim 2003, Revizyon 1.1.

PO) istisnai öneme ve karmaşıklığa sahip bir görevdir; zamanımızda, bu durumun kapsamlı bir gerekçeye ihtiyacı yoktur. Yazılım taşınabilirliğini artırmanın genel kabul görmüş yollarından biri, uygulama ortamını standart hale getirmektir: sağlanan API'ler, yardımcı programlar vb. Seviyesinde sistem servisleri benzer bir ortam, POSIX (Taşınabilir İşletim Sistemi Arayüzü) standardını tanımlar; isim, Özgür Yazılım Vakfı'nın kurucusu olan ünlü uzman Richard Stallman tarafından önerildi.

POSIX standardının mevcut en son versiyonu olan ve "üçlü standart" olarak adlandırılabilecek olan 2003 baskısını, yani IEEE Std 1003.1 standardını ele alacağız, teknik standart Açık Grup ve (bkz. [6]), bizim için en önemli olan uluslararası standart ISO / IEC 9945 (bakınız [1], [2], [3], [4]).

Bu versiyonun yaratılış tarihi aşağıdaki gibidir. 1998'in başlarında, üç kuruluşun temsilcileri - Elektrik ve Elektronik Mühendisleri Enstitüsü Mobil Uygulama Standartları Komitesi, Uluslararası Organizasyon Ortak Teknik Komitesi 1'in (JTC1 / SC22 / WG15) 22. Alt Komitesinin Açık Grubu ve Çalışma Grubu 15. Standardizasyon için - sistem hizmetlerine arayüzler için denetledikleri standartların birleşmesi ve geliştirilmesi konusunda istişarelere başladı: IEEE Std 1003.1, IEEE Std 1003.2, Open Group'tan Temel Spesifikasyonlar, ISO / IEC 9945-1, ISO / IEC 9945-2 . Aynı yılın Eylül ayında Austin, Teksas'ta IBM ofisinde, bu hedefe ulaşmak için oluşturulan grubun bir organizasyon toplantısı yapıldı (bkz. http://www.opengroup.org/austin).

İlk taslağı Temmuz 1999'da sunulan revize standardın kurucu dokümanı, IEEE ve ISO/IEC standartlarının hükümlerini bünyesinde barındırdığı için Open Group'un Temel Spesifikasyonları olmuştur. 2001 yılında, hazırlık çalışmalarının tamamlanmasının ardından standart aşağıdaki dört bölümü içeriyordu:

  1. temel tanımlar (tüm parçalarda ortak olan terimler, kavramlar ve arayüzler);
  2. tanım C-API sistem hizmetlerine;
  3. düzeyde sistem hizmetlerine arayüzün açıklaması komut dili ve araçlar ;
  4. standart hükümlerinin ayrıntılı açıklaması, alınan kararların gerekçesi.

Ayrıca, ISO, IEEE ve Open Group'ta daha yüksek veya daha düşük bir hızla (2001-2002) yeni POSIX standardının resmi onayı geçti. Bu arada, 2003 baskısında dikkate alınan nispeten küçük düzeltmeler birikmiştir.

Standardın gelişmesiyle birlikte "POSIX" teriminin yorumu da genişledi. Orijinal olarak aşağıdakileri tanımlayan IEEE Std 1003.1-1988 belgesine atıfta bulunur: uygulama programlama Arayüzü Unix sınıfı işletim sistemi. Arayüzün komut dili ve yardımcı program düzeyinde standardize edilmesinden sonra, POSIX .1 ve POSIX .2 aracılığıyla yukarıda listelenen 2. ve 3. bölümleri ifade eden "POSIX" kelimesinin bir bütün olarak anlaşılması daha doğrudur. IEEE ve ISO/IEC belgeleri.

POSIX standardının temel fikirleri

POSIX standardı, uygulamaların çalışması için gereken birçok temel sistem hizmetini tanımlar. Bunlara C dili, komut dili ve ortak yardımcı programlar için belirtilen arabirim aracılığıyla erişilir.

Her arayüzün iki tarafı vardır: arayan ve aranan. POSIX standardı öncelikle arayan odaklıdır. Amacı başvuru yapmaktır. kaynak dil düzeyinde mobil... Bu, özellikle, C programlarını başka bir işletim platformuna taşırken yeniden derlemenin gerekli olduğu anlamına gelir. Yürütülebilir programların ve/veya nesne dosyalarının taşınabilirliği dahil değildir.

POSIX standardı hiçbir şekilde Unix ortamıyla sınırlı değildir. "Bağımsız kökenli" işletim sistemleri (OS) vardır (örneğin, gerçek zamanlı sistemler) gerekli hizmetleri sağlayan ve böylece POSIX uyumlu uygulamaların yürütülmesini destekleyen. POSIX standardına bağlılığın, uygulamaları hemen hemen her ortak işletim platformuna taşımayı kolaylaştırdığı iddia edilebilir. Geliştirme aşamasında yapılan ekstra hareketlilik çabaları kesinlikle karşılığını verecektir.

POSIX, sistem hizmetlerine arabirimi tanımlarken, uygulamalarını kapsam dışında bırakır. Özellikle, farklı değiller sistem çağrıları ve kütüphane fonksiyonları... Araçlar standardizasyona tabi değildir Yönetim, donanım sınırlamaları ve yalnızca gerekli işlevler süper kullanıcı standardın odağını bir kez daha vurgulayan

Bugün POSIX standardının neyi tanımladığını bulmaya çalışacağız. Standartlar, bilgisayarımın sizinkiyle iletişim kurabilmesi için tasarlanmıştır. Onlar sayesinde, web sayfaları veya canlı video akışı iki benzer bilgisayarda aynı görünecek.

Ancak standart olanlar, kullanıcılar arasında herhangi bir veri alışverişinden daha iddialı görevler için tasarlanmıştır. Bazı standartlar, dosya veya ağ uyumluluğunun çok ötesine geçen yetenekleri açan belirli bir modeli tanımlar. POSIX standardı bunlardan biridir.

POSIX nedir?

POSIX ("posix" olarak telaffuz edilir) taşınabilir işletim sistemleri için arayüzdür. Ama bu ne anlama geliyor? İlk olarak, "taşınabilirlik" kavramının kapsamını tanımlamanız gerekir. özel durum, ve "arayüz" kavramını tanımlar. Bunu bulmak için, her iki kavramın ayrılmaz bir şekilde bağlantılı olduğu gerçeğinden yola çıkmak gerekir.

POSIX standardı bağlamında "Taşınabilirlik", kaynak kodu(bu kaynaklardan toplanan ikili dosyalara değil). Şimdi bir "arayüz"ün ne olduğunu öğrenelim. Programlamada, bir "arayüz", kodunuzun kodunuzun geri kalanıyla nasıl etkileşime girdiğidir. Arayüz, kodunuzun belirli bilgiler sağlamasını bekler. Kodunuz, sırayla, arayüzden belirli bilgilerin alınmasını gerektirir. İyi örnek- C dilinde fopen () işlevi. İki bölümden bilgi bekler: dosyanın yolu ve açılacağı mod. Bu verileri kullanarak, işletim sistemi "dosya tanımlayıcı" adı verilen başka bir tür bilgi döndürür. Dosya tanımlayıcı, bir dosyayı okumak veya bir dosyaya yazmak için kullanılabilir. Bu arayüz. Tüm bunlardan, POSIX uyumlu kodun, herhangi bir POSIX uyumlu işletim sistemi için büyük değişiklikler olmaksızın derlenebileceği, yani taşınabilir olacağı anlamına gelir.

POSIX ile ilgili arayüzlerin bir listesi mevcuttur, ancak çok büyük olmasına rağmen eksik olması oldukça olasıdır. POSIX, sistem çağrılarıyla sınırlı değildir, ayrıca işletim sistemi kabukları (kabuklar, aksi takdirde - arayüzler) için standartları da tanımlar. Komut satırı), "awk" veya "echo" gibi sistem yardımcı programları, sistem kitaplıkları ve daha fazlası.

POSIX standardı, 1985 yılında Richard Stallman tarafından bir taslak olarak ortaya çıktı ve daha sonra IEEE Std 1003.-1998 olarak resmileştirildi. Adından da anlaşılacağı gibi, 1998 resmi yayın yılıydı. O zamandan beri, yavaş yavaş resmi olarak IEEE 1003 olarak bilinen, uluslararası olarak tanınan, SO / IEC 9945 adıyla, basitçe POSIX aile standardı olarak adlandırılan tüm bir standart ailesine dönüşen POSIX'e çok sayıda ekleme ve uzantı yayınlandı. .

İşletim sisteminin POSIX uyumlu veya hatta daha az POSIX sertifikalı olması gerekmez, ancak bu, geliştiricilerin kodu tekrar tekrar yazmadan uygulamalar, araçlar ve platformlar oluşturmasına, ancak yalnızca hazır olanı tamamlamasına ve bunlara bağlanmasına olanak tanır. . POSIX uyumlu kod yazmak da gerekli değildir, ancak bu, projelerin işletim sistemleri arasında taşınabilirliğini büyük ölçüde artırır. Bu, POSIX uyumlu kod yazma yeteneğinin kendi içinde değerli olduğu ve kariyeriniz için kesinlikle çok faydalı olduğu anlamına gelir. Gnome veya KDE gibi büyük projeler, farklı işletim sistemlerinde çalışmalarını sağlayan POSIX standardına uygundur. POSIX alt sistemi şu durumlarda bile uygulanmaktadır: son sorunlar Pencereler. Linux'un, POSIX ile ilgili sistem çağrılarının çoğunu ve bunun yanı sıra Linux dağıtımlarını kaynak ve ikili destek açısından birleştirmek için tasarlanmış Linux Standard Base adlı büyük bir uzantısını desteklediği bilinmektedir.

Umarım POSIX'in ne olduğuna biraz ışık tutmuşuzdur. Konuyla ilgili ilginç bilgileriniz var mı? Lütfen yorumlarda paylaşın.

POSIX ve RV OS: sistemleştirme girişimi

Sergey Zolotarev, Nikolay Gorbunov

Bu makalenin amacı, gerçek zamanlı işletim sistemlerine (RT OS) uygulanan POSIX standardının gelişim tarihine biraz açıklık getirme girişimidir.

Giriş olarak: programlama arayüzü standardizasyonu neden gereklidir?

POSIX standardının en önemli özelliklerinden biri, karmaşık yazılım ve donanım sistemlerinin geliştiricilerinin uyması gereken "standartlaştırılmış bir programlama arabirimi" tanımlamasıdır. Bu sistemlerin yaratıcıları, (şiddetli rekabet nedeniyle) pazara sunma süresinin kısıtlı olması, maliyetlerin en aza indirilmesi ve yatırım getirisinin hızlandırılması gibi gereksinimlerle yüzleşmek zorunda kalıyor. Aynı zamanda, geliştirme sürecindeki yavaşlamadan kaynaklanan maliyetlerdeki aslan payı, programcıların uzun süredir mevcut olan işlevselliği tekrar tekrar uygulayarak "tekerleği yeniden icat etmeleri" gerektiği gerçeğiyle ilişkilidir. Ancak bu şu şekilde önlenebilirdi:

  • geçmiş ve paralel projelerden kodun yeniden kullanımı;
  • diğer işletim sistemlerinden kod taşıma;
  • diğer projelerden geliştiricileri çekmek (diğer işletim sistemlerini kullanmak dahil).

Tüm bunlar, standartlaştırılmış bir API'ye sahip bir işletim sisteminin kullanılması sayesinde mümkündür. Ve ilk durumda, bir kuruluşun belirli bir dahili standarda sahip olması yeterliyse (bu, özellikle tescilli işletim sistemleri için tipiktir), o zaman ikinci iki durum, yalnızca genel kabul görmüş standartların varlığını gerektirir - örneğin, POSIX.

Böylece geliştirici, projeleri için platform olarak POSIX uyumlu bir işletim sistemi kullanan geliştirici, hem geçmiş veya paralel projelerinden hem de üçüncü tarafların projelerinden bitmiş kodu kaynak kod düzeyinde aktarma fırsatı buluyor. Bu, yalnızca yazılım geliştirme süresini önemli ölçüde azaltmakla kalmaz, aynı zamanda test edilen kod her zaman daha az hata içerdiğinden kalitesini de artırır.

POSIX Geliştirmede Kim Kimdir

Ve POSIX standardının kendisiyle değil, üzerinde çalışmaya dahil olan kuruluşların rollerinin sıralanmasıyla başlayacağız.

İlk katılımcı IEEE(Elektrik ve Elektronik Mühendisleri Enstitüsü, Elektrik ve Elektronik Mühendisleri Enstitüsü), kar amacı gütmeyen bir kamu profesyonelleri derneği. IEEE 1884'e (resmi olarak - 1963'ten) kadar uzanır, 150 ülkeden 380.000 bireysel üyeyi birleştirir, bilgisayar, kontrol, elektrik ve bilgi teknolojisi kullanımıyla ilgili teknik literatürün üçüncü bir bölümünü ve ayrıca 100'den fazla dergi yayınlar. profesyoneller arasında popüler; ek olarak, dernek yılda 300'den fazla büyük konferans düzenlemektedir. IEEE, 900'den fazla mevcut standardın geliştirilmesine katılmıştır (www.ieee.ru/ieee.htm). Bugün bu enstitü standartların hazırlanması, koordinasyonu, onaylanması, yayınlanması ile uğraşmaktadır, ancak resmi statüsü nedeniyle uluslararası veya ulusal standartlar gibi belgeleri benimseme yetkisine sahip değildir. Bu nedenle, IEEE'nin anlayışındaki "standart" terimi, dernek tarafından kabul edilen belgelerin statüsü ile daha tutarlı olan "spesifikasyon" olarak anlaşılmalıdır. IEEE uyarınca, IEC, ISO, ITU (Uluslararası Telekomünikasyon Birliği), ETSI (Avrupa Telekomünikasyon Standartları Enstitüsü), CENELEC (European Committee for Electrotechnical Standardization) ve ulusal düzeyde bir dizi uluslararası ve bölgesel kuruluşun programlarına katılır. programlar, örneğin, ANSI gibi bir kuruluşun programında.

IEEE, POSIX standart ailesini geliştiren bir birliktelik komitesi olan PASC'yi (Taşınabilir Uygulama Standartları Komitesi) içerir (www.pasc.org/). PASC, daha önce İşletim Sistemleri Teknik Komitesi olarak biliniyordu.

Çalışmadaki ikinci katılımcı - ANSI(Amerikan Ulusal Standartlar Enstitüsü, Amerikan Ulusal Standartlar Enstitüsü), Amerika Birleşik Devletleri'ndeki standardizasyon faaliyetlerini yöneten ve koordine eden özel, kar amacı gütmeyen bir kuruluştur. Yalnızca 75 kişiyi istihdam etmektedir, ancak ANSI üyeleri arasında 1000'den fazla şirket, kuruluş, devlet kurumu ve kurumu bulunmaktadır (www.ansi.org). ANSI, Amerika Birleşik Devletleri'ni iki büyük uluslararası standart kuruluşu olan ISO ve IEC'de temsil eder.

Üçüncü katılımcı - ISO(Uluslararası Standardizasyon Örgütü). 1946 yılında Standartlar Koordinasyon Komitesi ve BM Genel Kurulu kararı ile oluşturulmuş ve resmi olarak 23 Şubat 1947'de çalışmaya başlamıştır (www.iso.org). ISO, merkezi bir sekreteryası Cenevre'de (İsviçre) bulunan 146 ülkeden (bir ülke - bir ISO üyesi) ulusal standartlar enstitüleri ağıdır. ISO standartları, ilk ürünü Uluslararası Taslak Standardı (DIS) olan ve birkaç onaydan sonra Nihai Taslak Uluslararası Standardı (FDIS) haline gelen teknik komitelerde geliştirilir. Bundan sonra, bu belgenin onaylanması konusu oylamaya sunulur; başarılı olursa, uluslararası bir standart haline gelir.

Ve sonunda - IEC(Uluslararası Elektroteknik Komisyonu, Uluslararası Elektroteknik Komisyonu - IEC), 1906'da kuruldu. IEC, tüm elektrik, elektronik ve ilgili teknolojiler için uluslararası standartlar hazırlar ve yayınlar (www.iec.ch/). 1 Kasım 2004 itibariyle 64 ülkenin ulusal komiteleri bu komisyonun aktif üyeleriydi. IEC ayrıca İngilizce ve Fransızca yayınlanan ve uluslararası standart statüsüne sahip tavsiyeler de yayınlamaktadır. Bunların temelinde, bölgesel ve ulusal standartlar geliştirilir. Teknik komiteler (TC), belirli bir TC'nin faaliyetleriyle ilgilenen ulusal komitelerin yer aldığı IEC faaliyetlerinin çeşitli alanlarında standartların hazırlanmasından sorumludur.

IEC, uluslararası bilgi teknolojisi standartlarının hazırlanmasında kilit bir kuruluştur. Bu alanda, IEC ve ISO arasındaki bir anlaşmaya uygun olarak 1987'de oluşturulan bilgi teknolojisi - JTC 1 ortak bir teknik komitesi bulunmaktadır. JTC1, yazılımdan programlama dillerine, bilgisayar grafikleri ve görüntü düzenleme, ekipman ara bağlantısı ve güvenlik uygulamalarına kadar her şeyi denetleyen 17 alt komiteye sahiptir.

Yeni IEC standartlarının hazırlanması birkaç aşamayı içerir (ön hazırlık, teklif aşaması, hazırlık aşaması, teknik komite aşaması, talep aşaması, onay aşaması, yayın). IEC belgesinin uluslararası bir standart olmayıp yalnızca teknik bir şartname olması amaçlanıyorsa, belgenin revize edilmiş bir versiyonu yayın için merkeze gönderilir. Uluslararası standardın (FDIS) nihai taslağının tamamlanması dört ay sürecektir. Teknik komitenin tüm üyeleri tarafından onaylandığı takdirde, FDIS onay aşamasına geçilmeden yayımlanmak üzere merkeze gönderilir. Bundan sonra, FDIS, iki ay içinde onaylaması gereken ulusal komitelere gider. Ulusal komitelerin üçte ikisinden fazlasının lehte oy kullanması ve olumsuz oyların sayısı %25'i geçmemesi durumunda FDIS onaylanmış kabul edilir. Belgenin onaylanmaması durumunda teknik komite ve alt komitelere revizyona gönderilir. Standart, FDIS onayından sonra en geç iki ay içinde yayınlanmalıdır.

POSIX standartlarının geliştirilmesinde ve benimsenmesinde başka birçok kuruluş yer almaktadır.

Grubu Aç Bilgi teknolojisi alanında çalışan yaklaşık 200 üretici ve kullanıcı topluluğunu birleştiren uluslararası bir yazılım standardizasyonu kuruluşudur (www.opengroup.org/). Open Group, 1995 yılında iki öncülünün birleşmesiyle kuruldu: X / Open ve Open Software Foundation (OSF). Open Group, yazılım sertifikasyon metodolojilerinin ve uyumluluk testlerinin geliştirilmesinde uzmanlaşmıştır. Özellikle Open Group, COE Platformu, CORBA, LDAP, Linux Standard Base, Schools Interoperability Framework (SIF), S/MIME Gateway, Single UNIX Spesifikasyonu, Kablosuz Uygulama Protokolü Spesifikasyonları (WAP) ve son olarak POSIX standart ailesi (www.opengroup.org/certification/).

Austin Ortak Standartlar Revizyon Grubu (CSRG)- ISO / IEC 9945-1-1996, ISO / IEC 9945 temelinde oluşturulacak 1003.1 standardının en son sürümlerini oluşturmak ve sürdürmek için ISO, IEC ve Open Group tarafından 2002 yılında oluşturulan ortak bir teknik çalışma grubu -2-1993, IEEE Std 1003.1-1996, IEEE Std 1003.2-1992 ve Tek UNIX Spesifikasyonu (www.opengroup.org/press/14nov02.htm).

Ulusal Standartlar ve Teknoloji Enstitüsü (NIST)- 1901'de Amerika Birleşik Devletleri'nde kurulan Ticaret Departmanı'nın Teknoloji İdaresi (www.nist.gov/public_affairs/general2.htm) bünyesinde bir federal ajans. NIST'in misyonu, ürün kalitesini iyileştirmek için standartlar ve teknolojiler geliştirmek ve teşvik etmektir. NIST, sonuçlarından biri Federal Bilgi İşleme Standartları olan bir Bilgi Teknolojisi Laboratuvarı (ITL) içerir (FIPS, www.opengroup.org/testing/fips/general_info.html). NIST / ITL, 1991'de FIPS PUB 151-1 1990 kapsamında POSIX sertifikası için bir ilk testler seti sundu.

POSIX nedir?

resmen terim POSIX Richard Stallman tarafından bir kısaltma olarak önerilmiştir. P masa Ö perating S un için sistem arayüzü IX(Unix için taşınabilir işletim sistemi arayüzü). POSIX, uygulamalara kaynak taşınabilirliği sağlamak amacıyla UNIX benzeri işletim sistemleri (en eski sürümleri 1970'lerin başına kadar uzanır) için geliştirilmiştir.

Arayüzün ilk tanımı 1986'da IEEE-IX (IEEE'nin UNIX'in versiyonu) olarak adlandırıldığı zaman yayınlandı. Ancak, isim hızla değişti, POSIX oldu ve zaten bir sonraki yayında (1986'da) bu yeni Bir süre için POSIX, bir grup ilgili belgeye IEEE 1003.1-1988 ve ISO / IEC 9945'in bölümlerine bir referans (veya eşanlamlı) ve eksiksiz ve onaylanmış bir uluslararası standart ISO / IEC 9945.1: 1990 POSIX olarak anlaşıldı. 1990'da kabul edilmiştir. POSIX spesifikasyonları, bir uygulama programı ile işletim sistemi arasındaki etkileşim için standart bir mekanizma tanımlar ve şu anda IEEE, ISO, IEC ve ANSI himayesinde 30'dan fazla standart içerir.

Tarihi boyunca, POSIX, spesifikasyonların gösterimi, spesifik içerikleri, prosedürleri ve doğrulama lojistiğinin birçok kez değişmesiyle uzun bir yol kat etti. O zamandan beri, çeşitli uluslararası kuruluşlar çerçevesinde POSIX standardının çeşitli sürümleri yayınlandı.

POSIX standardının gelişim tarihi

IEEE Std 1003.1 spesifikasyonunun ilk versiyonu 1988'de yayınlandı. Daha sonra, IEEE Std 1003.1'in çok sayıda baskısı uluslararası standartlar olarak kabul edildi.

POSIX geliştirme aşamaları:

1990 yılı

1988'de yayınlanan baskı revize edildi ve daha sonraki revizyonlar ve eklemeler için temel oldu. Uluslararası bir standart olarak ISO/IEC 9945-1: 1990 olarak onaylanmıştır.

1993 yılı

Sürüm 1003.1b-1993 yayınlandı.

1996 yılı

IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995 ve 1003.1i-1995'te değişiklikler yapıldı, ancak belgenin çoğu değişmeden kaldı. 1996 yılında IEEE Std 1003.1'in revizyonu da uluslararası standart ISO/IEC 9945-1: 1996 olarak onaylanmıştır.

1998 yılı

"Gerçek zamanlı" için ilk standart ortaya çıktı - IEEE Std 1003.13-1998. Gerçek zamanlı gömülü uygulamalar için POSIX standardının bir uzantısıdır.

1999 yılı

O zamana kadar ayrı standartlar oldukları için, 1003.2 standardı (Shell ve yardımcı programlar) ile birleştirme de dahil olmak üzere, son 10 yılda ilk kez standardın ana metninde önemli değişiklikler yapılmasına karar verildi. PASC, IEEE standartları 1003.1a, 1003.1d, 1003.1g, 1003.1j, 1003.1q ve 1003.2b'nin tamamlanmasının ardından temel metin değişikliklerini tamamlamaya karar verdi.

2004 r.

1003.1'in en son revizyonu 30 Nisan'da yayınlandı ve Austin Ortak Standartlar Revizyon Grubu'nun himayesinde yayınlandı. Standardın 2001 baskısı için değiştirilmiştir. Resmi olarak, 2004 baskısı IEEE Std 1003.1, 2004 Edition, The Open Group Technical Standard Base Spesifikasyonları, Sayı 6 olarak bilinir ve IEEE Std 1003.1-2001, IEEE Std 1003.1-2001 / Cor 1-2002 ve IEEE Std 1003.1-2001 / Cor 2-2004.

RT OS için en önemli POSIX standartları

Gerçek zamanlı işletim sistemleri için, standardın yedi özelliği çok önemlidir (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21), ancak ticari işletim sistemlerinde yalnızca üçü geniş destek almıştır:

  • 1003.1a (İS Tanımı) ana işletim sistemi arayüzlerini, iş kontrolünü, sinyallerini, dosya sisteminin işlevlerini ve cihazlar, kullanıcı grupları, boru hatları, FIFO arabellekleriyle çalışmayı tanımlar;
  • 1003.1b (Gerçek Zamanlı Uzantılar) gerçek zamanlı sinyaller, öncelik çizelgeleme, zamanlayıcılar, senkron ve asenkron G/Ç, semaforlar, paylaşılan hafıza, mesajlar gibi gerçek zamanlı uzantıları açıklar. Başlangıçta (1993'ten önce) bu standarda POSIX.4 adı verildi.
  • 1003.1c (Konular) iş parçacığı destek işlevlerini tanımlar - iş parçacığı kontrolü, iş parçacığı nitelikleri, muteksler, gönderme. Başlangıçta POSIX.4a olarak belirlenmiştir.

Bu standartlara ek olarak, Std 1003.1-2001 projesinde yapılan çalışmaların bir parçası olarak uygulanan RT OS için aşağıdaki standartlar önemlidir:

  • IEEE 1003.1d-1999. Ek gerçek zamanlı uzantılar. Orijinal olarak POSIX.4b olarak belirlenmiştir;
  • IEEE 1003.1j-2000.İyileştirilmiş (gelişmiş) gerçek zamanlı uzantılar;
  • IEEE 1003.1q-2000.İzleme.

sertifikasyon prosedürü

POSIX uyumlu olması için, bir işletim sisteminin uygun test paketine göre sertifikalandırılması gerekir. POSIX'in piyasaya sürülmesinden bu yana, test paketi resmi ve fiili değişikliklere uğradı.

1991'de NIST, FIPS 151-1 kapsamında bir POSIX test programı geliştirdi (http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf). Bu test seçeneği, IEEE 1003.3 "POSIX'e Uygunluğun Ölçülmesi için Test Yöntemleri Standardı" Taslak 10, 3 Mayıs 1989'a dayanıyordu. 1993'te NIST, FIPS 151-1 için POSIX Test Programını tamamladı ve FIPS 151 -2 programına başladı (www.itl.nist.gov/fipspubs/fip151-2.htm). FIPS 151-2, ISO / IEC 9945-1: 1990 standardı olan "Bilgi Teknolojisi - Taşınabilir İşletim Sistemi Arayüzü (POSIX) - Bölüm 1: Sistem Uygulama Programı Arayüzü (API)" uyarlamıştır. FIPS 151-2 için test takımları, IEEE 2003.1-1992 "POSIX'e Uygunluğun Ölçülmesi için Test Yöntemleri Standardı"na dayanıyordu.

NIST, iki sertifikasyon metodolojisi arasında ayrım yapar: kendi kendine sertifikalandırma ve IEEE tarafından akredite edilmiş test laboratuvarları tarafından sertifikalandırma (Accredited POSIX Testing Laboratories - APTL). İlk durumda, şirket testleri kendi başına, ancak NIST tarafından onaylanan bir plana göre yürütür. İkinci durumda, test bağımsız bir laboratuvar tarafından otomatikleştirilmiş test takımları kullanılarak gerçekleştirilir. Toplamda iki APTL laboratuvarı akredite edilmiştir: Mindcraft (www.mindcraft.com) ve Perennial (www.peren.com).

1997 yılında NIST / ITL, FIPS 151-2 sertifikasını bu yılın sonunda (resmi olarak 31 Aralık 1997) sona erdirme niyetini açıklarken, Open Group o yılın 1 Ekim'inden itibaren devralacağını açıkladı. NIST / ITL programına dayalı FIPS 151-2 uyarınca yıllık sertifika hizmeti. Aynı işlevler, 1 Ocak 1998'den beri IEEE Standards Association (IEEE-SA) tarafından üstlenilmiştir ve ayrıca FIPS 151-2'ye dayanmaktadır.

2003 yılında, IEEE-SA ve Open Group, IEEE 1003.1 ™ 2001 ile başlayan en son POSIX sürümlerini sertifikalandırmak için yeni bir ortak program duyurdu. Open Group'un artık IEEE Std 1003.1-1996, IEEE Std 1003.2-1992'yi kapsayan birkaç test paketi var. , IEEE Std 1003.1-2003 ve IEEE Std 1003.13-1998 (www.opengroup.org/testing/testsuites/posix.html). Bir ürün, tam sertifikasyon prosedürünü geçmişse, test sonuçlarına göre tüm gereklilikleri karşılıyorsa ve sertifikalı ürünlerin resmi siciline girilmişse POSIX sertifikalı olarak kabul edilir.

Test paketleri şunları içerir:

  • VSX-PCTS1990 (www.opengroup.org/testing/testsuites/vsxpcts1990.htm) - sistem arayüzleri için bir dizi uygunluk testi IEEE Std 1003.1-1990;
  • VSPSE54 (www.opengroup.org/testing/testsuites/VSPSE54.htm) - IEEE Std 1003.13-1998 Profil PSE54 (çok amaçlı gerçek zamanlı) için bir dizi uygunluk testi;
  • VSX-PCTS2003 (www.opengroup.org/testing/testsuites/vsxpcts2003.htm) - sistem arayüzleri için bir dizi uygunluk testi IEEE Std 1003.1-2003 (yalnızca zorunlu parçalar);
  • VSC-PCTS2003 (www.opengroup.org/testing/testsuites/vscpcts2003.htm), IEEE Std 1003.1-2003 (kabuk ve yardımcı programlar - yalnızca gerekli parçalar) için bir dizi uygunluk testidir.

Ayrıca Open Group, POSIX Gerçek Zamanlı Standartları ve Gömülü POSIX Standartları Profili için karşılaştırma ölçütleri geliştirmiştir. POSIX Gerçek Zamanlı Test Paketi (www.opengroup.org/testing/testsuites/realtime.html) aşağıdaki testleri içerir:

  • IEEE POSIX 1003.1b-1993 / 1003.1i-1995 Gerçek zamanlı uzantı ve IEEE POSIX 1003.1,2003 Sürümü;
  • IEEE Std POSIX 1003.1c-1995 Threads (pthreads) uzantısı ve IEEE POSIX 1003.1,2003 Edition;
  • IEEE POSIX 1003.1d-1999 Ek Gerçek Zamanlı Uzantı ve IEEE POSIX 1003.1,2003 Sürümü;
  • IEEE POSIX 1003.1j-2000 Gelişmiş Gerçek Zamanlı Uzantı ve IEEE POSIX 1003.1,2003 Sürümü;
  • IEEE POSIX 1003.1q-2000 Trace ve IEEE POSIX 1003.1,2003 Sürümü ve IEEE POSIX 1003.1,2003 Sürümü;

Gömülü POSIX Standartları Profil Test Takımı (www.opengroup.org/testing/testsuites/embedded.html) aşağıdaki testleri içerir:

  • IEEE POSIX 1003.1-1990 (5310 testleri);
  • IEEE POSIX 1003.1b-1993 / 1003.1i-1995 Gerçek zamanlı uzatma (1430 test);
  • IEEE Std POSIX 1003.1c-1995 Threads (pthreads) uzantısı (1232 test);
  • IEEE POSIX 1003.13-1998 Profil 52.

Terminolojideki karışıklık hakkında biraz

İngilizce'deki POSIX standartlar grubuyla ilgili olarak, genellikle bir değil üç terim kullanılır. Ne yazık ki, anlam olarak benzerler ve genellikle aynı şekilde tercüme edilirler, bu da biraz kafa karışıklığına neden olur. Bu terimler aşağıdaki gibidir:

  • uyumluluk (kelimenin tam anlamıyla - "uyumluluk");
  • uyumluluk (kelimenin tam anlamıyla - "uyum");
  • uygunluk (kelimenin tam anlamıyla "tutarlılık").

POSIX'e uygulanan ilk terim resmi olarak tanımlanmamıştır. İkincisi, kuruluşun - yazılım ürününün üreticisinin bağımsız olarak bu ürünün (tamamen veya kısmen) listelenen NIST-PCTS standartlarına uygun olduğunu beyan ettiği anlamına gelir. Üçüncü terim, yazılım ürününün ya akredite bir laboratuvarın yardımıyla ya da Açık Grup içinde kurulu test sistemini geçtiği ve bunun (Uygunluk Beyanı olarak adlandırılan) belgesel kanıtı olduğu anlamına gelir. Ayrıca makale metninde, belirsizliği ortadan kaldırmak için her yerde terimlerin orijinallerine atıfta bulunulacaktır.

Sertifikalı OS RV

Sertifikalı bir RT OS'deki verilerin resmi kayıtta yayınlanmasını ve testlerin uygunluk düzeyinde yapılmasını gerektiren katı kurallara bağlı kalırsanız, şu anda yalnızca iki sertifikalı RT OS vardır (veriler kronolojik sırayla verilmiştir):

LynxOS v.3(Lynx Gerçek Zamanlı Sistemlerin bir ürünü, şimdi LynuxWorks, Inc., www.lynuxworks.com olarak anılmaktadır), gerçek zamanlı olarak çalışan gömülü sistemler, OEM ve telekomünikasyon ekipmanı üreticileri, özellikle yerleşik sistem üreticileri için yazılım geliştirmek üzere tasarlanmıştır. askeri uygulamalar için... Geliştirme hem hedef sistemin kendisinde (kendi kendine barındırılan) hem de araçsal bilgisayarda (ana bilgisayar) gerçekleştirilebilir, bitmiş yazılım hedef sistem (hedef) üzerinde çalışmak üzere tasarlanmıştır. LynxOS v.3, Intel ve PowerPC platformlarında POSIX uyumluluğu sertifikasına sahiptir. Bununla ilgili bilgiler, http://standards.ieee.org/regauth/posix/posix2.html adresindeki IEEE web sitesinde bulunabilir. LynxOS, NIST FIPS 151-2 Uygunluk Test Takımı üzerinde bir IEEE POSIX Akredite POSIX Test Laboratuvarı olan Mindcraft tarafından POSIX 1003.1-1996 sertifikasına sahiptir. Sertifikasyon belge numarası: Referans Dosyası: IP-2LYX002, Referans Dosyası: IP-2LYX001.

BÜTÜNLÜK v.5(Green Hills Yazılımının bir ürünü, www.ghs.com), Temmuz 2004'te POSIX 1003.1-2003, PowerPC mimarisi için Sistem Arayüzleri'ne uygunluk sertifikasına sahiptir (http://get.posixcertified.ieee.org/select_product.tpl). VSX-PCTS 2003 test paketi.

POSIX ve QNX işletim sistemi

QNX v.4.20 (QNX Software Systems tarafından geliştirilmiştir, www.qnx.com), DataFocus Incorporated tarafından Intel platformu için POSIX 1003.1-1988 uyumluluğu sertifikasına sahiptir. Test 13 Eylül 1993'te yapıldı ve 1 Kasım 1993'te yayınlandı. NIST PCTS 151-1 Test Suite, Sürüm 1.1.

QNX Neutrino (sürüm 6.3), aşağıdaki POSIX ailesi standartlarına uygundur (www.qnx.com/download/download/8660/portability.pdf):

  • POSIX.1 (IEEE 1003.1);
  • POSIX.1a (IEEE 1003.1a);
  • POSIX.2 (IEEE 1003.2);
  • POSIX.4 (IEEE 1003.1b);
  • POSIX.4a (IEEE 1003.1c);
  • POSIX.1b (IEEE 1003.1d), IEEE 1003.1j;
  • POSIX.12 (IEEE 1003.1g).

QNX Neutrino'nun yaratıcısı olan QNX Software Systems, QNX Neutrino'nun bu standartlardan bazılarına uygunluğunu da planlıyor; çalışmalar 2005 yılı için planlanmıştır (www.qnx.com/news/pr_959_1.html).

Edebiyat

  1. IEEE Standartları Birliği Kullanım Kılavuzu. IEEE, Ekim 2004.
  2. Kevin M. Obeland. Gerçek Zamanlı POSIX, Gömülü Sistem Programlama, 2001.
  3. IEEE / ANSI Standardı 1003.1: Bilgi Teknolojisi - (POSIX) - Bölüm1: Sistem Uygulaması: Program Arayüzü (API).
  4. Gallmeister, B. O. Gerçek Dünya için Programlama, POSIX.4 Sebastopol, CA: O'Reilly & Associates, 1995.
  5. Ulusal Standartlar ve Teknoloji Enstitüsü, PCTS: 151-2, POSIX Test Suite.
  6. POSIX: IEEE ve The Open Group tarafından onaylanmıştır. Sertifikalı Politika. Açık Grup, 21 Ekim 2003, Revizyon 1.1.