用户接口
字符显示式联机用户接口
又称联机命令接口
用户通过命令语言实现对作业的控制,以及取得操作系统的服务
命令语言:以命令为基本单位,指示操作系统完成特定的功能;由诸多命令组成了命令集,完整的命令集包含了操作系统提供给用户的全部功能。
- 命令行方式
- 批命令方式
交互方式:用户输入命令、终端处理程序接收命令、在屏幕上显示反馈信息
图形化联机用户接口
又称图形用户接口
WIMP技术:该技术将窗口、图标、菜单、鼠标和面向对象技术等集成在一起,引入形象化的各种图标,将系统的各项功能、各种应用程序和文件直观、逼真地表示出来,形成一个图文并茂的操作环境
脱机用户接口
联机命令类型
- 系统访问
- 磁盘操作命令
- 文件操作命令
- 目录操作命令
- 其他命令
- 输入输出重定向(PROGRANG > FILE2)
- 管道连接(Command1 | Command2|··|Commandn )
- 过滤命令 (find /N “erase” (文件路径名))
- 批命令(“*.BAT”)
联机命令接口实现
实现联机命令接口需要:
- 键盘终端处理程序
- 命令解释程序
键盘终端处理程序
- (1)接收用户从终端上打入的字符。
- 面向字符方式:不做任何修改送给
- 面向行方式 :接收的字符暂存在行缓冲中,并可对行内字符进行编辑,尽在收到行结束符后,才将一行正确的信息送给命令解释程序
- (2)字符缓冲,用于暂存所接收的字符(暂存字符,降低终端处理器的频率)
- 专用缓冲:每个终端设置一个缓冲区,暂存键入的一批字符
- 公用缓冲:将所有的空缓冲区链接成一个空的缓冲区,先申请一空缓冲区来接收输入字符
- (3)回送显示(终端处理程序将字符送往屏幕显示)
- 硬件实现:直接会先,速度快,但不灵活
- 软件实现:灵活控制,系统忙时回显慢
- (4)屏幕编辑
- 删除字符、删除行、插入键、移动光标等
- (5)特殊字符处理
- 特殊字符不缓冲 ,直接产生作用
MS-DOS解释程序
命令解释程序主要功能:解释命令并执行命令
主要作用
- 在屏幕上给出提示符,
- 等用户键入命令,然后读入该命令,
- 识别命令,
- 再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,
- 并将处理结果送屏幕上显示。 若
- 用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出相应出错信息。
组成
- 常驻部分:包括一些中断服务子程序等
- 初始化部分:在启动时获得控制权,处理 AUTOEXEC.BAT文件,决定应用程序装入的基地址
- 暂存部分:主要是命令解释程序,并包含了所有内部命令处理程序、批文件处理程序一级装入和执行外部命令的程序
工作流程
Shell解释程序
UNIX的Shell作为操作系统的最外层,可作为命令语言,也为用户提供使用操作系统的接口,用户利用该接口与机器交互
Shell还包括了Shell命令截止程序,用于对从标准输入或文件中读入的命令进行解释执行
系统调用
系统调用提供了用户程序和操作系统之间的接口,是应用程序取得操作系统服务的唯一途径
需要的原因
- 保护操作系统代码运行不受应用程序破坏
- 保护各个应用程序不受其他应用程序破坏
本质
应用程序请求OS内核完成某项功能时的一种过程调用
系统态和用户态
OS内核
通常将一些与硬件紧密相关的模块、各种常用设备的驱动程序以及运行频率较高的模块、都安排在紧靠硬件的软件层次中,将它们常驻内存
系统态
又称管态、内核态。运行OS内核。可执行特权指令
用户态
又称目态,运行应用程序,只能执行非特权指令
特权指令和非特权指令
特权指令
- 只允许操作系统内核使用
- 内存空间的访问范围基本不受限制
- 特殊指令,如启动外部设备、设置时钟、关中断、转换执行状态等
非特权指令 - 应用程序能使用的指令
- 不能对系统中的硬件和软件直接进行访问
- 对内存的访问范围也局限于自己的用户空间
由硬件实现
若应用程序使用特权指令则会发出权限出错信号,操作系统捕获到这个信号后将转入相应错误处理程序,将终止应用程序运行
环保护机构
- 一种由CPU提供的硬件机制
- 低编号的环具有高优先权,可执行特权指令,运行内核,即内核态
- 最大编号的环具有低优先权,只能执行非特权指令,运行应用程序,即用户态。
系统调用与一般过程调用的区别(常考)
- (1)运行在不同的系统状态。
- (2)状态转换:通过软中断进入,不同的系统采用各自的特定中断号:MS-DOS采用INT 21H,Linux采用80h。
- (3)返回问题。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。
- (4)嵌套调用。系统调用也可以嵌套进行
在嵌套上的区别
系统调用的类型
- 进程控制类系统调用
- 创建和终止进程的系统调用。
- 获得和设置进程属性的系统调用。
- 等待某事件出现的系统调用:用户进程在运行过程中,有时需要等待某事件(条件)出现后,方可继续执行。
- 文件操纵类系统调用 创建文件、删除文件、打开文件、关闭文件、读文件、写文件、建立目录、移动文件的读/写指针等。
- 进程通信类系统调用: 消息传递方式和共享存储区方式。
系统调用的实现
系统调用时,控制要由用户态转换到系统态,借助陷入机制来完成
- 陷入硬件机构
- 陷入处理程序
中断
- 内中断:由CPU内部事件引起的中断
- 外中断:由外部设备事件引起的中断
陷入和中断的区别
陷入是指执行了现行指令所引起;
而中断是由于系统中某事件引起的,事件与现行指令无关
陷入向量
每条系统调用有一个唯一的系统调用号
处理系统调用需要:系统调用好和相应的参数
传递参数和调用好的方式
- 陷入指令自带方式:捎带能力有限
- 直接将参数传入相应的寄存器:MS-DOS采用这种方式。寄存器数量有限
- 参数表方式。将指向该参数表的指针放在某个指定的寄存器中。当前大多数的OS如UNIX系统采用了这种方式
参数传递的两种方式
- 直接参数传递
- 间接参数传递
系统调用处理步骤
执行前准备
- 因陷入指令从用户态转为系统态
- 保存中断进程的CPU环境:PSW,程序计数器、系统调用号、用户栈指针,以及通用寄存器等;压入进程的内核栈
- 传入参数
分析系统调用号转入相应的系统调用子程序
- 系统调用入口表:系统调用号、参数个数和入口地址组成的系统表
- 查找系统调用入口表找到处理子程序入口地址
从系统调用处理子程序返回 - 检查是否需要调度,若需要调度则调度后转向新进程执行
- 否则从进程的系统栈中弹出保存的环境,返回调用进程继续执行
系统调用功能主要是由系统调用子程序来完成的,对于不同的系统调用,起处理程序将执行不同的功能