计算机操作系统教程(第四版)课件:第2章--操作系统用户界面.ppt
第2章 操作系统用户界面,2.1 简介 2.2一般用户的输入输出界面 2.3 命令控制界面2.4 Linux与Windows的命令控制界面 2.5 系统调用 2.6 Linux与Windows的系统调用本章小结习题,2.1 简介计算机系统用户分类操作系统为普通用户与管理员用户提供不同的用户界面不同计算机操作系统为用户提供的界面不同操作系统的操作命令界面称为命令控制界面,图2.1 一般编程过程,2.2 一般用户的输入输出界面 2.2.1作业的定义,在图2.1中,直到编辑为止的各步都可认为是可由人工独立完成的(尽管也有许多支撑软件存在),但从编辑输入开始的以下各步却是在用户的要求控制下由计算机完成。在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作称为一个作业。作业由不同的顺序相连的作业步组成。作业步是在一个作业的处理过程中,计算机所做的相对独立的工作。一般来说,每一个作业步产生下一个作业步的输入文件。,从系统的角度看,作业则是一个比程序更广的概念。它由程序、数据和作业说明书组成。系统通过作业说明书控制文件形式的程序和数据,使之执行和操作。而且,在批处理系统中,作业是抢占内存的基本单位。也就是说,批处理系统以作业为单位把程序和数据调入内存以便执行。需要说明的是,作业的概念一般用于早期批处理系统和现在的大型机、巨型机系统中,对于广为流行的微机和工作站系统,人们一般不太使用作业的概念。,2.2.2 作业组织如上所述,作业由三部分组成,即程序、数据和作业说明书。一个作业可以包含多个程序和多个数据集,但必须至少包含一个程序。否则将不成为作业。作业中包含的程序和数据完成用户所要求的业务处理工作。作业说明书则体现用户的控制意图。由作业说明书在系统中生成一个称为作业控制块(job control block,JCB)的表格。该表格登记该作业所要求的资源情况、预计执行时间和执行优先级等。从而,操作系统通过该表了解到作业要求,并分配资源和控制作业中程序和数据的编译、链接、装入和执行等。,作业说明书主要包含三方面内容,即作业的基本描述、作业控制描述和资源要求描述。作业基本描述包括用户名、作业名、使用的编程语言名、允许的最大处理时间等。而作业控制描述则大致包括作业在执行过程中的控制方式。资源要求描述包括要求内存大小、外设种类和台数、处理机优先级、所需处理时间、所需库函数或实用程序等。作业说明书的主要内容如图2.2 所示。一般来说,作业说明书方式主要用在批处理系统中,且各计算机厂家都对自己的系统定义有各自的作业说明书的格式和内容。另外,在微机系统和工作站系统中,人们常用批处理文件或shell程序方式编写作业说明书。,图2.2 作业说明书的主要内容,2.2.3 作业输入输出方式作业输入方式可分为5种,即联机输入方式、脱机输入方式、直接耦合方式、SPOOLING(Simultaneous Peripheral Operations On-Line)系统和网络输入方式。1.联机输入方式大多用在交互式系统中,用户和系统通过交互会话来输入作业。外围设备直接和主机相连接。一台主机可以连接一台或多台外围设备。在单台设备和主机相连接进行作业输入时,由于外围设备的输入输出速度远远低于CPU处理速度,有可能造成CPU资源的浪费。如果使用多台外围设备同时联机输入的话,则又成为下面将要介绍的SPOOLING系统。,2.脱机输入方式又称为预输入方式。脱机输入方式利用低档个人计算机作为外围处理机进行输入处理。在低档个人机上,用户通过联机方式把作业首先输入到后援存储器,例如磁盘或磁带上;然后,用户把装有输入数据的后援存储器拿到主机的高速外围设备上和主机连接,从而在较短的时间内完成作业的输入工作。,3.直接耦合方式保留脱机输入方式的快速输入的优点,又没有脱机输入方式的人工干预的缺点和具有较强灵活性的输入方式是直接耦合方式。直接耦合方式把主机和外围低档机通过一个公用的大容量外存直接耦合起来,从而省去了在脱机输入中那种依靠人工干预来传递后援存储器的过程。在直接耦合方式中,慢速的输入输出过程仍由外围低档机自己管理,而对公用存储器中的大量数据的高速读写则由主机完成。直接耦合方式的原理如图2.3所示。,图2.3 直接耦合输入方式,4.SPOOLING系统SPOOLING又可译作外围设备同时联机操作。SPOOLING系统的工作原理如图2.4所示。在SPOOLING系统中,多台外围设备通过通道或DMA器件和主机与外存连接起来。作业的输入输出过程由主机中的操作系统控制。操作系统中的输入程序包含两个独立的过程,一个过程负责从外部设备把信息读入缓冲区;另一个是写过程,负责把缓冲区的信息送到外存输入井中。这里,外围设备既可以是各种终端,也可以是其他的输入设备,例如纸带输入机或读卡机等。,图2.4 SPOOLING系统,5.网络输入方式网络输入方式以上述几种输入方式为基础。当用户需要把在计算机网络中某一台主机上输入的信息传送到同一网中另一台主机上进行操作或执行时,就构成了网络输入方式。因为网络输入方式涉及到不同计算机间的通信问题,且该问题的讨论已超出了本书的范围,因此,本书中不准备进一步讨论。,2.3 命令控制界面操作系统为用户提供两个接口界面。一个是系统为用户提供的各种命令接口界面。用户利用这些操作命令来组织和控制作业的执行或管理计算机系统。另一个接口是系统调用。编程人员使用系统调用来请求操作系统提供服务。操作系统的命令控制界面就是用来组织和控制作业运行的。使用操作命令进行作业控制的主要方式有两种。脱机方式即用户将作业的执行顺序和出错处理方法一并以作业控制说明书的方式或命令文件方式提交给系统,由系统按照作业说明书或命令文件中所规定的顺序控制作业执行。执行过程中,用户无法干涉,只能等待作业正常执行结束或出错停止之后查看执行结果或出错信息,以便修改作业内容或控制过程。,脱机控制方式利用作业控制语言来编写表示用户控制意图的作业控制程序,也就是作业说明书。作业控制语言的语句就是作业控制命令。不同的批处理系统提供不同的作业控制语言。联机控制方式不要求用户填写作业说明书,系统只为用户提供一组键盘或其他操作方式的命令。用户使用系统提供的操作命令和系统会话,交互地控制程序执行和管理计算机系统。其工作过程是,用户在系统给出的提示符下敲入特定的命令,系统在执行完该命令后向用户报告执行结果;然后,用户决定下一步的操作。如此反复,直到作业执行结束。凡是使用过DOS、Windows或UNIX系统的读者,对联机控制方式都应该是不陌生的。,与脱机控制方式相比,联机控制方式的命令种类要丰富得多。这些命令可大致分为以下几类:(1)环境设置。(2)执行权限管理。(3)系统管理。(4)文件管理。(5)编辑、编译、链接装配和执行。(6)通信。(7)资源要求。,联机控制方式大大地方便了用户。但在某些情况下,用户反复输入众多的命令也会浪费不必要的时间。因此,在现代操作系统中,大都提供批处理方式和联机控制方式。这里,批处理方式既指传统的作业控制语言编写的作业说明书方式,也指那些把不同的交互命令按一定格式组合后的命令文件方式。近年来,命令控制界面的人机交互方式发生了革命性变化。无论是Windows系列,还是UNIX系列的操作系统,它们的命令控制界面都是由多窗口的按钮式图形界面组成。在这些系统中,命令已被开发成一条条能用鼠标点击而执行的简单的菜单或小巧的图标。而且,用户也可以在提示符的提示下用普通字符方式输入各种命令。可以预计,计算机系统的命令控制界面将会越来越方便和越来越拟人化。,2.4 Linux与Windows的命令控制界面,2.4.1 Linux的命令控制界面,图2.5 Ubuntu系统的窗口界面示例,常用linux命令,cp file1 file2 文件复制cat file1 在屏幕上打印文件pwd 显示当前工作目录ls 列出目录内容mkdir 创建目录rmdir 删除目录cd 改变目录vi 编辑文件:wq filename 保存文件:q!不保存退出,Gcc test.c 编译test.c 生成a.out 文件./a.out 运行a.outFind/-name ls 在根目录下查找ls文件Grep F test/etc/passwd 查找test用户,建立并且运行一个脚本,执行脚本,正好自己写一下脚本。建立一个目录/scripts 来存放你的脚本将会是个好主意。把此目录添加到 PATH 变量中:export PATH=$PATH:/scripts,这是执行脚本最普通的方法。在子shell中一般都是这么执行脚本。建立在子shell中的变量,函数和别名等只有子shell使用。当那个shell退出,父shell重新得到控制的时候,所有的东西都被清空,脚本对shell状态所作的改变耶全部清除。如果你没有把 scripts的目录放到PATH里面,当前目录也不在PATH变量中,那么你可以这样来执行脚本:./script_name.sh,脚本基础,哪个Shell来执行脚本?当在子shell运行脚本时,你应该定义哪个shell来运行脚本,你编写的脚本的shell类型可能不是你系统默认的,所以用错误的shell来运行你输入的命令可能最终出错。第一行决定了启动的shell,第一行的开始2个字符应该是#!,然后紧跟解释后面命令的shell的路径。空白行也被认为是一行,所以不要让你的脚本以空白行开始。出于本教程的考虑,所有的脚本都这样开头:#!/bin/bash 和先前提到过的一样,这样表明Bash可以在/bin 里面找到。,加入注释,你应该知道事实上你不会阅读你自己脚本的唯一的一个人。很多用户和系统管理员运行别人编写的脚本。如果他们想知道你是如何做到的,注释能很好的提醒读者。注释也同样让你自己更方便。你一定阅读了很多帮助页面通过脚本中的一些命令来得到特定的结果。如果不对脚本加上注释,几个星期或者几个月后你需要更改你的脚本,你会忘记脚本做了些什么事,你怎么做的和为什么要这么做。,2.4.2Windows的命令控制界面,2.5 系统调用系统调用是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。事实上,命令控制界面也是在系统调用的基础上开发而成的。系统调用大致可分为如下几类:(1)设备管理。该类系统调用被用来请求和释放有关设备、以及启动设备操作等。(2)文件管理。对文件的读、写、创建和删除等。,(3)进程控制。进程是一个在功能上独立的程序的一次执行过程。进程控制的有关系统调用包括进程创建、进程执行、进程撤消、执行等待和执行优先级控制等。(4)进程通信。该类系统调用被用在进程之间传递消息或信号。(5)存储管理。包括调查作业占据内存区的大小、获取作业占据内存区的始址等。(6)线程管理。包括线程的创建、调度、执行、撤销等。不同的系统提供有不同的系统调用。一般,每个系统为用户提供几十到几百条系统调用。,为了提供系统调用功能,操作系统内必须有事先编制好的实现这些功能的子程序或过程。显然,这些程序或过程是操作系统程序模块的一部分,且不能直接被用户程序调用。而且,为了保证操作系统程序不被用户程序破坏,一般操作系统都不允许用户程序访问操作系统的系统程序和数据。那么,编程人员给定了系统调用名和参数之后是怎样得到系统服务的呢?这需要有一个类似于硬件中断处理的中断处理机构。当用户使用系统调用时,产生一条相应的指令,处理机在执行到该指令时发生相应的中断,并发出有关信号给该处理机构。该处理机构在收到了处理机发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能。,在系统中为控制系统调用服务的机构称为陷阱(trap)处理机构。与此相对应,把由于系统调用引起处理机中断的指令称为陷阱指令(或称访管指令)。在操作系统中,每个系统调用都对应一个事先给定的功能号,例如0,1,2,3等。在陷阱指令中必须包括对应系统调用的功能号。而且,在有些陷阱指令中,还带有传递给陷阱处理机构和内部处理程序的有关参数。为了实现系统调用,系统设计人员还必须为实现各种系统调用功能的子程序编造入口地址表,每个入口地址都与相应的系统子程序名对应起来。然后,由陷阱处理程序把陷阱指令中所包含的功能号与该入口地址表中的有关项对应起来,从而由系统调用功能号驱动有关系统子程序执行。,由于在系统调用处理结束之后,用户程序还需利用系统调用的返回结果继续执行,因此,在进入系统调用处理之前,陷阱处理机构还需保存处理机现场。再者,在系统调用处理结束之后,陷阱处理机构还要恢复处理机现场。在操作系统中,处理机的现场一般被保护在特定的内存区或寄存器中。系统调用的处理过程如图2.7所示。,图2.7 系统调用的处理过程,有关系统调用的另一个问题是参数传递问题。不同的系统调用需要传递给系统子程序以不同的参数。而且,系统调用的执行结果也要以参数形式返回给用户程序。那么,怎样实现用户程序和系统程序之间的参数传递呢?下面介绍几种常用的实现方法。一种是由陷阱指令自带参数。一般来说,一条陷阱指令的长度总是有限的,而且,该指令还要携带一个系统调用的功能号,从而,陷阱指令只能自带极有限的几个参数进入系统内部。另一种办法是通过使用有关通用寄存器来传递参数。显然,这些寄存器应是系统程序和用户程序都能访问的。不过,由于寄存器长度也是较短的。从而无法传递较多的参数。因此,在系统调用较多的系统中,大多在内存中开辟专用堆栈区来传递参数。,另外,在系统发生访管中断或陷阱中断时,为了不让用户程序直接访问系统程序,反映处理机硬件状态的处理机状态字PSW中的相应位要从用户执行模式转换为系统执行模式。这一转换在发生访管中断时由硬件自动实现。一般把处理机在用户程序中执行称为用户态,而把处理机在系统程序中执行称为系统态。,2.6 Linux和Windows的系统调用 2.6.1 Linux系统调用,2.6.2 Windows系统调用,习题2.1 什么是作业?作业步?2.2 作业由哪几部分组成?各有什么功能?2.3 作业的输入方式有哪几种?各有何特点?2.4 试述SPOOLING系统的工作原理。2.5 作业说明书和作业控制块有何异同?2.6 操作系统为用户提供哪些接口?它们的区别是什么?2.7 作业控制方式有哪几种?调查你周围的计算机的作业控制方式。2.8 什么是系统调用?系统调用与一般用户程序有什么区别?与库函数和实用程序又有什么区别?,2.9 简述系统调用的实现过程。2.10 为什么说分时系统没有作业的概念?2.11 试述UNIX的主要特点。2.12 UNIX操作系统为用户提供哪些接口?试举例说明。2.13 在你周围装有UNIX系统的计算机上,练习使用后台命令、管道命令等Shell的基本命令。,