作業系統是什嗎?

來源:互聯網
上載者:User
作業系統是什嗎?譯自《An Operating Systems Vade Mecum》

作者:Raphael A. Finkel劉建文略譯(http://blog.csdn.net/keminlau

KEY:作業系統

INTRO

作業系統是什嗎?它的本質是什嗎?作業系統是集策略和機制( policy and mechanism)、法則與無法則(algorithm and heuristic)和思想理論與實踐經驗於一身的高度複雜的混合物(mixtures)。本手冊(vade mecum)嘗試揉合對作業系統的各種不同觀點,一步一步地引導初學者掌握這個電腦科學最複雜的主題。

作業系統主題內容之廣以及獨立內容之多,以致於學生和教師常常只關注局部而忽視統覽全域的思想。我希望通過本書提出的雙重思想——資源管理思想(resource management )和美化思想(beautification),矯正這種情況。

(KEMIN:所謂的揉合各種觀點其實是抽象出作業系統最一般的理論,指出作業系統的本質)

統一術語:原理、儲存、傳遞

To unify disparate threads of discussion, I have taken the liberty(隨意, 冒失, 冒昧, 失禮 ) introducing names for recurrent themes and glorifying( 讚美, 讚揚, 美化) them with the title "principles", I hope that this organization and nomenclature(命名法, 術語, 專門語) will help the reader to understand the subject better and to integrate new ideas into the same framework.

I have striven to use a consistent nomenclature throughout the book. At times this nomenclature is at odds(可能的機會; 優勢; 成敗的可能性 ) with accepted American practice. For example, I prefer to call computer memory ‘‘store.’’ This name allows me to unify the various levels of the storage hierarchy, including registers, main store, swap space, files on disk, and files on magnetic tape. I also prefer the single word ‘‘transput’’ to the clumsier(笨拙的, 粗陋的, 不雅觀的) but more common term ‘‘input/output.’’ Although I found this term jarring(刺耳的; 輾軋的; 不和諧的 ) at first, I have grown to like it.

課程實踐

沒有實踐項目的作業系統課程是不完整的。但是這個練習必須在軟體上有實質性的投入(substantial investment),比如實現作業系統的部分功能。可以在課堂上通過良好定義的模組和介面給出完整的作業系統功能結構,然後為同學們設定作業,內容是用自己的設計實現這些模組。一個沒那麼雄心勃勃的項目是首先讓學生為虛擬機器寫一個簡單的發送器。完成後可適當再最佳化它,比如添加虛擬記憶體、輸入輸出和其它功能。

機制和策略

在本書中,我小心認真的區分了機制和策略的關係。機制是執行事務的技術;策略是決定執行何種事務的規則。機制是作業系統的螺釘和螺母(nuts and bolts), 就是基本零件, 基礎部分。而這些機制的種類和多少還取決於作業系統所啟動並執行硬體體系。

KEMIN:請用“機制是一種人造性質”來再理解一下上面這段話,並參考這裡

THE RESOURCE PRINCIPLE

作業系統的結構和行為那麼的複雜,它的本質是什嗎?我們通過給出兩種不同的作業系統定義,希望給讀者把握作業系統本質的一些提示。第一個定義叫資源原則(Resource Principle. ),第二是美化原則(Beautification Principle)。此外,我們還會介紹一項對作業系統非常重的結構化思想——層級原則(Level Principle)。

以下是資源原則的內容:

作業系統是一組分配資源給進程的演算法。

資源

資源是什嗎?資源是完成工作或事務必須的物品(commodity)。電腦硬體提供了很多完成計算事務的基本(fundamental )資源。我們知道,程式必須儲存在主存、必須由CPU執行和一定的輸入輸出操作,可以把電腦硬體提供的基本資源理解成空間、時間和資料傳遞(transput)三類。

除了基本的原始的資源外,作業系統還引入一些新資源和一些對基本資源加工過的資源。比如,檔案資源、管道資源和郵箱資源。

進程

進程的概念是作業系統的核心,是出了名的(notoriously)難定義。一種粗淺的理解是,進程是程式的一次動態執行,是程式完成一次任務所需的資源的載體。我們可以把進程比喻成在戲劇院表演獨角戲的演員,對於演員,舞台小道具就是他的資源。當演員需道具時,他到道具管理處(相當作業系統的資源分派程式)申請。由於資源是對所有演員共用的,管理處的工作就是當多個演員申請道具時代為解決資源競爭問題,滿足兩個衝突的目標:

  • 讓每個演員得到他們想要的道具 (機制WHAT的問題)
  • 公平分配道具 (策略HOW的問題)

KEMIN:由於各種資源(包括封裝過的進階資源)的性質不一,所以對它們的[管理]方式都不一樣的,從管理手段的名稱就可看出這一點,處理器是[調度]的,主存是[分配]的。但從完成管理功能的高度看,它們都有實現管理的部分和如何管理的部分,實現管理就是機制問題,如何管理就是策略問題。比如,處理器的調度機制(必須有timer和進程切換指令等體系功能的支援)和調度策略。

另外,管理處也要對戲劇院的主人負責,職責目標有:

  • 確保道具(資源)的高利用率
  • 儘可能提高演出(進程)數量
THE BEAUTIFICATION PRINCIPLE

我們已經看了作業系統的資源原則的定義,現在我們來看看作業系統的另一個同樣重要的定義——美化原則(Beautification Principle)。

作業系統是一組隱藏硬體細節和提供更親切舒適環境的演算法。

隱藏硬體細節是為了達到兩個目標。

安全(Security)

雖然作業系統與一般進程以相似的形式運行於主存,但作為資源分派者和虛擬環境支援者,核心進程與一般應用程式進程有明顯安全邊界。作業系統與硬體有親緣性,從作業系統運行在CPU的核心態,能看見CPU的控制和狀態寄存器就可以看出這一點。如果按嚴格的邏輯分層,應用程式進程與核心進程位於不同的邏輯層級。但由於成本、效率和靈活性,作業系統沒有完全硬體化,CPU的可軟體化的部分也是萬分的設計過。另外,由於應用程式進程必須使用硬體資源才能完成事務(比如輸入輸出),兩邏輯層級必須有介面。

抽象(Abstraction)

作業系統不但是個資源的分配者,而還是資源的封裝者,把低級的原始的資源打包成進階的虛擬資源。這種打包稱為抽象。作業系統和其它抽象支撐軟體(比如編譯器)一樣,負責抽象的實現。這種抽象的目的很簡單,為上層(比如進程)提供一個虛擬作業環境。虛擬環境在不同語境有不同的理解,談進程調度時叫資源;談具體編程(C語言虛擬機器)時叫進階指令、庫函數調用;談系統結構時叫服務(services )……

KEMIN:如果從系統(元素、屬性和關係)的角度看,抽象總是出現兩個不同層次系統的邊界,進階別層次的系統的演繹(工作、活動或事務)總是依賴於低層級層次的系統提供的抽象。這種依賴不完全是硬性的,為的是折中效率(好比一家公司有不同層級的職位,各司其職,下屬聽從指揮,協調合作才發揮團體的效能)

KEMIN:個人認為把美化原則劃分安全和抽象不是合適的,會造成概念上的混亂。作者的這種劃分的目的是想強調OS與硬體的特殊關係,強調OS是運行在特權級下的軟體。但細心想想,安全到底是什嗎?安全是保證抽象的正確實現,它是抽象的一部分,把安全與抽象並列是不對的,會造成分類上的混亂。

一些作業系統相關的頭腦風暴

b. 差點忘記開發驅動程式其實就是開發作業系統。所以把電腦系統分成組合語言層和作業系統層這種混合方式是不清晰的。不過如果光以程式設計語言(也就是指令,或者叫命令)來結構化分層化電腦系統是不充分的,因為有很多實現機理(如中斷機制)不屬於程式設計語言概念,但是開發人員卻必須在開始工作前瞭解這些機理知識。 2009-6-3 10:15

b.現在很多電腦群組成與體繫結構方面的圖書在劃分電腦階層時,都把作業系統(系統軟體和程式碼程式庫)劃分獨立一層,介於組合語言層和ISA層,我認為這種劃法是不合適的。我認為只能按語言的抽象層級來劃分才能清晰地把握電腦的階層。不過作業系統的角色的確不可忽視。OS很特殊,還有一個東西也很特殊,就是編譯器。在為電腦分層時,OS和編譯器應該獨立出來再定性分析……2009-6-15 1:45

b.進程、線程、纖程和分布式任務都是“計算任務”,從縱向看只是粒度不同,從橫向看會有任務性質的不同(比如管理工作和被管理工作),這些理解都不是十分難。但是加上個處理器實現和作業系統實現,問題的複雜度好像增加了一個數量級。這是什麼現象?抽象的“計算任務”需要一個具體的物理載體來實現。如果我們把電腦系統分層,那麼硬體的操作模式是一個比較明顯的分隔線,分隔任務與實現。但是作為軟體的作業系統卻在實現的一層。可見作業系統與CPU有著相當的緊密的關係。 2009-5-3 13:05

o b.今天最大收穫就是弄清了作業系統、應用軟體與程式設計語言三者間的關係。縱向看,作業系統與應用軟體都是軟體產品,程式語言是構造它們的工具。作業系統比應用軟體抽象層級低,使用更靠近硬體的低級語言構造;橫向看,三者都是按工程需要開發設計的資訊產品,只是程式設計語言更抽象一級,屬於“方法論”層級。 2009-3-6 19:15

b.用電腦多了會有種錯覺,以為電腦螢幕上跑了好多不同的程式,包括也以為作業系統也一個獨立啟動並執行程式。事實上,這種不同只存在於不同的應用程式之間,作業系統在邏輯上是應用程式的一部分。如果這種假設成立,那麼有個概念很難理解,就是到底什麼叫運行? 2009-4-9 20:04

b.之所以很理解應用程式和作業系統是“運行”的同一體,是因為作業系統具體雙重角色。作業系統在作硬體的擴充一面是與應用程式一同“運行”;在作為資源管理一面則是管理應用程式,有自己的“運行”…… 2009-4-9 21:37

b. 作業系統與應用程式是“運行”的同一體可以從作業系統提供的DLL看出來。這些DLL都是作業系統提供的服務的具體代碼,應用程式運行時要將其映射入地址空間,一併“運行”。可“運行”的電腦系統被模組化成很多部分。硬體、系統軟體和應用軟體是其中最主要的三個部分。 2009-4-10 11:47

a. 宗教有什麼用?哲學有什麼用?原來它們的都屬“監管”範疇。這兩天研究作業系統,發現電腦世界充滿了監管的概念。並聯想到各個領域只要涉及管理的都有一個額外的管理機構在作用著。比如,政治裡的司法,人生中的宗教;而作業系統的CPU、記憶體、裝置管理都有一個額外的負責管理的執行程式。 2009-4-11 19:57

b.總結一下這兩天對作業系統研究。作業系統在電腦系統中的主要功能管理硬體資源,而這些管理功能目的是為了實現多道程式的運行。作業系統管理電腦系統的三大主要硬體:處理器、記憶體和外部設定;管理模組分別叫處理器管理(也叫進程管理)、記憶體管理(也叫虛擬記憶體管理)和裝置管理。另外,硬碟除作為裝置管理(硬碟儲存裝置,相對於其它的輸入輸出裝置)外,由於具體計算的額外需要--資料的檔案持久化,並且檔案管理的複雜性,另設第四項管理,檔案管理。 2009-4-14 22:51

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.