《作业管理举例说明.ppt》由会员分享,可在线阅读,更多相关《作业管理举例说明.ppt(67页珍藏版)》请在三一办公上搜索。
1、2.5 用户界面举例,2.5.1 作业控制语言,1.命令行2.环境变量,脱机作业控制:用户输入作业说明书,整个作业的运行由系统控制。联机作业控制:通过人-机会话方式控制作业运行。用户登录(控制台登录或远程登录),由系统自动执行一些命令脚本后,并进入shell(字符或GUI界面),接受用户的命令和操作,最后退出系统。,1.命令行,命令行:一行可有一个或多个命令,每次一行,包含一个或多个命令。shell给出提示符时可输入,以回车键提交。如:“ls-a-l”列出当前目录文件列表;命令格式:一个命令可有命令参数,格式包括选项/开关(option/switch)或参数(argument)。如UNIX系统
2、:cp-r doc/tmpargv0,argv1,.(含子目录的文件复制:/tmp为目标地址),命令分类:内部命令和外部命令内部命令:直接由shell本身完成,功能简单、使用频繁;常驻内存,如:DOS的copy命令。外部命令:运行相应的可执行文件,在使用时加载。如:DOS的xcopy命令。命令简化:利用参数替换可简化命令输入,通配符(?,*)用于匹配一组文件名如:UNIX的cp命令:当前目录上有两个1.tar和2.tar时,cp*.tar/tmp等同于cp 1.tar/tmp;cp 2.tar/tmp,2.环境变量,环境变量也可以作为shell参数,如命令提示符的式样,外部命令的查找目录路径等
3、。如:PATH=/bin:/usr/bin:/usr/sbin:.HOME=/home/thisuser环境变量是传递命令参数的另一种途径。如:cd$HOME;环境变量可按名字访问,可以新建、赋值或撤销。有效范围:只对本进程里的环境变量能够直接进行操作,此外,在执行新进程时(UNIX中是exec()调用),可以给出环境变量的初始值,通常就是直接复制当前进程的所有环境变量继承。,环境变量(environment variable)应用进程地址空间中的特殊变量区。,2.5.2 作业管理举例*,2.2.1 MS DOS的作业管理2.2.2 UNIX的作业管理,返回,2.5.3 MS DOS的作业管理
4、,命令分类:内部命令:如dir,cd,copy外部命令:如format,xcopy命令行选项命令行选项通常是:/option;如:/?选项可显示各命令的命令行选项列表。通配符:由外部命令自己处理。如:xcopy*.c.argv1=*.c,2.5.3.1.DOS命令处理程序,(或其他程序如DOS shell):驻留内存,在系统运行期间不再退出。为了给应用程序的执行提供更大内存空间,又分为常驻部分和暂驻部分(可被应用程序覆盖),输入输出重定向和管道(pipe),|,基于临时文件”为输出重定向,“”为添加输出重定向。如:“dir temp.txt”将把“dir”命令在屏幕上的输出保存在新文件“tem
5、p.txt”中;而dir temp.txt将屏幕输出追加在文件temp.txt的结尾。,管道|是将前一个命令的屏幕输出作为后一个命令的键盘输入。如:dir|sort将把dir命令的输出按行进行排序。环境变量set PATH=c:tools;%PATH%原PATH=c:dos 则后PATH=c:tools;c:dos系统引导时加载系统引导时加载:autoexec.bat,2.5.3.2.DOS批处理:由执行,循环:循环执行命令。FOR/R drive:path%variable IN(set)DO command command-parameters遍历根在drive:path上的目录树,在树的
6、每个目录中执行 FOR 语句。如果在/R 后没有指定任何目录规范,那么假设为当前目录。如果 set 仅是一个句号(.),那么它 将仅列出目录树。,有简单的变量替换,有条件转移和跳转、循环和注释语句rem,关于循环的实例,for%字母 in(文件列表)do 命令%字母:命令描述时的某个参数.文件列表:可以是1个文件或多个文件.命令:用户指定.例:c:for%A in(c:,d:)do chkdsk%A依此对C:,D:进行chkdsk命令,%A顺序取C:,D:,如下面批处理将显示当前目录及其子目录所有后缀为ppt的文件名(含路径名);for/R%f in(*.ppt)do echo%f可能的显示结
7、果:C:usersxyongwork2001-02-20 chapter1.ppt C:usersxyongworktemp2001-02-18 chapter1.ppt C:usersxyongworktemp2000-08-09 Linux Lecture2000-08-15 Linux.ppt,分支,IF NOT ERRORLEVEL number commandIF NOT string1=string2 commandIF NOT EXIST filename command NOT 只有在条件为假时,才需运行命令。ERRORLEVEL number 如果最近程序运行返回的退出码等于
8、或大于指定的号码时,则设定条件为真。command 当符合条件时,指定要运行的命令。string1=string2 当指定字符串匹配时,设置条件为真。EXIST filename 当指定文件名存在时,设置条件为真。如:IF ERRORLEVEL 1 goto okay:okayecho okay,2.5.4 UNIX的用户界面,2.2.2.1.shell命令处理程序2.2.2.2.shell批处理,2.5.4.1 shell命令处理程序,1.shell的类型2.初始化文件3.基本特征4.输入输出重定向5.管道6.后台执行7.环境变量和内部变量8.别名9.常用的外部命令,shell的类型,Bou
9、rne shell(/bin/sh)Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的shell 并且在每种 UNIX 上都可以使用。Bourne shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种 shell。Bourne shell 最大的缺点在于它处理用户的输入方面。在 Bourne shell 里键入命令会很麻烦,尤其当你键入很多相似的命令时。,UNIX上有许多种shell,主要功能是相同的,在细节上有一些区别。几种shell 都有它们的优点和缺点。,C shell(/bin/csh)C shell 由 Bil
10、l Joy 所写,它更多的考虑了用户界面的友好性。它支持象命令补齐(command-line completion)等一些 Bourne shell 所不支持的特性。普遍认为C shell 的编程接口做的不如 Bourne shell,但 C shell 被很多 C 程序员使用因为 C shell的语法和 C语言的很相似,这也是C shell名称的由来。,Korn shell(ksh)Korn shell(ksh)由 Dave Korn 所写。它集合了C shell 和 Bourne shell 的优点并且和 Bourne shell 完全兼容。,Bourne Again shell(bash
11、)Bourne Again shell(bash)是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。bash 有几种特性使命令的输入变得更容易。,其他shell除了这些 shell 以外,许多其他的 shell 程序吸收了这些原来的 shell 程序的优点而成为新的 shell。如:tcsh(csh 的扩展)Public Domain Korn shell(pdks
12、h,ksh 的扩展),2.初始化文件,B Shell执行.profileC Shell执行.cshrc和.login两个文件K Shell执行.profile和$ENV两个文件(sh).profile与(csh).login对应,进行注册时的初始化;而在csh在非注册启动时都读入.cshrc;,3.基本特征,内部命令:如cd,exec区分大小写,exec的功能是执行一个命令;外部命令:如ls,mkdir命令行选项通常是:-option如:ls-a-l中的-a表示列出所有文件,-l表示列出所有信息。通配符:由shell处理后再传递给外部命令。如:cat*.c 则argv1=a.c,argv2=b
13、.c,而 cat*.c 则argv1=*.c(cat的功能是读入所有文件,并显示),4.输入输出重定向,和为标准输出重定向;2和2为标准错误输出重定向(2表示标准错误输出的设备号,只对sh有意义);&是标准输出和标准错误输出重定向;,基于内核的缓冲区,行输入重定向:用定界符间的内容作为标准输入。如:下面命令的标准输入为邮件内容。mail user2 WARNING.WARNING,5.管道,管道可以把一系列命令连接起来。第一个命令的输出会通过管道传给第二个命令而作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,以此类推。而管道行中最后一个命令的输出才会显示在屏幕上(如果命令行里使
14、用了输出重定向的话,将会放进一个文件里)。通过管道,可以将多个简单程序组合完成复杂的功能。,如:ls-l|wc-l可给出文件数目。如:“cat sample.text|grep High|wc-l”这个管道将把 cat 命令(列出一个文件的内容)的输出送给grep命令。grep 命令在输入里查找单词 High,grep命令的输出则是所有包含单词 High的行,这个输出又被送给 wc命令。带-l选项的 wc命令将统计输入里的行数。,6.后台执行,如:xterm-display 166.111.68.56:0.0&为在后台启动一个xterm窗口,并显示到主机上。,后台执行:cmd&;,7.环境变量
15、和内部变量,set可给出内部变量列表,env可给出环境变量列表。继承只对环境变量有效。sh:PATH=/usr/bin:$PATH;export PATH注意:在export前为内部变量,之后为环境变量。csh:set setenv PATH/usr/bin:$PATH-注意:在csh中环境变量的赋值(setenv)没有等号,而内部变量的赋值(set)有等号。,内部变量不能被子进程继承(如同C里的局部变量);改环境变量就会自动改内部变量,反之不然。,8.别名,alias 的格式:alias aliasname=string.把 aliasname 直接用来取代后面的 string,如有任何跟在
16、后面的 argument 将会出现的其后。利用该功能,使用者可以将常用却冗长的指令以其他的名字存起。如:alias dir=ls-a-l为ls-a-l定义了一个别名dir;,给复杂命令定义别名:alias/unalias,9.常用的外部命令,man查看手册echo,wc,grep,sed,awk(用于文本扫描和处理),sort,cut(对每行进行特定删除处理)字符串操作;pwd,ls,mkdir,rmdir,cp,rm,mv,ln文件和目录操作;chmod,chown,chgrp(修改文件所在的用户组)文件权限和属主;cat,more,tail(显示文件的最后部分)查看文件;test,expr
17、检测和数值计算;vi全屏幕编辑;,2.5.4.2.批处理,1.变量替换2.条件转移3.循环4.分支5.函数,称为脚本 shell script:注释用#,续行用 解释执行,效率较低;而且要加载外部命令;指定解释执行脚本的程序:#!/bin/sh或#!/opt/bin/perlperl,Practical Extraction and Report Language是一个文本文件分析工具。执行脚本(sh):cmd(cshsource cmd),exec cmd,cmd(sh cmd,sh cmd)source命令是运行tcl脚本;exec是用指定命令新建shell,以取代当前shell;sh命令
18、是运行sh脚本。,1.变量替换,如:下面是一个变量定义和引用的例子:temp=test messageecho$tempecho AAA$tempBBBecho CCC$tempDDDecho$temp,变量赋值格式:变量名=值值串中包括空格、制表符或换行符时,值要放在号内;变量引用格式:$变量名如引用前后紧接其它字符,引用方式为:$变量名或$变量名;$variable,双引号:“进行变量替换”,单引号:不作任何替换;,其运行结果为:test messageAAAtest messageBBBCCCtest messageDDD$temp,2.条件转移,if command;then.;els
19、e.;fi,例:#调用test命令,注意:方括号和判断条件之间必须有空格!#下面脚本在有参数时显示Have arguement(s),无参数时显示No arguement;#其中,a$1=a 用于判断$1是否为空串;if a$1=a;then echo No arguement else echo Have arguement(s)fi,运行结果为:xyongwell/work./temp.txtNo arguementxyongwell/work./temp.txt weHave arguement(s),例:#下面脚本在命令行参数个数不对(其中,test$#=4测试命令行参数个数是否为4)
20、,提示出错信息;if test$#=4;thenecho$4$3$2$1elseecho$0 usage:arg1 arg2 arg3 arg4fi,运行结果如下:xyongwell/work$./temp.txt./temp.txt usage:arg1 arg2 arg3 arg4xyongwell/work$./temp.txt a b c dd c b a,3.循环,while 1;do.;done,例:#下面脚本在文件lockfile可读时每暂停5秒重复测试一次(其中,test-r lockfile判断文件lockfile是否存在);while test-r lockfile;dos
21、leep 5done运行结果为:有文件lockfile时,脚本一直不结束;直到该文件被删除后,脚本才结束。,4.分支,基于模式匹配的多路分支结构,它依据word的不同,执行不同的命令序列;case word in pattern1)pat1-list;pattern2)pat2-list;esac,例:#下面脚本依据命令行参数的不同,显示不同内容;case$1 in*.c)echo C:$1;*.a)echo A:$1;*.f)echo F:$1;esac,运行结果如下:xyongwell/work$./temp.txt c.aA:c.axyongwell/work$./temp.txt c.
22、cC:c.cxyongwell/work$./temp.txt c.fF:c.f,5.函数,例:#这里$*和$1是new_func的参数,而$0为脚本的参数)new_func()echo$*echo$1 new_func$0 arg2运行结果为:xyongwell/work./temp.txt asb./temp.txt arg2./temp.txt,图形用户接口(GUI,GRAPHIC USER INTERFACE),2.4.1 概述2.4.2 MS Windows*2.4.3 X Window*2.4.4 事件驱动模式(event-driven)*,返回,在命令行方式下,用户与操作系统的交
23、互要求用户记忆命令格式。在图形用户接口方式下,用户可利用鼠标对屏幕上的图标进行操作,完成与操作系统的交互,从而减少记忆内容,方便用户使用。它的技术基础是高分辩显示器和鼠标。,1 概述,1.窗口系统(window system)的特点2.窗口系统的图形元素及其状态3.窗口管理器(window manager),1.窗口系统(window system)的特点,利用图形元素表示功能:同屏多窗口与并发进程相对应:输入方式:鼠标指针点击一致的图形元素风格优点:操作直观交互的并发性好、传递信息量大,2.窗口系统的图形元素及其状态,窗口(window):屏幕上的矩形区域(可以通过掩模mask来显示任意形状
24、)包括:标题条(title bar)、边框(border)、窗口角(corner)、系统菜单框(system menu box)、最大化/最小化按钮(maximize/minimize)、滚动条(scroll bar)等状态:当前/非当前窗口(active/inactive)接受输入,最大化/最小化/恢复原大小(restore),窗口的前后遮盖Z轴,焦点(focus)接受键盘输入(而非鼠标)桌面(desktop)和墙纸(wallpaper)图标(icon):,鼠标指针(mouse pointer):按钮(button):菜单(menu):对话框(dialog box):,3.窗口管理器(win
25、dow manager):形成统一的使用风格,处理窗口的普遍特性,如:窗口的大小、位置(窗口的标题条、边框、控制菜单框)窗口中由应用程序管理的部分称为客户区(client area)协调各窗口间的相互关系,如:窗口之间的前后遮盖关系,桌面,MS Windows,1.特点2.MS Windows结构3.基本概念4.消息处理:两种方法,1.特点,是OS 的一部分,提供默认的窗口风格(如菜单、对话框)除Windows2000外,窗口应用程序只能在控制台(本地)执行。,2.MS Windows结构,OS系统服务(KERNEL):内存管理、程序加载(包括DLL)、任务调度、文件管理用户接口(USER):
26、窗口和消息管理,以及菜单、控制、对话框、定时器等图形设备接口(GDI,Graphic Device Interface):管理显示器,为USER与应用程序提供与硬件设备独立的接口,可分成三个部分。,3.基本概念,消息(message):消息作为窗口的输入,如用户操作、其他窗口或系统发出的请求或通知。窗口过程(window procedure):消息由各窗口自己的窗口过程来作处理。窗口过程的调用参数:接收窗口句柄(可以在多个窗口共用一个窗口过程时加以区分)、消息ID(消息的类型)、消息参数(16+32位或32+32位值,整数或指针)还可以取得消息的发生时间和屏幕坐标,4.消息处理:两种方法,排队
27、消息:放到进程(线程)的FIFO消息队列里。如应用程序发送的消息,系统的鼠标、键盘、定时器、窗口绘制和退出等。排队消息所用的API:发送消息到消息队列PostMessage;从消息队列读取消息GetMessage,PeekMessage;分发一个消息到相应窗口DispatchMessage;非排队消息:直接发送到指定窗口的窗口过程。非排队消息所用的API:SendMessage,直到接收方窗口过程处理完才返回接收方正处于GetMessage,而接受并处理SendMessage送来的消息之后,仍处于GetMessage。为防止死锁,一般要:if(InSendMessage()ReplyMessa
28、ge(TRUE);,消息循环:不断移出消息,并加以处理。用户不作处理的消息,应传给默认窗口过程加以处理:DefWindowProc()WM_PAINT消息:通知窗口客户区中的某部分(region)已被改变,应用程序应该对其重新绘制。总是被排在线程消息队列的最后,并且多个WM_PAINT消息中的region会自动被合并为一个。,X Window,1.特点2.X Window的结构3.基本概念4.X lib和工具箱(toolkit)5.X Window的使用,Client-Server结构:X client和server都是应用程序一个server可以为不同计算机上的多个client提供服务,se
29、rver对有关I/O设备具有访问权一个client也可以连接不同计算机上的多个server显示设备独立性和支持多种网络协议:(在TCP/IP,DECnet之上的X protocol)X不是计算机操作系统的一部分:其他大部分窗口系统都是以OS核心为基础的,如:MS Windows,Macintosh,SunView支持自由风格(policy free):只提供机制不提供风格;包括窗口管理器、菜单、按钮、滚动条等的管理和操作,如:Motif,Open Look,Tcl/Tk等,1.特点,2.X Window的结构,X Window的结构,各client、窗口管理器和X server可以在一台或多台
30、计算机上用户对server所控制设备的操作都使server发送事件(event),如:鼠标移动、点击,键盘输入;事件是一个数据块,内容包括:事件类型、相关的窗口等client对来自server的事件进行处理,然后向server发送请求(request),如:窗口操作、显示图形或正文X protocol使用的传送信道:异步字节流。server不断发送事件而由client中的先进先出FIFO队列加以缓冲,client不断发送请求而由server中的FIFO队列加以缓冲。,X Window的队列,3.基本概念,屏幕(screen)和显示器(display):屏幕指显示设备硬件,而显示器指X serv
31、er(及其控制的键盘、鼠标和屏幕)。X允许一个显示器控制多个屏幕(即显示设备硬件)。资源(resource):是X window使用的窗口、位图(bitmap)、字体(font)、调色板(color map)和其他数据结构的总称。资源在X server中创建和存储,按照client的请求来加以管理,而client退出时撤销对应的资源。通过资源标识(resource ID,整数类型)来标识不同的资源(包括系统资源)资源的自身不体现风格窗口树:层次,子窗口只显示出被父窗口剪切(clip)的区域,4.X lib和工具箱(toolkit),X lib函数库,将接收到的X protocol转换为事件,并
32、将请求转换为发送X protocol。其代码链接在X client中。如:打开显示器:XOpenDisplay(char*display_name)与X server建立连接取得X connection的文件描述符:XConnectionNumber(),X toolkit:提供各种构件的例程库,便于用户使用,体现不同的风格。如:Motif,Open Look,Tcl/Tk构件的数据结构存储在X clientXt Intrinsics:对构件的管理和操作,如:建立和撤销widget、管理资源(包括widget的初始值)、处理事件并调用相应的处理程序(回调过程call-back)widget s
33、et:构件集合构件类(widget class)和构件实例(widget instance),构件(widget):由多个资源(最终是resource ID)复合而成,具有特定外观和功能的部件,如:按钮、菜单和滚动条如同建筑上的预制件。本质是:对某些事件给出了默认响应(通常是改变外观),并可以挂接回调过程来进行用户定义的处理,方便用户使用。如Tcl/Tk:button.app.button2-image icon2-command incr x0各个widget也构成widget tree,最顶层是top-level widget(在toolkit初始化时建立)editres命令:查看widg
34、et tree,并对X 应用进程中的资源进行动态修改,5.X Window的使用,1)本地,起动X server2)本地,允许访问X server:xhost+hostC3)本地,发起远程登录:telnet hostC并输入用户名和口令4)远地,运行X终端程序:/usr/openwin/bin/xterm-display hostS:0.0/usr/openwin/bin/xterm&5)本地,在 xterm窗口内输入命令行,可以起动其他X client程序,如:xclock,远程登录,X server机为hostS(本地用户),client机为hostC(远地),事件驱动模式(event-d
35、riven),1.面临的问题2.事件驱动模式3.分发驱动模式4.举例,1.面临的问题,若C1,C2,C3在判断时是阻塞式(blocking),则一个分支在阻塞等待时,使得其他两个即使条件具备也不被立即执行若C1,C2,C3在判断时是非阻塞式(non-blocking),则C1,C2,C3不间歇地反复查询,CPU开销大,几个处理分支在各自条件下,间歇地、重复地执行,次序不确定。如:While(!done)if(C1)P1;/*C1:管道1可读*/if(C2)P2;/*C2:管道2可写*/if(C3)P3;/*C3:定时器的时间到*/,事件驱动模式,While(!done)NextEvent(Ev
36、ent);/*获取下一个事件,若无事件则等待直到有事件*/switch(Event.Type)case C1:P1;case C2:P2;case C3:P3;,将多路判断和等待汇集为一路UNIX系统中相应的系统调用或库函数为:select()(Solaris 2.3库函数,Linux系统调用),poll()(Solaris 2.3系统调用)特点:节省运行CPU开销无事件时等待而不是反复查询,有事件时才处理当处理分支较多时,switch语句变得复杂和不易掌握,3.分发驱动模式,特点:通过对象管理机构(如X toolkit)创建多个对象或构件,输入事件通过对象各自的回调过程(call-back
37、procedure)来处理通过对象管理机构,将输入事件分发给适当的元素无须了解分发过程的实现,CreateObject(object1,P1);CreateObject(object2,P2);CreateObject(object3,P3);While(!done)NextEvent(Event);/*获取下一个事件,若无事件则等待直到有事件*/Dispatch(Event);/*分发事件给相应的回调过程*/,4.举例,MS Windows的消息处理:,WinMain(.)CreateWindow(MainWndClass,SampleName,.);/*窗口过程的人口指针包括在WNDCLA
38、SS结构中,通过RegisterClass注册窗口类*/while(GetMessage(,X Window的事件处理:Xt Intrinsics,main(.)topWidget=XtAppInitialize(.);XtRealizeWidget(.);while(1)/*这里的while循环等价于XtAppMainLoop 函数*/XtAppNextEvent(.,小结,作业组织和控制:脱机、联机(命令行)系统调用:与普通过程调用的区别、与高级语言函数库的区别、实现过程作业管理举例:DOS、UNIX(shell)图形用户接口(GUI):概述、X Window、MS Windows、事件驱动模式,谢谢!,Thank you,