亚洲全黄无码一级在线看_国产剧情久久久性色_无码av一区二区三区无码_亚洲成a×人片在线观看

當前位置: 首頁 > 科技新聞 >

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

時間:2020-02-07 15:51來源:網(wǎng)絡整理 瀏覽:
操作系統(tǒng) 現(xiàn)代操作系統(tǒng)由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網(wǎng)絡接口以及各種輸入/輸出設備構成。計算機操作系統(tǒng)是一個復

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

操作系統(tǒng)

現(xiàn)代操作系統(tǒng)由一個或多個處理器、主存、打印機、鍵盤、鼠標、顯示器、網(wǎng)絡接口以及各種輸入/輸出設備構成。計算機操作系統(tǒng)是一個復雜的系統(tǒng)。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

然而,程序員不會直接和這些硬件打交道,而且每位程序員不可能會掌握所有操作系統(tǒng)的細節(jié),這樣我們就不用再編寫代碼了,所以在硬件的基礎之上,計算機安裝了一層軟件,這層軟件能夠通過響應用戶輸入的指令達到控制硬件的效果,從而滿足用戶需求,這種軟件稱之為操作系統(tǒng),它的任務就是為用戶程序提供一個更好、更簡單、更清晰的計算機模型。

我們一般常見的操作系統(tǒng)主要有 Windows、Linux、FreeBSD 或 OS X ,這種帶有圖形界面的操作系統(tǒng)被稱為 圖形用戶界面(Graphical User Interface, GUI),而基于文本、命令行的通常稱為 Shell。下面是我們所要探討的操作系統(tǒng)的部件

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

這是一個操作系統(tǒng)的簡化圖,最下面的是硬件,硬件包括芯片、電路板、磁盤、鍵盤、顯示器等我們上面提到的設備,在硬件之上是軟件。大部分計算機有兩種運行模式:內核態(tài) 和 用戶態(tài),軟件中最基礎的部分是操作系統(tǒng),它運行在 內核態(tài) 中,內核態(tài)也稱為 管態(tài) 和 核心態(tài),它們都是操作系統(tǒng)的運行狀態(tài),只不過是不同的叫法而已。操作系統(tǒng)具有硬件的訪問權,可以執(zhí)行機器能夠運行的任何指令。軟件的其余部分運行在 用戶態(tài) 下。

用戶接口程序(shell 或者 GUI)處于用戶態(tài)中,并且它們位于用戶態(tài)的最低層,允許用戶運行其他程序,例如 Web 瀏覽器、電子郵件閱讀器、音樂播放器等。而且,越靠近用戶態(tài)的應用程序越容易編寫,如果你不喜歡某個電子郵件閱讀器你可以重新寫一個或者換一個,但你不能自行寫一個操作系統(tǒng)或者是中斷處理程序。這個程序由硬件保護,防止外部對其進行修改。

計算機硬件簡介

操作系統(tǒng)與運行操作系統(tǒng)的內核硬件關系密切。操作系統(tǒng)擴展了計算機指令集并管理計算機的資源。因此,操作系統(tǒng)因此必須足夠了解硬件的運行,這里我們先簡要介紹一下現(xiàn)代計算機中的計算機硬件。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

從概念上來看,一臺簡單的個人電腦可以被抽象為上面這種相似的模型,CPU、內存、I/O 設備都和總線串聯(lián)起來并通過總線與其他設備進行通信?,F(xiàn)代操作系統(tǒng)有著更為復雜的結構,會設計很多條總線,我們稍后會看到。暫時來講,這個模型能夠滿足我們的討論。

CPU

CPU 是計算機的大腦,它主要和內存進行交互,從內存中提取指令并執(zhí)行它。一個 CPU 的執(zhí)行周期是從內存中提取第一條指令、解碼并決定它的類型和操作數(shù),執(zhí)行,然后再提取、解碼執(zhí)行后續(xù)的指令。重復該循環(huán)直到程序運行完畢。

每個 CPU 都有一組可以執(zhí)行的特定指令集。因此,x86 的 CPU 不能執(zhí)行 ARM 的程序并且 ARM 的 CPU 也不能執(zhí)行 x86 的程序。由于訪問內存獲取執(zhí)行或數(shù)據(jù)要比執(zhí)行指令花費的時間長,因此所有的 CPU 內部都會包含一些寄存器來保存關鍵變量和臨時結果。因此,在指令集中通常會有一些指令用于把關鍵字從內存中加載到寄存器中,以及把關鍵字從寄存器存入到內存中。還有一些其他的指令會把來自寄存器和內存的操作數(shù)進行組合,例如 add 操作就會把兩個操作數(shù)相加并把結果保存到內存中。

除了用于保存變量和臨時結果的通用寄存器外,大多數(shù)計算機還具有幾個特殊的寄存器,這些寄存器對于程序員是可見的。其中之一就是 程序計數(shù)器(program counter),程序計數(shù)器會指示下一條需要從內存提取指令的地址。提取指令后,程序計數(shù)器將更新為下一條需要提取的地址。

另一個寄存器是 堆棧指針(stack pointer),它指向內存中當前棧的頂端。堆棧指針會包含輸入過程中的有關參數(shù)、局部變量以及沒有保存在寄存器中的臨時變量。

還有一個寄存器是 PSW(Program Status Word) 程序狀態(tài)字寄存器,這個寄存器是由操作系統(tǒng)維護的8個字節(jié)(64位) long 類型的數(shù)據(jù)集合。它會跟蹤當前系統(tǒng)的狀態(tài)。除非發(fā)生系統(tǒng)結束,否則我們可以忽略 PSW 。用戶程序通常可以讀取整個PSW,但通常只能寫入其某些字段。PSW 在系統(tǒng)調用和 I / O 中起著重要作用。

操作系統(tǒng)必須了解所有的寄存器。在時間多路復用(time multiplexing) 的 CPU 中,操作系統(tǒng)往往停止運行一個程序轉而運行另外一個。每次當操作系統(tǒng)停止運行一個程序時,操作系統(tǒng)會保存所有寄存器的值,以便于后續(xù)重新運行該程序。

為了提升性能, CPU 設計人員早就放棄了同時去讀取、解碼和執(zhí)行一條簡單的指令。許多現(xiàn)代的 CPU 都具有同時讀取多條指令的機制。例如,一個 CPU 可能會有單獨訪問、解碼和執(zhí)行單元,所以,當 CPU 執(zhí)行第 N 條指令時,還可以對 N + 1 條指令解碼,還可以讀取 N + 2 條指令。像這樣的組織形式被稱為 流水線(pipeline),

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

比流水線更先進的設計是 超標量(superscalar)CPU,下面是超標量 CPU 的設計

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

在上面這個設計中,存在多個執(zhí)行單元,例如,一個用來進行整數(shù)運算、一個用來浮點數(shù)運算、一個用來布爾運算。兩個或者更多的指令被一次性取出、解碼并放入緩沖區(qū)中,直至它們執(zhí)行完畢。只要一個執(zhí)行單元空閑,就會去檢查緩沖區(qū)是否有可以執(zhí)行的指令。如果有,就把指令從緩沖區(qū)中取出并執(zhí)行。這種設計的含義是應用程序通常是亂序執(zhí)行的。在大多數(shù)情況下,硬件負責保證這種運算的結果與順序執(zhí)行指令時的結果相同。

除了用在嵌入式系統(tǒng)中非常簡單的 CPU 之外,多數(shù) CPU 都有兩種模式,即前面已經提到的內核態(tài)和用戶態(tài)。通常情況下,PSW 寄存器中的一個二進制位會控制當前狀態(tài)是內核態(tài)還是用戶態(tài)。當運行在內核態(tài)時,CPU 能夠執(zhí)行任何指令集中的指令并且能夠使用硬件的功能。在臺式機和服務器上,操作系統(tǒng)通常以內核模式運行,從而可以訪問完整的硬件。在大多數(shù)嵌入式系統(tǒng)中,一部分運行在內核態(tài)下,剩下的一部分運行在用戶態(tài)下。

用戶應用程序通常運行在用戶態(tài)下,在用戶態(tài)下,CPU 只能執(zhí)行指令集中的一部分并且只能訪問硬件的一部分功能。一般情況下,在用戶態(tài)下,有關 I/O 和內存保護的所有指令是禁止執(zhí)行的。當然,設置 PSW 模式的二進制位為內核態(tài)也是禁止的。

為了獲取操作系統(tǒng)的服務,用戶程序必須使用 系統(tǒng)調用(system call),系統(tǒng)調用會轉換為內核態(tài)并且調用操作系統(tǒng)。TRAP 指令用于把用戶態(tài)切換為內核態(tài)并啟用操作系統(tǒng)。當有關工作完成之后,在系統(tǒng)調用后面的指令會把控制權交給用戶程序。我們會在后面探討操作系統(tǒng)的調用細節(jié)。

需要注意的是操作系統(tǒng)在進行系統(tǒng)調用時會存在陷阱。大部分的陷阱會導致硬件發(fā)出警告,比如說試圖被零除或浮點下溢等你。在所有的情況下,操作系統(tǒng)都能得到控制權并決定如何處理異常情況。有時,由于出錯的原因,程序不得不停止。

多線程和多核芯片

Intel Pentinum 4也就是奔騰處理器引入了被稱為多線程(multithreading) 或 超線程(hyperthreading, Intel 公司的命名) 的特性,x86 處理器和其他一些 CPU 芯片就是這樣做的。包括SSPARC、Power5、Intel Xeon 和 Intel Core 系列 。近似地說,多線程允許 CPU 保持兩個不同的線程狀態(tài)并且在納秒級(nanosecond) 的時間完成切換。線程是一種輕量級的進程,我們會在后面說到。例如,如果一個進程想要從內存中讀取指令(這通常會經歷幾個時鐘周期),多線程 CPU 則可以切換至另一個線程。多線程不會提供真正的并行處理。在一個時刻只有一個進程在運行。

對于操作系統(tǒng)來講,多線程是有意義的,因為每個線程對操作系統(tǒng)來說都像是一個單個的 CPU。比如一個有兩個 CPU 的操作系統(tǒng),并且每個 CPU 運行兩個線程,那么這對于操作系統(tǒng)來說就可能是 4 個 CPU。

除了多線程之外,現(xiàn)在許多 CPU 芯片上都具有四個、八個或更多完整的處理器或內核。多核芯片在其上有效地承載了四個微型芯片,每個微型芯片都有自己的獨立CPU。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

如果要說在絕對核心數(shù)量方面,沒有什么能贏過現(xiàn)代 GPU(Graphics Processing Unit),GPU 是指由成千上萬個微核組成的處理器。它們擅長處理大量并行的簡單計算。

內存

計算機中第二個主要的組件就是內存。理想情況下,內存應該非??焖?比執(zhí)行一條指令要快,從而不會拖慢 CPU 執(zhí)行效率),而且足夠大且便宜,但是目前的技術手段無法滿足三者的需求。于是采用了不同的處理方式,存儲器系統(tǒng)采用一種分層次的結構

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

頂層的存儲器速度最高,但是容量最小,成本非常高,層級結構越向下,其訪問效率越慢,容量越大,但是造價也就越便宜。

寄存器

存儲器的頂層是 CPU 中的寄存器,它們用和 CPU 一樣的材料制成,所以和 CPU 一樣快。程序必須在軟件中自行管理這些寄存器(即決定如何使用它們)

高速緩存

位于寄存器下面的是高速緩存,它多數(shù)由硬件控制。主存被分割成高速緩存行(cache lines) 為 64 字節(jié),內存地址的 0 - 63 對應高速緩存行 0 ,地址 64 - 127 對應高速緩存行的 1,等等。使用最頻繁的高速緩存行保存在位于 CPU 內部或非??拷?CPU 的高速緩存中。當應用程序需要從內存中讀取關鍵詞的時候,高速緩存的硬件會檢查所需要的高速緩存行是否在高速緩存中。如果在的話,那么這就是高速緩存命中(cache hit)。高速緩存滿足了該請求,并且沒有通過總線將內存請求發(fā)送到主內存。高速緩存命中通常需要花費兩個時鐘周期。緩存未命中需要從內存中提取,這會消耗大量的時間。高速緩存行會限制容量的大小因為它的造價非常昂貴。有一些機器會有兩個或者三個高速緩存級別,每一級高速緩存比前一級慢且容量更大。

緩存在計算機很多領域都扮演了非常重要的角色,不僅僅是 RAM 緩存行。

“隨機存儲器(RAM):內存中最重要的一種,表示既可以從中讀取數(shù)據(jù),也可以寫入數(shù)據(jù)。當機器關閉時,內存中的信息會 丟失。

大量的可用資源被劃分為小的部分,這些可用資源的一部分會獲得比其他資源更頻繁的使用權,緩存經常用來提升性能。操作系統(tǒng)無時無刻的不在使用緩存。例如,大多數(shù)操作系統(tǒng)在主機內存中保留(部分)頻繁使用的文件,以避免重復從磁盤重復獲取。舉個例子,類似于 /home/ast/projects/minix3/src/kernel/clock.c 這樣的場路徑名轉換成的文件所在磁盤地址的結果也可以保存緩存中,以避免重復尋址。另外,當一個 Web 頁面(URL) 的地址轉換為網(wǎng)絡地址(IP地址)后,這個轉換結果也可以緩存起來供將來使用。

在任何緩存系統(tǒng)中,都會有下面這幾個噬需解決的問題

  • 何時把新的內容放進緩存
  • 把新的內容應該放在緩存的哪一行
  • 在需要空閑空間時,應該把哪塊內容從緩存中移除
  • 應該把移除的內容放在某個較大存儲器的何處

并不是每個問題都與每種緩存情況有關。對于 CPU 緩存中的主存緩存行,當有緩存未命中時,就會調入新的內容。通常通過所引用內存地址的高位計算應該使用的緩存行。

緩存是解決問題的一種好的方式,所以現(xiàn)代 CPU 設計了兩種緩存。第一級緩存或者說是 L1 cache 總是位于 CPU 內部,用來將已解碼的指令調入 CPU 的執(zhí)行引擎。對于那些頻繁使用的關鍵字,多數(shù)芯片有第二個 L1 cache 。典型的 L1 cache 的大小為 16 KB。另外,往往還設有二級緩存,也就是 L2 cache,用來存放最近使用過的關鍵字,一般是兆字節(jié)為單位。L1 cache 和 L2 cache 最大的不同在于是否存在延遲。訪問 L1 cache 沒有任何的延遲,然而訪問 L2 cache 會有 1 - 2 個時鐘周期的延后。

“什么是時鐘周期?計算機處理器或 CPU 的速度由時鐘周期來確定,該時鐘周期是振蕩器兩個脈沖之間的時間量。一般而言,每秒脈沖數(shù)越高,計算機處理器處理信息的速度就越快。時鐘速度以 Hz 為單位測量,通常為兆赫(MHz)或千兆赫(GHz)。例如,一個4 GHz處理器每秒執(zhí)行4,000,000,000個時鐘周期。計算機處理器可以在每個時鐘周期執(zhí)行一條或多條指令,這具體取決于處理器的類型。早期的計算機處理器和較慢的 CPU 在每個時鐘周期只能執(zhí)行一條指令,而現(xiàn)代處理器在每個時鐘周期可以執(zhí)行多條指令。

主存

在上面的層次結構中再下一層是主存,這是內存系統(tǒng)的主力軍,主存通常叫做 RAM(Random Access Memory),由于 1950 年代和 1960 年代的計算機使用微小的可磁化鐵氧體磁芯作為主存儲器,因此舊時有時將其稱為核心存儲器。所有不能再高速緩存中得到滿足的內存訪問請求都會轉往主存中。

除了主存之外,許多計算機還具有少量的非易失性隨機存取存儲器。它們與 RAM 不同,在電源斷電后,非易失性隨機訪問存儲器并不會丟失內容。ROM(Read Only Memory) 中的內容一旦存儲后就不會再被修改。它非常快而且便宜。(如果有人問你,有沒有什么又快又便宜的內存設備,那就是 ROM 了)在計算機中,用于啟動計算機的引導加載模塊(也就是 bootstrap )就存放在 ROM 中。另外,一些 I/O 卡也采用 ROM 處理底層設備控制。

EEPROM(Electrically Erasable PROM,) 和 閃存(flash memory) 也是非易失性的,但是與 ROM 相反,它們可以擦除和重寫。不過重寫它們需要比寫入 RAM 更多的時間,所以它們的使用方式與 ROM 相同,但是與 ROM 不同的是他們可以通過重寫字段來糾正程序中出現(xiàn)的錯誤。

閃存也通常用來作為便攜性的存儲媒介。閃存是數(shù)碼相機中的膠卷,是便攜式音樂播放器的磁盤。閃存的速度介于 RAM 和磁盤之間。另外,與磁盤存儲器不同的是,如果閃存擦除的次數(shù)太多,會出現(xiàn)磨損。

還有一類是 CMOS,它是易失性的。許多計算機都會使用 CMOS 存儲器保持當前時間和日期。

磁盤

下一個層次是磁盤(硬盤),磁盤同 RAM 相比,每個二進制位的成本低了兩個數(shù)量級,而且經常也有兩個數(shù)量級大的容量。磁盤唯一的問題是隨機訪問數(shù)據(jù)時間大約慢了三個數(shù)量級。磁盤訪問慢的原因是因為磁盤的構造不同

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

磁盤是一種機械裝置,在一個磁盤中有一個或多個金屬盤片,它們以 5400rpm、7200rpm、10800rpm 或更高的速度旋轉。從邊緣開始有一個機械臂懸橫在盤面上,這類似于老式播放塑料唱片 33 轉唱機上的拾音臂。信息會寫在磁盤一系列的同心圓上。在任意一個給定臂的位置,每個磁頭可以讀取一段環(huán)形區(qū)域,稱為磁道(track)。把一個給定臂的位置上的所有磁道合并起來,組成了一個柱面(cylinder)。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

每個磁道劃分若干扇區(qū),扇區(qū)的值是 512 字節(jié)。在現(xiàn)代磁盤中,較外部的柱面比較內部的柱面有更多的扇區(qū)。機械臂從一個柱面移動到相鄰的柱面大約需要 1ms。而隨機移到一個柱面的典型時間為 5ms 至 10ms,具體情況以驅動器為準。一旦磁臂到達正確的磁道上,驅動器必須等待所需的扇區(qū)旋轉到磁頭之下,就開始讀寫,低端硬盤的速率是50MB/s,而高速磁盤的速率是 160MB/s。

“需要注意,固態(tài)硬盤(Solid State Disk, SSD)不是磁盤,固態(tài)硬盤并沒有可以移動的部分,外形也不像唱片,并且數(shù)據(jù)是存儲在存儲器(閃存)中,與磁盤唯一的相似之處就是它也存儲了大量即使在電源關閉也不會丟失的數(shù)據(jù)。

許多計算機支持一種著名的虛擬內存機制,這種機制使得期望運行的存儲空間大于實際的物理存儲空間。其方法是將程序放在磁盤上,而將主存作為一部分緩存,用來保存最頻繁使用的部分程序,這種機制需要快速映像內存地址,用來把程序生成的地址轉換為有關字節(jié)在 RAM 中的物理地址。這種映像由 CPU 中的一個稱為 存儲器管理單元(Memory Management Unit, MMU) 的部件來完成。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

緩存和 MMU 的出現(xiàn)是對系統(tǒng)的性能有很重要的影響,在多道程序系統(tǒng)中,從一個程序切換到另一個程序的機制稱為 上下文切換(context switch),對來自緩存中的資源進行修改并把其寫回磁盤是很有必要的。

I/O 設備

CPU 和存儲器不是操作系統(tǒng)需要管理的全部,I/O 設備也與操作系統(tǒng)關系密切??梢詤⒖忌厦孢@個圖片,I/O 設備一般包括兩個部分:設備控制器和設備本身??刂破鞅旧硎且粔K芯片或者一組芯片,它能夠控制物理設備。它能夠接收操作系統(tǒng)的指令,例如,從設備中讀取數(shù)據(jù)并完成數(shù)據(jù)的處理。

在許多情況下,實際控制設備的過程是非常復雜而且存在諸多細節(jié)。因此控制器的工作就是為操作系統(tǒng)提供一個更簡單(但仍然非常復雜)的接口。也就是屏蔽物理細節(jié)。任何復雜的東西都可以加一層代理來解決,這是計算機或者人類社會很普世的一個解決方案

I/O 設備另一部分是設備本身,設備本身有一個相對簡單的接口,這是因為接口既不能做很多工作,而且也已經被標準化了。例如,標準化后任何一個 SATA 磁盤控制器就可以適配任意一種 SATA 磁盤,所以標準化是必要的。ATA 代表 高級技術附件(AT Attachment),而 SATA 表示串行高級技術附件(Serial ATA)。

“AT 是啥?它是 IBM 公司的第二代個人計算機的高級技術成果,使用 1984 年推出的 6MHz 80286 處理器,這個處理器是當時最強大的。

像是高級這種詞匯應該慎用,否則 20 年后再回首很可能會被無情打臉。

現(xiàn)在 SATA 是很多計算機的標準硬盤接口。由于實際的設備接口隱藏在控制器中,所以操作系統(tǒng)看到的是對控制器的接口,這個接口和設備接口有很大區(qū)別。

每種類型的設備控制器都是不同的,所以需要不同的軟件進行控制。專門與控制器進行信息交流,發(fā)出命令處理指令接收響應的軟件,稱為 設備驅動程序(device driver)。每個控制器廠家都應該針對不同的操作系統(tǒng)提供不同的設備驅動程序。

為了使設備驅動程序能夠工作,必須把它安裝在操作系統(tǒng)中,這樣能夠使它在內核態(tài)中運行。要將設備驅動程序裝入操作系統(tǒng),一般有三個途徑

  • 第一個途徑是將內核與設備啟動程序重新連接,然后重啟系統(tǒng)。這是 UNIX 系統(tǒng)采用的工作方式
  • 第二個途徑是在一個操作系統(tǒng)文件中設置一個入口,通知該文件需要一個設備驅動程序,然后重新啟動系統(tǒng)。在重新系統(tǒng)時,操作系統(tǒng)回尋找有關的設備啟動程序并把它裝載,這是 Windows 采用的工作方式
  • 第三個途徑是操作系統(tǒng)能夠在運行時接收新的設備驅動程序并立刻安裝,無需重啟操作系統(tǒng),這種方式采用的少,但是正變得普及起來。熱插拔設備,比如 USB 和 IEEE 1394 都需要動態(tài)可裝載的設備驅動程序。

每個設備控制器都有少量用于通信的寄存器,例如,一個最小的磁盤控制器也會有用于指定磁盤地址、內存地址、扇區(qū)計數(shù)的寄存器。要激活控制器,設備驅動程序會從操作系統(tǒng)獲取一條指令,然后翻譯成對應的值,并寫入設備寄存器中,所有設備寄存器的結合構成了 I/O 端口空間 。

在一些計算機中,設備寄存器會被映射到操作系統(tǒng)的可用地址空間,使他們能夠向內存一樣完成讀寫操作。在這種計算機中,不需要專門的 I/O 指令,用戶程序可以被硬件阻擋在外,防止其接觸這些存儲器地址(例如,采用基址寄存器和變址寄存器)。在另一些計算機中,設備寄存器被放入一個專門的 I/O 端口空間,每個寄存器都有一個端口地址。在這些計算機中,特殊的 IN 和 OUT 指令會在內核態(tài)下啟用,它能夠允許設備驅動程序和寄存器進行讀寫。前面第一種方式會限制特殊的 I/O 指令但是允許一些地址空間;后者不需要地址空間但是需要特殊的指令,這兩種應用都很廣泛。

實現(xiàn)輸入和輸出的方式有三種。

  • 在最簡單的方式中,用戶程序會發(fā)起系統(tǒng)調用,內核會將其轉換為相應驅動程序的程序調用,然后設備驅動程序啟動 I/O 并循環(huán)檢查該設備,看該設備是否完成了工作(一般會有一些二進制位用來指示設備仍在忙碌中)。當 I/O 調用完成后,設備驅動程序把數(shù)據(jù)送到指定的地方并返回。然后操作系統(tǒng)會將控制權交給調用者。這種方式稱為 忙等待(busy waiting),這種方式的缺點是要一直占據(jù) CPU,CPU 會一直輪詢 I/O 設備直到 I/O 操作完成。
  • 第二種方式是設備驅動程序啟動設備并且讓該設備在操作完成時發(fā)生中斷。設備驅動程序在這個時刻返回。操作系統(tǒng)接著在需要時阻塞調用者并安排其他工作進行。當設備驅動程序檢測到該設備操作完成時,它發(fā)出一個 中斷 通知操作完成。

在操作系統(tǒng)中,中斷是非常重要的,所以這需要更加細致的討論一下。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

如上圖所示,這是一個三步的 I/O 過程,第一步,設備驅動程序會通過寫入設備寄存器告訴控制器應該做什么。然后,控制器啟動設備。當控制器完成讀取或寫入被告知需要傳輸?shù)淖止?jié)后,它會在步驟 2 中使用某些總線向中斷控制器發(fā)送信號。如果中斷控制器準備好了接收中斷信號(如果正忙于一個優(yōu)先級較高的中斷,則可能不會接收),那么它就會在 CPU 的一個引腳上面聲明。這就是步驟3

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

在第四步中,中斷控制器把該設備的編號放在總線上,這樣 CPU 可以讀取總線,并且知道哪個設備完成了操作(可能同時有多個設備同時運行)。

一旦 CPU 決定去實施中斷后,程序計數(shù)器和 PSW 就會被壓入到當前堆棧中并且 CPU 會切換到內核態(tài)。設備編號可以作為內存的一個引用,用來尋找該設備中斷處理程序的地址。這部分內存稱作中斷向量(interrupt vector)。一旦中斷處理程序(中斷設備的設備驅動程序的一部分)開始后,它會移除棧中的程序計數(shù)器和 PSW 寄存器,并把它們進行保存,然后查詢設備的狀態(tài)。在中斷處理程序全部完成后,它會返回到先前用戶程序尚未執(zhí)行的第一條指令,這個過程如下

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

  • 實現(xiàn) I/O 的第三種方式是使用特殊的硬件:直接存儲器訪問(Direct Memory Access, DMA) 芯片。它可以控制內存和某些控制器之間的位流,而無需 CPU 的干預。CPU 會對 DMA 芯片進行設置,說明需要傳送的字節(jié)數(shù),有關的設備和內存地址以及操作方向。當 DMA 芯片完成后,會造成中斷,中斷過程就像上面描述的那樣。我們會在后面具體討論中斷過程

當另一個中斷處理程序正在運行時,中斷可能(并且經常)發(fā)生在不合宜的時間。因此,CPU 可以禁用中斷,并且可以在之后重啟中斷。在 CPU 關閉中斷后,任何已經發(fā)出中斷的設備,可以繼續(xù)保持其中斷信號處理,但是 CPU 不會中斷,直至中斷再次啟用為止。如果在關閉中斷時,已經有多個設備發(fā)出了中斷信號,中斷控制器將決定優(yōu)先處理哪個中斷,通常這取決于事先賦予每個設備的優(yōu)先級,最高優(yōu)先級的設備優(yōu)先贏得中斷權,其他設備則必須等待。

總線

上面的結構(簡單個人計算機的組件圖)在小型計算機已經使用了多年,并用在早期的 IBM PC 中。然而,隨著處理器核內存變得越來越快,單個總線處理所有請求的能力也達到了上線,其中也包括 IBM PC 總線。必須放棄使用這種模式。其結果導致了其他總線的出現(xiàn),它們處理 I/O 設備以及 CPU 到存儲器的速度都更快。這種演變的結果導致了下面這種結構的出現(xiàn)。

什么叫操作系統(tǒng)啊 | 戰(zhàn)術后仰

上圖中的 x86 系統(tǒng)包含很多總線,高速緩存、內存、PCIe、PCI、USB、SATA 和 DMI,每條總線都有不同的傳輸速率和功能。操作系統(tǒng)必須了解所有的總線配置和管理。其中最主要的總線是 PCIe(Peripheral Component Interconnect Express) 總線。

Intel 發(fā)明的 PCIe 總線也是作為之前古老的 PCI 總線的繼承者,而古老的 PCI 總線也是為了取代古董級別的 ISA(Industry Standard Architecture) 總線而設立的。數(shù)十 Gb/s 的傳輸能力使得 PCIe 比它的前身快很多,而且它們本質上也十分不同。直到發(fā)明 PCIe 的 2004 年,大多數(shù)總線都是并行且共享的。共享總線架構(shared bus architeture) 表示多個設備使用一些相同的電線傳輸數(shù)據(jù)。因此,當多個設備同時發(fā)送數(shù)據(jù)時,此時你需要一個決策者來決定誰能夠使用總線。而 PCIe 則不一樣,它使用專門的端到端鏈路。傳統(tǒng) PCI 中使用的并行總線架構(parallel bus architecture) 表示通過多條電線發(fā)送相同的數(shù)據(jù)字。例如,在傳統(tǒng)的 PCI 總線上,一個 32 位數(shù)據(jù)通過 32 條并行的電線發(fā)送。而 PCIe 則不同,它選用了串行總線架構(serial bus architecture) ,并通過單個連接(稱為通道)發(fā)送消息中的所有比特數(shù)據(jù),就像網(wǎng)絡數(shù)據(jù)包一樣。這樣做會簡化很多,因為不再確保所有 32 位數(shù)據(jù)在同一時刻準確到達相同的目的地。通過將多個數(shù)據(jù)通路并行起來,并行性仍可以有效利用。例如,可以使用 32 條數(shù)據(jù)通道并行傳輸 32 條消息。

在上圖結構中,CPU 通過 DDR3 總線與內存對話,通過 PCIe 總線與外圍圖形設備 (GPU)對話,通過 DMI(Direct Media Interface)總線經集成中心與所有其他設備對話。而集成控制中心通過串行總線與 USB 設備對話,通過 SATA 總線與硬盤和 DVD 驅動器對話,通過 PCIe 傳輸以太網(wǎng)絡幀。

不僅如此,每一個核

USB(Univversal Serial Bus) 是用來將所有慢速 I/O 設備(比如鍵盤和鼠標)與計算機相連的設備。USB 1.0 可以處理總計 12 Mb/s 的負載,而 USB 2.0 將總線速度提高到 480Mb/s ,而 USB 3.0 能達到不小于 5Gb/s 的速率。所有的 USB 設備都可以直接連接到計算機并能夠立刻開始工作,而不像之前那樣要求重啟計算機。

SCSI(Small Computer System Interface) 總線是一種高速總線,用在高速硬盤,掃描儀和其他需要較大帶寬的設備上?,F(xiàn)在,它們主要用在服務器和工作站中,速度可以達到 640MB/s 。

計算機啟動過程

那么有了上面一些硬件再加上操作系統(tǒng)的支持,我們的計算機就可以開始工作了,那么計算機的啟動過程是怎樣的呢?下面只是一個簡要版的啟動過程

在每臺計算機上有一塊雙親板,也就是母板,母板也就是主板,它是計算機最基本也就是最重要的部件之一。主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統(tǒng),一般有 BIOS 芯片、I/O 控制芯片、鍵盤和面板控制開關接口、指示燈插接件、擴充插槽、主板及插卡的直流電源供電接插件等元件。

在母板上有一個稱為 基本輸入輸出系統(tǒng)(Basic Input Output System, BIOS)的程序。在 BIOS 內有底層 I/O 軟件,包括讀鍵盤、寫屏幕、磁盤I/O 以及其他過程。如今,它被保存在閃存中,它是非易失性的,但是當BIOS 中發(fā)現(xiàn)錯誤時,可以由操作系統(tǒng)進行更新。

在計算機啟動(booted)時,BIOS 開啟,它會首先檢查所安裝的 RAM 的數(shù)量,鍵盤和其他基礎設備是否已安裝并且正常響應。接著,它開始掃描 PCIe 和 PCI 總線并找出連在上面的所有設備。即插即用的設備也會被記錄下來。如果現(xiàn)有的設備和系統(tǒng)上一次啟動時的設備不同,則新的設備將被重新配置。

藍后,BIOS 通過嘗試存儲在 CMOS 存儲器中的設備清單嘗試啟動設備

“CMOS是 Complementary Metal Oxide Semiconductor(互補金屬氧化物半導體)的縮寫。它是指制造大規(guī)模集成電路芯片用的一種技術或用這種技術制造出來的芯片,是電腦主板上的一塊可讀寫的 RAM 芯片。因為可讀寫的特性,所以在電腦主板上用來保存 BIOS 設置完電腦硬件參數(shù)后的數(shù)據(jù),這個芯片僅僅是用來存放數(shù)據(jù)的。而對 BIOS 中各項參數(shù)的設定要通過專門的程序。BIOS 設置程序一般都被廠商整合在芯片中,在開機時通過特定的按鍵就可進入 BIOS 設置程序,方便地對系統(tǒng)進行設置。因此 BIOS 設置有時也被叫做 CMOS 設置。

用戶可以在系統(tǒng)啟動后進入一個 BIOS 配置程序,對設備清單進行修改。然后,判斷是否能夠從外部 CD-ROM 和 USB 驅動程序啟動,如果啟動失敗的話(也就是沒有),系統(tǒng)將從硬盤啟動,boots 設備中的第一個扇區(qū)被讀入內存并執(zhí)行。該扇區(qū)包含一個程序,該程序通常在引導扇區(qū)末尾檢查分區(qū)表以確定哪個分區(qū)處于活動狀態(tài)。然后從該分區(qū)讀入第二個啟動加載程序,該加載器從活動分區(qū)中讀取操作系統(tǒng)并啟動它。

然后操作系統(tǒng)會詢問 BIOS 獲取配置信息。對于每個設備來說,會檢查是否有設備驅動程序。如果沒有,則會向用戶詢問是否需要插入 CD-ROM 驅動(由設備制造商提供)或者從 Internet 上下載。一旦有了設備驅動程序,操作系統(tǒng)會把它們加載到內核中,然后初始化表,創(chuàng)建所需的后臺進程,并啟動登錄程序或GUI。

操作系統(tǒng)博物館

操作系統(tǒng)已經存在了大半個世紀,在這段時期內,出現(xiàn)了各種類型的操作系統(tǒng),但并不是所有的操作系統(tǒng)都很出名,下面就羅列一些比較出名的操作系統(tǒng)

大型機操作系統(tǒng)

高端一些的操作系統(tǒng)是大型機操作系統(tǒng),這些大型操作系統(tǒng)可在大型公司的數(shù)據(jù)中心找到。這些計算機的 I/O 容量與個人計算機不同。一個大型計算機有 1000 個磁盤和數(shù)百萬 G 字節(jié)的容量是很正常,如果有這樣一臺個人計算機朋友會很羨慕。大型機也在高端 Web 服務器、大型電子商務服務站點上。

服務器操作系統(tǒng)

下一個層次是服務器操作系統(tǒng)。它們運行在服務器上,服務器可以是大型個人計算機、工作站甚至是大型機。它們通過網(wǎng)絡為若干用戶服務,并且允許用戶共享硬件和軟件資源。服務器可提供打印服務、文件服務或 Web 服務。Internet 服務商運行著許多臺服務器機器,為用戶提供支持,使 Web 站點保存 Web 頁面并處理進來的請求。典型的服務器操作系統(tǒng)有 Solaris、FreeBSD、Linux 和 Windows Server 201x

多處理器操作系統(tǒng)

獲得大型計算能力的一種越來越普遍的方式是將多個 CPU 連接到一個系統(tǒng)中。依據(jù)它們連接方式和共享方式的不同,這些系統(tǒng)稱為并行計算機,多計算機或多處理器。他們需要專門的操作系統(tǒng),不過通常采用的操作系統(tǒng)是配有通信、連接和一致性等專門功能的服務器操作系統(tǒng)的變體。

個人計算機中近來出現(xiàn)了多核芯片,所以常規(guī)的臺式機和筆記本電腦操作系統(tǒng)也開始與小規(guī)模多處理器打交道,而核的數(shù)量正在與時俱進。許多主流操作系統(tǒng)比如 Windows 和 Linux 都可以運行在多核處理器上。

個人計算機系統(tǒng)

接下來一類是個人計算機操作系統(tǒng)?,F(xiàn)代個人計算機操作系統(tǒng)支持多道處理程序。在啟動時,通常有幾十個程序開始運行,它們的功能是為單個用戶提供良好的支持。這類系統(tǒng)廣泛用于字處理、電子表格、游戲和 Internet 訪問。常見的例子是 Linux、FreeBSD、Windows 7、Windows 8 和蘋果公司的 OS X 。

掌上計算機操作系統(tǒng)

隨著硬件越來越小化,我們看到了平板電腦、智能手機和其他掌上計算機系統(tǒng)。掌上計算機或者 PDA(Personal Digital Assistant),個人數(shù)字助理 是一種可以握在手中操作的小型計算機。這部分市場已經被谷歌的 Android 系統(tǒng)和蘋果的 IOS主導。

嵌入式操作系統(tǒng)

嵌入式操作系統(tǒng)用來控制設備的計算機中運行,這種設備不是一般意義上的計算機,并且不允許用戶安裝軟件。典型的例子有微波爐、汽車、DVD 刻錄機、移動電話以及 MP3 播放器一類的設備。所有的軟件都運行在 ROM 中,這意味著應用程序之間不存在保護,從而獲得某種簡化。主要的嵌入式系統(tǒng)有 Linux、QNX 和 VxWorks

傳感器節(jié)點操作系統(tǒng)呢

有許多用途需要配置微小傳感器節(jié)點網(wǎng)絡。這些節(jié)點是一種可以彼此通信并且使用無線通信基站的微型計算機。這類傳感器網(wǎng)絡可以用于建筑物周邊保護、國土邊界保衛(wèi)、森林火災探測、氣象預測用的溫度和降水測量等。

每個傳感器節(jié)點是一個配有 CPU、RAM、ROM 以及一個或多個環(huán)境傳感器的實實在在的計算機。節(jié)點上運行一個小型但是真時的操作系統(tǒng),通常這個操作系統(tǒng)是事件驅動的,可以響應外部事件。

實時操作系統(tǒng)

另一類操作系統(tǒng)是實時操作系統(tǒng),這些系統(tǒng)的特征是將時間作為關鍵參數(shù)。例如,在工業(yè)過程控制系統(tǒng)中,工廠中的實時計算機必須收集生產過程的數(shù)據(jù)并用有關數(shù)據(jù)控制機器。如果某個動作必須要在規(guī)定的時刻發(fā)生,這就是硬實時系統(tǒng)??梢栽诠I(yè)控制、民用航空、軍事以及類似應用中看到很多這樣的系統(tǒng)。另一類系統(tǒng)是 軟實時系統(tǒng),在這種系統(tǒng)中,雖然不希望偶爾違反最終時限,但仍可以接受,并不會引起任何永久性損害。數(shù)字音頻或多媒體系統(tǒng)就是這類系統(tǒng)。智能手機也是軟實時系統(tǒng)。

智能卡操作系統(tǒng)

最小的操作系統(tǒng)運行在智能卡上。智能卡是一種包含一塊 CPU 芯片的信用卡。它有非常嚴格的運行能耗和存儲空間的限制。有些卡具有單項功能,如電子支付;有些智能卡是面向 Java 的。這意味著在智能卡的 ROM 中有一個 Java 虛擬機(Java Virtual Machine, JVM)解釋器。

【責任編輯:武曉燕 TEL:(010)68476606】
推薦內容