当前位置:文档之家› 第七章-操作系统的用户接口

第七章-操作系统的用户接口

第七章操作系统的用户接口概述•OS是计算机的资源管理器和用户接口;•OS的用户接口负责接收用户向OS提出的服务请求,传递有关信息,并将服务的结果返回给用户;•OS用户接口有两类:联机用户接口(有命令行界面和图形界面两种形式),程序接口(主要是系统调用)。

另外,在Internet中还有一种网络用户接口。

第一节联机命令接口一、什么是联机命令接口•是用户从键盘上输入的OS命令。

通过输入键盘命令,用户可以取得OS 的服务,控制自己的程序执行;•OS的联机命令接口包括:一组联机命令、命令解释程序(命令解释器)和终端处理程序;•联机命令接口的工作过程:(1) 用户在终端上(通过键盘)输入所需命令;(2) 终端处理程序接收该命令,并在屏幕上显示(回显)命令;(3) 一条命令输入完毕,由命令解释程序对命令进行分析,然后执行对应的命令处理程序,完成任务。

二、联机命令1、为了能向用户提供多方面的服务,通常,OS都向用户提供了几十条甚至上百条的联机命令。

这批命令分为内部命令和外部命令两类。

另外,用户建立的每个可执行程序也是一条联机命令(外部命令)。

根据这些命令所完成功能的不同,可把它们分成以下几类:①系统访问类;②磁盘操作类;③文件操作类;④目录操作类;⑤通信类;⑥其他命令。

2、各类命令举例•系统访问类:Login;用户注册命令•磁盘操作命令:Diskcopy;整盘复制命令Format;磁盘格式化命令Diskcomp;软盘比较命令Backup,Restore;硬盘备份与恢复命令•文件操作命令:Type;文件内容显示命令Copy;文件复制命令Comp;文件比较命令Rename;文件重命名命令Erase,Dele;文件删除命令关于文件名中的*和?的意义。

•目录操作命令:Mkdir,Md;建立一个子目录Dir;显示目录表的内容Rmdir,Rd;删除子目录Tree;显示目录结构Chdir,Cd;更改当前工作目录•其它命令I/O重定向命令:在有的OS中定义了两个标准I/O设备。

通常,命令的输入取自标准输入设备,即键盘;而命令的输出通常是送往标准输出设备,即显示终端。

如果在命令中设置输出重定向“>”符,其后接文件名或设备名,表示将命令的输出改向,送到指定文件或设备上。

类似地,若在命令中设置输入重定向“<”符,则不再是从键盘而是从重定向符左边参数所指定的文件或设备上,取得输入信息。

管道连接命令:这是指把第一条命令的输出信息作为第二条命令的输入信息;类似地,又可把第二条命令的输出信息作为第三条命令的输入信息。

这样,由两个(含两条)以上的命令可形成一条管道。

在MS-DOS 和UNIX中,都用“|”作为管道符号。

其一般格式为:Co mmand1 |Command2| … | Commandn;批处理命令:利用一组联机命令构成一个命令程序,能够一次建立多次使用。

该程序的内容保存在文本文件中。

在MS-DOS中这种特殊的文本文件,其后缀名为“.bat”;在UNIX系统中称其为命令文件。

三、键盘终端处理程序1、在联机终端上,为实现人机交互,系统必须能让键盘上的输入和屏幕上的显示及时、同步。

为此,必须配备键盘终端处理程序,实现:接收键盘上输入的字符、字符缓冲、回送显示、屏幕编辑、特殊字符处理等功能。

具体说明如下:2、字符接收功能--接收从键盘上输入的字符,并将它传送给用户程序。

P19-20•面向字符方式的•面向行方式3、字符缓冲功能--暂存从键盘上输入的字符。

P21-23•专用缓冲方式•公用缓冲方式4、回送显示功能回送显示(回显)是指每当用户从键盘输入一个字符后,终端处理程序便将该字符送往屏幕显示。

•由硬件实现回显•由软件实现回显5、屏幕编辑提供若干个编辑键,实现对屏幕内容的编辑。

常用编辑健有:•删除字符键•删除一行键•插入键•移动光标键•屏幕向上滚动或向下滚动一行键6、特殊字符处理识别特殊的键盘字符,将其翻译为其对应的控制命令。

例如:Ctrl+C键或Break或Delete键对应程序终止控制命令。

四、命令解释程序1、命令解释程序的主要作用是:在屏幕上给出提示符,等待用户键入命令;在用户输入命令后,识别命令,再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕上显示;若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。

2、命令解释程序的组成:P30-313、命令解释程序的工作流程:P334、典型的命令解释程序有:DOS的;Windows的Cmd.exe;UNIX的Shell等。

第二节图形用户接口一、图形用户界面概述P117-120二、桌面、图标和任务栏三、窗口、窗口的类型、窗口的组成四、菜单和工具五、对话框六、关于X-Window第三节系统调用(程序接口)一、什么是程序接口1、程序接口就是OS的系统调用。

应用程序通过系统调用实现与OS 的通信,申请得到OS提供的服务。

系统调用也可以被OS本身的程序使用。

2、系统调用,对应着OS核心的一组实现各种功能的子程序。

用户在程序中使用系统调用命令调用这些子程序。

二、系统调用的类型1、进程控制类系统调用•创建和终止进程的系统调用•获得和设置进程属性的系统调用•等待某事件出现的系统调用2、进程通信类系统调用•消息传递方式通信•共享存储区方式通信3、文件操纵类系统调用•创建和删除文件•打开和关闭文件•读和写文件4、设备管理类:实现设备管理的功能。

三、系统调用的实现1、程序运行时的两种不同状态----用户态、系统态;P61-63在使用系统调用时,调用程序一般运行在用户态,而被调用的子程序,由于属于OS内核,所以运行在系统态。

P652、系统调用是借助于“陷入”机制来完成运行状态的转换,陷入是一类中断。

每个系统调用对应“系统调用中断处理程序”的一个子程序。

•回顾中断和中断向量的概念中断是指CPU对系统发生某事件时的一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。

中断向量是指中断处理程序的入口地址和程序开始执行时的处理机状态字。

•中断分为外中断(由外设事件引起的中断)和内中断(由CPU内部事件,尤其是执行指令引起的中断)。

内中断也称为“陷入”。

其中有一个陷入就是系统调用。

•陷入机制和陷入向量3、系统调用的一般处理步骤----当程序执行到一个系统调用时,系统产生“陷入”:•处理机的状态由用户态转入系统态;•保护中断现场;•查系统的陷入向量表,得到“系统调用”处理程序的陷入向量;•运行该处理程序,分析系统调用类型,转入相应的系统调用处理子程序运行;•恢复现场或建立新进程的CPU现场,继续执行用户程序。

4、系统调用的返回和嵌套•系统调用的返回(1) 非抢占式CPU调度下的返回;(2) 抢占式CPU调度下的返回;P66•系统调用的嵌套:在系统调用子程序的内部,允许调用另一个系统调用。

但每个系统对嵌套的深度是有一定限制的。

P68第四节Unix/Linux用户界面一、Unix用户界面简介1、UNIX系统在结构上分为两部分:•外壳:各种语言的处理程序和其他系统实用程序、shell(命令解释程序)、用户自编程序。

•内核:实现操作系统各项管理功能的程序。

•外壳与内核之间的接口是系统调用。

2、shell命令语言•shell是OS的最外层,它包括一批联机命令和shell命令解释程序。

在OS的提示符下,用户从键盘上输入一条命令,就可以完成某项功能;(常用命令P34-P59)•shell也是一种程序设计语言,用户可以用shell的命令组成命令序列,构成程序文件。

•shell命令的格式:<命令名> [— <选项表>] [ <参数表>]例如:gcc -o sy1 file1ls file1 file23、Unix的系统调用常用系统调用P94-P116二、Linux用户界面简介1、联机命令接口Linux的联机命令接口有两种形式:•图形界面形式:提供WIMP技术的命令操作。

•命令行形式:Shell,提供丰富的操作命令。

如ls ,目录列表命令。

在面板上单击“应用程序”→“系统工具”→“终端”命令,打开终端窗口;在终端窗口中输入需要运行的命令。

2、程序接口即系统调用。

Linux的系统调用以标准实用子程序(函数)的形式提供用户在编程中使用。

Linux的系统调用在分类和功能上都与Unix系统的相同。

3、Gedit是Linux的一个GNOME桌面环境下的一个纯文本编辑器,也可以把它用来当成是一个集成开发环境(IDE),它会根据不同的语言高亮显现关键字和标识符等。

4、gccLinux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。

gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

gcc编译器能将C、C++语言源程序、汇编语言程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。

gcc最基本的用法是:gcc [options] [filenames]其中options就是编译器所需要的参数,filenames给出相关的源文件名称。

虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。

在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

如果命令中options参数被选为:-o filename,则最后将产生名称为filename的可执行文件,同时这个名称不能和源文件同名。

如果不给出这个选项,gcc就给出预设的可执行文件a.out。

Linux的可执行程序没有省缺的扩展名,也可以没有扩展名。

相关主题