版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章用户与操作系统的接口2.1作业控制级接口2.2程序级接口2.3UNIX的用户界面Shell简介第二章用户与操作系统的接口2.1作业控制级接口12.1作业控制级接口2.1.1作业、作业步、作业流所谓作业就是用户一次请求计算机系统为它完成任务所进行的工作总和。一般来说为了完成其任务,可以将作业细分成若干个作业步。作业步就是处理作业的各个独立的子任务,系统可以创建若干进程完成各作业步的计算,所以说一个作业是由若干作业步组成的。2.1作业控制级接口2.1.1作业、作业步、作业流2以在PC机上用MS-DOS控制时,其作业加工的步骤为例:(1)编辑:A>EDLINUSER.ASM(2)汇编:A>MASMUSER(3)链接:A>LINKUSER(4)执行:A>USER最后执行USER.EXE文件获得所要的结果。以在PC机上用MS-DOS控制时,其作业加32.1.2作业的类型根据计算机系统的作业处理方式不同,可把作业分成两大类:脱机作业联机作业。2.1.2作业的类型42.1.3作业控制命令与键盘操作命令1.脱机用户接口脱机用户接口由一组作业控制命令,或称作业控制语言组成。脱机用户接口用于脱机控制方式。所谓脱机控制方式就是把对作业进行控制的意图,连同程序和数据及发生故障后的处理措施一起输入系统中,由系统根据该意图来控制作业的执行。在批处理系统中,用户利用作业控制(命令)语言写成作业说明书提交给系统,由系统按照作业说明书上的命令,逐条解释执行。用户一旦把作业提交给系统后,便失去直接与作业交互的能力。2.1.3作业控制命令与键盘操作命令1.5(1)作业控制卡。作业控制卡主要用在早期的批处理系统管理中。作业控制卡接口方式就是使用作业控制语言(JCL)将用户对作业的控制意图及发生故障后如何处理以编码的形式穿孔在卡片上,插入到用户程序、数据的卡片叠中一起送入系统,由系统解释控制卡内容并控制作业运行。作业控制卡方式使用不方便,容易出错且较麻烦,所以现在一般很少使用。(1)作业控制卡。作业控制卡主要用在早期的6(2)作业说明书方式。作业说明书方式是使用某些作业控制命令将用户对作业控制的意图写成作业说明书,从而实现对作业的控制。作业说明书主要包括作业情况和作业资源要求两方面的内容,前者主要指用户名、作业名、使用语言、作业控制方式、作业优先级、完成作业的最迟时间等。后者包括内存和外存的空间要求量、输入/输出设备的类型、台数、输出量、估计的计算时间等。(2)作业说明书方式。作业说明书方式是使用某7作业说明书中常用命令的主要类型如下:①输入/输出命令:对源程序、数据及其作业说明书的输入及其运行结果输出的命令。②编译命令:对源程序进行编译,若有错误显示错误,若无错误将其编译成目标程序。③操作命令:主要是对作业操作的各种命令。如对目标程序的装配,程序的重新启动,限定其运行时间等的命令。④条件命令:主要用于表示当程序运行过程中发生某个事件时应转向哪一条操作命令。作业说明书中常用命令的主要类型如下:82.联机用户接口联机用户接口是由一组操作系统命令组成,用于联机作业的控制。1)命令驱动方式COMMANDarg1,arg2,...,argn<CR>其中,COMMAND是命令名,arg1,arg2,...,argn是命令参数,命令参数的有无和多少由命令本身决定。<CR>代表回车键,一般作为命令的结束符。只有按下回车键,该命令才能被系统接收。2.联机用户接口联机用户接口是由一组操作9一般命令类型有如下几种:①系统访问命令②编辑和文件管理命令③编译、汇编和连接命令④调试命令⑤维护管理命令⑥其它命令一般命令类型有如下几种:102)窗口系统与菜单驱动方式在运行Windows时,其操作都是在桌面上进行。桌面是指整个屏幕空间。该桌面是由多个任务所共享。每个任务都通过它的窗口显示其操作和运作情况。因此Windows允许在桌面上同时出现多个窗口。窗口由标题栏、菜单栏、图标等组成。用户可以利用鼠标和/或键盘,通过窗口对应用程序进行操作。这样,窗口就成为用户与操作系统、应用程序之间的接口。为了减轻使用者记忆命令功能和用法的负担,可在窗口中使用“菜单”驱动方式。2)窗口系统与菜单驱动方式在运行Wind113)命令文件方式将键盘操作命令按用户要求的执行顺序组成一个命令文件,执行此命令文件,就能自动控制作业的运行,这对一些重复作业的运行很有好处。MS-DOS操作系统中的批处理文件就属于命令文件方式。它实际上实现了联机状态下的批处理操作。3)命令文件方式122.2程序级接口
2.2.1管态与算态
在计算机系统中存在两类不同的程序:一类是用户程序,一类是系统程序。而且用户程序必需在系统程序的控制和管理下运行。为了使计算机有条不紊地工作,保证系统的安全,在运行过程中对这两类不同的程序应该予以区分。我们把用户工作的状态称为算态或用户态;将系统程序工作的状态称为管态或系统态。2.2程序级接口2.2.1管态132.2.2特权指令与访管指令我们把只允许管态下使用的指令,称之为特权指令。常见的特权指令有以下几种:(1)有关对外设使用的指令(2)有关访问程序状态的指令(3)存取特殊寄存器指令(4)其它指令2.2.2特权指令与访管指令我们把只允许14用户程序在算态下运行,只能使用算态指令,而操作系统是系统程序,在管态下运行,它既可使用算态指令,也能使用特权指令,而用户要使用外设,必须在管态下完成,所以就引入了访管指令,其主要功能为:①实现从算态到管态的改变;②在管态下由操作系统代替用户完成其请求;③操作系统工作完成后由管态返回到算态。用户程序在算态下运行,只能使用算态指令,而操152.2.3系统调用1.系统调用的定义系统调用是为扩充机器指令、增加系统的功能、方便用户使用而提供的。因此,在一些计算机系统中,把它称为“广义指令”。但“广义指令”是不同于机器指令的。在汇编程序中,用户可以直接使用系统调用。若使用高级语言编写程序时,是由编译程序将高级语言中的有关资源操作的语句变换为相应的系统调用。2.2.3系统调用1.系统调用的定义162.系统调用与过程调用的区别(1)运行在不同的系统状态。
(2)通过软中断进入。2.系统调用与过程调用的区别(1)运行在不同的系统状态172.2.4系统调用类型1.进程控制(1)fork()创建一个与当前进程完全相同的拷贝(2)exit(intstatus)终止正在执行的进程,关闭所有被打开的文件描述符 并向其父进程返回状态(3)waitpid(pid,,&statloc,opts)等待一个子进程结束(4)execv(filename,argv,envp)替换一个进程的核心映像(5)getpid()返回调用进程的标识符(6)wait()等待子进程waitpid()等待指定进程,wait3()和wait4()等价于wait()与waitpid()(7)select()提供多任务处理的简便方式2.2.4系统调用类型1.进程控制182.进程通讯(1)signal()指定进程在收到信号时所做的控制信号 处理(2)kill(intpid,intsig)把sig信号送到pid指定的进程(3)pause()使调用进程挂起暂停执行,直到接收到某 种信号为止2.进程通讯193.文件管理(1)open(constchar*pathname,intflage,open(constchar*pathname,intflage,mode-tmode)打开文件(2)close(intfd)关闭相应的文件描述符(3)read(intfd,void*buf,size-tcount)用来从相应于文件描述符的文件中读出数据(4)write(intfd,void*buf,size-tcount)用来向相应于文件描述符的文件中写入数据3.文件管理(1)open(constchar*p20(5)ioctl(intfd,intrequest,...)设置或检索文件的有关参数,并对文件进行一些其它的操作,涉及的设备不同,其参数也不同(6)fcntl(intfd,intcmd),fcntl(intfd,intcmd,longarg)与ioctl()相似,不同的是fcntl用来设置或检索另外一组参数(7)fsync(intfd)把要写入文件描述符fd中的所有数据刷新到此盘或其他相关设备去(8)ftruncate(intfd,size-tlength)将由文件描述符fd引用的文件按length指定的长度截断(5)ioctl(intfd,int21(9)lseek(intfildes,off-toffset,intwhence)设置与文件描述符fildes相关的文件的当前读写位置到指定的位置offset(10)dup(intoldfd)返回一个未用的最小的文件描述符dup2(intoldfd,intnewfd)返回指定的文件描述符,常用来重新打开或重定向一个文件描述符(11)select(intn,fd-set*readfds,fd-set*writefds)允许一个进程同时在多个文件描述符上具有一个可选的传输等待时间。只要在指定的文件描述符中有一个文件可以进行操作,该调用就返回(9)lseek(intfildes,o22(12)fstat(intfiledes,stcuctstat*buf)获取与文件描述符相关的文件信息,返回的信息放在由参数buf所指向的stat结构中(13)fchown(intfd,uid-towner,gid-tgroup)修改一个打开文件的属主和组(14)fchmod(intfildes,mode-tmode)修改与参数fildes相关的文件模式(权限位)(15)fchdir(intfd)把目录修改为与打开的文件描述符fd相关的文件所在的目录(16)flock(intfd,intoperation)对文件描述符引用fd的文件的上锁或解锁(17)pipe(intfiledes[2])创建管道,并返回两个文件描述符(12)fstat(intfiledes234.目录及文件系统管理(1)mkdir(name,mode)创建一个新目录(2)rmdir(name)删除目录(3)mount(special,name,flag)安装一个文件系统(4)umount(special)拆卸一个文件系统(5)chdir(dirname)改变工作目录(6)chroot(dirname)改变根目录4.目录及文件系统管理245.维护信息(1)chmode(name,mode)改变文件的保护位(2)getuid()获取调用进程的uid(3)getgid()获取调用进程的gid(4)setuid()设置调用进程的uid(5)setgid()设置调用进程的gid(6)chown(name,owner,group)改变文件的属主和组5.维护信息25
6.时间管理(1)settimer()设置一个计时器(2)timer()获得时间6.时间管理267.网络通讯服务(1)accept(socket,addr,addrlen)从连接请求队列中取走下一个请求,并为该请求创建一个新套接字,返回新套接字描述符(2)bind(socket,localaddr,addrlen)为一个套接字指明一个本地IP和协议端口号(3)close(socket)中止通讯,并删除套接字(4)connect(socket,addr,addrlen)允许调用者为先前创建的套接字指明远程端点的地址(5)listen(socket,queuelen)准备接受联入的请求(6)send(sockfd,*msg,len,flags)通过套接字接口发送信息(7)recv(sockfd,*buf,len,flags)通过套接字接口接受信息7.网络通讯服务272.2.5系统调用的使用和执行过程1.使用步骤(1)将系统调用所需的参数和参数的首址送到规定的通用寄存器。(2)设置一条调用指令(比如“访管”指令或“软中断”指令)。系统调用命令的功能号,有的系统直接在调用指令中给出,有的系统也作为调用命令的参数放入到指定的通用寄存器中。2.2.5系统调用的使用和执行过程1.282.执行过程(1)为执行系统调用命令作准备,将用户程序的“现场”保留,同时将系统调用编号、参数等放入约定的存储单元中。(2)根据系统调用命令号,检查是否为合法的系统调用。若是,根据系统调用表和系统调用号,转入相应的系统调用函数。(3)系统调用命令执行完后,恢复“现场”,同时将系统调用命令的返回参数或参数区首址送到系统约定的寄存器中供用户程序使用。2.执行过程292.3UNIX的用户界面Shell简介2.3.1Shell命令语言1.命令结构以命令pr为例,开关-d表示产生行间距为二的输出,n表示产生行号。以下两种形式是等价的:$prndfile1$prndfile1又如:$date;who这两条命令分别打印或设置系统日期和时间,查看其它登录的用户。2.3UNIX的用户界面Shell简介2.3.1S302.Shell元字符?匹配文件名中的任何单个字符()括号中的内容理解为一条命令&后台执行命令$0,$1,...$n替换命令行中的参数$VarShell变量Var的值;命令表的分隔符2.Shell元字符?31′comd′执行反引号中的命令,并在输出时用该命令执 行的结果替换命令部分Var=V将值赋给Shell变量comd1||comd2如果不成功执行命令comd2,否则执行comd1comd1&&comd2如果不成功执行命令comd1,否则执行comd2#忽略所有在#之后的内容(即#是注释符)例如:$who|grepmike||echowangisnotloggedin如果who和grep指出用户mike未注册,这条命令执行失败,显示echo命令后的信息。若用户mike在线登录,则将打印出用户mike的信息。′comd′执行反引号中的命令,并在输出时用该命令执 323.Shell变量在Linux中,用户可以设置自己的环境,特定的Shell环境是由一些变量和这些变量的值来决定的,我们称这些变量为Shell变量。一个Shell变量是一个标识字符串,它的值可以是一定范围内的字母和数字。Shell变量分为两类:标准Shell变量和用户自定义的变量。3.Shell变量334.Shell常用命令(1)Password 更改帐号密码(2)Man 联机帮助(3)rlogin主机名[l用户名] 远程登录(4)ls[atFlgR][文件名]列出文件和当前目录下的文件名-a列出以“.”开始的文件名-t依照文件最后修改时间的顺序列出文件名-F列出当前目录下的文件名及其类型-l列出目录下的所有文件的详细信息-lg同-l,并显示文件所有者工作组名-R显示目录下及其所有子目录的文件名4.Shell常用命令(1)Password 更改34(5)Cd[路径名文件名] 改变工作目录(6)cp[-r]源文件目的文件 复制文件(7)mv源文件目的文件 更改或移动文件或目录名称(8)mkdir目录名 建立新目录(9)rmdir目录名或rm目录名 删除文件(10)Pwd 列出当前所在的目录位置(11)cat文件名 连接并查看文件(12)more文件名或cat文件名|more分页查看文件内容(13)du[-s]目录 查看目录所占用的磁盘容量(5)Cd[路径名文件名] 改变工作目录35(14)rcp[-r]源地址主机名:目的地址文件传输(拷贝文件 或目录至远程工作站)rcp[-r]主机名:源地址目的地址文件传输(自远程工作 站拷贝文件或目录)ftp主机名或ftpIP地址文件传输(本地工作站与远程工作 站之间文件传输)(15)chmod[-R]模式文件名或目录名改变文件或目录的读、写、执 行权限chmod[-R]用户名文件名或目录名改变文件或目录的所有权限(16)Groups 检查自己所属的工作组名称(17)chgrp[-r]工作组名文件名或目录名改变文件或目录工作组所有 权限(14)rcp[-r]源地址主机名:目的地址文件传输36(18)ln老文件名新文件名 文件的链接(19)grep字符串文件名 文件中字符串的查找(20)whereis命令 显示命令的路径which命令 显示命令的路径,及使用者所定义的别名whatis命令 显示命令功能的摘要(21)findsearch-path-namefilename-print 搜索指定路径下某文件的路径find/name文件名-print从目录的根开始搜索想要的文件与目录(22)diff[-r]文件名1文件名2比较文件或目录的内容(23)lpr[-p打印机名]文件名一般文件的打印(24)troff[-p打印机名][-man][-ms]文件名troff文件的打印(18)ln老文件名新文件名 文件的链接37(25)lpq[-p打印机名]检查打印机状态、打印作业顺序号和用户名lprm[-p打印机名]用户名或作业编号删除打印机内的打印作业(用户只可以删除自己的打印作业)(26)进程控制命令ps[-aux] 查看系统中的进程-au 查看系统中属于自己的进程-x 查看系统中所有用户的进程-aux 查看系统中包含系统内部及所有用户的进程kill[-9]PID结束或终止进程(PID为利用ps命令所查出的进程号) 命令&在后台执行进程的方式jobs查看正在后台中执行的进程kill%n结束或终止后台中的进程(25)lpq[-p打印机名]检38(27)Shell变量set 查看Shell变量的设定值set 变量=值设定Shell变量unset 变量删除Shell变量(28)环境变量setenv 查看环境变量的设定值echo$ 环境变量显示指定的环境变量NAME的设定值setenv 环境变量word设定环境变量unsetenvNAME删除环境变量(29)别名命令alias 查看自己目前定义的所有命令及所对应的别名alias 命令查看指定的命令的别名alias 命令‘命令行’定义命令的别名unalias 别名删除所定义的别名(27)Shell变量39(30)历史命令sethistory=n 设定命令记录表的长度history 查看命令记录表的内容!! 重复执行前一条命令!n 重复执行命令记录表编号为n的命令!!:p 显示前一条命令的内容(31)文件压缩命令compress文件名 压缩文件compressdir目录名 压缩目录uncompress文件名 解压缩文件uncompressdir目录名 解压缩目录(32)命令1|命令2 将命令1的执行结果送到命令2,作为命令2的 输入(30)历史命令40(33)输入/输出控制命令<文件 将文件作为命令的输入命令>文件 将命令的执行结果送至指定的文件中命令>!文件 将命令的执行结果送至指定的文件中, 若文件已经存在,则覆盖命令>&文件 将命令执行时屏幕所产生的任何信息 写入指定的文件中命令>>文件 将命令执行的结果附加到指定的文件中命令>>&文件 将命令执行时屏幕所产生的任何信息附 加到指定的文件中(34)查看用户名who或finger 查看系统中的用户whoamI 查看登录时的用户名whoami 查看当前的用户名,如已执行过su命令, 则显示出此用户的用户名(33)输入/输出控制41(35)su用户名 改变用户名(36)rusers 查看当前系统上所有工作站的用户(37)talk用户名@主机名或用户名@IP地址与某工作站上的用户交谈(38)ping主机名或pingIP地址 检查远程系统是否正常(39)电子邮件使用mail-s“主题”用户名@地址<文件将文件当作电子邮件的内容送出mail用户名 传送电子邮件给本系统用户mail用户名@接受地址 传送电子邮件至外地用户(35)su用户名 改变用户名425.其它命令1)后台命令用C编译把C语言源文件编译成目标文件时,若命令中使用了任选项o,就可以使目标文件具有指定的文件名,若不使用的话,得到的目标文件名将是a.out。为了提高系统和用户的工作效率,可以让执行较长而且执行过程中不一定需要与用户进行交互作用的命令,放在后台执行。此时只要在命令后加一个后台命令运算符“&”,Shell解释程序就不再等待执行此命令的子程序结束,便开始处理下一条命令。5.其它命令43例如:ccfile1.c;edfile2.cccfile1.c&edfile2.c这两组命令中,前一组是编译file1.c结束后才开始编辑file2.c。后一组编译file1.c的工作在后台进行,而前台可同时编辑file2.c。例如:442)环境变量Shell提供了对环境变量的维护能力。环境变量的表示形式为“名字=值”的字符串。其中“名字”可以是不包含美元符且没有空格的任何字符串。“值”可以是含空格的任意字符串。许多环境变量都与用户登录标识紧密相连,并与系统内已安装的软件以及用户的习惯有关。用户设置一个环境变量时,需要向Shell提供一对“名字=值”的具体内容,如:$SAMPLE=“Howareyou?”2)环境变量45习惯上环境变量名都用大写字母表示。如果“值”包含空格则必须用双引号括起来。环境变量不用预先说明,如果环境变量已存在则覆盖原来的值,不存在Shell就建立之,供以后使用。环境变量的变量名前应冠以美元符号($),这样Shell才能识别出随后的环境变量并取其值;否则将其视为纯字符串。用echo(回显)命令可以显示环境变量的值,如:$echo$SAMPLE回显:Howareyou?$echoSAMPLE
习惯上环境变量名都用大写字母表示。如果“值”46回显:SAMPLE$XYZ=“catfilename1”$echo$XYZ
将执行命令$catfilename1用env或set命令可以显示当前已经赋值的所有环境变量。用echo显示不存在的环境变量时,将什么都不显示。环境变量PSI(promptsymbol,levelone,第一级提示符)的内容是Shell提示符,普通用户的PSI值为美元符“$”。我们可以通过修改PSI的值来改变提示符。回显:473)输入输出重定向一般Shell的标准输入、输出设备分别为终端的键盘和显示器。但用户可同时指定文件或其它设备作为Shell的输入、输出设备,这称为输入、输出重定向。例如ls命令是在终端屏幕上列出当前目录内容。而命令:$ls>file则是输出重定向。这时,当前目录的内容不再列到显示器上而是送入文件file中。如果file文件不存在,则建立之,否则先将原文件长度截短为0。命令:3)输入输出重定向48$lsfile也是输出重定向,它将当前目录内容送入文件file中。如果file文件不存在,则建立之;若file存在,则输出到文件file的末尾。又如命令:$catfile1file2>/dev/lp也是输出重定向。/dev/lp是一个特别文件,它代表行式打印机。此命令顺序地把file1,file2的内容打印出来,而不再显示在屏幕上。标准输入也可以重定向。例如命令:$wc<file$lsfile49标准输入和标准输出还可以同时重定向。例如:$a.out<file1>file2此命令的功能是执行目标程序a.out,以file1为标准输入,以file2为标准输出。标准输入和标准输出还可以同时重定向。例如:504)管道命令管道实际上是连接两个用户进程的一个中间文件,一个进程负责向它写入,另一个进程负责由它读出。系统专门为管道中的信息传送提供了自动同步,即接收进程将自动地按照发送进程发送的次序来接收信息。除了在程序级可使用pipe系统调用外,用户还可以在作业控制级直接使用Shell的管道命令,这只要在两条命令之间加上管道符“|”即可。例如命令:$catfile1file2|wc4)管道命令管道实际上是连接两个用户进程的51此命令把file1,file2连接后产生的文件作为wc命令的输入,即在屏幕上显示出file1和file2连接之后的总行数和总字数。它相当于如下命令序列:$catfile1file2>file3$wc<file3$rmfile3Shell除了简单命令、后台命令、标准输入输出重定向命令、管道命令之外,还可以构成组合命令(即命令表command-list),支持“?”、“*”、“[...]”等文件名参数的匹配方式以及特殊字符的转义等。此命令把file1,file2连接后产生的文件作为wc命令525)命令返回值除了标准输入和标准输出外,所有Shell命令都会返回一个不可见的数字返回码,命令成功结束时返回值为0,否则返回一个非0值(1~255),每条命令对于不同的失败情况都有不同的返回值。使用$?可以查看该返回值,如:$echo$?05)命令返回值536)反引号操作符(′)一条命令的标准输出也可以赋予环境变量,此时需要使用反引号操作符。使用这种方法时必须谨慎,因为环境变量内容的长度最多为256个字符,所以命令的返回值不能超过256个字符。$SAMPLE=′echo$LOGNAME′$echo$SAMPLEuser1$6)反引号操作符(′)547)其它Shell提供了一些操作符(;),可将多条命令组合为一条命令。$ls;echo$SAMPLEfilename1filename2user1$7)其它552.3.2Shell过程Shell不仅可以从终端上读入命令行,而且可以从文件中读入命令行并逐个解释执行文件中的命令。用Shell命令语言编制成的程序文件称为Shell过程。Shell过程中除包括各种合法命令外,还可以包括类似于一般程序设计语言中的控制流语句,如条件选择语句if-then-else,分支语句in-case,循环语句for-do,while-do,until-do等等。另外,在Shell过程还可以设置Shell变量。如:$shfile[args...]<CR>2.3.2Shell过程Shell不仅56其中,file是Shell过程文件,sh表示调用Shell解释程序来执行此过程。方括号中是参数,它们可以传送到Shell过程中的指定位置。而在Shell过程中,用$1引用第一个参数,用$2引用第二个参数,这里$1,$2,....$9,称为位置变量,最多可有9个。例如,名为shihwork的过程文件包含下列语句: catshih.c ;显示文件shih.c ccshih.c ;编译shih.c,生成目标文件a.out mva.outship.o ;将a.out换名为ship.o ship.o ;执行ship.o目标代码文件则命令:$shshihwork其中,file是Shell过程文件,sh表示57将使Shell解释程序执行shihwork过程,从而完成shih.c文件的显示、编译和执行的全套工作。但这种形式的过程文件显然缺少灵活性,如果要显示、编译和执行的不是shih.c而是其他的C语言源程序(例如wang.c),就无法使用该过程文件,而要重新编写一个过程文件。如果我们在过程文件中使用位置变量,将文件改写成:
cat$1;cc$1;mva.out$2;$2;将使Shell解释程序执行shihwork过程,从而完成s58那么,这一过程就有了通用性。若新过程文件取名为uniwork,则只要过程名之后带有不同的位置参数,就可分别编译和执行不同的源文件。例如,可分别使用这样两条命令:$shuniworkshih.cshih.o<CR>$shuniworkwang.cwang.o<CR>这里,第一条命令执行uniwork过程时,shih.c参数代入位置变量$1,将shih.o代入位置变量$2,其情况就如同shihwork过程执行一样。第二条命令执行uniwork过程时,用wang.c代替$1,用wang.o代替$2,不用另编过程文件,即可完成对wang.c源程序的编译和执行工作。那么,这一过程就有了通用性。若新过程文件取名为uniwork59如果使用Shell提供的流程控制语句,可以编制出控制性很强的Shell过程。例如名为loop-dump的过程文件有如下内容:
forido if"$1"=""exit; echo$1$2$3$4$5$6$7$8$9; shift;done如果使用Shell提供的流程控制语句,可以60例如,以如下方式执行loop-dump过程:$shloop-dumpabc<CR>则执行结果将显示:abcbcc例如,以如下方式执行loop-dump过程:61第二章用户与操作系统的接口2.1作业控制级接口2.2程序级接口2.3UNIX的用户界面Shell简介第二章用户与操作系统的接口2.1作业控制级接口622.1作业控制级接口2.1.1作业、作业步、作业流所谓作业就是用户一次请求计算机系统为它完成任务所进行的工作总和。一般来说为了完成其任务,可以将作业细分成若干个作业步。作业步就是处理作业的各个独立的子任务,系统可以创建若干进程完成各作业步的计算,所以说一个作业是由若干作业步组成的。2.1作业控制级接口2.1.1作业、作业步、作业流63以在PC机上用MS-DOS控制时,其作业加工的步骤为例:(1)编辑:A>EDLINUSER.ASM(2)汇编:A>MASMUSER(3)链接:A>LINKUSER(4)执行:A>USER最后执行USER.EXE文件获得所要的结果。以在PC机上用MS-DOS控制时,其作业加642.1.2作业的类型根据计算机系统的作业处理方式不同,可把作业分成两大类:脱机作业联机作业。2.1.2作业的类型652.1.3作业控制命令与键盘操作命令1.脱机用户接口脱机用户接口由一组作业控制命令,或称作业控制语言组成。脱机用户接口用于脱机控制方式。所谓脱机控制方式就是把对作业进行控制的意图,连同程序和数据及发生故障后的处理措施一起输入系统中,由系统根据该意图来控制作业的执行。在批处理系统中,用户利用作业控制(命令)语言写成作业说明书提交给系统,由系统按照作业说明书上的命令,逐条解释执行。用户一旦把作业提交给系统后,便失去直接与作业交互的能力。2.1.3作业控制命令与键盘操作命令1.66(1)作业控制卡。作业控制卡主要用在早期的批处理系统管理中。作业控制卡接口方式就是使用作业控制语言(JCL)将用户对作业的控制意图及发生故障后如何处理以编码的形式穿孔在卡片上,插入到用户程序、数据的卡片叠中一起送入系统,由系统解释控制卡内容并控制作业运行。作业控制卡方式使用不方便,容易出错且较麻烦,所以现在一般很少使用。(1)作业控制卡。作业控制卡主要用在早期的67(2)作业说明书方式。作业说明书方式是使用某些作业控制命令将用户对作业控制的意图写成作业说明书,从而实现对作业的控制。作业说明书主要包括作业情况和作业资源要求两方面的内容,前者主要指用户名、作业名、使用语言、作业控制方式、作业优先级、完成作业的最迟时间等。后者包括内存和外存的空间要求量、输入/输出设备的类型、台数、输出量、估计的计算时间等。(2)作业说明书方式。作业说明书方式是使用某68作业说明书中常用命令的主要类型如下:①输入/输出命令:对源程序、数据及其作业说明书的输入及其运行结果输出的命令。②编译命令:对源程序进行编译,若有错误显示错误,若无错误将其编译成目标程序。③操作命令:主要是对作业操作的各种命令。如对目标程序的装配,程序的重新启动,限定其运行时间等的命令。④条件命令:主要用于表示当程序运行过程中发生某个事件时应转向哪一条操作命令。作业说明书中常用命令的主要类型如下:692.联机用户接口联机用户接口是由一组操作系统命令组成,用于联机作业的控制。1)命令驱动方式COMMANDarg1,arg2,...,argn<CR>其中,COMMAND是命令名,arg1,arg2,...,argn是命令参数,命令参数的有无和多少由命令本身决定。<CR>代表回车键,一般作为命令的结束符。只有按下回车键,该命令才能被系统接收。2.联机用户接口联机用户接口是由一组操作70一般命令类型有如下几种:①系统访问命令②编辑和文件管理命令③编译、汇编和连接命令④调试命令⑤维护管理命令⑥其它命令一般命令类型有如下几种:712)窗口系统与菜单驱动方式在运行Windows时,其操作都是在桌面上进行。桌面是指整个屏幕空间。该桌面是由多个任务所共享。每个任务都通过它的窗口显示其操作和运作情况。因此Windows允许在桌面上同时出现多个窗口。窗口由标题栏、菜单栏、图标等组成。用户可以利用鼠标和/或键盘,通过窗口对应用程序进行操作。这样,窗口就成为用户与操作系统、应用程序之间的接口。为了减轻使用者记忆命令功能和用法的负担,可在窗口中使用“菜单”驱动方式。2)窗口系统与菜单驱动方式在运行Wind723)命令文件方式将键盘操作命令按用户要求的执行顺序组成一个命令文件,执行此命令文件,就能自动控制作业的运行,这对一些重复作业的运行很有好处。MS-DOS操作系统中的批处理文件就属于命令文件方式。它实际上实现了联机状态下的批处理操作。3)命令文件方式732.2程序级接口
2.2.1管态与算态
在计算机系统中存在两类不同的程序:一类是用户程序,一类是系统程序。而且用户程序必需在系统程序的控制和管理下运行。为了使计算机有条不紊地工作,保证系统的安全,在运行过程中对这两类不同的程序应该予以区分。我们把用户工作的状态称为算态或用户态;将系统程序工作的状态称为管态或系统态。2.2程序级接口2.2.1管态742.2.2特权指令与访管指令我们把只允许管态下使用的指令,称之为特权指令。常见的特权指令有以下几种:(1)有关对外设使用的指令(2)有关访问程序状态的指令(3)存取特殊寄存器指令(4)其它指令2.2.2特权指令与访管指令我们把只允许75用户程序在算态下运行,只能使用算态指令,而操作系统是系统程序,在管态下运行,它既可使用算态指令,也能使用特权指令,而用户要使用外设,必须在管态下完成,所以就引入了访管指令,其主要功能为:①实现从算态到管态的改变;②在管态下由操作系统代替用户完成其请求;③操作系统工作完成后由管态返回到算态。用户程序在算态下运行,只能使用算态指令,而操762.2.3系统调用1.系统调用的定义系统调用是为扩充机器指令、增加系统的功能、方便用户使用而提供的。因此,在一些计算机系统中,把它称为“广义指令”。但“广义指令”是不同于机器指令的。在汇编程序中,用户可以直接使用系统调用。若使用高级语言编写程序时,是由编译程序将高级语言中的有关资源操作的语句变换为相应的系统调用。2.2.3系统调用1.系统调用的定义772.系统调用与过程调用的区别(1)运行在不同的系统状态。
(2)通过软中断进入。2.系统调用与过程调用的区别(1)运行在不同的系统状态782.2.4系统调用类型1.进程控制(1)fork()创建一个与当前进程完全相同的拷贝(2)exit(intstatus)终止正在执行的进程,关闭所有被打开的文件描述符 并向其父进程返回状态(3)waitpid(pid,,&statloc,opts)等待一个子进程结束(4)execv(filename,argv,envp)替换一个进程的核心映像(5)getpid()返回调用进程的标识符(6)wait()等待子进程waitpid()等待指定进程,wait3()和wait4()等价于wait()与waitpid()(7)select()提供多任务处理的简便方式2.2.4系统调用类型1.进程控制792.进程通讯(1)signal()指定进程在收到信号时所做的控制信号 处理(2)kill(intpid,intsig)把sig信号送到pid指定的进程(3)pause()使调用进程挂起暂停执行,直到接收到某 种信号为止2.进程通讯803.文件管理(1)open(constchar*pathname,intflage,open(constchar*pathname,intflage,mode-tmode)打开文件(2)close(intfd)关闭相应的文件描述符(3)read(intfd,void*buf,size-tcount)用来从相应于文件描述符的文件中读出数据(4)write(intfd,void*buf,size-tcount)用来向相应于文件描述符的文件中写入数据3.文件管理(1)open(constchar*p81(5)ioctl(intfd,intrequest,...)设置或检索文件的有关参数,并对文件进行一些其它的操作,涉及的设备不同,其参数也不同(6)fcntl(intfd,intcmd),fcntl(intfd,intcmd,longarg)与ioctl()相似,不同的是fcntl用来设置或检索另外一组参数(7)fsync(intfd)把要写入文件描述符fd中的所有数据刷新到此盘或其他相关设备去(8)ftruncate(intfd,size-tlength)将由文件描述符fd引用的文件按length指定的长度截断(5)ioctl(intfd,int82(9)lseek(intfildes,off-toffset,intwhence)设置与文件描述符fildes相关的文件的当前读写位置到指定的位置offset(10)dup(intoldfd)返回一个未用的最小的文件描述符dup2(intoldfd,intnewfd)返回指定的文件描述符,常用来重新打开或重定向一个文件描述符(11)select(intn,fd-set*readfds,fd-set*writefds)允许一个进程同时在多个文件描述符上具有一个可选的传输等待时间。只要在指定的文件描述符中有一个文件可以进行操作,该调用就返回(9)lseek(intfildes,o83(12)fstat(intfiledes,stcuctstat*buf)获取与文件描述符相关的文件信息,返回的信息放在由参数buf所指向的stat结构中(13)fchown(intfd,uid-towner,gid-tgroup)修改一个打开文件的属主和组(14)fchmod(intfildes,mode-tmode)修改与参数fildes相关的文件模式(权限位)(15)fchdir(intfd)把目录修改为与打开的文件描述符fd相关的文件所在的目录(16)flock(intfd,intoperation)对文件描述符引用fd的文件的上锁或解锁(17)pipe(intfiledes[2])创建管道,并返回两个文件描述符(12)fstat(intfiledes844.目录及文件系统管理(1)mkdir(name,mode)创建一个新目录(2)rmdir(name)删除目录(3)mount(special,name,flag)安装一个文件系统(4)umount(special)拆卸一个文件系统(5)chdir(dirname)改变工作目录(6)chroot(dirname)改变根目录4.目录及文件系统管理855.维护信息(1)chmode(name,mode)改变文件的保护位(2)getuid()获取调用进程的uid(3)getgid()获取调用进程的gid(4)setuid()设置调用进程的uid(5)setgid()设置调用进程的gid(6)chown(name,owner,group)改变文件的属主和组5.维护信息86
6.时间管理(1)settimer()设置一个计时器(2)timer()获得时间6.时间管理877.网络通讯服务(1)accept(socket,addr,addrlen)从连接请求队列中取走下一个请求,并为该请求创建一个新套接字,返回新套接字描述符(2)bind(socket,localaddr,addrlen)为一个套接字指明一个本地IP和协议端口号(3)close(socket)中止通讯,并删除套接字(4)connect(socket,addr,addrlen)允许调用者为先前创建的套接字指明远程端点的地址(5)listen(socket,queuelen)准备接受联入的请求(6)send(sockfd,*msg,len,flags)通过套接字接口发送信息(7)recv(sockfd,*buf,len,flags)通过套接字接口接受信息7.网络通讯服务882.2.5系统调用的使用和执行过程1.使用步骤(1)将系统调用所需的参数和参数的首址送到规定的通用寄存器。(2)设置一条调用指令(比如“访管”指令或“软中断”指令)。系统调用命令的功能号,有的系统直接在调用指令中给出,有的系统也作为调用命令的参数放入到指定的通用寄存器中。2.2.5系统调用的使用和执行过程1.892.执行过程(1)为执行系统调用命令作准备,将用户程序的“现场”保留,同时将系统调用编号、参数等放入约定的存储单元中。(2)根据系统调用命令号,检查是否为合法的系统调用。若是,根据系统调用表和系统调用号,转入相应的系统调用函数。(3)系统调用命令执行完后,恢复“现场”,同时将系统调用命令的返回参数或参数区首址送到系统约定的寄存器中供用户程序使用。2.执行过程902.3UNIX的用户界面Shell简介2.3.1Shell命令语言1.命令结构以命令pr为例,开关-d表示产生行间距为二的输出,n表示产生行号。以下两种形式是等价的:$prndfile1$prndfile1又如:$date;who这两条命令分别打印或设置系统日期和时间,查看其它登录的用户。2.3UNIX的用户界面Shell简介2.3.1S912.Shell元字符?匹配文件名中的任何单个字符()括号中的内容理解为一条命令&后台执行命令$0,$1,...$n替换命令行中的参数$VarShell变量Var的值;命令表的分隔符2.Shell元字符?92′comd′执行反引号中的命令,并在输出时用该命令执 行的结果替换命令部分Var=V将值赋给Shell变量comd1||comd2如果不成功执行命令comd2,否则执行comd1comd1&&comd2如果不成功执行命令comd1,否则执行comd2#忽略所有在#之后的内容(即#是注释符)例如:$who|grepmike||echowangisnotloggedin如果who和grep指出用户mike未注册,这条命令执行失败,显示echo命令后的信息。若用户mike在线登录,则将打印出用户mike的信息。′comd′执行反引号中的命令,并在输出时用该命令执 933.Shell变量在Linux中,用户可以设置自己的环境,特定的Shell环境是由一些变量和这些变量的值来决定的,我们称这些变量为Shell变量。一个Shell变量是一个标识字符串,它的值可以是一定范围内的字母和数字。Shell变量分为两类:标准Shell变量和用户自定义的变量。3.Shell变量944.Shell常用命令(1)Password 更改帐号密码(2)Man 联机帮助(3)rlogin主机名[l用户名] 远程登录(4)ls[atFlgR][文件名]列出文件和当前目录下的文件名-a列出以“.”开始的文件名-t依照文件最后修改时间的顺序列出文件名-F列出当前目录下的文件名及其类型-l列出目录下的所有文件的详细信息-lg同-l,并显示文件所有者工作组名-R显示目录下及其所有子目录的文件名4.Shell常用命令(1)Password 更改95(5)Cd[路径名文件名] 改变工作目录(6)cp[-r]源文件目的文件 复制文件(7)mv源文件目的文件 更改或移动文件或目录名称(8)mkdir目录名 建立新目录(9)rmdir目录名或rm目录名 删除文件(10)Pwd 列出当前所在的目录位置(11)cat文件名 连接并查看文件(12)more文件名或cat文件名|more分页查看文件内容(13)du[-s]目录 查看目录所占用的磁盘容量(5)Cd[路径名文件名] 改变工作目录96(14)rcp[-r]源地址主机名:目的地址文件传输(拷贝文件 或目录至远程工作站)rcp[-r]主机名:源地址目的地址文件传输(自远程工作 站拷贝文件或目录)ftp主机名或ftpIP地址文件传输(本地工作站与远程工作 站之间文件传输)(15)chmod[-R]模式文件名或目录名改变文件或目录的读、写、执 行权限chmod[-R]用户名文件名或目录名改变文件或目录的所有权限(16)Groups 检查自己所属的工作组名称(17)chgrp[-r]工作组名文件名或目录名改变文件或目录工作组所有 权限(14)rcp[-r]源地址主机名:目的地址文件传输97(18)ln老文件名新文件名 文件的链接(19)grep字符串文件名 文件中字符串的查找(20)whereis命令 显示命令的路径which命令 显示命令的路径,及使用者所定义的别名whatis命令 显示命令功能的摘要(21)findsearch-path-namefilename-print 搜索指定路径下某文件的路径find/name文件名-print从目录的根开始搜索想要的文件与目录(22)diff[-r]文件名1文件名2比较文件或目录的内容(23)lpr[-p打印机名]文件名一般文件的打印(24)troff[-p打印机名][-man][-ms]文件名troff文件的打印(18)ln老文件名新文件名 文件的链接98(25)lpq[-p打印机名]检查打印机状态、打印作业顺序号和用户名lprm[-p打印机名]用户名或作业编号删除打印机内的打印作业(用户只可以删除自己的打印作业)(26)进程控制命令ps[-aux] 查看系统中的进程-au 查看系统中属于自己的进程-x 查看系统中所有用户的进程-aux 查看系统中包含系统内部及所有用户的进程kill[-9]PID结束或终止进程(PID为利用ps命令所查出的进程号) 命令&在后台执行进程的方式jobs查看正在后台中执行的进程kill%n结束或终止后台中的进程(25)lpq[-p打印机名]检99(27)Shell变量set 查看Shell变量的设定值set 变量=值设定Shell变量unset 变量删除Shell变量(28)环境变量setenv 查看环境变量的设定值echo$ 环境变量显示指定的环境变量NAME的设定值setenv 环境变量word设定环境变量unsetenvNAME删除环境变量(29)别名命令alias 查看自己目前定义的所有命令及所对应的别名alias 命令查看指定的命令的别名alias 命令‘命令行’定义命令的别名unalias 别名删除所定义的别名(27)Shell变量100(30)历史命令sethistory=n 设定命令记录表的长度history 查看命令记录表的内容!! 重复执行前一条命令!n 重复执行命令记录表编号为n的命令!!:p 显示前一条命令的内容(31)文件压缩命令compress文件名 压缩文件compressdir目录名 压缩目录uncompress文件名 解压缩文件uncompressdir目录名 解压缩目录(32)命令1|命令2 将命令1的执行结果送到命令2,作为命令2的 输入(30)历史命令101(33)输入/输出控制命令<文件 将文件作为命令的输入命令>文件 将命令的执行结果送至指定的文件中命令>!文件 将命令的执行结果送至指定的文件中, 若文件已经存在,则覆盖命令>&文件 将命令执行时屏幕所产生的任何信息 写入指定的文件中命令>>文件 将命令执行的结果附加到指定的文件中命令>>&文件 将命令执行时屏幕所产生的任何信息附 加到指定的文件中(34)查看用户名who或finger 查看系统中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届陇南市高三最后一卷语文试卷含解析
- 浙江省嘉兴市八校2025-2026学年高一下学期期中联考数学试卷
- 26年基础护理进社区培训课件
- 26年老年白天嗜睡解决方案课件
- 医学26年:心血管防控多焦点回应解读 心内科查房
- 26年老年洪水逃生应急流程课件
- 医学26年:强直性脊柱炎胸廓受累 查房课件
- 语文01卷(江西专用)-(全解全析)七年级下册语文期末考试
- hs马场管理制度
- 2026年GEO优化TOP3权威测评:媒体信源背书+AI语义适配双轮驱动方法论深度解析
- 主题班会课件-学会调节自己的情绪
- 城市雨水管道清淤施工方案
- 现代药物制剂与新药研发智慧树知到答案2024年苏州大学
- TD/T 1051-2017 土地整治信息分类与编码规范(正式版)
- 行政诉讼模拟法庭
- 人教版新目标英语七年级下册unit 4 写作市公开课一等奖省课获奖课件
- 八年级家长会-语文老师课件
- 颅内动脉狭窄治疗策略
- 2023年上海见证取样员考试试题
- 领导干部在企业兼职(任职)情况自查自纠登记表
- SB/T 11067-2013金属材料仓储技术与管理规范
评论
0/150
提交评论