System v 和Posix
時間:2018-09-21 來源:未知
當我(wo)們在linux系統中(zhong)進行進程間通信(xin)時(shi)(shi),會發現(xian)例如共享(xiang)內(nei)存,信(xin)號量,消息隊列(lie)等方式時(shi)(shi),會發現(xian)有System v以(yi)及POXIS兩種(zhong)類(lei)型(xing)。因(yin)此,我(wo)們探究一下System v和(he)POXIS到底(di)代表著什么意義。
POSIX
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和(he)(he)ISO/IEC 開(kai)發的(de)(de)一簇標(biao)(biao)(biao)準(zhun)(zhun)。該(gai)標(biao)(biao)(biao)準(zhun)(zhun)是基(ji)于現有(you)的(de)(de)UNIX 實踐和(he)(he)經驗,描述了(le)(le)操(cao)作系(xi)統(tong)的(de)(de)調(diao)用(yong)(yong)服務接(jie)口(kou),用(yong)(yong)于保證編制(zhi)(zhi)的(de)(de)應用(yong)(yong)程(cheng)序(xu)可以在源代碼一級上(shang)在多種操(cao)作系(xi)統(tong)上(shang)移(yi)植運行。它是在1980 年早(zao)期一個(ge)UNIX 用(yong)(yong)戶組(zu)(usr/group)的(de)(de)早(zao)期工作的(de)(de)基(ji)礎上(shang)取得的(de)(de)。該(gai)UNIX 用(yong)(yong)戶組(zu)原來(lai)試圖將AT&T 的(de)(de)系(xi)統(tong)V 和(he)(he)Berkeley CSRG的(de)(de)BSD 系(xi)統(tong)的(de)(de)調(diao)用(yong)(yong)接(jie)口(kou)之間(jian)的(de)(de)區別(bie)重新(xin)調(diao)和(he)(he)集成(cheng),從而于1984 年產生了(le)(le)/usr/group 標(biao)(biao)(biao)準(zhun)(zhun)。1985 年,IEEE操(cao)作系(xi)統(tong)技術委(wei)(wei)員會(hui)標(biao)(biao)(biao)準(zhun)(zhun)小組(zu)委(wei)(wei)員會(hui)(TCOS-SS)開(kai)始在ANSI 的(de)(de)支持下責成(cheng)IEEE 標(biao)(biao)(biao)準(zhun)(zhun)委(wei)(wei)員會(hui)制(zhi)(zhi)定有(you)關程(cheng)序(xu)源代碼可移(yi)植性操(cao)作系(xi)統(tong)服務接(jie)口(kou)正式標(biao)(biao)(biao)準(zhun)(zhun)。到(dao)了(le)(le)1986 年4 月,IEEE 就制(zhi)(zhi)定出(chu)了(le)(le)試用(yong)(yong)標(biao)(biao)(biao)準(zhun)(zhun)。第一個(ge)正式標(biao)(biao)(biao)準(zhun)(zhun)是在1988 年9 月份批準(zhun)(zhun)的(de)(de)(IEEE 1003.1-1988),也既(ji)以后經常提到(dao)的(de)(de)POSIX.1 標(biao)(biao)(biao)準(zhun)(zhun)。
System V
System V, 曾經也(ye)被稱為(wei)(wei) AT&T System V,是Unix操(cao)作系統(tong)眾多(duo)版本(ben)(ben)中的(de)一支。它初(chu)由 AT&T 開(kai)發,在1983年第一次發布。一共發行了4個 System V 的(de)主要版本(ben)(ben):版本(ben)(ben)1、2、3 和 4。System V Release 4,或者稱為(wei)(wei)SVR4,是成(cheng)功的(de)版本(ben)(ben),成(cheng)為(wei)(wei)一些UNIX共同特(te)性的(de)源頭,例如(ru) ”SysV 初(chu)始化(hua)腳本(ben)(ben)“ (/etc/init.d),用(yong)來(lai)控制系統(tong)啟動和關閉,System V Interface Definition (SVID) 是一個System V 如(ru)何(he)工作的(de)標準定義(yi)。
AT&T 出售(shou)運(yun)行(xing)System V的專(zhuan)有(you)硬件,但許多(duo)(或(huo)許是大多(duo)數)客戶在其上運(yun)行(xing)一個(ge)轉售(shou)的版本,這(zhe)個(ge)版本基于(yu) AT&T 的實(shi)現說明(ming)。流行(xing)的SysV 衍生版本包括 Dell SVR4 和 Bull SVR4。當(dang)今廣泛使(shi)用(yong)的 System V 版本是 SCO OpenServer,基于(yu) System V Release 3,以及SUN Solaris 和 SCO UnixWare,都基于(yu) System V Release 4。
System V 是 AT&T 的(de)第一個商業(ye)UNIX版(ban)本(UNIX System III)的(de)加強(qiang)。傳統上,System V 被(bei)看作是兩種(zhong)UNIX"風(feng)味"之一(另一個是 BSD)。然而(er),隨(sui)著一些并不(bu)基于這(zhe)兩者(zhe)代碼的(de)UNIX實現(xian)的(de)出現(xian),例如 Linux 和 QNX, 這(zhe)一歸納(na)不(bu)再準確(que),但不(bu)論如何,像POSIX這(zhe)樣的(de)標(biao)準化努力(li)一直在試圖減少各種(zhong)實現(xian)之間的(de)不(bu)同。
使用
照上面所說的System V和POXIS是(shi)一種(zhong)應用于(yu)系統的接口(kou)協議,POXIS相對于(yu)System V可以說是(shi)比較新(xin)的標準,語法相對簡(jian)單。
在linux/unix系統(tong)編程中(zhong)支(zhi)持(chi)System V和(he)POXIS。我(wo)們常見(jian)的一個名詞就是POSIX IPC和(he)
System V IPC。IPC的全稱是Inter-process Comminication,就(jiu)是進程間(jian)通(tong)信。
在POSIX IPC中,在POSIX IPC中,每個(ge)IPC對(dui)象是(shi)(shi)有名(ming)稱(cheng)(cheng)的(de)(de),而(er)且名(ming)稱(cheng)(cheng)是(shi)(shi)一(yi)(yi)個(ge)很重要的(de)(de)概(gai)念,posix ipc使(shi)用ipc的(de)(de)名(ming)稱(cheng)(cheng)作為ipc的(de)(de)標識。mq_open sem_open shm_open三個(ge)函數的(de)(de)第一(yi)(yi)個(ge)參數就(jiu)是(shi)(shi)這(zhe)個(ge)名(ming)稱(cheng)(cheng),這(zhe)個(ge)名(ming)稱(cheng)(cheng)不一(yi)(yi)定(ding)是(shi)(shi)在文件(jian)系統中存在的(de)(de)名(ming)稱(cheng)(cheng)。 要使(shi)用IPC對(dui)象,需要創建或者打開(kai),這(zhe)與文件(jian)操作類似,主要是(shi)(shi)使(shi)用mq_open、sem_open、shm_open 函數操作。在創建或者打開(kai)ipc對(dui)象時需要指定(ding)操作的(de)(de)mode,例(li)如O_RONLY、O_WRONLY、O_RDWR、O_CREAT、O_EXCL 等(deng),IPC對(dui)象是(shi)(shi)有一(yi)(yi)定(ding)權限(xian)的(de)(de),與文件(jian)的(de)(de)權限(xian)類似。
在(zai)System V IPC中,System v ipc中有(you)一個重要的類型(xing)是(shi)key_t,在(zai)msget、semget、shmget函數操作中都需要利用這個類型(xing)是(shi)參(can)數。
具體的(de)進程間通(tong)信區別就不在這(zhe)里贅述了,以后再寫。