• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    登月計(jì)劃中的計(jì)算機(jī)工作

    2019-08-01 02:10:12編譯喬琦
    世界科學(xué) 2019年7期
    關(guān)鍵詞:阿波羅程序計(jì)算機(jī)

    編譯 喬琦

    50年前,3名宇航員帶著2臺(tái)數(shù)字計(jì)算機(jī)奔赴月球。幾天后,5億地球人在電視上看到了尼爾·阿姆斯特朗和巴茲·奧爾德林爬出阿波羅11號(hào)登月艙并且在月球靜海的粉塵狀土壤上留下第一個(gè)人類腳?。ㄖ噶钆擇{駛員邁克爾·柯林斯則操控指令艙留在了月球軌道上)的模糊畫面。隨后,這3名宇航員立刻成了全球知名的名人。而輔助引導(dǎo)、操控飛船的計(jì)算機(jī)卻只在技術(shù)愛好者的小圈子里贏得了一些名聲。即便如此,阿姆斯特朗為人類邁出的一小步也同樣標(biāo)志著數(shù)字計(jì)算機(jī)技術(shù)的一次巨大飛躍。

    身處21世紀(jì)這個(gè)一切都由計(jì)算機(jī)控制的時(shí)代回望往事,我們很難體會(huì)到美國宇航局(NASA)在阿波羅飛船上安裝計(jì)算機(jī)這一決定究竟有多么大膽。當(dāng)時(shí)的計(jì)算機(jī)體積龐大、容易出錯(cuò)、特別耗電,但在飛船上,阿波羅導(dǎo)航計(jì)算機(jī)必須安裝在比隨身行李還小的空間之內(nèi),使用的能源不能超過一盞電燈。另外,它還必須100%可靠,一次小小的故障就會(huì)置宇航員于萬劫不復(fù)的境地。

    盡管阿波羅導(dǎo)航計(jì)算機(jī)的名頭沒有阿波羅號(hào)的宇航員響亮,人們還是完整記錄了它在阿波羅計(jì)劃中扮演的角色。至少有5本書講述了它的故事,網(wǎng)絡(luò)上的相關(guān)信息更多。在所有這些可以查到的資料中,歷史文獻(xiàn)寶庫讓我們能夠非常直接且近距離了解這臺(tái)新奇計(jì)算機(jī)的運(yùn)作機(jī)制。技術(shù)愛好者自發(fā)研究了極少量流傳至今的打印輸出文件,把某幾個(gè)版本的阿波羅導(dǎo)航計(jì)算機(jī)軟件轉(zhuǎn)錄出來并發(fā)布在網(wǎng)絡(luò)上。因此,你可以在網(wǎng)上通讀這些指引阿波羅11號(hào)登陸月球的程序,甚至可以在一臺(tái)“虛擬阿波羅導(dǎo)航計(jì)算機(jī)”上運(yùn)行那些程序。

    毫無疑問,這些用深?yuàn)W且過時(shí)的編程語言寫就的冗長(zhǎng)機(jī)器指令閱讀起來并不容易,哪怕是理解很小一部分程序片段也是異常艱巨的任務(wù)。而完成這些任務(wù)的回報(bào)則是能親眼看到當(dāng)時(shí)的程序員如何解決一些棘手問題,哪怕是今時(shí)今日,這些問題也仍舊是軟件工程的巨大挑戰(zhàn)。此外,雖然這些文件本身技術(shù)性很強(qiáng),但其能激起普羅大眾強(qiáng)烈的共鳴,讓我們一窺當(dāng)時(shí)這個(gè)高關(guān)注度、高風(fēng)險(xiǎn)、高壓力工程項(xiàng)目的文化背景。

    導(dǎo)航、制導(dǎo)和操控

    阿波羅導(dǎo)航計(jì)算機(jī)(Apollo Guidance Computer)軟件的打印輸出文件堆積起來,形成了一座5.5英尺(約1.68米)高的“文件塔”,這個(gè)高度和瑪格麗特·漢密爾頓(Margaret H. Hamilton)的身高相當(dāng)。漢密爾頓在1963年以程序員的身份加入了登月項(xiàng)目,數(shù)年后成了軟件工程部主任。每沓打印文件都對(duì)應(yīng)著某項(xiàng)任務(wù)中的指令艙或登月艙程序。這張照片是1969年阿波羅11號(hào)啟航之前在麻省理工學(xué)院儀器實(shí)驗(yàn)室拍攝的

    每一次阿波羅登月任務(wù)都會(huì)攜帶兩臺(tái)阿波羅導(dǎo)航計(jì)算機(jī),一臺(tái)安在指令艙里,另一臺(tái)安在登月艙里。兩臺(tái)計(jì)算機(jī)的硬件幾乎一模一樣,但軟件賦予了它們不同功能。

    為了說明計(jì)算機(jī)在登月任務(wù)中開展的工作,我們以登月艙上的阿波羅導(dǎo)航計(jì)算機(jī)在任務(wù)關(guān)鍵階段(通過自主動(dòng)力登陸月球表面)的工作負(fù)荷為例。第一個(gè)任務(wù)就是導(dǎo)航:測(cè)算飛船的位置、速度和方向,然后繪制出前往目標(biāo)登陸點(diǎn)的飛船運(yùn)行軌跡。其中涉及的數(shù)據(jù)由內(nèi)部制導(dǎo)系統(tǒng)中的陀螺儀和加速計(jì)測(cè)算得到,在登陸階段后期,還會(huì)用雷達(dá)測(cè)高計(jì)計(jì)算從月球表面返回的信號(hào)作為補(bǔ)充。

    計(jì)算出飛船運(yùn)行軌跡之后,阿波羅導(dǎo)航計(jì)算機(jī)必須轉(zhuǎn)動(dòng)火箭發(fā)動(dòng)機(jī)的噴嘴,讓登月艙始終保持在既定路線上。與此同時(shí),計(jì)算機(jī)必須不斷調(diào)整推力大小,以便登月艙維持適宜的登陸速度。這些制導(dǎo)和操控任務(wù)難度非常大,因?yàn)榈窃屡摰馁|(zhì)量和質(zhì)心隨著燃料的消耗在不斷變化,也因?yàn)樘幱诨鸺龔U氣管頂端的飛船從本質(zhì)上說就不穩(wěn)定,就像一把直立在你手掌上的笤帚一樣。

    除了這些導(dǎo)航、制導(dǎo)以及操控的主要任務(wù)之外,阿波羅導(dǎo)航計(jì)算機(jī)還必須時(shí)刻更新駕駛員座艙內(nèi)的設(shè)備運(yùn)行狀況,回應(yīng)宇航員發(fā)出的指令,管理與地球指揮中心之間的數(shù)據(jù)交流。這種多任務(wù)管理機(jī)制在如今的計(jì)算機(jī)系統(tǒng)中已經(jīng)司空見慣,你手邊的筆記本電腦就可以同時(shí)運(yùn)行幾十個(gè)程序。然而,在20世紀(jì)60年代初,創(chuàng)造這種交互式“實(shí)時(shí)”計(jì)算環(huán)境的工具和技術(shù)都處在非常原始的階段。

    芯片與磁芯

    阿波羅導(dǎo)航計(jì)算機(jī)由慣性制導(dǎo)先驅(qū)查爾斯·斯塔克·德雷珀(Charles Stark Draper)創(chuàng)辦的麻省理工學(xué)院儀器實(shí)驗(yàn)室設(shè)計(jì)和生產(chǎn)。雖然德雷珀的這間實(shí)驗(yàn)室也設(shè)計(jì)過彈道導(dǎo)彈上使用的數(shù)字化電子設(shè)備,但阿波羅導(dǎo)航計(jì)算機(jī)是該實(shí)驗(yàn)室出產(chǎn)的第一臺(tái)完全可編程數(shù)字計(jì)算機(jī)。

    對(duì)于硬件工程師來說,困難之處在于要在非常有限的重量、體積和能耗配額下建造出能達(dá)到預(yù)期要求的計(jì)算機(jī)。為此,他們采用了一項(xiàng)新興技術(shù):硅集成電路。每次登月任務(wù)中的計(jì)算機(jī)都包含大約2 800塊硅芯片,而每塊芯片上又有6根晶體管。

    至于記憶系統(tǒng),設(shè)計(jì)師則使用了磁芯技術(shù)。磁芯就是一些微型鐵氧體螺旋管,能且只能在一個(gè)方向上磁化,這樣就可以代表二進(jìn)制中的1或0。大部分要儲(chǔ)存的信息都是在單次任務(wù)期間不會(huì)發(fā)生任何變化的程序,因此,許多磁芯都是按照只讀模式繞線的,存儲(chǔ)的內(nèi)容在建造計(jì)算機(jī)的時(shí)候就固定下來。

    邏輯回路和記憶核心都封存在設(shè)備艙內(nèi)的金屬箱中。宇航員通過一件叫作“顯示鍵盤”(DSKY )的設(shè)備與計(jì)算機(jī)互動(dòng)。顯示鍵盤看上去有點(diǎn)像是微波爐上的操控面板,上面有數(shù)字小鍵盤、幾個(gè)其他功能的按鈕以及一塊足夠顯示21位明亮十進(jìn)制綠色數(shù)字的空間。

    壓縮成15位

    航天器計(jì)算機(jī)早期設(shè)計(jì)中的一項(xiàng)關(guān)鍵決定就是設(shè)定構(gòu)成一個(gè)“字”的位數(shù)(也即比特?cái)?shù))。單個(gè)字的位數(shù)越長(zhǎng),所能包含的程序指令就越多,能達(dá)到的數(shù)學(xué)精度就越高,但體積、重量和能耗也會(huì)隨之增加。阿波羅導(dǎo)航計(jì)算機(jī)的設(shè)計(jì)者選擇了16位的長(zhǎng)度,其中一位用于校驗(yàn)差錯(cuò),因此,只有15位用于表達(dá)數(shù)據(jù)、地址或指令(現(xiàn)代計(jì)算機(jī)都是32位或64位的)。

    一個(gè)15位的字可以容納215=32 768種不同比特模式。就數(shù)字?jǐn)?shù)據(jù)來說,阿波羅導(dǎo)航計(jì)算機(jī)演繹這些模式的方式通常就是±16 383這個(gè)范圍的數(shù)字。將兩個(gè)字組合在一起就能產(chǎn)生范圍在±268 435 455之內(nèi)的雙精度數(shù)字。

    計(jì)算機(jī)中的字還可以表示程序中的指令。在阿波羅導(dǎo)航計(jì)算機(jī)的原始計(jì)劃中,指令字中的前三位指定為“操作碼”或命令碼,剩下的12位則記錄計(jì)算機(jī)內(nèi)存的地址。這個(gè)地址可能指向了計(jì)算所需的數(shù)據(jù),也可能指向了執(zhí)行下一個(gè)指令的位置,具體如何取決于前后程序。

    操作碼只分配到了3位,意味著只有8種不同指令(也就是從000到111的8種二進(jìn)制模式)。而12位的地址則將內(nèi)存中的數(shù)字限制在了4 096(212)以下。隨著阿波羅計(jì)劃的深入,這些限制帶來了諸多不便,而工程師也找到了方法規(guī)避它們。他們把內(nèi)存組成若干“庫”:每個(gè)指定位置都存放在對(duì)應(yīng)庫里,而獨(dú)立運(yùn)行的寄存器則會(huì)顯示哪個(gè)庫處于激活狀態(tài)。設(shè)計(jì)者還額外增加了幾個(gè)位數(shù)把操作碼的容量從8提升到了34。

    登上月球的阿波羅導(dǎo)航計(jì)算機(jī)用于儲(chǔ)存程序的只讀內(nèi)存有36 864個(gè)字,而用于計(jì)算的讀寫內(nèi)存則有2 048個(gè)字。全部加在一起的總數(shù)據(jù)容量差不多相當(dāng)于70 000字節(jié)?,F(xiàn)代筆記本電腦的內(nèi)存要比它高10萬倍。速度方面,阿波羅導(dǎo)航計(jì)算機(jī)每秒可執(zhí)行4萬條指令,而現(xiàn)代筆記本電腦可以執(zhí)行100億條。

    軟件基礎(chǔ)架構(gòu)

    只保留必要元素的框架、少到可憐的內(nèi)存、簡(jiǎn)化到不能再簡(jiǎn)化的指令集給設(shè)計(jì)阿波羅導(dǎo)航計(jì)算機(jī)軟件的程序員出了一道難題。此外,麻省理工學(xué)院的這個(gè)軟件工程團(tuán)隊(duì)要開發(fā)的不僅是阿波羅任務(wù)期間可以運(yùn)行的程序,還有大量用于支持開發(fā)過程的軟件基礎(chǔ)架構(gòu)。

    一件至關(guān)重要的工具就是匯編程序,它可以將符號(hào)指令(例如,用AD表示加法,用TC表示傳送控制)轉(zhuǎn)化成阿波羅導(dǎo)航計(jì)算機(jī)硬件可以識(shí)別的二進(jìn)制編碼。這套匯編程序的主要開發(fā)者是工程師休·布萊爾-史密斯(Hugh Blair-Smith),他在那個(gè)時(shí)代的大型計(jì)算機(jī)編程方面擁有深厚背景知識(shí)。匯編程序并不直接在阿波羅導(dǎo)航計(jì)算機(jī)上運(yùn)行,而是在大型主機(jī)上運(yùn)行。所有飛行控制程序都會(huì)在飛船發(fā)射升空前就完成匯編并存入只讀內(nèi)存,這樣就沒必要在飛船上安裝解析匯編程序的機(jī)器。

    阿波羅導(dǎo)航計(jì)算機(jī)的數(shù)字仿真程序也是在一臺(tái)主機(jī)上運(yùn)行的,這樣就可以在硬件準(zhǔn)備就緒之前測(cè)試相關(guān)程序。隨后,一臺(tái)“混合”模擬器會(huì)將真正的阿波羅導(dǎo)航計(jì)算機(jī)和顯示鍵盤組合到一起,一起整合進(jìn)來的還有飛船剩余部分及其相關(guān)環(huán)境的模擬模型和數(shù)字模型。

    另一項(xiàng)工具則是高級(jí)編程語言的解譯器,由J·哈爾康姆·拉寧(J. Halcombe Laning)設(shè)計(jì),主要撰寫人則是查爾斯·芒茨(Charles A. Muntz),兩人都是麻省理工學(xué)院團(tuán)隊(duì)的成員。解譯后的語言就能讓計(jì)算機(jī)有能力處理基本算術(shù)之外的數(shù)學(xué)概念,比如矩陣(在表達(dá)控制律上很有用)以及三角函數(shù)(在導(dǎo)航中必不可少)。實(shí)現(xiàn)這些便利功能的代價(jià)就是計(jì)算機(jī)運(yùn)行速度會(huì)放慢到原來的1/10。不過,解譯指令和匯編語言可以以任意比例自由混合,這樣一來,程序員就可以在確有必要的時(shí)候犧牲運(yùn)行速度,換取更多數(shù)學(xué)功能。

    一個(gè)名叫“執(zhí)行者”的阿波羅導(dǎo)航計(jì)算機(jī)程序充當(dāng)了微型操作系統(tǒng)的作用。這個(gè)程序也是由拉寧設(shè)計(jì),其保持有一張待執(zhí)行程序的清單,清單中的程序則根據(jù)它們的優(yōu)先級(jí)分類。計(jì)算機(jī)還擁有一個(gè)中斷系統(tǒng),以應(yīng)對(duì)外部事件。計(jì)算機(jī)還允許一些緊急小任務(wù)“竊取”小部分內(nèi)存,而完全不會(huì)影響其他程序。這個(gè)裝置的作用是為來自慣性制導(dǎo)系統(tǒng)和雷達(dá)的脈沖流計(jì)數(shù)。

    在代碼迷宮之中

    我第一次閱讀阿波羅導(dǎo)航計(jì)算機(jī)程序時(shí),發(fā)現(xiàn)它們很神秘。這些程序并不只是難懂的簡(jiǎn)潔操作碼,更大的挑戰(zhàn)在于必須學(xué)習(xí)如何在眾多冗余程序和無關(guān)程序中遵循主程序的功能。像傳送控制和保存數(shù)據(jù)這樣的指令都會(huì)產(chǎn)生程序分支。一旦遇到這類分支程序,指令序列路徑就會(huì)突然跳到其他位置,并且未必會(huì)再度返回原來的位置。追蹤指令路徑的過程就像是在玩滑梯和梯子棋一樣。

    阿波羅導(dǎo)航計(jì)算機(jī)匯編語言的學(xué)習(xí)強(qiáng)度很高,但難度并不算太大,原因很簡(jiǎn)單:它包含的操作碼太少了。然而,要想真正弄懂其中的程序,你必須掌握麻省理工學(xué)院團(tuán)隊(duì)為最大程度利用這臺(tái)小機(jī)器而設(shè)計(jì)的約定和協(xié)議。程序打印稿上的一些源程序片段展示了這些不成文規(guī)則的幾個(gè)例子。

    我對(duì)調(diào)用子程序(從程序中的不同位置調(diào)用一段代碼,然后再把控制交還給當(dāng)前位置)的這種設(shè)計(jì)尤為感到困惑。在阿波羅導(dǎo)航計(jì)算機(jī)中,調(diào)用子程序的操作碼是TC,它不僅可以把控制傳送到子程序的地址上,還可以根據(jù)TC指令將相關(guān)命令的地址保存到叫作Q寄存器的地方。子程序完成自己的工作之后,只要執(zhí)行TC Q指令就可以回到主程序。這個(gè)流程我理解得還比較透徹。然而,事實(shí)證明子程序竟然可以自行更改Q寄存器中的內(nèi)容,從而改變自己的返程目的地。阿波羅導(dǎo)航計(jì)算機(jī)中的許多程序都會(huì)充分利用這個(gè)便利條件。在打印稿上列出的源程序片段中,某個(gè)子程序擁有3個(gè)返回地址,分別對(duì)應(yīng)某次查詢的3種可能回應(yīng)。在我弄明白這些規(guī)則之前,這些源代碼簡(jiǎn)直無法理解。

    如今的軟件工程規(guī)范不提倡使用這種復(fù)雜且容易誤解的程序,因?yàn)樗鼈儠?huì)讓代碼變得難以理解、難以維護(hù)。不過,符合現(xiàn)代標(biāo)準(zhǔn)的軟件是塞不進(jìn)70 000字節(jié)的內(nèi)存里。

    旁注

    與神秘、難懂的操作碼和地址相比,阿波羅導(dǎo)航計(jì)算機(jī)軟件的另一部分則要好理解得多。代碼旁邊的注釋清晰明了,甚至有些好玩。這些旁注是程序員在開發(fā)軟件時(shí)加進(jìn)去的,完全是為了方便人類理解,對(duì)機(jī)器沒有任何幫助。

    這些注釋中的大多數(shù)都直接解釋了相關(guān)程序的功能,比如“清除第7位和第14位”“查看上一個(gè)運(yùn)行周期中高度是否小于35 000英尺”。一些語氣嚴(yán)厲的警告性注釋則標(biāo)記出了嚴(yán)禁修改的代碼。有一行代碼被標(biāo)記為“別動(dòng)”,而某個(gè)常數(shù)表程序的標(biāo)注就是更加專橫的“禁止觸摸”(Noli Se Tangere,源自圣經(jīng)的拉丁文)。每個(gè)程序旁邊的注釋風(fēng)格都不相同,這很有可能是因?yàn)槠渥髡卟煌?/p>

    最有趣的是那些大膽擺脫了技術(shù)文檔刻板、冷漠特征的旁注。一位心懷歉意、緊張不安的程序員將兩行代碼標(biāo)注為“只是暫時(shí)的,后面我會(huì)改的,會(huì)改的,會(huì)改的”。某個(gè)常數(shù)被標(biāo)記為“神秘?cái)?shù)字”。一次內(nèi)存不足的情況被加上了“旅店客滿”的注釋。某些地方的注釋語氣則變得輕松愉快起來。打印輸出稿的一段文字上寫著下面這個(gè)請(qǐng)求:“宇航員:請(qǐng)你把這個(gè)蠢玩意兒轉(zhuǎn)動(dòng)一下?!蹦硞€(gè)程序的作用是檢查宇航員有沒有遵照規(guī)定行事,于是它的旁注是這么寫的,“看看這兄弟有沒有撒謊”。有讀者不禁會(huì)問:宇航員會(huì)深入研究這些源代碼嗎?對(duì)此,我的回答是,某些宇航員(其中最出名的是巴茲·奧爾德林)是阿波羅導(dǎo)航計(jì)算機(jī)誕生地儀器實(shí)驗(yàn)室的常客。

    這些搞怪的提示在子程序名稱和標(biāo)簽的選擇上也有體現(xiàn)。與警報(bào)和故障有關(guān)的部分軟件用上了“哭泣”“緊急救助”“完蛋了”“災(zāi)難”這樣的符號(hào)。我們還在其他地方碰上了某些面巾紙、橡皮擦和灌腸劑品牌的商標(biāo)。還有一些則用了花生漫畫中的梗作注釋,比如“萊納斯=毯子”(譯注:花生漫畫是美國的一部著名長(zhǎng)篇漫畫,萊納斯是其中的一個(gè)漫畫形象,出場(chǎng)時(shí)常常與毯子為伴)。飛船登陸月球時(shí)啟動(dòng)火箭發(fā)動(dòng)機(jī)的程序名叫“燃燒吧,寶貝”,這明顯是參考了1965年洛杉磯瓦茨騷亂時(shí)打出的標(biāo)語:燃燒吧,寶貝,燃燒!

    源代碼中的這些輕浮、戲謔的標(biāo)記或許并沒有那么令人意外。程序員大多很年輕,而且顯然都很聰明。在這樣一群人組成的工作小組中,無論任務(wù)有多重大、多嚴(yán)肅,都肯定會(huì)衍生出許多內(nèi)部笑話。此外,他們也都在麻省理工學(xué)院任職,這個(gè)地方有著悠久的“黑客文化”搞怪歷史。另一方面,這個(gè)項(xiàng)目由NASA監(jiān)管,軟件的每次更迭都必須經(jīng)過各級(jí)聯(lián)邦官僚機(jī)構(gòu)審查并批準(zhǔn)。因此,驚喜之處并不在于程序中埋藏的這些俏皮話,而在于寫下這些俏皮話的人并沒有被某些嚴(yán)肅刻板的官員開除。

    在一次郵件交流中,我向瑪格麗特·漢密爾頓(Margaret H. Hamilton)詢問此事。漢密爾頓起初是位數(shù)學(xué)家,后來改行當(dāng)了程序員,在1963年加入阿波羅導(dǎo)航計(jì)算機(jī)小組,之前已經(jīng)在麻省理工學(xué)院的其他幾個(gè)項(xiàng)目工作。她后來成了麻省理工學(xué)院儀器實(shí)驗(yàn)室的軟件工程(軟件工程這個(gè)詞就是她發(fā)明的)部主任。她在郵件中寫道:“大家都會(huì)認(rèn)真對(duì)待自己的工作,但與此同時(shí),他們也會(huì)在各方面的幽默調(diào)侃行為中獲得樂趣,就比如給飛船上的部分飛行軟件起一些滑稽或神秘的名字?!蓖瑫r(shí),她也坦承NASA否決了一些他們的搞怪發(fā)明。

    宇航員可以通過安裝在指令艙和登月艙控制面板上的“顯示鍵盤”與艙內(nèi)的阿波羅導(dǎo)航計(jì)算機(jī)取得聯(lián)系,他們還能通過輸入一段程序、一個(gè)動(dòng)詞或者一個(gè)名詞(所有這些都用二進(jìn)制數(shù)表示)來完成預(yù)先設(shè)定好的動(dòng)作。圖中展示的顯示鍵盤來自史密森航空航天博物館,從未安裝在阿波羅飛船上

    哪里可能出錯(cuò)呢?

    漢密爾頓說過,阿波羅計(jì)劃提供了“讓各種人為的差錯(cuò)成為可能的機(jī)會(huì)”。不用費(fèi)太多力氣,我們就能想到一長(zhǎng)串本來有可能出錯(cuò)但最終沒有出錯(cuò)的隱患清單。

    例如,阿波羅導(dǎo)航計(jì)算機(jī)有兩種表達(dá)帶符號(hào)的數(shù)字的形式:1的補(bǔ)碼和2的補(bǔ)碼。這兩種形式一旦混用就會(huì)造成數(shù)值誤差。類似,飛船的位置和速度的計(jì)算單位是米,但展示給宇航員看的時(shí)候單位卻是英尺和英尺/秒。只要出現(xiàn)一次計(jì)算疏忽,沒有轉(zhuǎn)換單位(或者雙重轉(zhuǎn)換),就可能引起巨大危害。另一項(xiàng)始終存在的危險(xiǎn)則是算術(shù)溢出:如果某個(gè)數(shù)字超過了14位字所能表達(dá)的最大正值,那么就會(huì)“掉過頭”來,變成一個(gè)負(fù)數(shù)。

    你或許會(huì)覺得這種差錯(cuò)永遠(yuǎn)都不可能通過嚴(yán)格的航天任務(wù)審查程序,但歷史告訴我們,真實(shí)的情況恰恰相反。1996年,一個(gè)算術(shù)溢出導(dǎo)致的差錯(cuò)致使阿麗亞娜五號(hào)火箭墜毀,一同陪葬的還有火箭上搭載的4顆衛(wèi)星。1999年,一個(gè)測(cè)量單位沒有轉(zhuǎn)換的錯(cuò)誤導(dǎo)致我們痛失了火星氣候軌道器。

    阿波羅導(dǎo)航計(jì)算機(jī)的體積受限一定增加了程序員的認(rèn)知負(fù)擔(dān),這里又可以使用子程序設(shè)計(jì)的例子加以說明。在更大的計(jì)算機(jī)中,一種叫作“?!钡臄?shù)據(jù)結(jié)構(gòu)會(huì)自動(dòng)追蹤子程序的返回地址,哪怕主程序是深度嵌套的。也就是一個(gè)程序會(huì)調(diào)用另一個(gè),而另一個(gè)則會(huì)調(diào)用第三個(gè),以此類推。而阿波羅導(dǎo)航計(jì)算機(jī)并沒有負(fù)責(zé)追蹤返回地址的棧,它只有Q寄存器,其大小只夠儲(chǔ)存一個(gè)地址。無論何時(shí)某子程序調(diào)用了另一個(gè)子程序,程序員都必須找到安全的地方保存返回地址,隨后再把它恢復(fù)。這個(gè)過程中出現(xiàn)的任何意外都會(huì)讓整個(gè)程序徹底迷失。

    作為一個(gè)想象自己正在為這樣一臺(tái)機(jī)器編程的門外漢,我最擔(dān)心出現(xiàn)錯(cuò)誤的地方是多任務(wù)機(jī)制。當(dāng)有多項(xiàng)任務(wù)需要完成時(shí),“執(zhí)行者”程序總是會(huì)先處理優(yōu)先級(jí)最高的任務(wù)。然而,我們也必須保證所有任務(wù)最后都能完成,這些目標(biāo)很難調(diào)和。

    中斷操作就更加危機(jī)四伏了。外部環(huán)境中發(fā)生的任何事件(比如宇航員按下了顯示鍵盤上的按鍵)都可以在幾乎任何時(shí)刻暫停正在進(jìn)行的計(jì)算工作并且接管處理器。中斷程序必須把可能受到影響的所有寄存器中的內(nèi)容都保存下來,并且在中斷操作結(jié)束后把這些內(nèi)容都恢復(fù)出來,這就像是某個(gè)盜賊強(qiáng)行進(jìn)入了民宅,在里面做頓飯,之后為了逃避偵查又把所有東西放回原位。

    然而,哪怕有中斷-恢復(fù)協(xié)議的保護(hù),有些進(jìn)程也是嚴(yán)禁中斷的(比如在各項(xiàng)工作中進(jìn)行切換的執(zhí)行者主程序)。因此,阿波羅導(dǎo)航計(jì)算機(jī)提供了一個(gè)嚴(yán)禁中斷的指令和另一個(gè)解除這種禁制的指令。但這種機(jī)制本身也帶來了風(fēng)險(xiǎn):如果禁止中斷操作的時(shí)間過長(zhǎng),那么某些重要外部事件可能被忽視。

    時(shí)至今日,中斷操作與多任務(wù)處理之間的協(xié)調(diào)仍舊是對(duì)設(shè)計(jì)者的巨大智力挑戰(zhàn)。這些機(jī)制引入了對(duì)隨機(jī)行為與不確定行為的度量:只是掌握系統(tǒng)現(xiàn)在的狀態(tài)還不足以預(yù)測(cè)其未來的狀態(tài)。它們的存在加大了我們對(duì)程序進(jìn)行推理或者測(cè)試程序所有路徑的難度。最令人煩惱、最不常見和最難以預(yù)料的故障的根源常??梢宰匪莸礁?jìng)爭(zhēng)進(jìn)程之間的某些意想不到的沖突。

    觸發(fā)了5次警報(bào)的登陸行動(dòng)

    值得慶幸的是,所有阿波羅導(dǎo)航計(jì)算機(jī)在執(zhí)行空間任務(wù)時(shí)都沒有出現(xiàn)大的故障,但還是出現(xiàn)了一些我們不想看到的時(shí)刻。當(dāng)阿波羅11號(hào)登陸艙朝著月球表面降落時(shí),顯示鍵盤上突然跳出 “程序警報(bào)”,代碼是1202。阿姆斯特朗和奧爾德林不知道是否應(yīng)該繼續(xù)登陸。作決定的重?fù)?dān)落到了身處休斯敦任務(wù)控制中心的指揮員史蒂夫·貝爾斯(Steve Bales)身上。他手上拿著警報(bào)代碼的備忘單,并且可以和NASA以及麻省理工學(xué)院的幕后專家聯(lián)系。他最后做出決定,“繼續(xù)登陸”。在登陸艙最終降落在月球表面之前的時(shí)間里,登陸艙還發(fā)出了4次程序警報(bào),貝爾斯都選擇了繼續(xù)登陸。

    在麻省理工學(xué)院,阿波羅導(dǎo)航計(jì)算機(jī)開發(fā)團(tuán)隊(duì)的成員也在關(guān)注著這些變化,并且手忙腳亂地求證1202警報(bào)的含義以及可能的起因。相關(guān)程序旁邊的注釋寫著“無法提供更多核心集”。每當(dāng)執(zhí)行者程序啟動(dòng)一項(xiàng)新任務(wù)時(shí),它都會(huì)專門為這個(gè)新進(jìn)程分配大小為11個(gè)字的讀寫內(nèi)存,這就是一個(gè)核心集。而為這類核心集預(yù)留出的空間最多只能同時(shí)容納8個(gè)核心集(也就是說,執(zhí)行者程序最多只能同時(shí)執(zhí)行8項(xiàng)任務(wù))。如果有進(jìn)程要求執(zhí)行者程序提供8個(gè)以上的核心集,后者就會(huì)發(fā)出1202程序警報(bào)并且跳轉(zhuǎn)到名為“緊急救助”的主程序上去。

    在登月艙降落到月球表面期間,從不需要同時(shí)執(zhí)行8項(xiàng)任務(wù),那么它又怎么會(huì)要求執(zhí)行者程序提供超過8個(gè)核心集呢?在需要執(zhí)行的任務(wù)中有一項(xiàng)任務(wù)比較繁重:這就是“服務(wù)器”程序,它會(huì)執(zhí)行導(dǎo)航、制導(dǎo)和操控所需的所有計(jì)算。按照設(shè)定,這個(gè)程序每2秒運(yùn)行1次,并且應(yīng)該在一個(gè)運(yùn)行周期中完成它當(dāng)時(shí)的任務(wù),之后就會(huì)關(guān)閉,釋放自己占用的核心集。2秒后,一個(gè)新的服務(wù)器程序進(jìn)程就會(huì)帶著一個(gè)新的核心集啟動(dòng)。然而,由于某些原因,這個(gè)程序中的計(jì)算工作花費(fèi)的時(shí)間要比設(shè)定的長(zhǎng)。于是,當(dāng)下一個(gè)服務(wù)器程序進(jìn)程啟動(dòng)時(shí),上一個(gè)卻還沒完成自己的工作,這就導(dǎo)致了未完成任務(wù)的積壓,并同時(shí)繼續(xù)占用了本應(yīng)釋放的核心集,最后就出現(xiàn)了程序警報(bào)。

    這個(gè)現(xiàn)象的起因倒算不上很神秘。實(shí)際上,這個(gè)現(xiàn)象在測(cè)試飛行硬件時(shí)就出現(xiàn)過。兩個(gè)不同步的電源驅(qū)動(dòng)雷達(dá)發(fā)出大量偽脈沖,而阿波羅導(dǎo)航計(jì)算機(jī)則負(fù)責(zé)把這些脈沖忠實(shí)記錄下來。每一次脈沖都要消耗一個(gè)計(jì)算機(jī)內(nèi)存運(yùn)行周期,持續(xù)大約12毫秒。雷達(dá)每秒可以發(fā)出12 800個(gè)脈沖,足以占用計(jì)算機(jī)內(nèi)存容量的15%。為此,設(shè)計(jì)者給每個(gè)程序運(yùn)行周期留出了10%的時(shí)間余量。

    討論這種異常情況起因的文章已經(jīng)很多,它們?cè)谡l該為此負(fù)責(zé)以及如何避免再次出現(xiàn)這種情況這兩個(gè)問題上還沒有形成統(tǒng)一觀點(diǎn)。我更感興趣的是,計(jì)算機(jī)在面對(duì)這種異常情況時(shí)是如何回應(yīng)的。在許多計(jì)算機(jī)系統(tǒng)中,關(guān)鍵資源耗盡是致命錯(cuò)誤,錯(cuò)誤發(fā)生后,屏幕會(huì)變得一片漆黑,鍵盤也不聽使喚,唯一還能工作的就是電源鍵。阿波羅導(dǎo)航計(jì)算機(jī)的反應(yīng)則與此不同,它會(huì)盡力處理這種意外情況并且盡力保持運(yùn)行。每當(dāng)程序警報(bào)出現(xiàn)時(shí),緊急救助程序會(huì)把所有在執(zhí)行者程序下運(yùn)行的任務(wù)清理掉,然后再重啟其中最重要的幾個(gè)。這個(gè)過程很像是重啟計(jì)算機(jī),但只需要幾毫秒時(shí)間。

    計(jì)算機(jī)屏幕上突然出現(xiàn)的煩人警報(bào)現(xiàn)在已經(jīng)司空見慣,但漢密爾頓指出,這種情況在20世紀(jì)60年代還是新鮮事。阿波羅導(dǎo)航計(jì)算機(jī)的核心是優(yōu)先級(jí)驅(qū)動(dòng)下的多任務(wù)工作機(jī)制,這樣程序警報(bào)才可能出現(xiàn)在顯示鍵盤的屏幕上。這種警報(bào)機(jī)制的功能還不止于此:它們不僅有“膽量”中斷其他程序,甚至有膽量在必要的時(shí)候中斷宇航員自己的操作。

    令人緊張不安的工作

    阿波羅導(dǎo)航計(jì)算機(jī)項(xiàng)目的一些老人每月會(huì)聚餐一次。50年后,這伙人仍舊保留著這個(gè)習(xí)慣,這表明阿波羅計(jì)劃在他們的生命中畫上了多么濃墨重彩的一筆。(這還表明他們當(dāng)時(shí)是那么年輕。)2017年的時(shí)候,我碰巧有機(jī)會(huì)參加了一次他們的聚會(huì)。我發(fā)現(xiàn)有兩個(gè)問題是自己會(huì)對(duì)遇到的每個(gè)人都問的。第一個(gè)問題是:在隨時(shí)可能出現(xiàn)錯(cuò)誤的雷區(qū),你是如何制造如此好、如此可靠的東西?第二個(gè)問題是:在如此重壓下,你沒有驚慌失措嗎?

    就第二個(gè)問題來說,桌邊的某人將阿波羅導(dǎo)航計(jì)算機(jī)的開發(fā)行動(dòng)描述為“令人緊張的工作”。不過,其他人則稱,自己當(dāng)時(shí)只想著怎么解決這些技術(shù)問題,完全沒有仔細(xì)思考過出現(xiàn)錯(cuò)誤的后果。布萊爾-史密斯指出,開發(fā)團(tuán)隊(duì)的非正式座右銘是“我們一定能做到”,這可不只是勇敢而已。他們堅(jiān)信:憑借自己的能力能夠搞定這一切。

    至于他們究竟是如何做到這一切的這個(gè)問題,則引發(fā)了熱烈討論,但我無法將其中的任何一條歸結(jié)為他們?nèi)〉贸晒Φ拿孛?。他們非常小心,他們工作非常努力,他們測(cè)試也非常徹底;所有這一切都千真萬確,沒有任何問題,但許多其他軟件項(xiàng)目也有才華橫溢、勤勞勇敢的成員參與,最后為什么出問題了呢?真正讓阿波羅導(dǎo)航計(jì)算機(jī)項(xiàng)目變得與眾不同的究竟是什么呢?

    回想起1202警報(bào)事件,我問他們成功的關(guān)鍵是不是追求彈性而非追求完美。如果不能做到完全不出錯(cuò),是不是至少能減小出錯(cuò)造成的破壞呢?結(jié)果,他們斷然否決了這個(gè)答案,他們的目標(biāo)始終都是開發(fā)出一款完美無缺的產(chǎn)品。

    我在郵件中也向漢密爾頓提出了類似的問題,她也提到“永遠(yuǎn)專注于把每件事都做得盡可能完美”。她還認(rèn)為,中斷系統(tǒng)和基于優(yōu)先級(jí)的多任務(wù)處理機(jī)制(這兩個(gè)我之前認(rèn)為是潛在隱患的地方)保證了程序能夠“檢測(cè)到突發(fā)狀況并且實(shí)時(shí)從中恢復(fù)的靈活性”。

    就我而言,“他們?nèi)绾瓮瓿闪诉@個(gè)偉大成就?”仍舊是個(gè)開放問題,并且也是值得引起學(xué)術(shù)圈關(guān)注的問題。工程學(xué)傳統(tǒng)要求我們對(duì)事故和故障做出細(xì)致入微的剖析,但研究那些非常成功的案例也許能對(duì)我們有所幫助。

    保護(hù)與展示

    史密森航空航天博物館收藏了大約3 500件阿波羅計(jì)劃的文物,但阿波羅導(dǎo)航計(jì)算機(jī)軟件并沒有在那展出。一些規(guī)模較小的博物館分別保存了一些軟件打印稿,但現(xiàn)在這些程序之所以能夠廣泛傳播,幾乎完全是因?yàn)闃I(yè)余熱心人士的努力。

    2003年,羅納德·伯奇(Ronald Burkey)觀看了電影《阿波羅13號(hào)》(Apollo 13)。電影講述的是阿波羅13號(hào)在奔赴月球途中因一次爆炸事故而陷于險(xiǎn)境,其中有多個(gè)場(chǎng)景出現(xiàn)了顯示鍵盤的畫面。在嵌入式計(jì)算機(jī)系統(tǒng)行業(yè)工作的伯奇看到后就開始學(xué)習(xí)更多有關(guān)阿波羅導(dǎo)航計(jì)算機(jī)的知識(shí)。一開始并不怎么在意的一些小問題最后演變成了對(duì)原始文件的不懈追求。他的目標(biāo)就是開發(fā)一臺(tái)可以執(zhí)行阿波羅導(dǎo)航計(jì)算機(jī)程序的模擬器。

    伯奇得知儀器實(shí)驗(yàn)室把部分阿波羅11號(hào)上使用的軟件存放在了麻省理工學(xué)院的圖書館,但捐贈(zèng)條款不允許這些資料隨意擴(kuò)散。經(jīng)過漫長(zhǎng)的談判,博物館收藏處主任黛博拉·道格拉斯(Deborah Douglas)確保了這些打印文件公開后的安全性,并且安排伯奇負(fù)責(zé)文件的掃描事宜。接著就是一項(xiàng)枯燥乏味的工作:把3 500頁掃描出來的圖像轉(zhuǎn)換成可供機(jī)器閱讀的文檔。幸好有幾位志愿者加入了進(jìn)來,分擔(dān)了任務(wù)。

    與此同時(shí),伯奇忙著開發(fā)的還不只是那個(gè)叫作“虛擬阿波羅導(dǎo)航計(jì)算機(jī)”的模擬器,他還在開發(fā)一款新匯編程序。(起初,他無法訪問原始匯編程序的源代碼,因?yàn)檫@些程序無論如何也不可能在現(xiàn)代硬件設(shè)備上運(yùn)行。)檢驗(yàn)這一切努力的關(guān)鍵測(cè)試是通過新匯編程序運(yùn)行轉(zhuǎn)錄的阿波羅11號(hào)源代碼,并且將產(chǎn)生的二進(jìn)制輸出與1969年的原始輸出作比較。經(jīng)過幾輪校對(duì)和修正(某些掃描文件幾乎完全看不清),測(cè)試產(chǎn)生的新二進(jìn)制數(shù)據(jù)終于和原始數(shù)據(jù)一一對(duì)應(yīng)。

    這幾年來,伯奇和他的伙伴還拿到了其他幾次阿波羅任務(wù)軟件的打印件,主要由那些保留著個(gè)人備份的麻省理工學(xué)院軟件開發(fā)團(tuán)隊(duì)成員提供。那些程序同樣經(jīng)過了掃描、轉(zhuǎn)錄和重新匯編的流程。所有這些掃描件和轉(zhuǎn)錄的源代碼都可以在虛擬阿波羅導(dǎo)航計(jì)算機(jī)軟件網(wǎng)站(http://ibiblio.org/apollo)上找到。同時(shí)在網(wǎng)站上展示的還有編程手冊(cè)、工程繪圖以及大約1 400份備忘錄、報(bào)告和其他同期文件。

    阿波羅計(jì)劃可能是20世紀(jì)美國技術(shù)優(yōu)勢(shì)的巔峰體現(xiàn),而阿波羅導(dǎo)航計(jì)算機(jī)則是這個(gè)輝煌成就的關(guān)鍵組成部分。因此,當(dāng)我發(fā)現(xiàn)大型博物館和檔案館對(duì)阿波羅導(dǎo)航計(jì)算機(jī)軟件如此興致寥寥,甚至把保護(hù)、轉(zhuǎn)錄、傳播這些珍貴歷史材料的工作都交給業(yè)余愛好者的時(shí)候,我感到奇怪與不安。另一方面,這些活力四射、充滿創(chuàng)造力的業(yè)余愛好者取得的成果是如此耀眼,是他們把這段屬于美國的輝煌歷史帶回到了人們的視線之中。他們的成功幾乎和當(dāng)初那些阿波羅導(dǎo)航計(jì)算機(jī)項(xiàng)目的程序員一樣光彩奪目。

    猜你喜歡
    阿波羅程序計(jì)算機(jī)
    計(jì)算機(jī)操作系統(tǒng)
    阿波羅13號(hào)與與重返月球
    基于計(jì)算機(jī)自然語言處理的機(jī)器翻譯技術(shù)應(yīng)用與簡(jiǎn)介
    科技傳播(2019年22期)2020-01-14 03:06:34
    回望阿波羅11號(hào)
    英語文摘(2019年9期)2019-11-26 00:56:28
    試論我國未決羈押程序的立法完善
    阿波羅之春
    拯救阿波羅13號(hào)
    信息系統(tǒng)審計(jì)中計(jì)算機(jī)審計(jì)的應(yīng)用
    “程序猿”的生活什么樣
    英國與歐盟正式啟動(dòng)“離婚”程序程序
    性色av一级| 少妇猛男粗大的猛烈进出视频| 日本av免费视频播放| 国产免费福利视频在线观看| 亚洲三级黄色毛片| 一级a爱视频在线免费观看| 久久午夜综合久久蜜桃| 亚洲国产av影院在线观看| 亚洲欧美一区二区三区黑人 | 久久精品国产亚洲av高清一级| 久久亚洲国产成人精品v| 久热这里只有精品99| 女人被躁到高潮嗷嗷叫费观| 狂野欧美激情性bbbbbb| videossex国产| 久久久久久久久免费视频了| 亚洲av电影在线观看一区二区三区| 亚洲欧美成人综合另类久久久| 久久免费观看电影| 国产熟女欧美一区二区| 一区二区日韩欧美中文字幕| 狠狠精品人妻久久久久久综合| 欧美日韩精品网址| 啦啦啦视频在线资源免费观看| 国产男女内射视频| 久久影院123| 男女国产视频网站| 最近最新中文字幕免费大全7| 亚洲色图 男人天堂 中文字幕| 国产女主播在线喷水免费视频网站| 黑丝袜美女国产一区| 黄色配什么色好看| 日韩欧美一区视频在线观看| 国产一区有黄有色的免费视频| 欧美日韩亚洲高清精品| 两个人看的免费小视频| 亚洲伊人久久精品综合| 午夜福利网站1000一区二区三区| 国产在线视频一区二区| 国产日韩欧美亚洲二区| 少妇熟女欧美另类| 国产1区2区3区精品| av免费观看日本| 十八禁网站网址无遮挡| 国产精品香港三级国产av潘金莲 | 亚洲精品一二三| 国产精品麻豆人妻色哟哟久久| 性色av一级| 久久人人爽人人片av| 中文字幕制服av| 欧美日韩亚洲高清精品| 丝袜美足系列| 午夜免费男女啪啪视频观看| 久久这里有精品视频免费| 在线观看一区二区三区激情| 国产xxxxx性猛交| 天天影视国产精品| 亚洲精品一二三| 欧美激情极品国产一区二区三区| 国产精品.久久久| 国产在线免费精品| 在线天堂中文资源库| 亚洲精品美女久久久久99蜜臀 | 制服人妻中文乱码| 久久久精品94久久精品| 欧美精品人与动牲交sv欧美| 日韩一区二区视频免费看| 午夜激情av网站| av在线app专区| 免费久久久久久久精品成人欧美视频| 大话2 男鬼变身卡| kizo精华| 如何舔出高潮| 在线观看免费高清a一片| 哪个播放器可以免费观看大片| 久久久精品免费免费高清| 午夜精品国产一区二区电影| 日韩中文字幕欧美一区二区 | 老司机影院毛片| 亚洲国产日韩一区二区| 99re6热这里在线精品视频| 80岁老熟妇乱子伦牲交| 国产xxxxx性猛交| 亚洲国产毛片av蜜桃av| 晚上一个人看的免费电影| 午夜激情av网站| 一级毛片我不卡| 久久精品久久精品一区二区三区| 欧美另类一区| 啦啦啦在线观看免费高清www| 精品国产一区二区久久| 国产精品一国产av| 日韩av在线免费看完整版不卡| 国产精品av久久久久免费| 亚洲久久久国产精品| 国产免费又黄又爽又色| 91成人精品电影| av在线app专区| 老熟女久久久| 精品亚洲乱码少妇综合久久| 精品国产超薄肉色丝袜足j| 色婷婷久久久亚洲欧美| 亚洲欧美精品综合一区二区三区 | 视频区图区小说| 亚洲美女黄色视频免费看| 丝袜美腿诱惑在线| 精品亚洲成a人片在线观看| 校园人妻丝袜中文字幕| freevideosex欧美| 亚洲三级黄色毛片| 亚洲国产最新在线播放| 只有这里有精品99| 美女中出高潮动态图| 国产精品久久久久久av不卡| av免费观看日本| 午夜福利,免费看| 久久久精品区二区三区| 欧美中文综合在线视频| 母亲3免费完整高清在线观看 | 97精品久久久久久久久久精品| 大码成人一级视频| av福利片在线| 亚洲av日韩在线播放| 人妻一区二区av| 欧美成人午夜免费资源| 久久精品国产亚洲av天美| 十八禁高潮呻吟视频| 高清在线视频一区二区三区| 丁香六月天网| 亚洲伊人色综图| 巨乳人妻的诱惑在线观看| 美女午夜性视频免费| 亚洲精华国产精华液的使用体验| 久久久久国产网址| 亚洲国产日韩一区二区| 尾随美女入室| 国产伦理片在线播放av一区| 日韩欧美一区视频在线观看| 久久狼人影院| 韩国精品一区二区三区| 亚洲av在线观看美女高潮| 欧美成人精品欧美一级黄| 精品99又大又爽又粗少妇毛片| 久久狼人影院| 寂寞人妻少妇视频99o| 中国三级夫妇交换| 国产精品久久久久久av不卡| 精品国产超薄肉色丝袜足j| 丝袜喷水一区| 男人添女人高潮全过程视频| 午夜影院在线不卡| 久久久a久久爽久久v久久| 久久精品国产亚洲av天美| 中文字幕制服av| 亚洲第一av免费看| 亚洲欧美成人精品一区二区| 少妇的逼水好多| 亚洲成av片中文字幕在线观看 | 亚洲一码二码三码区别大吗| 国产精品偷伦视频观看了| 国产精品无大码| 日本色播在线视频| 成人国产麻豆网| 国产成人精品久久久久久| 免费在线观看完整版高清| 精品一品国产午夜福利视频| 日本欧美视频一区| 亚洲国产精品国产精品| 午夜精品国产一区二区电影| 18禁动态无遮挡网站| 超碰97精品在线观看| 最近2019中文字幕mv第一页| 国产精品熟女久久久久浪| 91精品国产国语对白视频| 天美传媒精品一区二区| 欧美少妇被猛烈插入视频| 国产亚洲午夜精品一区二区久久| 一本久久精品| 多毛熟女@视频| 老司机影院毛片| 日韩av在线免费看完整版不卡| 久久精品国产亚洲av高清一级| 飞空精品影院首页| 天天躁夜夜躁狠狠躁躁| 日韩一区二区视频免费看| 亚洲,欧美精品.| 国产在线免费精品| 亚洲久久久国产精品| 欧美日韩综合久久久久久| 亚洲色图 男人天堂 中文字幕| 搡女人真爽免费视频火全软件| 男女边吃奶边做爰视频| 国产精品久久久久成人av| 丁香六月天网| 18+在线观看网站| 成人亚洲欧美一区二区av| 日韩av在线免费看完整版不卡| av福利片在线| 国产日韩一区二区三区精品不卡| 亚洲欧美一区二区三区国产| 午夜影院在线不卡| 国产成人精品在线电影| 观看av在线不卡| 夫妻午夜视频| 午夜福利影视在线免费观看| 18禁动态无遮挡网站| 国产色婷婷99| 成人亚洲欧美一区二区av| 亚洲人成电影观看| 亚洲欧洲日产国产| 国精品久久久久久国模美| 在线 av 中文字幕| 亚洲成人一二三区av| 男人舔女人的私密视频| 精品少妇黑人巨大在线播放| 亚洲精品aⅴ在线观看| 成人国产麻豆网| 日日摸夜夜添夜夜爱| 晚上一个人看的免费电影| 国产免费现黄频在线看| 日韩中字成人| 午夜老司机福利剧场| 美女午夜性视频免费| 久久免费观看电影| xxxhd国产人妻xxx| 久久久久久人妻| 狠狠婷婷综合久久久久久88av| 成人国产av品久久久| 亚洲国产看品久久| 午夜日本视频在线| av天堂久久9| 下体分泌物呈黄色| 人妻 亚洲 视频| 91午夜精品亚洲一区二区三区| 欧美少妇被猛烈插入视频| 亚洲国产精品成人久久小说| 久久婷婷青草| 在线天堂最新版资源| av免费在线看不卡| 一本大道久久a久久精品| av线在线观看网站| 捣出白浆h1v1| 欧美日韩精品成人综合77777| 一级片'在线观看视频| 丰满少妇做爰视频| 亚洲精品一区蜜桃| 国产探花极品一区二区| 大话2 男鬼变身卡| 日韩一卡2卡3卡4卡2021年| 中国国产av一级| 春色校园在线视频观看| 在线亚洲精品国产二区图片欧美| 18+在线观看网站| 国产精品 国内视频| 又粗又硬又长又爽又黄的视频| 卡戴珊不雅视频在线播放| 久久久久精品性色| 亚洲少妇的诱惑av| 久久鲁丝午夜福利片| 永久网站在线| av免费在线看不卡| 国产人伦9x9x在线观看 | 下体分泌物呈黄色| 美女中出高潮动态图| 国产av码专区亚洲av| 国产精品一国产av| 欧美精品av麻豆av| 欧美精品亚洲一区二区| 男女无遮挡免费网站观看| 寂寞人妻少妇视频99o| 高清av免费在线| a 毛片基地| 国产精品久久久av美女十八| 美女高潮到喷水免费观看| 久久99蜜桃精品久久| 亚洲精品成人av观看孕妇| 如何舔出高潮| 不卡视频在线观看欧美| 日韩中字成人| 嫩草影院入口| 一边摸一边做爽爽视频免费| 亚洲av在线观看美女高潮| 国产不卡av网站在线观看| 亚洲一码二码三码区别大吗| 可以免费在线观看a视频的电影网站 | 精品人妻熟女毛片av久久网站| av免费观看日本| 国产免费一区二区三区四区乱码| 欧美av亚洲av综合av国产av | a级片在线免费高清观看视频| 亚洲中文av在线| av免费在线看不卡| 水蜜桃什么品种好| 在线亚洲精品国产二区图片欧美| 国产精品不卡视频一区二区| 这个男人来自地球电影免费观看 | 国产精品二区激情视频| 免费高清在线观看视频在线观看| 中文精品一卡2卡3卡4更新| 久久国内精品自在自线图片| 赤兔流量卡办理| 视频区图区小说| 9191精品国产免费久久| 亚洲国产色片| 国产伦理片在线播放av一区| 免费观看av网站的网址| 在线观看一区二区三区激情| 18禁国产床啪视频网站| 亚洲在久久综合| 日韩一本色道免费dvd| 国产人伦9x9x在线观看 | 久久ye,这里只有精品| 亚洲精品国产一区二区精华液| 99精国产麻豆久久婷婷| 国产精品一国产av| 国产亚洲午夜精品一区二区久久| 国产1区2区3区精品| 少妇熟女欧美另类| 日本欧美视频一区| 波野结衣二区三区在线| 欧美精品一区二区免费开放| 亚洲欧洲日产国产| 日韩免费高清中文字幕av| 国产成人欧美| 亚洲人成网站在线观看播放| 寂寞人妻少妇视频99o| 精品国产乱码久久久久久小说| 国产高清国产精品国产三级| www日本在线高清视频| 在线亚洲精品国产二区图片欧美| 亚洲欧美成人精品一区二区| 中文天堂在线官网| 日韩大片免费观看网站| 曰老女人黄片| 亚洲人成网站在线观看播放| 十八禁高潮呻吟视频| 日韩欧美一区视频在线观看| 满18在线观看网站| 黑人猛操日本美女一级片| 热99国产精品久久久久久7| 久久久久久久国产电影| 伦理电影大哥的女人| 国产一区二区三区av在线| 美女福利国产在线| 久热久热在线精品观看| 国产av码专区亚洲av| 日本wwww免费看| 亚洲av电影在线观看一区二区三区| 午夜激情av网站| 欧美日韩亚洲高清精品| 少妇猛男粗大的猛烈进出视频| 欧美人与性动交α欧美精品济南到 | 国产午夜精品一二区理论片| 中文字幕另类日韩欧美亚洲嫩草| 亚洲国产av影院在线观看| 久久97久久精品| 成人二区视频| 尾随美女入室| 久久99蜜桃精品久久| 在线观看国产h片| 亚洲五月色婷婷综合| 午夜福利乱码中文字幕| 久久久久久久久久久久大奶| 国产综合精华液| 久久精品国产亚洲av天美| 国产女主播在线喷水免费视频网站| 天堂8中文在线网| 乱人伦中国视频| freevideosex欧美| 久久精品国产综合久久久| 赤兔流量卡办理| 午夜av观看不卡| 美国免费a级毛片| 美女中出高潮动态图| 如日韩欧美国产精品一区二区三区| 黄色毛片三级朝国网站| 乱人伦中国视频| 欧美日韩综合久久久久久| 国产精品欧美亚洲77777| 精品国产超薄肉色丝袜足j| 女人久久www免费人成看片| 五月伊人婷婷丁香| 色视频在线一区二区三区| 亚洲成人一二三区av| 亚洲中文av在线| 亚洲av.av天堂| 欧美日韩国产mv在线观看视频| 免费少妇av软件| 在线观看免费日韩欧美大片| 嫩草影院入口| 久久精品aⅴ一区二区三区四区 | 一级片'在线观看视频| 一级毛片我不卡| 中文字幕亚洲精品专区| 成人亚洲欧美一区二区av| 国产男人的电影天堂91| 亚洲精品成人av观看孕妇| 国产在线免费精品| 啦啦啦在线观看免费高清www| 国产片特级美女逼逼视频| 久久毛片免费看一区二区三区| 国产成人精品无人区| av天堂久久9| 中文字幕制服av| 狠狠婷婷综合久久久久久88av| 亚洲欧洲日产国产| 久久久久久免费高清国产稀缺| 久久久国产精品麻豆| av又黄又爽大尺度在线免费看| 久久久久国产精品人妻一区二区| 亚洲久久久国产精品| 大码成人一级视频| 久久久精品区二区三区| 最近中文字幕2019免费版| 精品第一国产精品| 精品一区二区三卡| 色吧在线观看| 日韩一区二区三区影片| 久久精品人人爽人人爽视色| 高清av免费在线| 自线自在国产av| 欧美日韩成人在线一区二区| 中文乱码字字幕精品一区二区三区| videosex国产| 成人漫画全彩无遮挡| 欧美精品高潮呻吟av久久| 汤姆久久久久久久影院中文字幕| 91精品国产国语对白视频| 久久毛片免费看一区二区三区| 精品国产乱码久久久久久男人| 夫妻午夜视频| 黄色 视频免费看| 边亲边吃奶的免费视频| 国产1区2区3区精品| 亚洲欧美成人精品一区二区| 日韩三级伦理在线观看| 激情视频va一区二区三区| 黑人巨大精品欧美一区二区蜜桃| 亚洲国产精品一区三区| 91精品国产国语对白视频| a级片在线免费高清观看视频| 各种免费的搞黄视频| 婷婷色av中文字幕| 国产福利在线免费观看视频| 免费观看无遮挡的男女| 精品国产一区二区三区四区第35| 国产黄频视频在线观看| 又黄又粗又硬又大视频| 久久精品国产亚洲av涩爱| 一边亲一边摸免费视频| 丝袜在线中文字幕| 亚洲一码二码三码区别大吗| 久久97久久精品| 午夜免费观看性视频| 少妇人妻 视频| 午夜福利影视在线免费观看| 亚洲久久久国产精品| 久久久久视频综合| 人妻系列 视频| 国产男女超爽视频在线观看| 久久影院123| 亚洲国产毛片av蜜桃av| 99热国产这里只有精品6| 免费黄色在线免费观看| 最近中文字幕2019免费版| 最近中文字幕高清免费大全6| 在线观看一区二区三区激情| 亚洲色图 男人天堂 中文字幕| 亚洲国产最新在线播放| 精品福利永久在线观看| 在线观看三级黄色| 亚洲精品中文字幕在线视频| 中文天堂在线官网| 久久国产亚洲av麻豆专区| 亚洲欧美成人精品一区二区| 女人精品久久久久毛片| 亚洲精品中文字幕在线视频| 寂寞人妻少妇视频99o| 9191精品国产免费久久| 亚洲经典国产精华液单| 啦啦啦在线免费观看视频4| 少妇的逼水好多| 十分钟在线观看高清视频www| 国产精品久久久久久久久免| 男女边摸边吃奶| 亚洲四区av| 老司机影院毛片| 免费观看无遮挡的男女| 黄片小视频在线播放| 高清av免费在线| 午夜福利视频在线观看免费| 久久久久精品久久久久真实原创| 韩国av在线不卡| 满18在线观看网站| 亚洲综合精品二区| 黄色一级大片看看| 看免费av毛片| 亚洲国产毛片av蜜桃av| 国产 一区精品| 9热在线视频观看99| videosex国产| 中国国产av一级| 午夜影院在线不卡| 精品国产乱码久久久久久小说| 人妻系列 视频| 永久网站在线| 午夜福利视频精品| 十八禁高潮呻吟视频| 亚洲人成77777在线视频| 中文字幕av电影在线播放| 成年女人在线观看亚洲视频| 久久精品久久久久久噜噜老黄| 欧美国产精品va在线观看不卡| 成年女人在线观看亚洲视频| 日韩一卡2卡3卡4卡2021年| 一边摸一边做爽爽视频免费| 另类亚洲欧美激情| 中文字幕人妻熟女乱码| a 毛片基地| 亚洲成人av在线免费| 久久热在线av| 精品一品国产午夜福利视频| 十分钟在线观看高清视频www| 欧美 日韩 精品 国产| 男女下面插进去视频免费观看| 91精品国产国语对白视频| 国产精品香港三级国产av潘金莲 | 精品午夜福利在线看| 欧美成人午夜免费资源| 天天躁夜夜躁狠狠躁躁| 香蕉国产在线看| 亚洲欧美一区二区三区国产| 亚洲国产精品一区二区三区在线| 卡戴珊不雅视频在线播放| 国产毛片在线视频| xxx大片免费视频| 亚洲少妇的诱惑av| 日韩在线高清观看一区二区三区| 免费播放大片免费观看视频在线观看| 久久精品国产a三级三级三级| 亚洲色图 男人天堂 中文字幕| 亚洲av综合色区一区| 欧美bdsm另类| 精品99又大又爽又粗少妇毛片| 色婷婷av一区二区三区视频| 国产精品麻豆人妻色哟哟久久| 久久久久国产一级毛片高清牌| 亚洲第一av免费看| 欧美日韩亚洲国产一区二区在线观看 | 一级毛片电影观看| 亚洲视频免费观看视频| 久久午夜综合久久蜜桃| 国产精品二区激情视频| 日韩成人av中文字幕在线观看| 国产成人午夜福利电影在线观看| 国产精品欧美亚洲77777| 多毛熟女@视频| 亚洲少妇的诱惑av| 制服诱惑二区| 一级a爱视频在线免费观看| 亚洲av日韩在线播放| 亚洲欧美清纯卡通| 午夜福利在线观看免费完整高清在| 咕卡用的链子| 看十八女毛片水多多多| 久久99热这里只频精品6学生| 高清视频免费观看一区二区| 亚洲内射少妇av| 久久国产精品男人的天堂亚洲| 极品人妻少妇av视频| 女的被弄到高潮叫床怎么办| 18在线观看网站| 热re99久久精品国产66热6| 欧美日韩视频精品一区| 国产精品久久久久久精品古装| 国产免费现黄频在线看| 亚洲熟女精品中文字幕| 日韩一区二区三区影片| 两性夫妻黄色片| 婷婷成人精品国产| 欧美bdsm另类| 国产深夜福利视频在线观看| freevideosex欧美| 在线免费观看不下载黄p国产| 中文字幕人妻丝袜制服| 老司机亚洲免费影院| 电影成人av| 国产精品嫩草影院av在线观看| 亚洲成人av在线免费| 久久久久人妻精品一区果冻| 久久精品久久精品一区二区三区| 久久婷婷青草| 国产欧美日韩综合在线一区二区| 亚洲欧美清纯卡通| 国产毛片在线视频| 国产成人免费观看mmmm| 免费看av在线观看网站| 永久网站在线| xxxhd国产人妻xxx| 国产成人精品一,二区| 亚洲精品视频女| 美女福利国产在线| 午夜免费观看性视频| 欧美日韩一级在线毛片| 高清欧美精品videossex| kizo精华| 亚洲综合色惰| 久久久久国产精品人妻一区二区| 国产在线视频一区二区| 777米奇影视久久| 国产亚洲一区二区精品| 国产av码专区亚洲av| 搡老乐熟女国产| 97在线人人人人妻| 婷婷色麻豆天堂久久|