操作系統(tǒng):第二章 作業(yè)管理和用戶接口_第1頁
操作系統(tǒng):第二章 作業(yè)管理和用戶接口_第2頁
操作系統(tǒng):第二章 作業(yè)管理和用戶接口_第3頁
操作系統(tǒng):第二章 作業(yè)管理和用戶接口_第4頁
操作系統(tǒng):第二章 作業(yè)管理和用戶接口_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第二章 作業(yè)管理和用戶接口2.1 作業(yè)組織和控制2.2 作業(yè)管理舉例2.3 系統(tǒng)調用(SYSTEM CALL)2.4 圖形用戶接口(GUI, GRAPHIC USER INTERFACE)2.5用戶管理和配置管理在這一章中,我們從用戶使用和系統(tǒng)管理出發(fā)討論OS向上提供的用戶接口,即系統(tǒng)命令接口和系統(tǒng)調用接口。系統(tǒng)命令接口可完成用戶作業(yè)的組織和控制。2.1 作業(yè)組織和控制2.1.1 作業(yè)和作業(yè)處理過程2.1.2 作業(yè)調度2.1.3 作業(yè)控制語言2.1.4系統(tǒng)調用返回2.1.1 作業(yè)和作業(yè)處理過程1. 作業(yè)的概念2. 作業(yè)的組成3. 作業(yè)的處理過程4. 作業(yè)輸入方式5. 作業(yè)控制表(JCB, Jo

2、b Control Block)1. 作業(yè)的概念一個作業(yè)是指在一次應用業(yè)務處理過程中,從輸入開始到輸出結束,用戶要求計算機所做的有關該次業(yè)務處理的全部工作。用戶的觀點:在一次業(yè)務處理過程中,從輸入程序和數(shù)據(jù)到輸出結果的全過程。作業(yè)步:形成中間結果文件。系統(tǒng)的觀點(針對作業(yè)進行資源分配):作業(yè)由程序及數(shù)據(jù)(作業(yè)體)和作業(yè)說明書(作業(yè)控制語言)作業(yè)由不同的順序相連的作業(yè)步組成。作業(yè)步是在一個作業(yè)的處理過程中,計算機所做的相對獨立的工作。2. 作業(yè)的組成作業(yè)說明書包括作業(yè)基本情況、作業(yè)控制、作業(yè)資源要求的描述;它體現(xiàn)用戶的控制意圖。如:預計運行時間、要求的資源情況、執(zhí)行優(yōu)先級等。作業(yè)基本情況:用戶名

3、、作業(yè)名、編程語言、最大處理時間等;作業(yè)控制描述:作業(yè)控制方式、作業(yè)步的操作順序、作業(yè)執(zhí)行出錯處理;作業(yè)資源要求描述:處理時間、優(yōu)先級、內存空間、外設類型和數(shù)量等;作業(yè)由程序、數(shù)據(jù)和作業(yè)說明書三部分組成。3. 作業(yè)的處理過程作業(yè)提交:作業(yè)的輸入;作業(yè)執(zhí)行:先到就緒,經(jīng)調度運行,有I/O請求等待,I/O完成到就緒作業(yè)完成:作業(yè)的輸出;4. 作業(yè)輸入方式無通道處理方式:聯(lián)機(降低了CPU效率):由主機直接控制輸入/輸出;I/O與作業(yè)處理不能并行。脫機(人工干預):通過磁帶或磁盤在外圍處理機與主機之間交換作業(yè)(需人工移動);用于主機不太快的情況。直接耦合:通過共享外存在外圍處理機與主機之間交換作業(yè);

4、用于高速主機。有通道處理:輸入/輸出由主機和通道來承擔。假脫機(spooling, Simultaneously Peripheral Operation On Line):系統(tǒng)把作業(yè)處理的全過程劃分為相對獨立的三個部分-輸入流、處理流和輸出流。spooling-in/spooling-out進程:控制輸入/輸出;網(wǎng)絡:在網(wǎng)絡上一臺機器進行作業(yè)輸入/輸出,在另一臺主機上運行;5. 作業(yè)控制表(JCB, Job Control Block)作業(yè)名估計執(zhí)行時間優(yōu)先數(shù)(用于調度)作業(yè)說明書文件名程序類型(需調用的系統(tǒng)程序)資源要求:(靜態(tài),或中間可以隨作業(yè)步變化效率不高;動態(tài)分配作業(yè)狀態(tài):提交、后備

5、、執(zhí)行、就緒、等待、完成;在運行過程中,系統(tǒng)對作業(yè)進行管理的必要信息。2.1.2 作業(yè)調度作業(yè)調度算法的評價因素作業(yè)吞吐量:運行盡可能多的作業(yè);充分利用資源:CPU忙、I/O設備忙;對各作業(yè)公平、合理,使用戶滿意:執(zhí)行時間長短、等待時間等;檢查系統(tǒng)是否滿足作業(yè)的資源要求,并一定算法選取作業(yè)。作業(yè)調度也稱為宏觀調度。2.1.3 命令控制界面接口脫機作業(yè)控制:用戶輸入作業(yè)說明書,整個作業(yè)的運行由系統(tǒng)控制。聯(lián)機作業(yè)控制:通過人-機會話方式控制作業(yè)運行。用戶登錄(控制臺登錄或遠程登錄),由系統(tǒng)自動執(zhí)行一些命令腳本后,并進入shell(字符或GUI界面),接受用戶的命令和操作,最后退出系統(tǒng)。 概述命令接

6、口的基本任務1. 解釋操作系統(tǒng)命令語言中的命令,將命令傳送到系統(tǒng)以便執(zhí)行2. 接受系統(tǒng)來的信息,以響應語言的形式提呈給用戶聯(lián)機用戶與交互式命令接口 使用者用輸入裝置,以各種操作方法向計算機發(fā)出命令,請求各種操作 系統(tǒng)收到命令請求之后,將控制轉向命令解釋系統(tǒng),對該命令進行解釋執(zhí)行,完成指定功能 系統(tǒng)等待新的命令輸入聯(lián)機命令接口: 一組聯(lián)機命令,終端處理程序,命令解釋程序 命令接口的操作方式用命令處理程序來實現(xiàn)對命令進行判別、分類、翻譯、解釋、并按照命令參數(shù)的要求與功能,調用系統(tǒng)相應過程實現(xiàn) 命令語言 目的:規(guī)定由操作系統(tǒng)執(zhí)行的一系列操作 命令結構:(命令前綴)命令名(命令參數(shù))(命令選項)命令前

7、綴:命令的特殊性命令參數(shù):命令在執(zhí)行前所需的資源、文件和數(shù)據(jù)命令選擇:指明命令的目標、路徑、方向、范圍等 命令行實例1命令行:一行可有一個或多個命令,每次一行,包含一個或多個命令。shell給出提示符時可輸入,以回車鍵提交。如:“l(fā)s -a -l”列出當前目錄文件列表;gunzip mp1.tar.gz; tar -xvf mp1.tar; rm -r -f mp1.tar為解壓縮后再展開。命令格式:一個命令可有命令參數(shù),格式包括選項/開關 (option/switch)或參數(shù)(argument)。如UNIX系統(tǒng): cp -r doc /tmpargv0, argv1, .(含子目錄的文件復制

8、:/tmp為目標地址)命令行實例2:(1)UNIX系統(tǒng):whols -l(2)DOS系統(tǒng)dir c: 命令的種類與功能基本命令最不可少的命令顯示文件目錄、路徑和內容復制、更名或刪除建立、編輯程序、文本和數(shù)據(jù)不同的語言編譯和連接程序顯示系統(tǒng)或用戶環(huán)境的信息批處理命令 針對脫機用戶操作和大量順序操作功能而設計 批處理命令可以是專門的命令,也可是系統(tǒng)的基本命令;還有有關的語法結構,循環(huán)、分支、轉移、判別等,枸成一套特殊的命令語言宏命令一類組合命令,某些方面類似于批處理命令,但有嚴格格式。宏命令其中可包含若干命令,類似于宏語句MACRO mycmd命令集MACRO END命令的附加功能命令的附加功能用

9、以擴大命令的功能性、選擇性、適應性。包括:(1)參數(shù)與變量 位置變量 關鍵字變量(2)命令通配符(3)重定向(4)管道與過濾器內部命令(基本命令)和外部命令(文件命令)內部命令:直接由shell本身完成,功能簡單、使用頻繁;如:DOS的copy命令。外部命令:運行相應的可執(zhí)行文件,在使用時加載。如:DOS的xcopy命令。命令簡化:利用參數(shù)替換可簡化命令輸入,通配符(?, *)用于匹配一組文件名如:UNIX的cp命令:當前目錄上有兩個1.tar和2.tar時,cp *.tar /tmp等同于cp 1.tar /tmp; cp 2.tar /tmp命令文件 命令設計命令設計是操作系統(tǒng)各模塊設計中

10、重要的,也是困難的一環(huán)命令解釋和處理程序也是操作系統(tǒng)中重要的程序模塊 實現(xiàn)1.用戶進程 對終端進行控制,即登錄管理 OS提供監(jiān)控程序(monitor),不斷檢查系統(tǒng)終端,一旦發(fā)現(xiàn)某個終端打開,在終端上顯示必要信息,要求用戶注冊(給出用戶名、口令),看其是否合法,合法則為終端生成用戶進程,然后,用戶進程作業(yè)不斷接收命令為用戶服務 2.用戶管理 為每個用戶建立一個帳號,并記錄這個用戶的主要信息,如用戶名,口令,這些信息存放在系統(tǒng)文件內。當用戶登錄時,系統(tǒng)將用戶打入信息與該文件進行比較,若匹則為合法用戶,并為其創(chuàng)建用戶進程,其標志:提示符2.2 作業(yè)管理舉例2.2.1 MS DOS的作業(yè)管理2.2.

11、2 UNIX的作業(yè)管理返回2.2.1 MS DOS的作業(yè)管理命令分類:內部命令:如dir, cd, copy外部命令:如format, xcopy命令行選項命令行選項通常是:/option;如:/?選項可顯示各命令的命令行選項列表。通配符:由外部命令自己處理。如:xcopy *.c . argv1=*.c. DOS命令處理程序(或其他程序如DOS shell):駐留內存,在系統(tǒng)運行期間不再退出。為了給應用程序的執(zhí)行提供更大內存空間,又分為常駐部分和暫駐部分(可被應用程序覆蓋)輸入輸出重定向和管道(pipe), , |, 基于臨時文件為輸入重定向,如:find string temp.txt將顯

12、示文件temp.txt中有string串的行;more ”為輸出重定向,“”為添加輸出重定向。如:“dir temp.txt”將把“dir”命令在屏幕上的輸出保存在新文件“temp.txt”中;而dir temp.txt將屏幕輸出追加在文件temp.txt的結尾。管道|是將前一個命令的屏幕輸出作為后一個命令的鍵盤輸入。如:dir | sort將把dir命令的輸出按行進行排序。環(huán)境變量set PATH=c:tools;%PATH%原PATH=c:dos 則后PATH=c:tools;c:dos系統(tǒng)引導時加載系統(tǒng)引導時加載:autoexec.bat2.2.2 UNIX的作業(yè)管理. shell命令處

13、理程序. shell批處理. shell命令處理程序1. shell的類型2. 初始化文件3. 基本特征4. 輸入輸出重定向5. 管道6. 后臺執(zhí)行7. 環(huán)境變量和內部變量8. 別名9. 常用的外部命令1. shell的類型Bourne shell(/bin/sh)Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的shell 并且在每種 UNIX 上都可以使用。Bourne shell 在 shell 編程方面相當優(yōu)秀,但在處理與用戶的交互方面作得不如其他幾種 shell。Bourne shell 最大的缺點在于它處理用戶的輸入方面。在 Bourne s

14、hell 里鍵入命令會很麻煩,尤其當你鍵入很多相似的命令時。C shell(/bin/csh)C shell 由 Bill Joy 所寫,它更多的考慮了用戶界面的友好性。它支持象命令補齊(command-line completion)等一些 Bourne shell 所不支持的特性。普遍認為C shell 的編程接口做的不如 Bourne shell, 但 C shell 被很多 C 程序員使用因為 C shell的語法和 C語言的很相似,這也是C shell名稱的由來。UNIX上有許多種shell,主要功能是相同的,在細節(jié)上有一些區(qū)別。幾種shell 都有它們的優(yōu)點和缺點。Korn she

15、ll (ksh)Korn shell (ksh) 由 Dave Korn 所寫。它集合了C shell 和 Bourne shell 的優(yōu)點并且和 Bourne shell 完全兼容。 Bourne Again shell (bash)Bourne Again shell (bash)是 Bourne shell 的擴展。bash 與 Bourne shell 完全向后兼容,并且在 Bourne shell 的基礎上增加和增強了很多特性。bash 也包含了很多 C 和 Korn shell 里的優(yōu)點。bash 有很靈活和強大的編程接口,同時又有很友好的用戶界面。 bash 有幾種特性使命令的輸

16、入變得更容易。 其他shell除了這些 shell 以外,許多其他的 shell 程序吸收了這些原來的 shell 程序的優(yōu)點而成為新的 shell 。如:tcsh (csh 的擴展)Public Domain Korn shell (pdksh, ksh 的擴展) 2. 初始化文件B Shell執(zhí)行.profileC Shell執(zhí)行.cshrc和.login兩個文件K Shell執(zhí)行.profile和$ENV兩個文件(sh) .profile與(csh) .login對應,進行注冊時的初始化;而在csh在非注冊啟動時都讀入.cshrc;3. 基本特征內部命令:如cd, exec區(qū)分大小寫,e

17、xec的功能是執(zhí)行一個命令;外部命令:如ls, mkdir命令行選項通常是:-option如:ls -a -l中的-a表示列出所有文件,-l表示列出所有信息。通配符:由shell處理后再傳遞給外部命令。如:cat *.c 則argv1=a.c, argv2=b.c,而 cat *.c 則argv1=*.c(cat的功能是讀入所有文件,并顯示)4. 輸入輸出重定向和為標準輸出重定向;2和2為標準錯誤輸出重定向(2表示標準錯誤輸出的設備號,只對sh有意義); &是標準輸出和標準錯誤輸出重定向;基于內核的緩沖區(qū)行輸入重定向:用定界符間的內容作為標準輸入。如:下面命令的標準輸入為郵件內容。 mail

18、user2 WARNING . WARNING5. 管道如:ls -l | wc -l可給出文件數(shù)目。如:“cat sample.text | grep High | wc -l” 這個管道將把 cat 命令(列出一個文件的內容)的輸出送給grep命令。grep 命令在輸入里查找單詞 High,grep命令的輸出則是所有包含單詞 High的行,這個輸出又被送給 wc命令。帶 -l選項的 wc命令將統(tǒng)計輸入里的行數(shù)。管道可以把一系列命令連接起來。第一個命令的輸出會通過管道傳給第二個命令而作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸入,以此類推。而管道行中最后一個命令的輸出才會顯示

19、在屏幕上(如果命令行里使用了輸出重定向的話,將會放進一個文件里)。通過管道,可以將多個簡單程序組合完成復雜的功能。6. 后臺執(zhí)行如:xterm -display 6:0.0 &為在后臺啟動一個xterm窗口,并顯示到主機6上。后臺執(zhí)行:cmd &;7. 環(huán)境變量和內部變量set可給出內部變量列表,env可給出環(huán)境變量列表。繼承只對環(huán)境變量有效。sh: PATH=/usr/bin:$PATH ; export PATH注意:在export前為內部變量,之后為環(huán)境變量。csh: set setenv PATH /usr/bin:$PATH-注意:在csh中環(huán)境變量的賦值(setenv)沒有等號,而

20、內部變量的賦值(set)有等號。內部變量不能被子進程繼承(如同C里的局部變量);改環(huán)境變量就會自動改內部變量,反之不然。8. 別名alias 的格式:alias aliasname=string . 把 aliasname 直接用來取代后面的 string ,如有任何跟在后面的 argument 將會出現(xiàn)的其后。利用該功能,使用者可以將常用卻冗長的指令以其他的名字存起。如:alias dir=ls -a -l為ls -a -l定義了一個別名dir;給復雜命令定義別名:alias/unalias9. 常用的外部命令man查看手冊echo, wc, grep, sed, awk(用于文本掃描和處理

21、), sort, cut(對每行進行特定刪除處理)字符串操作;pwd, ls, mkdir, rmdir, cp, rm, mv, ln文件和目錄操作;chmod, chown, chgrp(修改文件所在的用戶組)文件權限和屬主;cat, more, tail(顯示文件的最后部分)查看文件;test, expr檢測和數(shù)值計算;vi全屏幕編輯;. 批處理1. 變量替換2. 條件轉移3. 循環(huán)4. 分支5. 函數(shù)稱為腳本 shell script:注釋用 #,續(xù)行用 解釋執(zhí)行,效率較低;而且要加載外部命令;指定解釋執(zhí)行腳本的程序:#!/bin/sh或 #!/opt/bin/perlperl, Pr

22、actical Extraction and Report Language是一個文本文件分析工具。執(zhí)行腳本(sh):cmd(cshsource cmd), exec cmd, cmd(sh cmd, sh cmd)source命令是運行tcl腳本;exec是用指定命令新建shell,以取代當前shell;sh命令是運行sh腳本。1. 變量替換如:下面是一個變量定義和引用的例子:temp=test messageecho $tempecho AAA$tempBBBecho CCC$tempDDDecho $temp變量賦值格式:變量名=值值串中包括空格、制表符或換行符時,值要放在號內;變量引用

23、格式:$變量名如引用前后緊接其它字符,引用方式為:$變量名或$變量名; $variable, 雙引號:“進行變量替換”, 單引號:不作任何替換;其運行結果為:test messageAAAtest messageBBBCCCtest messageDDD$temp2. 條件轉移if command; then . ; else . ; fi例:# 調用test命令,注意:方括號和判斷條件之間必須有空格 !# 下面腳本在有參數(shù)時顯示Have arguement(s),無參數(shù)時顯示No arguement;# 其中, a$1 = a 用于判斷$1是否為空串;if a$1 = a ; then ec

24、ho No arguement else echo Have arguement(s) fi運行結果為:./temp.txtNo arguement/temp.txt weHave arguement(s)例:# 下面腳本在命令行參數(shù)個數(shù)不對(其中,test $# = 4測試命令行參數(shù)個數(shù)是否為4),提示出錯信息;if test $# = 4 ; thenecho $4 $3 $2 $1elseecho $0 usage: arg1 arg2 arg3 arg4fi運行結果如下:$ ./temp.txt./temp.txt usage: arg1 arg2 arg3 arg4$ ./temp.

25、txt a b c dd c b a3. 循環(huán) while 1 ; do . ; done例:# 下面腳本在文件lockfile可讀時每暫停5秒重復測試一次(其中,test -r lockfile判斷文件lockfile是否存在);while test -r lockfile; dosleep 5done運行結果為:有文件lockfile時,腳本一直不結束;直到該文件被刪除后,腳本才結束。4. 分支基于模式匹配的多路分支結構,它依據(jù)word的不同,執(zhí)行不同的命令序列; case word in pattern1) pat1-list; pattern2) pat2-list; esac例:#

26、下面腳本依據(jù)命令行參數(shù)的不同,顯示不同內容;case $1 in *.c) echo C:$1 ; *.a) echo A:$1 ; *.f) echo F:$1 ; esac運行結果如下:$ ./temp.txt c.aA:c.a$ ./temp.txt c.cC:c.c$ ./temp.txt c.fF:c.f5. 函數(shù)1.函數(shù)定義shell允許將一組命令集或語句形成一個可用塊,這些塊稱為 shell函數(shù)定義函數(shù)的格式:functionfunction-name()#函數(shù)名前面多了個function關鍵字command1.例:#!/bin/bash#hellofunfunctionhell

27、o()echoHello!Thefirstparameteris$1.hellogood#該腳本執(zhí)行的結果是:Hello!Thefirstparameterisgood.5. 函數(shù)例:#這里$*和$1是new_func的參數(shù),而$0為腳本的參數(shù))new_func () echo $* echo $1 new_func $0 arg2運行結果為:$./temp.txt asb$./temp.txt arg2$./temp.txt2.3 系統(tǒng)調用(SYSTEM CALL)2.3.1 系統(tǒng)調用及其功能2.3.2 系統(tǒng)調用的實現(xiàn)過程2.3.3 系統(tǒng)調用舉例2.3.4 系統(tǒng)調用與普通過程調用的相同點和不

28、同點返回系統(tǒng)調用是操作系統(tǒng)提供給軟件開發(fā)人員的唯一接口,開發(fā)人員可利用它使用系統(tǒng)功能。OS核心中都有一組實現(xiàn)系統(tǒng)功能的過程(子程序),系統(tǒng)調用就是對上述過程的調用。2.3.1 系統(tǒng)調用及其功能每個操作系統(tǒng)都提供幾百種系統(tǒng)調用,包括:外存文件與目錄的讀寫,各種I/O設備的使用,在程序中啟動另一個程序,查詢和統(tǒng)計系統(tǒng)資源使用情況等等。1. 系統(tǒng)調用的功能1) 設備管理:設備的讀寫和控制;Ioctl設備配置Open設備打開Close設備關閉Read讀設備Write寫設備2) 文件管理:文件讀寫和文件控制;Open文件打開Close文件關閉Read讀文件Write寫文件seek讀寫指針定位Creat文

29、件創(chuàng)建Stat讀文件狀態(tài)Mount安裝文件系統(tǒng)chmod修改文件屬性3) 進程控制:創(chuàng)建、中止、暫停等控制;Fork創(chuàng)建進程Exit進程自我終止Wait阻塞當前進程Sleep進程睡眠Getpid讀父進程標識4) 進程通信:消息隊列、共享存儲區(qū)、socket等通信渠道的建立、使用和刪除;5) 存儲管理:內存的申請和釋放;6) 系統(tǒng)管理:設置和讀取時間、讀取用戶和主機標識等;gtime讀取時間Stime設置時間getuid讀取用戶標識2. 通過系統(tǒng)調用接口使用系統(tǒng)命令通過系統(tǒng)調用接口也可使用系統(tǒng)命令。C語言里的system()函數(shù)可調用shell來完成命令如 UNIX系統(tǒng): system(cp -

30、r doc /tmp)2.3.2 系統(tǒng)調用的實現(xiàn)過程實際上系統(tǒng)調用語句本身是硬件提供的(機器指令),但其所調用的功能是操作系統(tǒng)提供的。每種機器的機器指令集中都有一條系統(tǒng)調用指令。設置系統(tǒng)調用號和參數(shù)。調用號作為指令的一部分(如早期UNIX),或裝入到特定寄存器里(如:DOS int 21h,AH=調用號。)參數(shù)裝入到特定寄存器里,或以寄存器指針指向參數(shù)表(內存區(qū)域)。執(zhí)行trap(int)指令:入口的一般性處理,查入口跳轉表,跳轉到相應功能的過程。保護CPU現(xiàn)場(將PC與PSW入棧),改變CPU執(zhí)行狀態(tài)(處理機狀態(tài)字PSW切換,地址空間表切換)將參數(shù)取到核心空間執(zhí)行操作系統(tǒng)內部代碼;執(zhí)行ire

31、t指令:將執(zhí)行結果裝入適當位置(類似于參數(shù)帶入),恢復CPU現(xiàn)場(以棧頂內容置PSW和PC)。2.3.3 系統(tǒng)調用舉例凡是與硬件相關、與應用無關的工作,都通過操作系統(tǒng)程序來完成。1. 利用系統(tǒng)調用實現(xiàn)硬盤文件內容讀寫在應用程序中直接利用I/O指令進行硬盤文件內容讀寫將是十分復雜和困難的。原因為:磁盤的控制和狀態(tài)接口寄存器比打印機的復雜的多,而且還有地址接口寄存器,涉及像磁道號,磁面號,扇區(qū)號這樣復雜的外存物理地址;通常一個外存存儲介質上可以存放多個文件,隨著文件的建立、刪除和拷貝在不停地變化,每個文件的長度隨著其內容的變化而不停地變化,安全問題;MOVE DX,OFFSETBUFFMOVE C

32、X,BYTEMOVE BX,HANDLEMOVE AH,3FHINT 21H2.3.4 系統(tǒng)調用與普通過程調用的相同點和不同點相同點改變指令流程重復執(zhí)行和公用改變指令流程后需要返回原處不同點系統(tǒng)調用是動態(tài)調用,而CALL調用方式是靜態(tài)調用;執(zhí)行狀態(tài)不同進入方式不同與進程調度的關系不同:嵌套或遞歸調用1. 系統(tǒng)調用是動態(tài)調用,而CALL調用方式是靜態(tài)調用;系統(tǒng)調用是動態(tài)調用,程序中不包含被調用代碼,好處:(1)用戶程序長度縮短(2)當OS升級時,調用方不必改變系統(tǒng)調用方式的調用地址和返回地址都是不固定的,系統(tǒng)調用指令中不包含調用地址,只包含功能號,是按功能號(在可執(zhí)行目標程序中)調用的。在操作系

33、統(tǒng)內部,由系統(tǒng)調用處理程序通過系統(tǒng)調用分支表(OS的一個數(shù)據(jù)結構)將功能號轉換為相應的指令地址。系統(tǒng)調用返回指令中不包括返回地址,通過棧保存和彈出返回地址。系統(tǒng)調用返回地址不固定,因為用戶程序在不同的地方調用OS。CALL調用方式是靜態(tài)調用,被調用代碼與調用代碼在同一程序之內。CALL調用方式,其調用地址是固定的,包含在調用語句中;返回地址是不固定的(同一子程序可能被不同處多次調用),在程序執(zhí)行過程中通過棧的實現(xiàn)來保存和彈出返回地址。2. 執(zhí)行狀態(tài)不同狀態(tài)切換:系統(tǒng)調用、中斷、異常trap陷入特權指令(訪問關鍵寄存器、停機指令)和I/O敏感指令(中斷屏蔽、端口讀寫)調用和返回經(jīng)歷了不同的系統(tǒng)狀

34、態(tài)。通常核心和應用程序的代碼分別運行在CPU的不同的狀態(tài)下(系統(tǒng)態(tài)/核心態(tài)/管態(tài)和用戶態(tài)/目態(tài)),所用地址空間也不同核心的代碼可以直接訪問應用進程的地址空間,反之不然。3. 進入方式不同CALL指令的內部實現(xiàn)過程:返回地址壓棧(即該CALL指令所在的地址);將該CALL指令中所含的地址(即被調用代碼所在地址)送入PCRET指令的內部實現(xiàn)過程:從棧頂彈出返回地址送入程序計數(shù)器PC利用int或trap指令進行系統(tǒng)調用;利用call或jmp指令進入普通的過程調用;4. 與進程調度的關系不同采用搶先式調度的系統(tǒng),在系統(tǒng)調用返回時,要進行重新調度的檢查是否有更高優(yōu)先級的任務就緒(創(chuàng)建或喚醒)。5. 嵌套

35、或遞歸調用對系統(tǒng)調用,一般不允許在同一個進程中發(fā)生嵌套或遞歸(不同進程可以重入同一個系統(tǒng)調用)。2.4 圖形用戶接口(GUI, GRAPHIC USER INTERFACE)2.4.1 概述2.4.2 MS Windows2.4.3 X Window2.4.4 事件驅動模式(event-driven)返回在命令行方式下,用戶與操作系統(tǒng)的交互要求用戶記憶命令格式。在圖形用戶接口方式下,用戶可利用鼠標對屏幕上的圖標進行操作,完成與操作系統(tǒng)的交互,從而減少記憶內容,方便用戶使用。它的技術基礎是高分辯顯示器和鼠標。2.4.1 概述1. 窗口系統(tǒng)(window system)的特點2. 窗口系統(tǒng)的圖形元

36、素及其狀態(tài)3. 窗口管理器(window manager)1. 窗口系統(tǒng)(window system)的特點利用圖形元素表示功能:將各種圖形元素顯示在屏幕上,用戶可以通過操縱圖形元素(如菜單、圖標)來執(zhí)行相應的功能同屏多窗口與并發(fā)進程相對應:屏幕上同時顯示多個窗口;一個進程可以對應一個或多個窗口;窗口動態(tài)創(chuàng)建、改變、撤銷輸入方式:鼠標指針點擊(或其他定位設備)和鍵盤輸入;通常是即時交互一致的圖形元素風格可方便用戶學習和使用:如按鈕、滾動條優(yōu)點:操作直觀(不必記命令行參數(shù)),可與多個進程交互,便于進行多媒體處理簡而言之:交互的并發(fā)性好、傳遞信息量大2. 窗口系統(tǒng)的圖形元素及其狀態(tài)窗口(windo

37、w):屏幕上的矩形區(qū)域(可以通過掩模mask來顯示任意形狀)包括:標題條(title bar)、邊框(border)、窗口角(corner)、系統(tǒng)菜單框(system menu box)、最大化/最小化按鈕(maximize/minimize)、滾動條(scroll bar)等狀態(tài):當前/非當前窗口(active/inactive) 接受輸入,最大化/最小化/恢復原大小(restore),窗口的前后遮蓋Z軸,焦點(focus)接受鍵盤輸入(而非鼠標)桌面(desktop)和墻紙(wallpaper)圖標(icon):一個小圖象(如32x32或64x64 pixel),通常供鼠標指針點擊。通過不

38、同的圖標可以標識不同的對象。如:可執(zhí)行程序、最小化的窗口、文件動畫圖標鼠標指針(mouse pointer):鼠標指針通常對應屏幕上的光標(cursor)。光標在屏幕上只有一個,在不同屏幕位置(上下文)可以呈現(xiàn)不同形狀,可以獨立于鼠標來直接操縱光標。鼠標點擊:左鍵/右鍵/中鍵(left/right/middle button),單擊(click)/雙擊(double-click),拖曳(drag)/拖放(drag-and-drop);按鈕(button):鼠標點擊或按回車鍵/空格鍵時執(zhí)行相應功能,如 menu button;提供單項或多項選擇,如radiobutton和checkbutton;

39、當前按鈕及其切換。菜單(menu):臨時窗口,菜單條(menu bar)、彈出式菜單、下拉式菜單(上下文相關菜單)對話框(dialog box):臨時窗口,顯示提示信息(message)或填寫用戶設置。3. 窗口管理器(window manager):形成統(tǒng)一的使用風格處理窗口的普遍特性,如:窗口的大小、位置(窗口的標題條、邊框、控制菜單框)窗口中由應用程序管理的部分稱為客戶區(qū)(client area)協(xié)調各窗口間的相互關系,如:窗口之間的前后遮蓋關系,桌面2.4.2 MS Windows1. 特點2. MS Windows結構3. 基本概念4. 消息處理:兩種方法1. 特點是OS 的一部分,

40、提供默認的窗口風格(如菜單、對話框)除Windows2000外,窗口應用程序只能在控制臺(本地)執(zhí)行。2. MS Windows結構OS系統(tǒng)服務(KERNEL):內存管理、程序加載(包括DLL)、任務調度、文件管理用戶接口(USER):窗口和消息管理,以及菜單、控制、對話框、定時器等圖形設備接口(GDI, Graphic Device Interface):管理顯示器,為USER與應用程序提供與硬件設備獨立的接口可分成三個部分。3. 基本概念消息(message):消息作為窗口的輸入,如用戶操作、其他窗口或系統(tǒng)發(fā)出的請求或通知。窗口過程(window procedure):消息由各窗口自己的窗

41、口過程來作處理。窗口過程的調用參數(shù):接收窗口句柄(可以在多個窗口共用一個窗口過程時加以區(qū)分)、消息ID(消息的類型)、消息參數(shù)(16+32位或32+32位值,整數(shù)或指針)還可以取得消息的發(fā)生時間和屏幕坐標4. 消息處理:兩種方法排隊消息:放到進程(線程)的FIFO消息隊列里。如應用程序發(fā)送的消息,系統(tǒng)的鼠標、鍵盤、定時器、窗口繪制和退出等。排隊消息所用的API:發(fā)送消息到消息隊列PostMessage;從消息隊列讀取消息GetMessage, PeekMessage;分發(fā)一個消息到相應窗口DispatchMessage;非排隊消息:直接發(fā)送到指定窗口的窗口過程。非排隊消息所用的API:Send

42、Message,直到接收方窗口過程處理完才返回接收方正處于GetMessage,而接受并處理SendMessage送來的消息之后,仍處于GetMessage。為防止死鎖,一般要:if (InSendMessage() ReplyMessage(TRUE);消息循環(huán):不斷移出消息,并加以處理。用戶不作處理的消息,應傳給默認窗口過程加以處理:DefWindowProc()WM_PAINT消息:通知窗口客戶區(qū)中的某部分(region)已被改變,應用程序應該對其重新繪制??偸潜慌旁诰€程消息隊列的最后,并且多個WM_PAINT消息中的region會自動被合并為一個。2.4.3 X Window1.特點2

43、. X Window的結構3. 基本概念4. X lib和工具箱(toolkit)5. X Window的使用Client-Server結構:X client和server都是應用程序一個server可以為不同計算機上的多個client提供服務, server對有關I/O設備具有訪問權一個client也可以連接不同計算機上的多個server顯示設備獨立性和支持多種網(wǎng)絡協(xié)議:(在TCP/IP, DECnet之上的X protocol) X不是計算機操作系統(tǒng)的一部分:其他大部分窗口系統(tǒng)都是以OS核心為基礎的,如:MS Windows, Macintosh, SunView支持自由風格(policy

44、 free):只提供機制不提供風格;包括窗口管理器、菜單、按鈕、滾動條等的管理和操作,如:Motif, Open Look, Tcl/Tk等1. 特點2. X Window的結構X Window的結構各client、窗口管理器和X server可以在一臺或多臺計算機上用戶對server所控制設備的操作都使server發(fā)送事件(event),如:鼠標移動、點擊,鍵盤輸入;事件是一個數(shù)據(jù)塊,內容包括:事件類型、相關的窗口等client對來自server的事件進行處理,然后向server發(fā)送請求(request),如:窗口操作、顯示圖形或正文X protocol使用的傳送信道:異步字節(jié)流。serve

45、r不斷發(fā)送事件而由client中的先進先出FIFO隊列加以緩沖,client不斷發(fā)送請求而由server中的FIFO隊列加以緩沖。X Window的隊列3. 基本概念屏幕(screen)和顯示器(display):屏幕指顯示設備硬件,而顯示器指X server(及其控制的鍵盤、鼠標和屏幕)。X允許一個顯示器控制多個屏幕(即顯示設備硬件)。資源(resource):是X window使用的窗口、位圖(bitmap)、字體(font)、調色板(color map)和其他數(shù)據(jù)結構的總稱。資源在X server中創(chuàng)建和存儲,按照client的請求來加以管理,而client退出時撤銷對應的資源。通過資源

46、標識(resource ID,整數(shù)類型)來標識不同的資源(包括系統(tǒng)資源)資源的自身不體現(xiàn)風格窗口樹:層次,子窗口只顯示出被父窗口剪切(clip)的區(qū)域4. X lib和工具箱(toolkit)X lib函數(shù)庫,將接收到的X protocol轉換為事件,并將請求轉換為發(fā)送X protocol。其代碼鏈接在X client中。如:打開顯示器:XOpenDisplay(char *display_name)與X server建立連接取得X connection的文件描述符:XConnectionNumber()X toolkit:提供各種構件的例程庫,便于用戶使用,體現(xiàn)不同的風格。如:Motif,

47、Open Look, Tcl/Tk構件的數(shù)據(jù)結構存儲在X clientXt Intrinsics:對構件的管理和操作,如:建立和撤銷widget、管理資源(包括widget的初始值)、處理事件并調用相應的處理程序(回調過程call-back)widget set:構件集合構件類(widget class)和構件實例(widget instance)構件(widget):由多個資源(最終是resource ID)復合而成,具有特定外觀和功能的部件,如:按鈕、菜單和滾動條如同建筑上的預制件。本質是:對某些事件給出了默認響應(通常是改變外觀),并可以掛接回調過程來進行用戶定義的處理,方便用戶使用。如

48、Tcl/Tk:button .app.button2 -image icon2 -command incr x0各個widget也構成widget tree,最頂層是top-level widget(在toolkit初始化時建立)editres命令:查看widget tree,并對X 應用進程中的資源進行動態(tài)修改5. X Window的使用1)本地,起動X server2)本地,允許訪問X server:xhost +hostC, xhost -hostC3)本地,發(fā)起遠程登錄:telnet hostC并輸入用戶名和口令4)遠地,運行X終端程序:/usr/openwin/bin/xterm -

49、display hostS:0.0 & 或:setenv DISPLAY hostS:0.0 ; /usr/openwin/bin/xterm &5)本地,在 xterm窗口內輸入命令行,可以起動其他X client程序,如:xclock遠程登錄,X server機為hostS(本地用戶),client機為hostC(遠地)2.4.4事件驅動模式(event-driven)1. 面臨的問題2.事件驅動模式3. 分發(fā)驅動模式4. 舉例1. 面臨的問題若C1, C2, C3在判斷時是阻塞式(blocking),則一個分支在阻塞等待時,使得其他兩個即使條件具備也不被立即執(zhí)行若C1, C2, C3在判

50、斷時是非阻塞式(non-blocking),則C1, C2, C3不間歇地反復查詢,CPU開銷大幾個處理分支在各自條件下,間歇地、重復地執(zhí)行,次序不確定。如: While (!done) if (C1) P1;/* C1:管道1可讀*/ if (C2) P2; /* C2:管道2可寫*/ if (C3) P3;/* C3:定時器的時間到*/ 2.事件驅動模式將多路判斷和等待匯集為一路UNIX系統(tǒng)中相應的系統(tǒng)調用或庫函數(shù)為:select()(Solaris 2.3庫函數(shù),Linux系統(tǒng)調用), poll()(Solaris 2.3系統(tǒng)調用)特點:節(jié)省運行CPU開銷無事件時等待而不是反復查詢,有事

51、件時才處理當處理分支較多時,switch語句變得復雜和不易掌握While (!done) NextEvent(Event);/* 獲取下一個事件,若無事件則等待直到有事件*/ switch (Event.Type) case C1:P1; case C2:P2; case C3:P3; 3. 分發(fā)驅動模式特點:通過對象管理機構(如X toolkit)創(chuàng)建多個對象或構件,輸入事件通過對象各自的回調過程(call-back procedure)來處理通過對象管理機構,將輸入事件分發(fā)給適當?shù)脑責o須了解分發(fā)過程的實現(xiàn)CreateObject(object1, P1);CreateObject(obj

52、ect2, P2);CreateObject(object3, P3);While (!done) NextEvent(Event);/* 獲取下一個事件,若無事件則等待直到有事件*/ Dispatch(Event);/* 分發(fā)事件給相應的回調過程*/4. 舉例MS Windows的消息處理:WinMain(.) CreateWindow(MainWndClass, SampleName, .);/* 窗口過程的人口指針包括在WNDCLASS結構中,通過RegisterClass注冊窗口類*/ while (GetMessage(&msg, .) /* 收到 WM_QUIT消息時,返回值為NU

53、LL */ TranslateMessage(&msg); DispatchMessage(&msg); X Window的事件處理:Xt Intrinsicsmain(.) topWidget = XtAppInitialize(.); XtRealizeWidget(.); while (1) /* 這里的while循環(huán)等價于XtAppMainLoop 函數(shù)*/ XtAppNextEvent(., &event); XtDispatchEvent(&event); 小結作業(yè)組織和控制:脫機、聯(lián)機(命令行)系統(tǒng)調用:與普通過程調用的區(qū)別、與高級語言函數(shù)庫的區(qū)別、實現(xiàn)過程作業(yè)管理舉例:DOS、

54、UNIX(shell)圖形用戶接口(GUI):概述、X Window、MS Windows、事件驅動模式2.5 用戶管理和配置管理2.5.1 用戶管理2.5.2 配置管理用戶管理負責系統(tǒng)中所有用戶使用系統(tǒng)資源時的權限管理;配置管理負責系統(tǒng)中所有軟件運行環(huán)境的配置。2.5.1 用戶管理 用戶功能 舉例 用戶功能用戶身份:認證通過之后生成相應用戶身份的shell進程在shell中運行的新進程也繼承同樣的用戶身份系統(tǒng)資源中的權限設置(屬主和訪問權限):靜態(tài)資源如文件、設備,動態(tài)資源如進程;控制進程對資源的訪問控制:進程的用戶身份與資源的權限設置比較; 舉例.1 UNIX.1 UNIX用戶的控制臺/遠

55、程登錄(login):給出用戶名和口令;su變?yōu)槠渌脩粲脩鬒D(user ID):是一個整數(shù)。Uid為0的是超級用戶或特權用戶(super-user or privileged user);用戶名(user name):字符串,通常超級用戶是 root(對所有資源均有全部訪問權,執(zhí)行所有系統(tǒng)調用)。/etc/passwd文件:文本文件,每行對應一個用戶,包括:用戶名、用戶ID、用戶組ID、用戶全名、用戶根目錄、默認shell;如:root:x:0:1:Super-User:/:/sbin/sh為該文件中與root用戶對應的行。有關user的例程:getuid(); setuid();1. 用

56、戶為防止口令失竊,用戶口令放在 /etc/shadow文件中,只有超級用戶進程可以讀取。如:xyong:6YD6YlXYuOAGk:10624:為該文件中對應于用戶xyong的加密口令。創(chuàng)建新用戶(useradd):命令./useradd test1會對文件passwd進行修改,以創(chuàng)建一個新的用戶test1。刪除已有用戶(userdel):命令./userdel test1會對文件passwd進行修改,以刪除已有用戶test1。2. 用戶組用戶組ID(group):是一個整數(shù)。Uid為0的是超級用戶組;用戶組名:字符串,通常超級用戶組是 root。/etc/group文件:文本文件,每行對應一

57、個用戶組,包括:用戶組名、用戶組ID、組內的各用戶。如:sys:3:root,bin,sys,adm,rootc為該文件中與sys組對應的行。有關group的例程:initgroups(); getgroups(); setgroups(); getgid(); setgid();創(chuàng)建新用戶組(groupadd):命令./groupadd test會對文件group進行修改,以創(chuàng)建一個新的用戶組test。把一個用戶加入一個組(usermod):命令./usermod -G group user會對文件group進行修改,把用戶user加入用戶組group。在文件管理功能中有相應命令進行資源所有者及其所在用戶組的控制。如命令chgrp group directory可修改目錄directory所在的用戶組為 group。3. 資源訪問權限資源中的用戶信息:文件:uid, gidchown()進程:uid, gid, euid, egidsetuid(), getuid() (real ID對應于調用進程ID,ef

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論