版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第二章 作業(yè)管理和用戶接口,2.1 作業(yè)組織和控制2.2 作業(yè)管理舉例2.3 系統(tǒng)調(diào)用(SYSTEM CALL)2.4 圖形用戶接口(GUI, GRAPHIC USER INTERFACE),在這一章中,我們討論OS向上提供的用戶接口,即系統(tǒng)命令接口和系統(tǒng)調(diào)用接口。系統(tǒng)命令接口可完成用戶作業(yè)的組織和控制。,2.1 作業(yè)組織和控制,2.1.1 作業(yè)和作業(yè)處理過程2.1.2 作業(yè)調(diào)度2.1.3 作業(yè)控制語言,返回,2.1.1 作業(yè)
2、和作業(yè)處理過程,1. 作業(yè)的概念2. 作業(yè)的組成3. 作業(yè)的處理過程4. 作業(yè)輸入方式5. 作業(yè)控制表(JCB, Job Control Block),1. 作業(yè)的概念,一個作業(yè)是指在一次應(yīng)用業(yè)務(wù)處理過程中,從輸入開始到輸出結(jié)束,用戶要求計算機所做的有關(guān)該次業(yè)務(wù)處理的全部工作。用戶的觀點:在一次業(yè)務(wù)處理過程中,從輸入程序和數(shù)據(jù)到輸出結(jié)果的全過程。作業(yè)步:形成中間結(jié)果文件。系統(tǒng)的觀點(針對作業(yè)進行資源分配):作業(yè)由程序及數(shù)據(jù)(
3、作業(yè)體)和作業(yè)說明書(作業(yè)控制語言)作業(yè)由不同的順序相連的作業(yè)步組成。作業(yè)步是在一個作業(yè)的處理過程中,計算機所做的相對獨立的工作。,2. 作業(yè)的組成,作業(yè)說明書包括作業(yè)基本情況、作業(yè)控制、作業(yè)資源要求的描述;它體現(xiàn)用戶的控制意圖。如:預(yù)計運行時間、要求的資源情況、執(zhí)行優(yōu)先級等。作業(yè)基本情況:用戶名、作業(yè)名、編程語言、最大處理時間等;作業(yè)控制描述:作業(yè)控制方式、作業(yè)步的操作順序、作業(yè)執(zhí)行出錯處理;作業(yè)資源要求描述:處理時間、優(yōu)先
4、級、內(nèi)存空間、外設(shè)類型和數(shù)量等;,作業(yè)由程序、數(shù)據(jù)和作業(yè)說明書三部分組成。,3. 作業(yè)的處理過程,作業(yè)提交:作業(yè)的輸入;作業(yè)執(zhí)行:先到"就緒",經(jīng)調(diào)度"運行",有I/O請求"等待",I/O完成到"就緒"作業(yè)完成:作業(yè)的輸出;,4. 作業(yè)輸入方式,無通道處理方式:聯(lián)機(降低了CPU效率):由主機直接控制輸入/輸出;I/O與作業(yè)處理不能并行。脫機(
5、人工干預(yù)):通過磁帶或磁盤在外圍處理機與主機之間交換作業(yè)(需人工移動);用于主機不太快的情況。直接耦合:通過共享外存在外圍處理機與主機之間交換作業(yè);用于高速主機。有通道處理:輸入/輸出由主機和通道來承擔(dān)。假脫機(spooling, Simultaneously Peripheral Operation On Line):系統(tǒng)把作業(yè)處理的全過程劃分為相對獨立的三個部分--輸入流、處理流和輸出流。spooling-in/spoolin
6、g-out進程:控制輸入/輸出;網(wǎng)絡(luò):在網(wǎng)絡(luò)上一臺機器進行作業(yè)輸入/輸出,在另一臺主機上運行;,5. 作業(yè)控制表(JCB, Job Control Block),作業(yè)名估計執(zhí)行時間優(yōu)先數(shù)(用于調(diào)度)作業(yè)說明書文件名程序類型(需調(diào)用的系統(tǒng)程序)資源要求:(靜態(tài),或中間可以隨作業(yè)步變化--效率不高;動態(tài)分配作業(yè)狀態(tài):提交、后備、執(zhí)行、就緒、等待、完成;,在運行過程中,系統(tǒng)對作業(yè)進行管理的必要信息。,2.1.2 作業(yè)調(diào)度,作業(yè)調(diào)
7、度算法的評價因素作業(yè)吞吐量:運行盡可能多的作業(yè);充分利用資源:CPU忙、I/O設(shè)備忙;對各作業(yè)公平、合理,使用戶滿意:執(zhí)行時間長短、等待時間等;,檢查系統(tǒng)是否滿足作業(yè)的資源要求,并一定算法選取作業(yè)。作業(yè)調(diào)度也稱為宏觀調(diào)度。,2. 作業(yè)調(diào)度算法,先來先服務(wù)(FCFS):按照作業(yè)進入系統(tǒng)的先后次序進行調(diào)度,先進入系統(tǒng)者先調(diào)度;即啟動等待時間最長的作業(yè)。優(yōu)點:實現(xiàn)簡單、公平缺點:沒考慮資源利用率和作業(yè)的特殊性短作業(yè)優(yōu)先(SJF):
8、以要求運行時間長短進行調(diào)度,即啟動要求運行時間最短的作業(yè)。優(yōu)點:易于實現(xiàn),強調(diào)了資源的充分利用,保證了系統(tǒng)的最大吞吐量(單位時間里處理作業(yè)的個數(shù))。缺點:不公平,會造成長作業(yè)長期等待。結(jié)論:假設(shè)系統(tǒng)中所有作業(yè)同時到達,可以證明采用SJF能得到最短的作業(yè)平均周轉(zhuǎn)時間。,實際的算法可能會是多種算法的綜合。,高響應(yīng)比優(yōu)先(HRF):響應(yīng)比最高的作業(yè)優(yōu)先啟動。響應(yīng)比=(等待時間+估計運行時間)/ 估計運行時間該算法是FCFS和SJF的
9、結(jié)合,克服了兩種算法的缺點優(yōu)點: 公平,吞吐率大缺點: 增加了計算,增加了開銷高優(yōu)先級優(yōu)先:由用戶指定作業(yè)優(yōu)先級,優(yōu)先級高的作業(yè)先啟動。資源均衡型調(diào)度:把作業(yè)分類,作業(yè)調(diào)度從不同類型作業(yè)中去調(diào)度作業(yè)根據(jù)作業(yè)對資源要求分類:I/O型、CPU型和均衡型,2.1.3 作業(yè)控制語言,1. 命令行2. 環(huán)境變量,脫機作業(yè)控制:用戶輸入作業(yè)說明書,整個作業(yè)的運行由系統(tǒng)控制。聯(lián)機作業(yè)控制:通過人-機會話方式控制作業(yè)運行。用戶登錄(控制臺
10、登錄或遠程登錄),由系統(tǒng)自動執(zhí)行一些命令腳本后,并進入shell(字符或GUI界面),接受用戶的命令和操作,最后退出系統(tǒng)。,1. 命令行,命令行:一行可有一個或多個命令,每次一行,包含一個或多個命令。shell給出提示符時可輸入,以回車鍵提交。如:“l(fā)s -a -l”列出當(dāng)前目錄文件列表;"gunzip mp1.tar.gz; tar -xvf mp1.tar; \rm -r -f mp1.tar"為解壓縮后再
11、展開。命令格式:一個命令可有命令參數(shù),格式包括選項/開關(guān) (option/switch)或參數(shù)(argument)。如UNIX系統(tǒng): cp -r doc /tmp--argv[0], argv[1], ...(含子目錄的文件復(fù)制:/tmp為目標(biāo)地址),命令分類:內(nèi)部命令和外部命令內(nèi)部命令:直接由shell本身完成,功能簡單、使用頻繁;如:DOS的copy命令。外部命令:運行相應(yīng)的可執(zhí)行文件,在使用時加載。如:DOS的xcopy命
12、令。命令簡化:利用參數(shù)替換可簡化命令輸入,通配符(?, *)用于匹配一組文件名如:UNIX的cp命令:當(dāng)前目錄上有兩個"1.tar"和"2.tar"時,"cp *.tar /tmp"等同于"cp 1.tar /tmp; cp 2.tar /tmp",2. 環(huán)境變量,環(huán)境變量也可以作為shell參數(shù),如命令提示符的式樣,外部命令的查找目錄路徑等。如:PA
13、TH=/bin:/usr/bin:/usr/sbin:.HOME=/home/thisuser環(huán)境變量是傳遞命令參數(shù)的另一種途徑。如:cd $HOME; 環(huán)境變量可按名字訪問,可以新建、賦值或撤銷。有效范圍:只對本進程里的環(huán)境變量能夠直接進行操作。此外,在執(zhí)行新進程時(UNIX中是exec()調(diào)用),可以給出環(huán)境變量的初始值,通常就是直接復(fù)制當(dāng)前進程的所有環(huán)境變量--繼承。,環(huán)境變量(environment variable)
14、--應(yīng)用進程地址空間中的特殊變量區(qū)。,2.2 作業(yè)管理舉例,2.2.1 MS DOS的作業(yè)管理2.2.2 UNIX的作業(yè)管理,返回,2.2.1 MS DOS的作業(yè)管理,命令分類:內(nèi)部命令:如dir, cd, copy外部命令:如format, xcopy命令行選項命令行選項通常是:/option;如:"/?"選項可顯示各命令的命令行選項列表。通配符:由外部命令自己處理。如:xcopy *.c . --ar
15、gv[1]="*.c",2.2.1.1. DOS命令處理程序,command.com(或其他程序如DOS shell):駐留內(nèi)存,在系統(tǒng)運行期間不再退出。為了給應(yīng)用程序的執(zhí)行提供更大內(nèi)存空間,又分為常駐部分和暫駐部分(可被應(yīng)用程序覆蓋),輸入輸出重定向和管道(pipe), >>, |, 基于臨時文件"”為輸出重定向,“>>”為添加輸出重定向。如:“dir > temp.t
16、xt”將把“dir”命令在屏幕上的輸出保存在新文件“temp.txt”中;而"dir >> temp.txt"將屏幕輸出追加在文件"temp.txt"的結(jié)尾。管道"|"是將前一個命令的屏幕輸出作為后一個命令的鍵盤輸入。如:"dir | sort"將把"dir"命令的輸出按行進行排序。環(huán)境變量set PATH=c:\to
17、ols;%PATH%--原PATH=c:\dos 則后PATH=c:\tools;c:\dos系統(tǒng)引導(dǎo)時加載系統(tǒng)引導(dǎo)時加載:autoexec.bat,2.2.1.2. DOS批處理:由command.com執(zhí)行,循環(huán):循環(huán)執(zhí)行命令。FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]遍歷根在[drive:]path上的目錄樹,在樹的每個目
18、錄中執(zhí)行 FOR 語句。如果在 /R 后沒有指定任何目錄規(guī)范,那么假設(shè)為當(dāng)前目錄。如果 set 僅是一個句號(.),那么它 將僅列出目錄樹。,有簡單的變量替換,有條件轉(zhuǎn)移和跳轉(zhuǎn)、循環(huán)和注釋語句rem,關(guān)于循環(huán)的實例,如下面批處理將顯示當(dāng)前目錄及其子目錄所有文件名(含路徑名);for /R %%f in (*.*) do echo %%f如下面批處理將顯示當(dāng)前目錄及其子目錄所有后綴為ppt的文件名(含路徑名);for
19、/R %%f in (*.ppt) do echo %%f可能的顯示結(jié)果: C:\users\xyong\work\2001-02-20 chapter1.ppt C:\users\xyong\work\temp\2001-02-18 chapter1.ppt C:\users\xyong\work\temp\2000-08-09 Linux Lecture\2000-08-15 Linux.ppt,分支,IF [NO
20、T] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command NOT 只有在條件為假時,才需運行命令。 ERRORLEVEL number 如果最近程序運行返回的退出碼等于或大于指定的號碼時,則設(shè)定條件為真。 command 當(dāng)符合條件時,
21、指定要運行的命令。 string1==string2 當(dāng)指定字符串匹配時,設(shè)置條件為真。 EXIST filename 當(dāng)指定文件名存在時,設(shè)置條件為真。如:IF ERRORLEVEL 1 goto okay:okayecho okay,2.2.2 UNIX的作業(yè)管理,2.2.2.1. shell命令處理程序2.2.2.2. shell批處理,2.2.2.1. shell命令處理程序,1. shell
22、的類型2. 初始化文件3. 基本特征4. 輸入輸出重定向5. 管道6. 后臺執(zhí)行7. 環(huán)境變量和內(nèi)部變量8. 別名9. 常用的外部命令,1. shell的類型,Bourne shell(/bin/sh)Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的shell 并且在每種 UNIX 上都可以使用。Bourne shell 在 shell 編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方
23、面作得不如其他幾種 shell。Bourne shell 最大的缺點在于它處理用戶的輸入方面。在 Bourne shell 里鍵入命令會很麻煩,尤其當(dāng)你鍵入很多相似的命令時。C shell(/bin/csh)C shell 由 Bill Joy 所寫,它更多的考慮了用戶界面的友好性。它支持象命令補齊(command-line completion)等一些 Bourne shell 所不支持的特性。普遍認為C shell 的編程接口
24、做的不如 Bourne shell, 但 C shell 被很多 C 程序員使用因為 C shell的語法和 C語言的很相似,這也是C shell名稱的由來。,UNIX上有許多種shell,主要功能是相同的,在細節(jié)上有一些區(qū)別。幾種shell 都有它們的優(yōu)點和缺點。,Korn shell (ksh)Korn shell (ksh) 由 Dave Korn 所寫。它集合了C shell 和 Bourne shell 的優(yōu)點并且和 Bo
25、urne shell 完全兼容。 Bourne Again shell (bash)Bourne Again shell (bash)是 Bourne shell 的擴展。bash 與 Bourne shell 完全向后兼容,并且在 Bourne shell 的基礎(chǔ)上增加和增強了很多特性。bash 也包含了很多 C 和 Korn shell 里的優(yōu)點。bash 有很靈活和強大的編程接口,同時又有很友好的用戶界面。 bash 有幾種特
26、性使命令的輸入變得更容易。 其他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
27、兩個文件(sh) .profile與(csh) .login對應(yīng),進行注冊時的初始化;而在csh在非注冊啟動時都讀入.cshrc;,3. 基本特征,內(nèi)部命令:如cd, exec――區(qū)分大小寫,exec的功能是執(zhí)行一個命令;外部命令:如ls, mkdir命令行選項通常是:-option如:"ls -a -l"中的-a表示列出所有文件,-l表示列出所有信息。通配符:由shell處理后再傳遞給外部命令。如:ca
28、t *.c 則argv[1]="a.c", argv[2]="b.c",而 cat "*.c" 則argv[1]="*.c"(cat的功能是讀入所有文件,并顯示),4. 輸入輸出重定向,""和">>"為標(biāo)準(zhǔn)輸出重定向;"2>"和"2>>"為標(biāo)準(zhǔn)錯誤
29、輸出重定向(2表示標(biāo)準(zhǔn)錯誤輸出的設(shè)備號,只對sh有意義);" >&"是標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出重定向;,基于內(nèi)核的緩沖區(qū),行輸入重定向:用定界符間的內(nèi)容作為標(biāo)準(zhǔn)輸入。如:下面命令的標(biāo)準(zhǔn)輸入為郵件內(nèi)容。 mail user2 << WARNING ... WARNING,5. 管道,如:"ls -l | wc -l"可給出文件數(shù)目。如:“cat sample.tex
30、t | grep "High" | wc -l” 這個管道將把 cat 命令(列出一個文件的內(nèi)容)的輸出送給grep命令。grep 命令在輸入里查找單詞 High,grep命令的輸出則是所有包含單詞 High的行,這個輸出又被送給 wc命令。帶 -l選項的 wc命令將統(tǒng)計輸入里的行數(shù)。,管道可以把一系列命令連接起來。第一個命令的輸出會通過管道傳給第二個命令而作為第二個命令的輸入,第二個命令的輸出又會作為第三個命令的輸
31、入,以此類推。而管道行中最后一個命令的輸出才會顯示在屏幕上(如果命令行里使用了輸出重定向的話,將會放進一個文件里)。通過管道,可以將多個簡單程序組合完成復(fù)雜的功能。,6. 后臺執(zhí)行,如:"xterm -display 166.111.68.56:0.0 &"為在后臺啟動一個xterm窗口,并顯示到主機166.111.68.56上。,后臺執(zhí)行:cmd &;,7. 環(huán)境變量和內(nèi)部變量,"set&
32、quot;可給出內(nèi)部變量列表,"env"可給出環(huán)境變量列表。繼承只對環(huán)境變量有效。sh: PATH=/usr/bin:$PATH ; export PATH--注意:在export前為內(nèi)部變量,之后為環(huán)境變量。csh: set setenv PATH /usr/bin:$PATH--注意:在csh中環(huán)境變量的賦值(setenv)沒有等號,而內(nèi)部變量的賦值(set)有等號。,內(nèi)部變量不能被子進程繼承(如同C里的局部
33、變量);改環(huán)境變量就會自動改內(nèi)部變量,反之不然。,8. 別名,alias 的格式:alias aliasname=string …. 把 aliasname 直接用來取代后面的 string ,如有任何跟在后面的 argument 將會出現(xiàn)的其后。利用該功能,使用者可以將常用卻冗長的指令以其他的名字存起。如:"alias dir='ls -a -l'"為"ls -a -l"定
34、義了一個別名"dir";,給復(fù)雜命令定義別名:alias/unalias,9. 常用的外部命令,man查看手冊echo, wc, grep, sed, awk(用于文本掃描和處理), sort, cut(對每行進行特定刪除處理)字符串操作;pwd, ls, mkdir, rmdir, cp, rm, mv, ln文件和目錄操作;chmod, chown, chgrp(修改文件所在的用戶組)文件權(quán)限和屬主;ca
35、t, more, tail(顯示文件的最后部分)查看文件;test, expr檢測和數(shù)值計算;vi全屏幕編輯;,2.2.2.2. 批處理,1. 變量替換2. 條件轉(zhuǎn)移3. 循環(huán)4. 分支5. 函數(shù),稱為"腳本" shell script:注釋用 '#',續(xù)行用 " \"解釋執(zhí)行,效率較低;而且要加載外部命令;指定解釋執(zhí)行腳本的程序:#!/bin/sh或 #!/op
36、t/bin/perlperl, Practical Extraction and Report Language是一個文本文件分析工具。執(zhí)行腳本(sh):cmd([csh]source cmd), exec cmd, cmd(sh < cmd, sh cmd)"source"命令是運行tcl腳本;"exec"是用指定命令新建shell,以取代當(dāng)前shell;"sh"
37、命令是運行sh腳本。,1. 變量替換,如:下面是一個變量定義和引用的例子:temp="test message"echo $tempecho AAA${temp}BBBecho CCC"$temp"DDDecho '$temp',變量賦值格式:變量名=值值串中包括空格、制表符或換行符時,值要放在""號內(nèi);變量引用格式:$變量名如引用前后緊接其它字
38、符,引用方式為:${變量名}或"$變量名"; $variable, 雙引號:“進行變量替換”, 單引號:'不作任何替換';,其運行結(jié)果為:test messageAAAtest messageBBBCCCtest messageDDD$temp,2. 條件轉(zhuǎn)移,if command; then ... ; else ... ; fi,例:# 調(diào)用test命令,注意:方括號和判斷條件之間必須
39、有空格 !!# 下面腳本在有參數(shù)時顯示"Have arguement(s)",無參數(shù)時顯示"No arguement";# 其中,"[ "a$1" = "a" ]"用于判斷$1是否為空串;if [ "a$1" = "a" ]; then echo "No argueme
40、nt" else echo "Have arguement(s)" fi,運行結(jié)果為:[xyong@well ~/work]./temp.txtNo arguement[xyong@well ~/work]./temp.txt weHave arguement(s),例:# 下面腳本在命令行參數(shù)個數(shù)不對(其中,"test $# = 4"測試命令行參數(shù)個數(shù)是否為4),提
41、示出錯信息;if test $# = 4 ; thenecho $4 $3 $2 $1elseecho $0 usage: arg1 arg2 arg3 arg4fi,運行結(jié)果如下:[xyong@well ~/work]$ ./temp.txt./temp.txt usage: arg1 arg2 arg3 arg4[xyong@well ~/work]$ ./temp.txt a b c dd c b a,3.
42、循環(huán),while [ 1 ]; do ... ; done,例:# 下面腳本在文件lockfile可讀時每暫停5秒重復(fù)測試一次(其中,"test -r lockfile"判斷文件"lockfile"是否存在);while test -r lockfile; dosleep 5done運行結(jié)果為:有文件"lockfile"時,腳本一直不結(jié)束;直到該文件被刪除后,腳本
43、才結(jié)束。,4. 分支,基于模式匹配的多路分支結(jié)構(gòu),它依據(jù)word的不同,執(zhí)行不同的命令序列; case word in pattern1) pat1-list;; pattern2) pat2-list;; esac,例:# 下面腳本依據(jù)命令行參數(shù)的不同,顯示不同內(nèi)容;case $1 in *.c) echo C:"$1" ;; *.a) echo A:"$1" ;;
44、 *.f) echo F:"$1" ;; esac,運行結(jié)果如下:[xyong@well ~/work]$ ./temp.txt c.aA:c.a[xyong@well ~/work]$ ./temp.txt c.cC:c.c[xyong@well ~/work]$ ./temp.txt c.fF:c.f,5. 函數(shù),例:#這里$*和$1是new_func的參數(shù),而$0為腳本的參數(shù))new_fu
45、nc () { echo $* echo $1 } new_func $0 arg2運行結(jié)果為:[xyong@well ~/work]./temp.txt asb./temp.txt arg2./temp.txt,2.3 系統(tǒng)調(diào)用(SYSTEM CALL),2.3.1 系統(tǒng)調(diào)用及其功能2.3.2 系統(tǒng)調(diào)用的實現(xiàn)過程2.3.3 系統(tǒng)調(diào)用舉例2.3.4 系統(tǒng)調(diào)用與普通過程調(diào)用的相同點和不同點,返回,系統(tǒng)調(diào)用是
46、操作系統(tǒng)提供給軟件開發(fā)人員的唯一接口,開發(fā)人員可利用它使用系統(tǒng)功能。OS核心中都有一組實現(xiàn)系統(tǒng)功能的過程(子程序),系統(tǒng)調(diào)用就是對上述過程的調(diào)用。,2.3.1 系統(tǒng)調(diào)用及其功能,每個操作系統(tǒng)都提供幾百種系統(tǒng)調(diào)用,包括:外存文件與目錄的讀寫,各種I/O設(shè)備的使用,在程序中啟動另一個程序,查詢和統(tǒng)計系統(tǒng)資源使用情況等等。,1. 系統(tǒng)調(diào)用的功能,1) 設(shè)備管理:設(shè)備的讀寫和控制;Ioctl設(shè)備配置Open設(shè)備打開Close設(shè)備
47、關(guān)閉Read讀設(shè)備Write寫設(shè)備,2) 文件管理:文件讀寫和文件控制;Open文件打開Close文件關(guān)閉Read讀文件Write寫文件seek讀寫指針定位Creat文件創(chuàng)建Stat讀文件狀態(tài)Mount安裝文件系統(tǒng)chmod修改文件屬性,3) 進程控制:創(chuàng)建、中止、暫停等控制;Fork創(chuàng)建進程Exit進程自我終止Wait阻塞當(dāng)前進程Sleep進程睡眠Getpid讀父進程標(biāo)識
48、4) 進程通信:消息隊列、共享存儲區(qū)、socket等通信渠道的建立、使用和刪除;5) 存儲管理:內(nèi)存的申請和釋放;6) 系統(tǒng)管理:設(shè)置和讀取時間、讀取用戶和主機標(biāo)識等;gtime讀取時間Stime設(shè)置時間getuid讀取用戶標(biāo)識,2. 通過系統(tǒng)調(diào)用接口使用系統(tǒng)命令,通過系統(tǒng)調(diào)用接口也可使用系統(tǒng)命令。C語言里的system()函數(shù)可調(diào)用shell來完成命令如 UNIX系統(tǒng): system("cp -r
49、 doc /tmp"),2.3.2 系統(tǒng)調(diào)用的實現(xiàn)過程,實際上系統(tǒng)調(diào)用語句本身是硬件提供的(機器指令),但其所調(diào)用的功能是操作系統(tǒng)提供的。每種機器的機器指令集中都有一條系統(tǒng)調(diào)用指令。,設(shè)置系統(tǒng)調(diào)用號和參數(shù)。調(diào)用號作為指令的一部分(如早期UNIX),或裝入到特定寄存器里(如:DOS int 21h,AH=調(diào)用號。)參數(shù)裝入到特定寄存器里,或以寄存器指針指向參數(shù)表(內(nèi)存區(qū)域)。執(zhí)行trap(int)指令:入口的一般性處理,查
50、入口跳轉(zhuǎn)表,跳轉(zhuǎn)到相應(yīng)功能的過程。保護CPU現(xiàn)場(將PC與PSW入棧),改變CPU執(zhí)行狀態(tài)(處理機狀態(tài)字PSW切換,地址空間表切換)將參數(shù)取到核心空間執(zhí)行操作系統(tǒng)內(nèi)部代碼;執(zhí)行iret指令:將執(zhí)行結(jié)果裝入適當(dāng)位置(類似于參數(shù)帶入),恢復(fù)CPU現(xiàn)場(以棧頂內(nèi)容置PSW和PC)。,2.3.3 系統(tǒng)調(diào)用舉例,凡是與硬件相關(guān)、與應(yīng)用無關(guān)的工作,都通過操作系統(tǒng)程序來完成。,1. 利用系統(tǒng)調(diào)用向打印機輸出5個字符,方法1:調(diào)用DOS功能向打
51、印機輸出 MOVE A,PARA1 MOVE B,PARA2 INT 21H,方法2:用OUT指令直接打印 L1:MOVE A,I IN ADDR1,B OR B,BS JNC L1 OUT ADDR2,A RET,利用系統(tǒng)調(diào)用和out指令完成打印功能的比較,I/O設(shè)
52、備的硬件接口,一般由四種寄存器(地址,數(shù)據(jù),狀態(tài),控制)或其子集組成,任一程序中若要使用I/O設(shè)備來輸出數(shù)據(jù)或接受輸入,必須通過對這四種寄存器讀寫的I/O機器指令進行。使用系統(tǒng)調(diào)用的程序段則簡單許多。程序員不再需要與接口寄存器打交道,只需一個簡單的調(diào)用即可。,2. 利用系統(tǒng)調(diào)用實現(xiàn)硬盤文件內(nèi)容讀寫,在應(yīng)用程序中直接利用I/O指令進行硬盤文件內(nèi)容讀寫將是十分復(fù)雜和困難的。原因為:磁盤的控制和狀態(tài)接口寄存器比打印機的復(fù)雜的多,而且還有地
53、址接口寄存器,涉及像磁道號,磁面號,扇區(qū)號這樣復(fù)雜的外存物理地址;通常一個外存存儲介質(zhì)上可以存放多個文件,隨著文件的建立、刪除和拷貝在不停地變化,每個文件的長度隨著其內(nèi)容的變化而不停地變化,安全問題;,MOVE DX,OFFSETBUFFMOVE CX,BYTEMOVE BX,HANDLEMOVE AH,3FHINT 21H,2.3.4 系統(tǒng)調(diào)用與普通過程調(diào)用的相同點和不同點,相同點改變指令流程重復(fù)執(zhí)行和公用改變指令流
54、程后需要返回原處不同點系統(tǒng)調(diào)用是動態(tài)調(diào)用,而CALL調(diào)用方式是靜態(tài)調(diào)用;執(zhí)行狀態(tài)不同進入方式不同與進程調(diào)度的關(guān)系不同:嵌套或遞歸調(diào)用,1. 系統(tǒng)調(diào)用是動態(tài)調(diào)用,而CALL調(diào)用方式是靜態(tài)調(diào)用;,系統(tǒng)調(diào)用是動態(tài)調(diào)用,程序中不包含被調(diào)用代碼,好處:(1)用戶程序長度縮短(2)當(dāng)OS升級時,調(diào)用方不必改變系統(tǒng)調(diào)用方式的調(diào)用地址和返回地址都是不固定的,系統(tǒng)調(diào)用指令中不包含調(diào)用地址,只包含功能號,是按功能號(在可執(zhí)行目標(biāo)程序中)調(diào)
55、用的。在操作系統(tǒng)內(nèi)部,由系統(tǒng)調(diào)用處理程序通過系統(tǒng)調(diào)用分支表(OS的一個數(shù)據(jù)結(jié)構(gòu))將功能號轉(zhuǎn)換為相應(yīng)的指令地址。系統(tǒng)調(diào)用返回指令中不包括返回地址,通過棧保存和彈出返回地址。系統(tǒng)調(diào)用返回地址不固定,因為用戶程序在不同的地方調(diào)用OS。CALL調(diào)用方式是靜態(tài)調(diào)用,被調(diào)用代碼與調(diào)用代碼在同一程序之內(nèi)。CALL調(diào)用方式,其調(diào)用地址是固定的,包含在調(diào)用語句中;返回地址是不固定的(同一子程序可能被不同處多次調(diào)用),在程序執(zhí)行過程中通過棧的實現(xiàn)來保存
56、和彈出返回地址。,2. 執(zhí)行狀態(tài)不同,狀態(tài)切換:系統(tǒng)調(diào)用、中斷、異常trap陷入特權(quán)指令(訪問關(guān)鍵寄存器、停機指令)和I/O敏感指令(中斷屏蔽、端口讀寫),調(diào)用和返回經(jīng)歷了不同的系統(tǒng)狀態(tài)。通常核心和應(yīng)用程序的代碼分別運行在CPU的不同的狀態(tài)下(系統(tǒng)態(tài)/核心態(tài)/管態(tài)和用戶態(tài)/目態(tài)),所用地址空間也不同――核心的代碼可以直接訪問應(yīng)用進程的地址空間,反之不然。,3. 進入方式不同,CALL指令的內(nèi)部實現(xiàn)過程:返回地址壓棧(即該CALL指
57、令所在的地址);將該CALL指令中所含的地址(即被調(diào)用代碼所在地址)送入PCRET指令的內(nèi)部實現(xiàn)過程:從棧頂彈出返回地址送入程序計數(shù)器PC,利用int或trap指令進行系統(tǒng)調(diào)用;利用call或jmp指令進入普通的過程調(diào)用;,4. 與進程調(diào)度的關(guān)系不同,采用搶先式調(diào)度的系統(tǒng),在系統(tǒng)調(diào)用返回時,要進行重新調(diào)度的檢查――是否有更高優(yōu)先級的任務(wù)就緒(創(chuàng)建或喚醒)。,5. 嵌套或遞歸調(diào)用,對系統(tǒng)調(diào)用,一般不允許在同一個進程中發(fā)生嵌套或遞歸(
58、不同進程可以重入同一個系統(tǒng)調(diào)用)。,2.4 圖形用戶接口(GUI, GRAPHIC USER INTERFACE),2.4.1 概述2.4.2 MS Windows2.4.3 X Window2.4.4 事件驅(qū)動模式(event-driven),返回,在命令行方式下,用戶與操作系統(tǒng)的交互要求用戶記憶命令格式。在圖形用戶接口方式下,用戶可利用鼠標(biāo)對屏幕上的圖標(biāo)進行操作,完成與操作系統(tǒng)的交互,從而減少記憶內(nèi)容,方便用戶使用。它的技術(shù)
59、基礎(chǔ)是高分辯顯示器和鼠標(biāo)。,2.4.1 概述,1. 窗口系統(tǒng)(window system)的特點2. 窗口系統(tǒng)的圖形元素及其狀態(tài)3. 窗口管理器(window manager),1. 窗口系統(tǒng)(window system)的特點,利用圖形元素表示功能:將各種圖形元素顯示在屏幕上,用戶可以通過操縱圖形元素(如菜單、圖標(biāo))來執(zhí)行相應(yīng)的功能同屏多窗口與并發(fā)進程相對應(yīng):屏幕上同時顯示多個窗口;一個進程可以對應(yīng)一個或多個窗口;窗口動態(tài)創(chuàng)建、
60、改變、撤銷輸入方式:鼠標(biāo)指針點擊(或其他定位設(shè)備)和鍵盤輸入;通常是即時交互一致的圖形元素風(fēng)格可方便用戶學(xué)習(xí)和使用:如按鈕、滾動條優(yōu)點:操作直觀(不必記命令行參數(shù)),可與多個進程交互,便于進行多媒體處理--簡而言之:交互的并發(fā)性好、傳遞信息量大,2. 窗口系統(tǒng)的圖形元素及其狀態(tài),窗口(window):屏幕上的矩形區(qū)域(可以通過掩模mask來顯示任意形狀)包括:標(biāo)題條(title bar)、邊框(border)、窗口角(corne
61、r)、系統(tǒng)菜單框(system menu box)、最大化/最小化按鈕(maximize/minimize)、滾動條(scroll bar)等狀態(tài):當(dāng)前/非當(dāng)前窗口(active/inactive) --接受輸入,最大化/最小化/恢復(fù)原大小(restore),窗口的前后遮蓋--Z軸,焦點(focus)--接受鍵盤輸入(而非鼠標(biāo))桌面(desktop)和墻紙(wallpaper)圖標(biāo)(icon):一個小圖象(如32x32或64x64
62、 pixel),通常供鼠標(biāo)指針點擊。通過不同的圖標(biāo)可以標(biāo)識不同的對象。如:可執(zhí)行程序、最小化的窗口、文件--動畫圖標(biāo),鼠標(biāo)指針(mouse pointer):鼠標(biāo)指針通常對應(yīng)屏幕上的光標(biāo)(cursor)。光標(biāo)在屏幕上只有一個,在不同屏幕位置(上下文)可以呈現(xiàn)不同形狀,可以獨立于鼠標(biāo)來直接操縱光標(biāo)。鼠標(biāo)點擊:左鍵/右鍵/中鍵(left/right/middle button),單擊(click)/雙擊(double-click),拖曳
63、(drag)/拖放(drag-and-drop);按鈕(button):鼠標(biāo)點擊或按回車鍵/空格鍵時執(zhí)行相應(yīng)功能,如 menu button;提供單項或多項選擇,如radiobutton和checkbutton;當(dāng)前按鈕及其切換。菜單(menu):臨時窗口,菜單條(menu bar)、彈出式菜單、下拉式菜單(上下文相關(guān)菜單)對話框(dialog box):臨時窗口,顯示提示信息(message)或填寫用戶設(shè)置。,3. 窗口管理器(
64、window manager):形成統(tǒng)一的使用風(fēng)格,處理窗口的普遍特性,如:窗口的大小、位置(窗口的標(biāo)題條、邊框、控制菜單框)--窗口中由應(yīng)用程序管理的部分稱為"客戶區(qū)(client area)"協(xié)調(diào)各窗口間的相互關(guān)系,如:窗口之間的前后遮蓋關(guān)系,桌面,2.4.2 MS Windows,1. 特點2. MS Windows結(jié)構(gòu)3. 基本概念4. 消息處理:兩種方法,1. 特點,是OS 的一部分,提供默認的窗口
65、風(fēng)格(如菜單、對話框)除Windows2000外,窗口應(yīng)用程序只能在控制臺(本地)執(zhí)行。,2. MS Windows結(jié)構(gòu),OS系統(tǒng)服務(wù)(KERNEL):內(nèi)存管理、程序加載(包括DLL)、任務(wù)調(diào)度、文件管理用戶接口(USER):窗口和消息管理,以及菜單、控制、對話框、定時器等圖形設(shè)備接口(GDI, Graphic Device Interface):管理顯示器,為USER與應(yīng)用程序提供與硬件設(shè)備獨立的接口,可分成三個部分。,3. 基
66、本概念,消息(message):消息作為窗口的輸入,如用戶操作、其他窗口或系統(tǒng)發(fā)出的請求或通知。窗口過程(window procedure):消息由各窗口自己的窗口過程來作處理。窗口過程的調(diào)用參數(shù):接收窗口句柄(可以在多個窗口共用一個窗口過程時加以區(qū)分)、消息ID(消息的類型)、消息參數(shù)(16+32位或32+32位值,整數(shù)或指針)還可以取得消息的發(fā)生時間和屏幕坐標(biāo),4. 消息處理:兩種方法,排隊消息:放到進程(線程)的FIFO消息
67、隊列里。如應(yīng)用程序發(fā)送的消息,系統(tǒng)的鼠標(biāo)、鍵盤、定時器、窗口繪制和退出等。排隊消息所用的API:發(fā)送消息到消息隊列PostMessage;從消息隊列讀取消息GetMessage, PeekMessage;分發(fā)一個消息到相應(yīng)窗口DispatchMessage;非排隊消息:直接發(fā)送到指定窗口的窗口過程。非排隊消息所用的API:SendMessage,直到接收方窗口過程處理完才返回接收方正處于GetMessage,而接受并處理Se
68、ndMessage送來的消息之后,仍處于GetMessage。為防止死鎖,一般要:if (InSendMessage()) ReplyMessage(TRUE);,消息循環(huán):不斷移出消息,并加以處理。用戶不作處理的消息,應(yīng)傳給默認窗口過程加以處理:DefWindowProc()WM_PAINT消息:通知窗口客戶區(qū)中的某部分(region)已被改變,應(yīng)用程序應(yīng)該對其重新繪制??偸潜慌旁诰€程消息隊列的最后,并且多個WM_PAINT消息中的
69、region會自動被合并為一個。,2.4.3 X Window,1.特點2. X Window的結(jié)構(gòu)3. 基本概念4. X lib和工具箱(toolkit)5. X Window的使用,Client-Server結(jié)構(gòu):X client和server都是應(yīng)用程序一個server可以為不同計算機上的多個client提供服務(wù), server對有關(guān)I/O設(shè)備具有訪問權(quán)一個client也可以連接不同計算機上的多個server顯示設(shè)
70、備獨立性和支持多種網(wǎng)絡(luò)協(xié)議:(在TCP/IP, DECnet之上的X protocol) --X不是計算機操作系統(tǒng)的一部分:其他大部分窗口系統(tǒng)都是以O(shè)S核心為基礎(chǔ)的,如:MS Windows, Macintosh, SunView支持自由風(fēng)格(policy free):只提供機制不提供風(fēng)格;包括窗口管理器、菜單、按鈕、滾動條等的管理和操作,如:Motif, Open Look, Tcl/Tk等,1. 特點,2. X Window的結(jié)構(gòu)
71、,X Window的結(jié)構(gòu),各client、窗口管理器和X server可以在一臺或多臺計算機上用戶對server所控制設(shè)備的操作都使server發(fā)送事件(event),如:鼠標(biāo)移動、點擊,鍵盤輸入;事件是一個數(shù)據(jù)塊,內(nèi)容包括:事件類型、相關(guān)的窗口等client對來自server的事件進行處理,然后向server發(fā)送請求(request),如:窗口操作、顯示圖形或正文X protocol使用的傳送信道:異步字節(jié)流。server不斷
72、發(fā)送事件而由client中的先進先出FIFO隊列加以緩沖,client不斷發(fā)送請求而由server中的FIFO隊列加以緩沖。,X Window的隊列,3. 基本概念,屏幕(screen)和顯示器(display):屏幕指顯示設(shè)備硬件,而顯示器指X server(及其控制的鍵盤、鼠標(biāo)和屏幕)。X允許一個顯示器控制多個屏幕(即顯示設(shè)備硬件)。資源(resource):是X window使用的窗口、位圖(bitmap)、字體(font)、調(diào)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 用戶接口與作業(yè)管理
- 接口作業(yè)
- 語義搜索用戶接口研究.pdf
- 操作系統(tǒng)用戶接口實驗
- 面向電力需求側(cè)管理的用戶信息交換接口設(shè)計.pdf
- 智能電網(wǎng)用戶設(shè)備信息接口研究.pdf
- 通力3000電梯lce用戶接口功能模式
- 數(shù)字圖書館用戶接口研究.pdf
- 智能電網(wǎng)用戶接口測試平臺設(shè)計.pdf
- 數(shù)字電視用戶管理系統(tǒng)——數(shù)據(jù)接口系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 數(shù)字電視用戶管理系統(tǒng)及其CA接口的設(shè)計與實現(xiàn).pdf
- 社保系統(tǒng)醫(yī)保接口用戶操作手冊
- linux用戶和組群帳戶的管理
- 實驗三-用戶和組的管理
- 對象安全描述符和用戶訪問令牌接口的設(shè)計與實現(xiàn).pdf
- 鏈路管理協(xié)議及其在光用戶網(wǎng)絡(luò)接口中的應(yīng)用的研究.pdf
- mba論文面向電力需求側(cè)管理的用戶信息交換接口設(shè)計pdf
- 電力用戶能效信息交換接口設(shè)計.pdf
- 手機主板用戶接口自動測試系統(tǒng).pdf
- 北斗衛(wèi)星導(dǎo)航系統(tǒng)用戶終端通用數(shù)據(jù)接口
評論
0/150
提交評論