摘要:本文主要介紹了作者在多年本科生的“操作系統(tǒng)”教學(xué)中積累的一點(diǎn)經(jīng)驗(yàn)和心得體會(huì),提出了在“操作系統(tǒng)”的授課過(guò)程中應(yīng)注意舉例時(shí)盡量用生活中的實(shí)例,這樣就會(huì)生動(dòng)、形象、更貼近實(shí)際,使枯燥的“操作系統(tǒng)”課程變得活靈活現(xiàn),以增加學(xué)生的興趣和好奇心。
關(guān)鍵詞:操作系統(tǒng);進(jìn)程;文件;緩沖區(qū)
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
1引言
操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的基本組成部分,它在整個(gè)計(jì)算機(jī)系統(tǒng)軟件中占據(jù)核心地位。對(duì)操作系統(tǒng)的概念、理論和方法的研究以及對(duì)操作系統(tǒng)的使用、分析、開(kāi)發(fā)和設(shè)計(jì),歷來(lái)是計(jì)算機(jī)領(lǐng)域中最主要的課題和任務(wù)之一;因而,“操作系統(tǒng)”是計(jì)算機(jī)科學(xué)教育的基本課程之一。它涉及到對(duì)計(jì)算機(jī)中各種資源(包括硬件和軟件資源)的有效管理,又為用戶(hù)及高層軟件的運(yùn)行提供良好的工作環(huán)境,起到承上啟下、縱橫貫通的作用。
“操作系統(tǒng)”是計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的必修課,是一門(mén)專(zhuān)業(yè)基礎(chǔ)課。它是控制和管理計(jì)算機(jī)系統(tǒng)中所有資源,并為用戶(hù)使用計(jì)算機(jī)提供方便、有效、安全、可靠運(yùn)行環(huán)境的系統(tǒng)軟件,但它又不同于其它系統(tǒng)軟件,它對(duì)計(jì)算機(jī)中的所有資源(包括系統(tǒng)軟件)都起著領(lǐng)導(dǎo)者的作用。所以操作系統(tǒng)是整個(gè)計(jì)算機(jī)系統(tǒng)的主動(dòng)脈,設(shè)計(jì)的好壞直接影響著計(jì)算機(jī)系統(tǒng)的性能和效率。它在用戶(hù)與計(jì)算機(jī)系統(tǒng)之間架起一座橋梁。它的許多設(shè)計(jì)思想和方法,在用戶(hù)的應(yīng)用程序中都很有借鑒作用,所以“操作系統(tǒng)”課程的教與學(xué)就顯得非常重要和關(guān)鍵。而“操作系統(tǒng)”課程的基本原理比較枯糙、抽象,學(xué)生理解起來(lái)比較困難,在授課時(shí)舉例必須生動(dòng)。筆者的經(jīng)驗(yàn)是:在授課時(shí)用生活中的實(shí)例來(lái)解釋“操作系統(tǒng)”課程中的現(xiàn)象與實(shí)現(xiàn)方法。下面就自己在十幾年的“操作系統(tǒng)”課程教學(xué)中摸索出的一些經(jīng)驗(yàn)與大家來(lái)共同探討。
2關(guān)于“進(jìn)程”的講解
“進(jìn)程”是操作系統(tǒng)中最基本、最重要的概念之一。引進(jìn)這個(gè)概念對(duì)于理解、描述和設(shè)計(jì)操作系統(tǒng)都具有極其重要意義。它與程序不同,在操作系統(tǒng)中,進(jìn)程不僅是最基本的并發(fā)執(zhí)行的單位,而且也是分配資源、交換信息的基本單位。
對(duì)進(jìn)程概念的解釋為:進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過(guò)程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。此定義有以下一些含義:
(1) 進(jìn)程是一個(gè)動(dòng)態(tài)的概念,而程序是一個(gè)靜態(tài)的概念;
(2) 進(jìn)程包含了一個(gè)數(shù)據(jù)集合和運(yùn)行其上的程序;
(3) 同一程序同時(shí)運(yùn)行于若干不同的數(shù)據(jù)集合上時(shí),它將屬于若干個(gè)不同的進(jìn)程,或者說(shuō),兩個(gè)不同的進(jìn)程可包含相同的程序;
(4) 系統(tǒng)分配資源是以進(jìn)程為單位的,所以只有進(jìn)程才可能在不同的時(shí)刻處于幾種不同的狀態(tài);
(5) 既然進(jìn)程是資源分配的單位,處理機(jī)也是按進(jìn)程分配的。因此,從微觀上看,進(jìn)程是輪換地占有處理機(jī)而運(yùn)行的;從宏觀上看,進(jìn)程是并發(fā)地運(yùn)行的。從局部看,每個(gè)進(jìn)程是(按其程序)串行執(zhí)行的;從整體看,多個(gè)進(jìn)程是并發(fā)地運(yùn)行的。
學(xué)生初次接觸“進(jìn)程”這一概念,可能會(huì)覺(jué)得它很枯燥,難以理解。我們說(shuō),在操作系統(tǒng)中許多概念、思想、實(shí)現(xiàn)方式都是來(lái)源于生活。“進(jìn)程”也是這樣,我們可以把“進(jìn)程”理解為電影的一次放映過(guò)程,那么電影膠帶就可以理解為是進(jìn)程中的程序部分。則同一電影在同一電影院的兩次放映過(guò)程,應(yīng)稱(chēng)為兩個(gè)不同的進(jìn)程。我們還可以將音樂(lè)的一次播放過(guò)程理解為是一個(gè)進(jìn)程,那么,一首歌的樂(lè)曲就可以理解為是一個(gè)程序段,則一個(gè)進(jìn)程可以包含若干個(gè)程序段和一個(gè)程序段可以屬于不同的進(jìn)程就容易理解了。
有了進(jìn)程的概念之后,對(duì)操作系統(tǒng)的并發(fā)性就可以用生活中的實(shí)例來(lái)理解了。我們用總辦公室中一個(gè)秘書(shū)的活動(dòng)來(lái)進(jìn)行比擬。秘書(shū)應(yīng)該做的每一件工作,如打印文件,將發(fā)票歸檔等,可以比擬為操作系統(tǒng)中的一個(gè)進(jìn)程。CPU則是秘書(shū)本身。執(zhí)行每件工作時(shí)應(yīng)遵循的步驟序列類(lèi)似于程序。如果在該辦公室中,工作忙得不可開(kāi)交,那么秘書(shū)不得不常常把正在做的工作擱一擱而去處理另一件工作。在這種場(chǎng)合下,她很可能抱怨“同時(shí)要做許多工作”。但實(shí)際上,在任一時(shí)刻,她只做一件工作,只是頻繁地從一件工作轉(zhuǎn)向另一件造成一種總的并發(fā)的印象。繼續(xù)作更進(jìn)一步的類(lèi)比,我們?cè)O(shè)想在那一辦公室中增加了一些秘書(shū),于是在執(zhí)行不同任務(wù)的各個(gè)秘書(shū)之間,有了一種真正的并發(fā)。與此同時(shí),每個(gè)秘書(shū)又可能要從一個(gè)任務(wù)轉(zhuǎn)向另一個(gè)任務(wù),所以表面上并發(fā)仍舊存在。只有當(dāng)“秘書(shū)的個(gè)數(shù)=事件數(shù)”時(shí),才能以真正的并發(fā)方式執(zhí)行各個(gè)事件。
因?yàn)檫M(jìn)程在計(jì)算機(jī)操作系統(tǒng)中是獨(dú)立的、動(dòng)態(tài)的、有生命力的、起主導(dǎo)作用的個(gè)體。我們將進(jìn)程比喻為人類(lèi)社會(huì)中的主角——人。這樣關(guān)于進(jìn)程的創(chuàng)建、進(jìn)程對(duì)資源的共享、進(jìn)程狀態(tài)的轉(zhuǎn)換等都容易理解了。
因?yàn)槿绻粋€(gè)事物始終處于一種狀態(tài),那么它就不再是活動(dòng)的,就沒(méi)有生命力了,所以進(jìn)程并非固定處于某個(gè)狀
態(tài),它將在不同的狀態(tài)之間隨著自身的推進(jìn)和外界條件的變化而發(fā)生變化,最終完成其使命。
3關(guān)于“緩沖區(qū)”的講解
在計(jì)算機(jī)中引進(jìn)緩沖技術(shù)主要是解決在系統(tǒng)某些位置上信息的到達(dá)率與離去率不匹配的問(wèn)題。緩沖技術(shù)是在這些位置上設(shè)置能存貯信息的緩沖區(qū),在速率不匹配的二者之間起平滑作用。
緩沖技術(shù)不僅在設(shè)備管理中起重要作用,在操作系統(tǒng)的其它部分也常起著特殊作用,如進(jìn)程通訊、文件管理等等。
那么在設(shè)備管理中引進(jìn)緩沖的原因是什么呢?
(1) 改善CPU與I/O設(shè)備之間速度不匹配的情況
CPU與外設(shè)之間的速度差異是明顯的,盡管大多數(shù)系統(tǒng)中都配置了與CPU處理能力大致相當(dāng)?shù)亩嗯_(tái)外設(shè)。通道技術(shù)也為系統(tǒng)各部分并行提供了可能性,但在不同時(shí)刻系統(tǒng)各部分的負(fù)荷往往很不均衡。有時(shí)設(shè)備空閑,CPU忙碌,有時(shí)則相反。顯然在這種情況下,其并行度很低,設(shè)備的忙閑程度也很不均衡。如果軟件采用緩沖技術(shù)在內(nèi)存或外存空間開(kāi)辟一定數(shù)量的緩沖存貯區(qū),I/O都先經(jīng)過(guò)緩沖區(qū),顯然可以提高CPU與外設(shè)并行度,也使設(shè)備均衡地工作。
(2) 發(fā)掘I/O設(shè)備之間的并行操作
在實(shí)際中,常常需要將某臺(tái)外設(shè)上的信息傳遞到另一臺(tái)上,如將輸入機(jī)上信息傳送到磁盤(pán)上。這樣輸入設(shè)備與盤(pán)操作必須完全串行工作。若在內(nèi)存開(kāi)辟兩個(gè)緩沖區(qū)(buffer1,buffer2),則情況會(huì)有好轉(zhuǎn)。就可以把原來(lái)串行工作變成了并行工作,從而提高設(shè)備利用率。
(3) 減少I(mǎi)/O次數(shù)
當(dāng)某些設(shè)備信息要重復(fù)使用時(shí),利用緩沖區(qū)可以盡可能地保存I/O信息副本。
必須指出,緩沖技術(shù)只能在速度不匹配的兩部分之間起平滑作用。緩沖技術(shù)帶來(lái)的并行度的增益,實(shí)際上很大程度依賴(lài)于進(jìn)程內(nèi)部存在著的各部分活動(dòng)間的并發(fā)性及進(jìn)程間活動(dòng)的并發(fā)性。另外,緩沖區(qū)的設(shè)置也比較關(guān)鍵。緩沖區(qū)可以用硬件寄存器實(shí)現(xiàn)(稱(chēng)為高速緩存器cache)。由于成本的考慮,cache的容量一般不宜很大,如1K~4K。比較經(jīng)濟(jì)的辦法是在內(nèi)存中開(kāi)辟一片區(qū)域充當(dāng)緩沖區(qū)。
我們?cè)谥v解時(shí)就將緩沖區(qū)的作用比喻為“水庫(kù)”。若一條河面寬水流大的河流與一條河面窄水流小的河流對(duì)接時(shí),為了讓水量不流失且大小河流的速度不減,就可以在對(duì)接處建一個(gè)水庫(kù)。這樣學(xué)生就容易理解了。
4關(guān)于“文件系統(tǒng)”的講解
文件系統(tǒng)是指OS中負(fù)責(zé)管理和存取文件信息的軟件機(jī)構(gòu)。從系統(tǒng)角度看,文件系統(tǒng)負(fù)責(zé)為用戶(hù)建立文件(包括存放位置和保護(hù));從用戶(hù)角度看,文件系統(tǒng)主要是實(shí)現(xiàn)了“按名存取”,即,當(dāng)用戶(hù)要求系統(tǒng)保存一個(gè)已命名的文件時(shí),文件系統(tǒng)能將它們放在適當(dāng)?shù)牡胤健.?dāng)用戶(hù)要使用文件時(shí),文件系統(tǒng)根據(jù)文件名能找出某個(gè)具體文件。因此,文件系統(tǒng)的用戶(hù)只需知道文件名就可存取文件中的信息,不需知道究竟放在何處。
設(shè)置文件系統(tǒng)的目的,主要是為了向用戶(hù)提供一種簡(jiǎn)便、統(tǒng)一的管理和使用文件的界面。用戶(hù)可以使用這個(gè)界面中的命令(指令),按照文件的邏輯結(jié)構(gòu),簡(jiǎn)單直觀地對(duì)文件實(shí)施操作,而不需要了解存貯介質(zhì)的特性以及文件的物理結(jié)構(gòu)和I/O實(shí)現(xiàn)的細(xì)節(jié)。
文件系統(tǒng)的設(shè)計(jì)者,應(yīng)以?xún)煞N不同的觀點(diǎn)研究文件的組織問(wèn)題。一是用戶(hù)觀點(diǎn),就是研究用戶(hù)思維中的抽象文件,為用戶(hù)提供一種邏輯結(jié)構(gòu)清晰、使用簡(jiǎn)便的邏輯文件形式。用戶(hù)可按這種形式對(duì)文件進(jìn)行各種操作,而不管其機(jī)器實(shí)現(xiàn)的細(xì)節(jié)。另一種是實(shí)現(xiàn)觀點(diǎn),即研究文件在存貯介質(zhì)上的具體存放形式,系統(tǒng)將按照這種存貯方式實(shí)施具體的存取操作。前者叫文件的邏輯組織,后者叫文件的物理組織。文件系統(tǒng)的重要作用之一,就是在兩者之間建立映照關(guān)系。
文件系統(tǒng)要管理為數(shù)眾多的文件,首先的問(wèn)題就是要把它們有條不紊地組織起來(lái),以便能根據(jù)文件名迅速準(zhǔn)確地找到文件。這是文件系統(tǒng)能否有效地工作的關(guān)鍵。這就是目錄結(jié)構(gòu)的問(wèn)題。那么,一個(gè)好的目錄結(jié)構(gòu)的標(biāo)準(zhǔn)是什么呢?
多級(jí)目錄結(jié)構(gòu)是使用靈活、能適應(yīng)不同要求的目錄結(jié)構(gòu),在實(shí)際系統(tǒng)中得到廣泛的應(yīng)用。多級(jí)目錄結(jié)構(gòu)有不同的形式,主要有樹(shù)形結(jié)構(gòu),非循環(huán)圖形結(jié)構(gòu)等。樹(shù)形的目錄結(jié)構(gòu)示意如圖1所示。
在此結(jié)構(gòu)中,有一個(gè)根目錄(Root Directory)。根目錄項(xiàng)可以是一個(gè)普通文件(數(shù)據(jù)文件),也可以是一個(gè)次一級(jí)的目錄文件。如此層層類(lèi)推,形成一個(gè)樹(shù)形層次結(jié)構(gòu),在這一結(jié)構(gòu)中,末端葉結(jié)點(diǎn)一般是數(shù)據(jù)文件,中間節(jié)點(diǎn)一定是一個(gè)目錄文件。
建立目錄結(jié)構(gòu)的目的是要把文件有條不紊地組織起來(lái),以便能按文件名迅速地找到該文件的控制塊FCB。需要說(shuō)明的是,整個(gè)目錄結(jié)構(gòu)都是建立在外存上的,而“按名查找”的過(guò)程是要通過(guò)CPU執(zhí)行查找程序(例如,UNIX中此程序的名字叫namei)實(shí)現(xiàn)的,所以要把作為此程序加工的數(shù)據(jù)的目錄有選擇地讀入內(nèi)存。因此在查找文件的過(guò)程中,涉及到大量的內(nèi)、外存之間的信息傳輸。
文件系統(tǒng)的多級(jí)目錄結(jié)構(gòu)中應(yīng)能做到文件的重名與共享,而單純的一棵倒立的樹(shù)型結(jié)構(gòu)中,將文件比喻成樹(shù)葉,則文件的異名共享就解釋不通了,所以在UNIX系統(tǒng)中說(shuō)成是非循環(huán)圖形結(jié)構(gòu)。這樣一解釋學(xué)生就清楚了。
在UNIX系統(tǒng)的文件系統(tǒng)模塊中對(duì)文件存儲(chǔ)塊的管理時(shí)用到的數(shù)據(jù)結(jié)構(gòu)是卷的專(zhuān)用塊。卷的專(zhuān)用塊(存儲(chǔ)資源管理信息塊)是文件卷的1#塊。專(zhuān)用塊的主要內(nèi)容如下:
(1) 空閑盤(pán)塊數(shù)目S-nfree:當(dāng)前可被直接分配使用的盤(pán)塊數(shù)。
(2) 空閑塊索引表S-free[50]:其中放有當(dāng)前可用的盤(pán)塊號(hào)。
(3) 空閑i節(jié)點(diǎn)數(shù)目S-ninode:當(dāng)前可被直接分配使用的i節(jié)點(diǎn)數(shù)。
(4) 空閑i節(jié)點(diǎn)索引表S-inode[100]:其中放有當(dāng)前可用的i節(jié)點(diǎn)號(hào)。
(5) 封鎖標(biāo)記:正在用專(zhuān)用塊時(shí)要對(duì)它進(jìn)行封鎖。
在卷的專(zhuān)用塊中直接記載的空閑存儲(chǔ)塊號(hào)和空閑i節(jié)點(diǎn)號(hào)用到的兩個(gè)數(shù)組的工作方式就是“?!?。我們?cè)谥v解時(shí),就讓學(xué)生將“?!毕胂蟪珊人谋?。這樣“先進(jìn)后出”的特點(diǎn)就一目了然了。
4結(jié)束語(yǔ)
筆者從事本科“操作系統(tǒng)”的教學(xué)工作已有十八年。期間編寫(xiě)了一本操作系統(tǒng)教材,已在教學(xué)中使用十年;開(kāi)發(fā)研制了操作系統(tǒng)動(dòng)態(tài)演示軟件;開(kāi)設(shè)了“操作系統(tǒng)課程設(shè)計(jì)”;在教學(xué)中積累了一定的經(jīng)驗(yàn)。由于時(shí)間倉(cāng)促,本文就自己的一點(diǎn)淺薄見(jiàn)解與各位同仁共勉。
參考文獻(xiàn):
[1] 孟慶昌. 操作系統(tǒng)教程——UNIX系統(tǒng)V實(shí)例分析[M]. 西安:西安電子科技大學(xué)出版社,1993.
[2] 張堯?qū)W. 計(jì)算機(jī)操作系統(tǒng)教程習(xí)題解答與實(shí)驗(yàn)指導(dǎo)[M]. 北京:清華大學(xué)出版社,2000.
[3] 龐麗萍. 操作系統(tǒng)實(shí)驗(yàn)與課程設(shè)計(jì)[M]. 武漢:華中理工大學(xué)出版社,1995.
[4] 王育勤,謝余強(qiáng),汪淼.計(jì)算機(jī)操作系統(tǒng)—基于UNIX系統(tǒng)V核心[M]. 北京:清華大學(xué)出版社,2004.
Using Examples of Life on the "Operating System" Course
WANG Yu-qin
(Institute of Science, PLA Information Engineering University, Zhengzhou 450000,China)
Abstract: In this article, the experiences in teaching of Operating Systems are introduced. Many skills are emphatically provided that examples of life are used on the “Operating System” course, which is visual, vivid, and close to reality. It makes the course more active, and also makes students having more interests and curiosities on this course. Finally, the implementation of course design of Operating Systems is proposed in this paper.
Key words: Operating Systems; process; file; buffer