【POSIX】POSIX標(biāo)準(zhǔn)介紹

POSIX表示可移植操作系統(tǒng)接口(Portable Operating System Interface of UNIX忌警,縮寫(xiě)為 POSIX ),POSIX標(biāo)準(zhǔn)定義了操作系統(tǒng)應(yīng)該為應(yīng)用程序提供的接口標(biāo)準(zhǔn)拯腮。

20世紀(jì)60年代是大型匿沛、復(fù)雜操作系統(tǒng)盛行的年代龄章,比如IBM的OS/360和Honeywell的Multics系統(tǒng)袜香。OS/360是歷史上最成功的軟件項(xiàng)目之一撕予,而 Multics雖然持續(xù)存在了多年,卻從來(lái)沒(méi)有被廣泛應(yīng)用過(guò)困鸥。貝爾實(shí)驗(yàn)室曾經(jīng)是Multics項(xiàng)目的最初參與者嗅蔬,但是因?yàn)榭紤]到該項(xiàng)目的復(fù)雜性和缺乏進(jìn)展而于1969年退出。鑒于Mutics項(xiàng)目不愉快的經(jīng)歷疾就,一群貝爾實(shí)驗(yàn)室的研究人員Ken Thompson澜术、 Dennis Ritchie、 Doug Mcllroy和 Joe Ossanna猬腰,從1969年開(kāi)始在DEC PDP-7計(jì)算機(jī)上完全用機(jī)器語(yǔ)言編寫(xiě)了一個(gè)簡(jiǎn)單得多的操作系統(tǒng)鸟废。這個(gè)新系統(tǒng)中的很多思想,比如層次文件系統(tǒng)姑荷、作為用戶(hù)級(jí)進(jìn)程的 shell概念盒延,都是來(lái)自于 Multics,只不過(guò)在一個(gè)更小鼠冕、更簡(jiǎn)單的程序包里實(shí)現(xiàn)添寺。1970年,Brian Kernighan給新系統(tǒng)命名為“Unix”懈费,這也是一個(gè)雙關(guān)語(yǔ)计露,暗指“Multics”的復(fù)雜性。1973年用C重新編寫(xiě)其內(nèi)核憎乙,1974年票罐,Unix開(kāi)始正式對(duì)外發(fā)布。

貝爾實(shí)驗(yàn)室以慷慨的條件向?qū)W校提供源代碼泞边,所以Unix在大專(zhuān)院校里獲得了很多支持并得以持續(xù)發(fā)展该押。最有影響的工作發(fā)生在20世紀(jì)70年代晚期到80年代早期,在美國(guó)加州大學(xué)伯克利分校阵谚,研究人員在一系列發(fā)布版本中增加了虛擬內(nèi)存和Internet協(xié)議蚕礼,稱(chēng)為Unix4.xBSD(Berkeley Software Distribution)。與此同時(shí)梢什,貝爾實(shí)驗(yàn)室也在發(fā)布自己的版本闻牡,稱(chēng)為System V Unix。其他廠商的版本绳矩,比如Sun Microsystems的Solaris系統(tǒng),則是從這些原始的BSD和System V版本中衍生而來(lái)罩润。

20世紀(jì)80年代中期,Unix廠商試圖通過(guò)加入新的翼馆、往往不兼容的特性來(lái)使它們的程序與眾不同割以,麻煩也就隨之而來(lái)了。為了阻止這種趨勢(shì)应媚,IEEE(電氣和電子工程師協(xié)會(huì))開(kāi)始努力標(biāo)準(zhǔn)化Unix的開(kāi)發(fā)严沥,后來(lái)由 Richard Stallman命名為“Posix”。結(jié)果就得到了一系列的標(biāo)準(zhǔn)中姜,稱(chēng)作Posix標(biāo)準(zhǔn)消玄。這套標(biāo)準(zhǔn)涵蓋了很多方面跟伏,比如Unix系統(tǒng)調(diào)用的C語(yǔ)言接口、shell程序和工具翩瓜、線程及網(wǎng)絡(luò)編程受扳。最近,一個(gè)被稱(chēng)為“標(biāo)準(zhǔn)Unix規(guī)范”的獨(dú)立標(biāo)準(zhǔn)化工作已經(jīng)與Posix一起創(chuàng)建了統(tǒng)一的Unix系統(tǒng)標(biāo)準(zhǔn)兔跌。這些標(biāo)準(zhǔn)化工作的結(jié)果是Unix版本之間的差異已經(jīng)基本消失勘高。

 在 20 世紀(jì) 70~80 年代,AT&T 雖對(duì) UNIX 的實(shí)際源代碼進(jìn)行了版權(quán)保護(hù)坟桅,但卻鼓勵(lì)在系統(tǒng)的接口和語(yǔ)言基礎(chǔ)上進(jìn)行標(biāo)準(zhǔn)化工作华望。例如,AT&T 發(fā)布了 SVID(System V Interface Definition仅乓,系統(tǒng) V 接口定義)赖舟,這成為了 POSIX 及其后續(xù)工作的基礎(chǔ)。后來(lái)夸楣,UNIX 可以說(shuō)相當(dāng)優(yōu)雅地適應(yīng)了網(wǎng)絡(luò)環(huán)境建蹄,雖不那么輕巧卻也充分地適應(yīng)了圖形環(huán)境。再往后裕偿,開(kāi)源運(yùn)動(dòng)的技術(shù)基礎(chǔ)中集成了 UNIX 的基本內(nèi)核接口和許多它獨(dú)特的用戶(hù)級(jí)工具洞慎。

  POSIX 標(biāo)準(zhǔn)定義了操作系統(tǒng)應(yīng)該為應(yīng)用程序提供的接口標(biāo)準(zhǔn),是 IEEE 為要在各種 UNIX 操作系統(tǒng)上運(yùn)行的軟件而定義的一系列 API 標(biāo)準(zhǔn)的總稱(chēng)嘿棘,其正式稱(chēng)呼為 IEEE 1003劲腿,而國(guó)際標(biāo)準(zhǔn)名稱(chēng)為 ISO/IEC 9945。POSIX 標(biāo)準(zhǔn)意在期望獲得源代碼級(jí)別的軟件可移植性鸟妙。換句話說(shuō)焦人,為一個(gè) POSIX 兼容的操作系統(tǒng)編寫(xiě)的程序,應(yīng)該可以在任何其它的 POSIX 操作系統(tǒng)(即使是來(lái)自另一個(gè)廠商)上編譯執(zhí)行重父。

  POSIX 并不局限于 UNIX花椭。許多其它的操作系統(tǒng),例如 DEC OpenVMS 支持 POSIX 標(biāo)準(zhǔn)房午,尤其是 IEEE Std. 1003.1-1990(1995 年修訂)或 POSIX.1矿辽,POSIX.1 提供了源代碼級(jí)別的 C 語(yǔ)言應(yīng)用編程接口(API)給操作系統(tǒng)的服務(wù)程序,例如讀寫(xiě)文件郭厌。POSIX.1 已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織(International Standards Organization袋倔,ISO)所接受,被命名為 ISO/IEC 9945-1:1990 標(biāo)準(zhǔn)折柠。

  POSIX.1 僅規(guī)定了系統(tǒng)服務(wù)應(yīng)用程序編程接口(API)宾娜,僅概況了基本的系統(tǒng)服務(wù)標(biāo)準(zhǔn)。因此工作組期望對(duì)系統(tǒng)的其他功能也制定出標(biāo)準(zhǔn)扇售。這樣前塔,IEEE POSIX 的工作就開(kāi)始展開(kāi)了嚣艇。剛開(kāi)始有十個(gè)批準(zhǔn)的計(jì)劃在進(jìn)行,有近 300 多人參加每季度為期一周的會(huì)議华弓。著手的工作由命令與工作標(biāo)準(zhǔn)(POSIX.2)食零、測(cè)試方法標(biāo)準(zhǔn)(POSIX.3)、實(shí)時(shí) API(POSIX.4)等该抒。到了 1990 年上半年已經(jīng)有 25 個(gè)計(jì)劃在進(jìn)行,并且有 16 個(gè)工作組參與了進(jìn)來(lái)顶燕。與此同時(shí)凑保,還有一些組織也在指定類(lèi)似的標(biāo)準(zhǔn),如 X/Open涌攻、AT&T欧引、OSF 等。

  在上世紀(jì) 90 年代初恳谎,POSIX 標(biāo)準(zhǔn)的制定正處于最后投票敲定階段芝此。也就是 1991~1993 年間,Linux 剛剛起步的時(shí)候因痛,這個(gè) UNIX 標(biāo)準(zhǔn)為 Linux 提供了極為重要的信息婚苹,使得 Linux 能夠在標(biāo)準(zhǔn)的指導(dǎo)下進(jìn)行開(kāi)發(fā),并能夠與絕大多數(shù) UNIX 操作系統(tǒng)兼容鸵膏。在最初的 Linux 內(nèi)核源碼(0.01版膊升、0.11版)中就已經(jīng)為 Linux 系統(tǒng)與 POSIX 標(biāo)準(zhǔn)的兼容做好了準(zhǔn)備工作。在 Linux 0.01 版內(nèi)核 /include/unistd.h 文件中就已經(jīng)定義了幾個(gè)有關(guān) POSIX 標(biāo)準(zhǔn)要求的符號(hào)常數(shù)谭企,而且 Linus 在注釋中已寫(xiě)道:“OK廓译,這也許是個(gè)玩笑,但我正在著手研究它呢”债查。


簡(jiǎn)單總結(jié):

? 完成同一功能非区,不同內(nèi)核提供的系統(tǒng)調(diào)用(也就是一個(gè)函數(shù))是不同的,例如創(chuàng)建進(jìn)程盹廷,linux下是fork函數(shù)征绸,windows下是creatprocess函數(shù)。好俄占,我現(xiàn)在在linux下寫(xiě)一個(gè)程序歹垫,用到fork函數(shù),那么這個(gè)程序該怎么往windows上移植颠放?我需要把源代碼里的fork通通改成creatprocess排惨,然后重新編譯!

? posix標(biāo)準(zhǔn)的出現(xiàn)就是為了解決這個(gè)問(wèn)題碰凶。linux和windows都要實(shí)現(xiàn)基本的posix標(biāo)準(zhǔn)暮芭,linux把fork函數(shù)封裝成posix_fork(隨便說(shuō)的)鹿驼,windows把creatprocess函數(shù)也封裝成posix_fork,都聲明在unistd.h里辕宏。

這樣畜晰,程序員編寫(xiě)普通應(yīng)用時(shí)候,只用包含unistd.h瑞筐,調(diào)用posix_fork函數(shù)凄鼻,程序就在源代碼級(jí)別可移植了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末聚假,一起剝皮案震驚了整個(gè)濱河市块蚌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膘格,老刑警劉巖峭范,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瘪贱,居然都是意外死亡纱控,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)菜秦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)甜害,“玉大人,你說(shuō)我怎么就攤上這事球昨⊥倌牵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵褪尝,是天一觀的道長(zhǎng)闹获。 經(jīng)常有香客問(wèn)我,道長(zhǎng)河哑,這世上最難降的妖魔是什么避诽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮璃谨,結(jié)果婚禮上沙庐,老公的妹妹穿的比我還像新娘。我一直安慰自己佳吞,他們只是感情好拱雏,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著底扳,像睡著了一般铸抑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衷模,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天鹊汛,我揣著相機(jī)與錄音蒲赂,去河邊找鬼。 笑死刁憋,一個(gè)胖子當(dāng)著我的面吹牛滥嘴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播至耻,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼若皱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了尘颓?” 一聲冷哼從身側(cè)響起走触,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泥耀,沒(méi)想到半個(gè)月后饺汹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蛔添,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痰催,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迎瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夸溶。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凶硅,靈堂內(nèi)的尸體忽然破棺而出缝裁,到底是詐尸還是另有隱情,我是刑警寧澤足绅,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布捷绑,位于F島的核電站,受9級(jí)特大地震影響氢妈,放射性物質(zhì)發(fā)生泄漏粹污。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一首量、第九天 我趴在偏房一處隱蔽的房頂上張望壮吩。 院中可真熱鬧,春花似錦加缘、人聲如沸鸭叙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沈贝。三九已至,卻和暖如春勋乾,著一層夾襖步出監(jiān)牢的瞬間缀程,已是汗流浹背搜吧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杨凑,地道東北人滤奈。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撩满,于是被迫代替她去往敵國(guó)和親蜒程。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容