OS- -操作系统概念
OS- -操作系統(tǒng)概念
文章目錄
- OS- -操作系統(tǒng)概念
- 一、操作系統(tǒng)概念
- 進(jìn)程
- 地址空間
- 文件
- 保護(hù)
- shell
部分操作系統(tǒng)提供了特定的基礎(chǔ)概念和抽象,例如進(jìn)程、地址空間、文件等,它們是需要理解的核心 內(nèi)容。
一、操作系統(tǒng)概念
進(jìn)程
- 操作系統(tǒng)一個很關(guān)鍵的概念就是 進(jìn)程(Process)。進(jìn)程的本質(zhì)就是操作系統(tǒng)執(zhí)行的一個程序。
- 與每個 進(jìn)程相關(guān)的是地址空間(address space),這是從某個最小值的存儲位置(通常是零)到某個最大值的 存儲位置的列表。
- 在這個地址空間中,進(jìn)程可以進(jìn)行讀寫操作。地址空間中存放有可執(zhí)行程序,程序所 需要的數(shù)據(jù)和它的棧。
- 與每個進(jìn)程相關(guān)的還有資源集,通常包括寄存器(registers)(寄存器一般包 括程序計數(shù)器(program counter)和堆棧指針(stack pointer))、打開文件的清單、突發(fā)的報 警、有關(guān)的進(jìn)程清單和其他需要執(zhí)行程序的信息。你可以把進(jìn)程看作是容納運行一個程序所有信息的一 個容器。
- 對進(jìn)程建立一種直觀感覺的方式是考慮建立一種多程序的系統(tǒng)。
- 考慮下面這種情況:用戶啟動一個視頻編輯程序,指示它按照某種格式轉(zhuǎn)換視頻,然后再去瀏覽網(wǎng)頁。
- 同時,一個檢查電子郵件的后臺進(jìn)程被喚醒并開始運行
- 這樣,我們目前就會有三個活動進(jìn)程:視頻編輯器、Web瀏覽器和電子郵件接收程 序。
- 操作系統(tǒng)周期性的掛起一個進(jìn)程然后啟動運行另一個進(jìn)程,這可能是由于過去一兩秒鐘程序用完了CPU分配的時間片,而CPU轉(zhuǎn)而運行另外的程序。
- 像這樣暫時中斷進(jìn)程后,下次應(yīng)用程序在此啟動時,必須要恢復(fù)到與中斷時刻相同的狀態(tài),這在我們用 戶看起來是習(xí)以為常的事情,但是操作系統(tǒng)內(nèi)部卻做了巨大的事情。
- 這就像和足球比賽一樣,一場完美 精彩的比賽是可以忽略裁判的存在的。這也意味著在掛起時該進(jìn)程的所有信息都要被保存下來。
-
例如, 進(jìn)程可能打開了多個文件進(jìn)行讀取。與每個文件相關(guān)聯(lián)的是提供當(dāng)前位置的指針(即下一個需要讀取的字節(jié)或記錄的編號)。當(dāng)進(jìn)程被掛起時,必須要保存這些指針,以便在重新啟動進(jìn)程后執(zhí)行的read 調(diào)用將能夠正確的讀取數(shù)據(jù)。
-
在許多操作系統(tǒng)中,與一個進(jìn)程有關(guān)的所有信息,除了該進(jìn)程自身地址空 間的內(nèi)容以外,均存放在操作系統(tǒng)的一張表中,稱為進(jìn)程表(process table),進(jìn)程表是數(shù)組或者鏈 表結(jié)構(gòu),當(dāng)前存在每個進(jìn)程都要占據(jù)其中的一項。
-
所以,一個掛起的進(jìn)程包括:進(jìn)程的地址空間(往往稱作磁芯映像,core image,紀(jì)念過去的磁芯存 儲器),以及對應(yīng)的進(jìn)程表項(其中包括寄存器以及稍后啟動該進(jìn)程所需要的許多其他信息)。
-
與進(jìn)程管理有關(guān)的最關(guān)鍵的系統(tǒng)調(diào)用往往是決定著進(jìn)程的創(chuàng)建和終止的系統(tǒng)調(diào)用。
-
考慮一個典型的例 子,有一個稱為 命令解釋器(command interpreter)或shell的進(jìn)程從終端上讀取命令。此時, 用戶剛鍵入一條命令要求編譯一個程序。shell必須先創(chuàng)建一個新進(jìn)程來執(zhí)行編譯程序,當(dāng)編譯程序結(jié)束 時,它執(zhí)行一個系統(tǒng)調(diào)用來終止自己的進(jìn)程。
-
如果一個進(jìn)程能夠創(chuàng)建一個或多個進(jìn)程(稱為子進(jìn)程),而且這些進(jìn)程又可以創(chuàng)建子進(jìn)程,則很容易 找到進(jìn)程數(shù),如下所示
-
上圖表示一個進(jìn)程樹的示意圖,進(jìn)程A創(chuàng)建了兩個子進(jìn)程B和進(jìn)程C,子進(jìn)程B又創(chuàng)建了三個子進(jìn)程 D、 E、 F合作完成某些作業(yè)的相關(guān)進(jìn)程經(jīng)常需要彼此通信來完成作業(yè),這種通信稱為進(jìn)程間通信(interprocess communication)
-
其他可用的進(jìn)程系統(tǒng)調(diào)用包括:申請更多的內(nèi)存(或釋放不再需要的內(nèi)存),等待一個子進(jìn)程結(jié)束,用 另一個程序覆蓋該程序。
-
有時,需要向一個正在運行的進(jìn)程傳遞信息,而該進(jìn)程并沒有等待接收信息。例如,一個進(jìn)程通過網(wǎng)絡(luò) 向另一臺機器上的進(jìn)程發(fā)送消息進(jìn)行通信。為了保證一條消息或消息的應(yīng)答不丟失。發(fā)送者要求它所在 的操作系統(tǒng)在指定的若干秒后發(fā)送一個通知,這樣如果對方尚未收到確認(rèn)消息就可以進(jìn)行重新發(fā)送。在 設(shè)定該定時器后,程序可以繼續(xù)做其他工作。
-
在限定的時間到達(dá)后,操作系統(tǒng)會向進(jìn)程發(fā)送一個 警告信號(alarm signal)。這個信號引起該進(jìn)程 暫時掛起,無論該進(jìn)程正在做什么,系統(tǒng)將其寄存器的值保存到堆棧中,并開始重新啟動一個特殊的信 號處理程,比如重新發(fā)送可能丟失的消息。這些信號是軟件模擬的硬件中斷,除了定時器到期之外,該 信號可以通過各種原因產(chǎn)生。許多由硬件檢測出來的陷阱,如執(zhí)行了非法指令或使用了無效地址等,也 被轉(zhuǎn)換成該信號并交給這個進(jìn)程。
-
系統(tǒng)管理器授權(quán)每個進(jìn)程使用一個給定的UID(User IDentification)。每個啟動的進(jìn)程都會有一 個操作系統(tǒng)賦予的UID,子進(jìn)程擁有與父進(jìn)程一樣的UID,用戶可以是某個組的成員,每個組也有一個GID(Group IDentification)
-
在UNIX操作系統(tǒng)中,有一個UID是 超級用戶(superuser),或者Windows中的管理員 (administrator),它具有特殊的權(quán)利,可以違背一些保護(hù)規(guī)則。在大型系統(tǒng)中,只有系統(tǒng)管理員掌 握著那些用戶可以稱為超級用戶。
地址空間
- 每臺計算機都有一些主存用來保存正在執(zhí)行的程序。在一個非常簡單的操作系統(tǒng)中,僅僅有一個應(yīng)用程序運行在內(nèi)存中。為了運行第二個應(yīng)用程序,需要把第一個應(yīng)用程序移除才能把第二個程序裝入內(nèi)存。
- 復(fù)雜一些的操作系統(tǒng)會允許多個應(yīng)用程序同時裝入內(nèi)存中運行。為了防止應(yīng)用程序之間相互干擾(包括 操作系統(tǒng)),需要有某種保護(hù)機制。雖然此機制是在硬件中實現(xiàn),但卻是由操作系統(tǒng)控制的。
- 上述觀點涉及對計算機主存的管理和保護(hù)。另一種同等重要并與存儲器有關(guān)的內(nèi)容是管理進(jìn)程的地址空 間。通常,每個進(jìn)程有一些可以使用的地址集合,典型值從0開始直到某個最大值。一個進(jìn)程可擁有的 最大地址空間小于主存。
- 在這種情況下,即使進(jìn)程用完其地址空間,內(nèi)存也會有足夠的內(nèi)存運行該進(jìn) 程。
- 但是,在許多32位或64位地址的計算機中,分別有2^32 或 2^64字節(jié)的地址空間。
- 如果一個進(jìn)程有 比計算機擁有的主存還大的地址空間,而且該進(jìn)程希望使用全部的內(nèi)存,那該怎么處理?在早期的計算 機中是無法處理的。
- 但是現(xiàn)在有了一種虛擬內(nèi)存的技術(shù),正如前面講到過的,操作系統(tǒng)可以把部分地 址空間裝入主存,部分留在磁盤上,并且在需要時來回交換它們。
文件
-
幾乎所有操作系統(tǒng)都支持的另一個關(guān)鍵概念就是文件系統(tǒng)。
-
如前所述,操作系統(tǒng)的一項主要功能是屏蔽 磁盤和其他I/O設(shè)備的細(xì)節(jié)特性,給程序員提供一個良好、清晰的獨立于設(shè)備的抽象文件模型。
-
創(chuàng)建文 件、刪除文件、讀文件和寫文件都需要系統(tǒng)調(diào)用。在文件可以讀取之前,必須先在磁盤上定位和打開 文件,在文件讀過之后應(yīng)該關(guān)閉該文件,有關(guān)的系統(tǒng)調(diào)用則用于完成這類操作。
-
為了提供保存文件的地方,大多數(shù)個人計算機操作系統(tǒng)都有目錄(directory)的概念,從而可以把文 件分組。
-
比如,學(xué)生可以給每個課程都創(chuàng)建一個目錄,用于保存該學(xué)科的資源,另一個目錄可以存放電 子郵件,再有一個目錄可以存放萬維網(wǎng)主頁。
-
這就需要系統(tǒng)調(diào)用創(chuàng)建和刪除目錄、將已有文件放入目錄 中,從目錄中刪除文件等。目錄項可以是文件或者目錄,目錄和目錄之間也可以嵌套,這樣就產(chǎn)生了文 件系統(tǒng)
-
進(jìn)程和文件層次都是以樹狀的結(jié)構(gòu)組織,但這兩種樹狀結(jié)構(gòu)有不少不同之處。一般進(jìn)程的樹狀結(jié)構(gòu)層次不深(很少超過三層),而文件系統(tǒng)的樹狀結(jié)構(gòu)要深一些,通常會到四層甚至五層。
-
進(jìn)程樹層次結(jié)構(gòu)是 暫時的,通常最多存在幾分鐘,而目錄層次則可能存在很長時間。
-
進(jìn)程和文件在權(quán)限保護(hù)方面也是有區(qū) 別的。一般來說,父進(jìn)程能控制和訪問子進(jìn)程,而在文件和目錄中通常存在一種機制,使文件所有者之 外的其他用戶也能訪問該文件。
-
目錄層結(jié)構(gòu)中的每一個文件都可以通過從目錄的頂部即 根目錄(Root directory)開始的路徑名 (path name)來確定。
-
絕對路徑名包含了從根目錄到該文件的所有目錄清單,它們之間用斜杠("/")分隔符 分開,最開始的斜杠分隔符代表的是根目錄/ ,也就是文件系 統(tǒng)的絕對路徑。
-
出于歷史原因,Windows下面的文件系統(tǒng)以("")來作為分隔符,但是Linux會以("/")作為分隔 符。
-
在上面的系統(tǒng)中,每個進(jìn)程會有一個 工作目錄(working directory),對于沒有以斜線開頭給出絕對地址的路徑,將在這個工作目錄下尋找。
-
如果/Faculty/Prof.Brown是工作目錄,那么/Courses/CS101與上面給定的絕對路徑名表示的是同一個文件。
-
進(jìn)程可以通過使用系統(tǒng)調(diào)用指定新 的工作目錄,從而變更其工作目錄。
-
在讀寫文件之前,首先需要打開文件,檢查其訪問權(quán)限。若權(quán)限許可,系統(tǒng)將返回一個小整數(shù),稱作文 件描述符(file descriptor),供后續(xù)操作使用。若禁止訪問,系統(tǒng)則返回一個錯誤碼。
-
在UNIX中,另一個重要的概念是 特殊文件(special file)。提供特殊文件是為了使I/O設(shè)備看起 來像文件一般。這樣,就像使用系統(tǒng)調(diào)用讀寫文件一樣,I/O設(shè)備也可以通過同樣的系統(tǒng)調(diào)用進(jìn)行讀 寫。
-
特殊文件有兩種,一種是塊特殊文件(block special file)和 字符特殊文件(character special file)。塊特殊文件指那些由可隨機存取的塊組成的設(shè)備,如磁盤等。比如打開一個塊特殊 文件,然后讀取第4塊,程序可以直接訪問設(shè)備的第4塊而不必考慮存放在該文件的文件系統(tǒng)結(jié)構(gòu)。
-
類似 的,字符特殊文件用于打印機、調(diào)制解調(diào)起和其他接受或輸出字符流的設(shè)備。按照慣例,特殊文件保存 在/dev目錄中。例如,/devv/lp是打印機。
還有一種與進(jìn)程和文件相關(guān)的特性是管道,管道(pipe)是一種虛文件,他可以連接兩個進(jìn)程
- 如果A和B希望通過管道對話,他們必須提前設(shè)置管道。當(dāng)進(jìn)程A相對進(jìn)程B發(fā)送數(shù)據(jù)時,它把數(shù)據(jù) 寫到管道上,相當(dāng)于管道就是輸出文件。這樣,在UNIX中兩個進(jìn)程之間的通信就非常類似于普通文件 的讀寫了。
保護(hù)
- 計算機中含有大量的信息,用戶希望能夠?qū)@些信息中有用而且重要的信息加以保護(hù),這些信息包括電子郵件、商業(yè)計劃等,管理這些信息的安全性完全依靠操作系統(tǒng)來保證。例如,文件提供授權(quán)用戶訪 問。
- 比如UNIX操作系統(tǒng),UNIX操作系統(tǒng)通過對每個文件賦予一個9位二進(jìn)制保護(hù)代碼,對UNIX中的文 件實現(xiàn)保護(hù)。該保護(hù)代碼有三個位子段,一個用于所有者,一個用于與所有者同組(用戶被系統(tǒng)管理員 劃分成組)的其他成員,一個用于其他人。
- 每個字段中有一位用于讀訪問,一位用于寫訪問,一位用于 執(zhí)行訪問。這些位就是著名的「wx位。例如,保護(hù)代碼rwxr-x–x的含義是所有者可以讀、寫或 執(zhí)行該文件,其他的組成員可以讀或執(zhí)行(但不能寫)此文件、而其他人可以執(zhí)行(但不能讀和寫)該 文件。
shell
- 操作系統(tǒng)是執(zhí)行系統(tǒng)調(diào)用的代碼。
- 編輯器、編譯器、匯編程序、鏈接程序、使用程序以及命令解釋符 等,盡管非常重要,非常有用,但是它們確實不是操作系統(tǒng)的組成部分。
- 下面我們著重介紹一下UNIX 下的命令提示符,也就是shell , shell雖然有用,但它也不是操作系統(tǒng)的一部分,然而它卻能很好 的說明操作系統(tǒng)很多特性,下面我們就來探討一下。
- shell有許多種,例如sh、csh、ksh以及bash等,它們都支持下面這些功能,最早起的shell可以追 溯到sh
- 用戶登錄時,會同時啟動一個shell,它以終端作為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。首先顯示提示符 (prompt),它可能是一個美元符號($),提示用戶shell正在等待接收命令,假如用戶輸入
- shell會創(chuàng)建一個子進(jìn)程,并運行date做為子進(jìn)程。在該子進(jìn)程運行期間,shell將等待它結(jié)束。在子進(jìn) 程完成時,shell會顯示提示符并等待下一行輸入。
- 用戶可以將標(biāo)準(zhǔn)輸出重定向到一個文件中,例如
- 同樣的,也可以將標(biāo)準(zhǔn)輸入作為重定向
- 這會調(diào)用sort程序來接收filel的內(nèi)容并把結(jié)果輸出到file2
- 可以將一個應(yīng)用程序的輸出通過管道作為另一個程序的輸入,因此有
- 這會調(diào)用cat應(yīng)用程序來合并三個文件,將其結(jié)果輸送到sort程序中并按照字典進(jìn)行排序。sort應(yīng)用 程序又被重定向到/dev/lp ,顯然這是一個打印操作。
總結(jié)
以上是生活随笔為你收集整理的OS- -操作系统概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OS- -请求分页系统、请求分段系统和请
- 下一篇: OS- -系统调用