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