Download presentation
Presentation is loading. Please wait.
Published byYulia Pranata Modified 6年之前
1
第三章 用户接口与作业管理 用户与操作系统的接口 批处理操作系统的作业管理 作业的基本概念:作业、作业步、作业流 交互式系统作业管理
系统调用 用户程序提出服务请求的手段,基本思想,实现方法 操作系统安装与启动
2
一、用户与操作系统的接口 1、作业级接口 作业级接口 程序级接口 操作系统为用户对作业运行全过程控制提供的功能 (1) 联机接口(交互式)
(2) 脱机接口
3
2. 程序级接口 系统为用户在程序一级提供有关服务而设置 由一组系统调用命令组成 负责管理和控制运行的程序
并在这些程序与系统控制的资源和提供的服务间实现交互作用 用汇编语言:在程序中直接用系统调用命令 用高级语言:可在编程时使用过程调用语句
4
二、批处理系统作业处理 1、作业的基本概念 (1)作业 用户在一次计算过程中,或者一次事务处理过程中,要求计算机系统所做工作的总称
(2)作业步 一个作业可划分成若干部分,称为一个作业步 典型的作业控制过程: “编译”、“连接装配”、“运行” (3)作业流
5
作业的基本概念(续1) (4)典型的作业步 编译 连接装配 运行 目标 程序 段 源程序 输入数据 子程序 库函数 动态库函数 计算结果
6
2、批处理作业控制语言与作业说明书 (1)作业控制语言 用户用于描述批处理作业处理过程控制意图的一种特殊程序
书写作业说明书的语言称为作业控制语言(JCL) (2)作业控制语言的类别 包括:I/O命令、编译命令、操作命令以及条件命令等
7
批处理作业控制语言与作业说明书(续) (3)作业说明书 表达用户对作业的控制意图 内容: 作业的基本描述 作业控制描述 资源要求描述
8
3、作业控制块与作业表 (1)作业控制块 (JCB:Job Control Block) 作业控制块是批处理作业存在的标志
保存有系统对于作业进行管理所需要的全部信息 位于磁盘区域中
9
作业控制块与作业表(续1) (2)作业控制块的内容 作业控制块中所包含的信息数量及内容因系统而异 较简单的系统 较复杂的系统
10
作业控制块与作业表(续2) 作业控制块JCB 作业标知 用户名称 用户帐号 调度信息 资源需求 作业状态 作业类别 输入井地址 输出井地址
进入系统时间 开始处理时间 作业完成时间 作业退出时间 资源使用情况 作业控制块JCB
11
作业控制块与作业表(续3) (3)作业控制块的建立 当作业开始由输入设备向磁盘的输入井传输时 系统输入程序为其建立一个作业控制块 进行初始化
初始化的大部分信息取自作业说明书
12
作业控制块与作业表(续4) (4)作业控制块的使用 需要访问作业控制块的程序 系统输入程序 作业调度程序 作业控制程序 系统输出程序等
13
作业控制块与作业表(续5) (5)作业控制块的撤消 作业完成后,其作业控制块由系统输出程序撤消 作业控制块被撤消后其作业也不复存在
14
作业控制块与作业表(续6) (6)作业表 每个作业有个作业控制块 所有作业JCB构成一个作业表 作业表存放在外存固定区域中,长度是固定
限制了系统所能同时容纳的作业数量 系统输入程序、作业调度程序、系统输出程序都需要访问作业表 因而存在互斥问题 JCB1 JCB2 …… JCBi …… JCBn 作业表
15
4、 批处理作业的状态及转换 一个作业从进入系统到运行结束 经历四个不同的状态: “进入” “后备” “运行” “完成”
16
批处理作业的状态及转换(续1) … 作业和进程的状态转换图 进入状态 退出状态 后备状态 运行状态 输入设备 源程序 输出设备 作业说 明书
数据 进入状态 退出状态 后备状态 运行状态 作业控制进程 … 输入设备 源程序 输出设备 作业说 明书 输 入 井 运行 等待 就绪 出 程 序 作 业 调 度 进程 调度 作业和进程的状态转换图
17
批处理作业的状态及转换(续2) (1)运行状态的作业 三种状态: 就绪状态 执行状态 等待状态
18
5、作业的建立 一个作业建立过程的两个子过程: 作业的输入 JCB的建立 作业控制块JCB和作业:一一对应关系
19
作业的建立(续1) 将作业程序、数据和作业说明书从输入设备(例如键盘)输入到外存,并形成初始信息 典型作业输入方式 SPOOLing系统
(1)作业的输入 将作业程序、数据和作业说明书从输入设备(例如键盘)输入到外存,并形成初始信息 典型作业输入方式 SPOOLing系统
20
作业的建立(续3) (2)JCB的建立 在系统把作业信息输入到输入井之后 根据作业说明书和有关作业信息在外存的位置等 建立作业控制表JCB
外存输入井的大小有限 只有在获得JCB表项和足够输入井空间后 作业才可能创建成功
21
6、批处理作业的调度 主要功能: 审查系统能否满足用户作业的资源要求 只要通过调用相应的资源管理程序的有关部分
审核其表中是否能满足作业说明书中的要求即可 作业调度: 按照一定的算法从输入井中的后备作业中选取作业 将其投入内存运行 调度的关键 在于 选择恰当的算法
22
批处理作业的调度(续1) (1)调度算法评价 调度实质上是一个策略问题 设定的目标往往是相互冲突的 单位时间内运行尽可能多的作业
目标: 单位时间内运行尽可能多的作业 使处理机尽可能保持“忙碌” 使各种I/O设备得以充分利用 对所有的作业都是公平合理的
23
批处理作业的调度(续2) 要设计一个理想的调度算法是一件十分困难的事 在实际系统中,调度算法往往折衷考虑 设计调度算法时应考虑的因素:
调度算法应与系统设计目标保持一致 注意系统资源均衡使用 保证提交的作业在截止时间内完成 设法缩短作业平均周转时间 大多数操作系统都采用比较简单的调度算法
24
批处理作业的调度(续3) (2)调度算法性能的衡量 作业平均周转时间 假定某一作业进入“输入井”的时间为Si,
它被选中执行,得到计算结果的时间为Ei 它的周转时间为Ti =Ei – Si 则作业平均周转时间为: T=( )× n为被测定作业流中的作业数
25
批处理作业的调度(续4) 平均带权周转时间 W=( )× ri 为某作业i的实际执行时间 T:衡量不同调度算法对同一个作业流的性能
26
批处理作业的调度(续5) (3)系统进行作业调度的决策因素 作业到达时间 预先为作业确定的优先级 系统可测定的其他因素:
作业所需的CPU时间C 存储要求M 打印输出的行数L 其他的资源要求
27
批处理作业的调度(续6) (4)常见的批处理作业调度算法 先来先服务算法(FCFS:First Come First Serve)
最短作业优先算法(SJF:Shortest Job First) 最高响应比优先算法 (HRN:Highest Response Ratio Next) 响应比R = 作业周转时间 / 作业处理时间 =(作业处理时间+作业等待时间)/ 作业处理时间 = 1 +(作业等待时间 / 作业处理时间)
28
批处理作业的调度(续7) 基于优先数调度算法 (HPF:Highest Priority First) (a)由用户规定优先数(外部优先数)
用户提交作业时,根据急迫程度规定适当的优先数 作业调度程序根据JCB优先数决定进入内存的次序 (b)由系统计算优先数(内部优先数) 例:可按如下公式计算作业的优先数: 优先数 = 用户规定优先数 – 作业处理时间 + 作业等待时间 – 输出量
29
批处理作业的调度(续8) 均衡调度算法(分类排队算法) 基本思想: 根据系统运行情况和作业属性将作业分类 轮流从不同的作业类中挑选作业
目标: 力求均衡地利用各种系统资源,发挥资源使用效率 力求使用户满意
30
批处理作业的调度(续9) 例1:将待处理作业分成如下队列: 队列1:计算量大的作业 队列2:I/O量大的作业
调度时,在三个队列中各取一些作业 在内存中的作业有的使用处理机 有的使用外部设备 使得系统的各种资源能得到充分利用
31
批处理作业的调度(续10) 例2:将待处理作业分成如下三个队列: 队列1:长作业 队列2:中等长度作业 队列3:短作业 调度时
取队列1一作业,队列2一作业,队列3一作业 长作业用户和短作业用户均比较满意
32
批处理作业的调度(续11) (5)作业调度算法应用例子1 假设在单道批处理环境下有四个作业,已知它们进入系统的时间、估计运行时间
应用先来先服务、最短作业优先和最高响应比优先作业调度算法,分别计算出作业的平均周转时间和带权的平均周转时间
33
批处理作业的调度(续12) 先来先服务调度算法计算结果
34
批处理作业的调度(续13) 最短作业优先作业算法计算结果
35
批处理作业的调度(续14) 最高响应比优先作业算法计算结果
36
批处理作业的调度(续15) (6)作业调度算法应用例子2 在两道环境下有四个作业 已知它们进入系统的时间、估计运行时间
系统采用短作业优先作业调度算法,作业被调度运行后不再退出 当一新作业投入运行后,可按照作业运行时间长短调整作业执行的次序 请给出这四个作业的执行时间序列,并计算出平均周转时间及带权平均周转时间
37
两道批处理系统中 最短作业优先作业算法计算结果
批处理作业的调度(续16) 两道批处理系统中 最短作业优先作业算法计算结果
38
两道批处理系统中 最短作业优先作业算法计算结果(续1)
批处理作业的调度(续17) 四个作业的执行时间序列为: JOB1:10:00—10:05,10:40—11:05 JOB2:10:05—10:25 JOB3:10:25—10:30 JOB4:10:30—10:40 两道批处理系统中 最短作业优先作业算法计算结果(续1)
39
两道批处理系统中 最短作业优先作业算法分析过程
批处理作业的调度(续18) 两道批处理系统中 最短作业优先作业算法分析过程 10:00,JOB1进入,只有一作业,JOB1被调入执行 10:05,JOB2到达,最多允许两作业同时进入 所以JOB2也被调入 内存中有两作业,哪一个执行?题目规定当一新作业运行后,可按作业运行时间长短调整执行次序 即基于优先数可抢占式调度策略 优先数是根据作业估计运行时间大小来决定的 由于JOB2运行时间(20分)比JOB1少 (到10:05,JOB1还需25分钟) 所以JOB2运行,而JOB1等待
40
两道批处理系统中 最短作业优先作业算法分析过程(续1)
批处理作业的调度(续19) 两道批处理系统中 最短作业优先作业算法分析过程(续1) 10:10,JOB3到达输入井,内存已有两作业 JOB3不能马上进入内存; 10:20,JOB4也不能进入内存 10:25,JOB2运行结束,退出,内存中剩下JOB1 输入井中有两作业JOB3和JOB4,如何调度? 作业调度算法:最短作业优先 因此JOB3进入内存 比较JOB1和JOB3运行时间 JOB3运行时间短,故JOB3运行 同样,JOB3退出后,下一个是JOB4 JOB4结束后,JOB1才能继续运行
41
批处理作业的调度(续20) (7)多道程序对平均周转时间的影响 作业流在多道环境下运行 平均周转时间、带权平均周转时间
比单道环境下都有明显改善 不是任意作业组合都能改善调度性能 有时甚至可能变坏
42
批处理作业的调度(续21) 例:四个各需两小时作业同时投入运行,I/O等待时间均占25%,即占CPU时间各为1.5小时
但是,若以单道程序方式运行: 平均周转时间T=( )/4=5小时 平均带权周转时间W=( )/4=2.5
43
7、作业调度与进程调度 作业能否占用处理器?什么时间能够占用处理器? 由进程调度来决定 进程的初始状态为就绪状态
进程调度选择当前可占用 CPU处理进程,当它让出处理器时,进程调度就再选另一作业的进程 作业调度与进程调度相互配合,实现作业的并行
44
作业调度与进程调度(续1) 作业调度与进程调度的例子 某系统采用不能移动已在内存中作业的可变分区方案管理内存
供用户使用的内存空间为100K,系统配有4台磁带机 一批作业如下图: 作业 进入时间 估计 内存需要 磁带机需要 运行时间 JOB : 分钟 K 台 JOB : 分钟 K 台 JOB : 分钟 K 台 JOB : 分钟 K 台 JOB : 分钟 K 台
45
作业调度与进程调度(续2) 该系统采用多道程序设计技术,对磁带机采用静态分配,忽略设备工作时间和系统进行调度所共花的时间,请分别给出采用“先来先服务调度算法”和“短作业优先算法”选中作业执行的次序以及它们的平均周转时间。 若允许移动已在主存储器中的作业,则作业被选中的次序又是怎样的呢?它们的平均周转时间又如何? 小结: 作业调度前提:并行道数、资源满足 进程调度
46
8、批处理作业的控制 当作业为执行态时,作业调度程序为其建立一作业控制进程, 由该进程控制作业运行
作业控制进程:主要负责控制作业的运行,具体解释执行作业说明书的每一个作业步,并创建子进程来完成相应步骤 一个作业步的处理: (1)建立子进程 (2)为其申请资源 (3)访问该作业的JCB (4)释放占有资源 (5)撤消子进程等 作业控制程序只有一个 对应每一处于执行状态的作业有一作业控制进程
47
9、作业退出 把输出结果送到输出设备上(启动缓输出进程完成) 回收各种资源
48
10、SPOOLing系统工作原理 全称:Simultaneous Peripheral Operations On-Line 含义:
同时的外围设备联机操作(假脱机技术) 包括: 输入程序模块 输出程序模块 作业调度程序
49
SPOOLing系统工作原理(续1) … 作业和进程的状态转换图 进入状态 退出状态 后备状态 运行状态 输入设备 源程序 输出设备 作业说
数据 进入状态 退出状态 后备状态 运行状态 作业控制进程 … 输入设备 源程序 输出设备 作业说 明书 输 入 井 运行 等待 就绪 出 程 序 作 业 调 度 进程 调度 作业和进程的状态转换图
50
SPOOLing系统工作原理(续2) 作业执行前用慢速设备将作业预先输入到后援存储器(如磁盘、磁鼓,称为输入井)中,称为预输入
作业运行后,使用数据时,从输入井中取出 作业执行不必直接启动外设输出数据,只需将这些数据写入输出井中 作业全部运行完毕,再由外设输出全部数据和信息,称为缓输出 实现了对作业输入、组织调度和输出的统一管理 使外设在CPU直接控制下,与CPU并行工作(称为假脱机)
51
SPOOLing系统工作原理(续3) SPOOLing系统 输入装置 输出装置 通 道 通 道 主机系统 输入管 输出管 理模块 理模块
通 道 主机系统 输入管 输出管 理模块 理模块 外 设 输入井 输出井 SPOOLing系统
52
三、 交互式系统的作业管理 1、概述 (1)命令接口 在操作系统与计算机用户之间提供易于理解的双向通信机制 基本任务:
解释命令,传送命令以便执行 接收系统信息,提交给用户(以响应语言的形式) 包括:一组联机命令,终端处理程序,命令解释程序 交互式命令的接口复杂 含功能结构,可能问题的处理,如各种约定、前端处理、命令日志、命令注解、宏命令及命令组等
53
2、终端处理程序 用户与操作系统的通信通过一个输入/输出装置来实现 I/O装置 是 显示终端和键盘
输入通过键盘:在有的系统中,可通过指示装置(例如鼠标)输入 系统输入呈现在显示屏幕上,一次显示若干正文行 (某些系统中,提供图形显示功能) 不管哪种I/O方式,终端装置是由终端处理程序管理和控制
54
终端处理程序(续1) 终端处理程序提供的输入输出方式对整个用户命令接口有重大影响,也确定了用户与其应用程序之间的通信方式
终端处理程序必须作为用户接口的一个组成部分来考虑 即,直接影响命令接口的一些问题须由终端处理程序解决
55
终端处理程序(续2) 直接影响命令接口的一些问题 (a)回送显示(Echoing)
通常,每从键盘打入一个字符,终端处理程序回送响应的字符到显示屏上 有时用户要求其显示一个不同的字符或不显示(例如,用户键入口令时) 对于通过远程通信线路访问的终端,可能需要抑制这种回送 委托给远程终端实现回送显示
56
终端处理程序(续3) (b)提前打入(Type ahead)
假定输入字符在一程序准备处理它们之前打入,则由“提前打入进程”把它们保存在缓冲区中 缓冲区容量是有限,当其存满后,再有输入时,或者漏掉,或者将破坏缓冲区原有的内容 (c)字符变换 有些情况下,需要对打入的字符进行代码变换 如,把小写字母转换成大写字母,或者反之
57
终端处理程序(续4) (d)行缓冲 打入的字符在送到程序前,由终端接口保存,直到整个命令行打入为止
为用户提供了校验、编辑,甚至取消命令的机会 (e)中断字符(Break Characters) 多数交互式命令接口可以接受一些称为中断字符的特殊字符,并立即采取相应的行动 如,在许多系统中,同时打入CTRL-C键,立即终止当前程序执行,并使命令处理程序重新初始化
58
3、命令解释程序 对命令有两种处理方法: (a)由命令解释程序直接处理 在没有创建子进程功能的系统中 终端命令通常由对应的命令解释程序处理
在这种系统中,只有一个进程对应一个终端用户 (b)由子进程代为处理 在具有创建子进程功能的系统中,对于较为单纯的命令,如列目录,拷贝文件等,命令解释程序本身便能完成,此时由命令解释程序直接处理 对较复杂命令,如对于C源程序进行编译,命令解释程序本身不能处理,此时创建一个子进程,并由该子进程运行C编译程序
59
4、命令接口 命令接口由命令处理器来实现 命令处理器的实现方式: (a)作为OS的一个部分 如,OS/MVT或VAX/VMS
(b)作为OS的一个独特模块,能方便地修改或替换 如,RT-11或CP/M (c)作为一易于被替换的普通程序 如,UNIX操作系统 (d) 在某些系统中,可能用专门设计的命令接口替代标准的命令接口 如,多用户UNIX,用户可有不同命令接口
60
5、命令语言 命令语言规定由OS执行的一系列操作 在一般的命令语言中,用户通过打入称为命令行的一行指令来规定每一个动作
每一命令行以命令开始,它标识所要执行的操作 大多数命令是用运行一个程序来执行所请求的操作 多数命令行中要给出一些参数, 每一命令语句实际上是带有参数的一个过程调用
61
命令语言(续1) 一种命令语言通常提供几类命令: (1)系统访问命令 登录命令,如,login等 撤离命令,如,logout等
(2)文件管理命令 (3)编辑、编译和执行命令 (4)询问命令 (5)操作员专用命令
62
命令语言(续2) 命令行:规定由操作系统执行的一系列操作 命令行:一行可有一个或多个命令,每次一行,包含一个或多个命令。
shell给出提示符时可输入,以回车键提交。如: “ls -a -l”列出当前目录文件列表; "gunzip mp1.tar.gz; tar -xvf mp1.tar; \rm -r -f mp1.tar"为解压缩后再展开。 命令格式:一个命令可有命令参数,格式包括选项/开关 (option/switch)或参数(argument)。 如UNIX系统: cp -r doc /tmp--argv[0], argv[1], ...(含子目录的文件复制:/tmp为目标地址)
63
命令语言(续3) 命令分类:内部命令和外部命令 内部命令:直接由shell本身完成,功能简单、使用频繁;如:DOS的copy命令。
外部命令:运行相应的可执行文件,在使用时加载。如:DOS的xcopy命令 命令简化:利用参数替换可简化命令输入,通配符(?, *)用于匹配一组文件名 如:UNIX的cp命令:当前目录上有两个"1.tar"和"2.tar"时,"cp *.tar /tmp"等同于"cp 1.tar /tmp; cp 2.tar /tmp"
64
命令语言(续4) 命令的附加功能 命令的附加功能用以扩大命令的功能性、选择性、适应性。包括: (1)参数与变量 位置变量 关键字变量
(2)命令通配符 (3)重定向 (4)管道与过滤器
65
6、命令文件 批处理命令: 针对脱机用户操作和大量顺序操作功能而设计
批处理命令可以是专门的命令,也可是系统的基本命令;还有有关的语法结构,循环、分支、转移、判别等,构成一套特殊的命令语言
66
命令文件(续) 提前写出命令并存入文件,称之为命令文件
命令文件提供了一种把一系列命令组装成文件的方法,然后用文件名作为命令名执行另外一系列命令 特点: (1)接受参数、变量,宏变量替换 (2)允许嵌套形式调用其他命令文件 (3)允许参数来自终端的命令文件本身 (4)允许执行显示到终端、存入文件或送入打印机 (5)允许命令加入注释 (6)出错时允许用户干预 (7)可把输入传给程序,可有循环、分支、转移等
67
7、交互式系统实例——分时系统 时间片轮转: 在操作系统控制下,采用“时间片轮转”方法使每个终端作业都能在一个“时间片”内占用处理器
时间片用完,让出处理器给另一个终端作业 保证从终端用户输入命令到计算机系统给出应答 为几秒钟时间,使终端用户感到满意
68
交互式系统实例——分时系统(续1) 分时系统用户控制作业执行的四个阶段: 终端的连接 用户登录 控制作业执行 用户退出
69
交互式系统实例——分时系统(续2) (1)终端的连接 必须使终端设备与计算机系统在线路上接通
近程终端是直接与计算机系统连接的,当终端设备加电后,终端就与计算机系统在线路上接通了 远程终端通过租用专线或交换线接到计算机系统,在终端加电后用户还需通过电话拨号进行呼叫,直到接通 当终端与计算机系统在线路上接通后,计算机系统会在终端上显示信息告诉用户
70
交互式系统实例——分时系统(续3) (2)用户登录 用户必须向系统登录 用户首先输入“登录”命令(LOGON)命令
系统会向询问用户名、作业名、口令和资源需求等 经过识别用户、核对口令,系统在终端上显示“已登录”和进入系统的时间等信息 若口令不对或资源暂时不能满足时,则系统在终端上显示“登录不成功”并给出登录失败的原因 用户的登录过程可看作是对终端作业的作业调度
71
交互式系统实例——分时系统(续4) (3)控制作业执行 登录成功的终端用户 可从终端上输入作业的程序和数据
使用系统提供的命令语言或会话语句控制作业执行 每输入一命令或一会话语句后,由系统解释执行 且在终端上显示执行成功或问题 由用户决定下一步命令或会话 直到作业完成
72
交互式系统实例——分时系统(续5) (4)用户退出 用户输入“退出”命令(LOGOFF 命令)请求退出系统
系统接收命令后就收回该用户所占的资源让其退出 同时在终端上显示“退出时间”或“使用系统时间
73
8、图形用户接口GUI 命令行方式:要求用户记忆命令格式
图形用户接口方式:用户可利用鼠标对屏幕上的图标进行操作,完成与操作系统的交互,从而减少记忆内容,方便用户使用。 图形用户接口的技术基础:高分辩显示器和鼠标
74
(1)窗口系统(window system)的特点
图形用户接口GUI(续1) (1)窗口系统(window system)的特点 利用图形元素表示功能:将各种图形元素显示在屏幕上,用户可以通过操纵图形元素(如菜单、图标)来执行相应的功能 同屏多窗口与并发进程相对应:屏幕上同时显示多个窗口;一个进程可以对应一个或多个窗口;窗口动态创建、改变、撤销 交互的并发性好、传递信息量大 输入方式:鼠标指针点击(或其他定位设备)和键盘输入;通常是即时交互 一致的图形元素风格可方便用户学习和使用:如按钮、滚动条
75
图形用户接口GUI(续2) (2)窗口系统的图形元素及其状态 窗口:屏幕上的矩形区域
包括:标题条、边框、窗口角、系统菜单框、最大化/最小化按钮、滚动条等 状态:当前/非当前窗口--接受输入,最大化/最小化/恢复原大小,窗口的前后遮盖--Z轴,焦点--接受键盘输入(而非鼠标) 桌面和墙纸 图标:一个小图象(如32x32或64x64 pixel),供鼠标指针点击。不同的图标可以标识不同的对象。如:可执行程序、最小化的窗口、文件--动画图标
76
图形用户接口GUI(续3) 鼠标指针:鼠标指针通常对应屏幕上的光标
光标在屏幕上只有一个,在不同屏幕位置(上下文)可以呈现不同形状,可以独立于鼠标来直接操纵光标 鼠标点击:左键/右键/中键,单击/双击,拖曳/拖放 按钮:鼠标点击或按回车键/空格键时执行相应功能,如 menu button;提供单项或多项选择,如radiobutton和checkbutton;当前按钮及其切换 菜单:临时窗口,菜单条、弹出式菜单、下拉式菜单(上下文相关菜单) 对话框:临时窗口,显示提示信息(message)或填写用户设置
77
(3)窗口管理器(window manager):形成统一的使用风格
图形用户接口GUI(续4) (3)窗口管理器(window manager):形成统一的使用风格 处理窗口的普遍特性,如:窗口的大小、位置(窗口的标题条、边框、控制菜单框)--窗口中由应用程序管理的部分称为"客户区(client area)" 协调各窗口间的相互关系,如:窗口之间的前后遮盖关系,桌面
78
图形用户接口GUI(续5) (4)例子: MS Windows 特点 MS Windows结构 基本概念 消息处理:两种方法
79
图形用户接口GUI(续6) 特点 是OS 的一部分,提供默认的窗口风格(如菜单、对话框)
除Windows2000外,窗口应用程序只能在控制台(本地)执行
80
图形用户接口GUI(续7) MS Windows结构:可分成三个部分
OS系统服务(KERNEL):内存管理、程序加载(包括DLL)、任务调度、文件管理 用户接口(USER):窗口和消息管理,以及菜单、控制、对话框、定时器等 图形设备接口(GDI, Graphic Device Interface):管理显示器,为USER与应用程序提供与硬件设备独立的接口
81
图形用户接口GUI(续8) 基本概念 消息(message):消息作为窗口的输入,如用户操作、其他窗口或系统发出的请求或通知
窗口过程(window procedure):消息由各窗口自己的窗口过程来作处理 窗口过程的调用参数:接收窗口句柄(可以在多个窗口共用一个窗口过程时加以区分)、消息ID(消息的类型)、消息参数(16+32位或32+32位值,整数或指针) 还可以取得消息的发生时间和屏幕坐标
82
图形用户接口GUI(续10) 消息处理:两种方法
排队消息:放到进程(线程)的FIFO消息队列里。如应用程序发送的消息,系统的鼠标、键盘、定时器、窗口绘制和退出等。排队消息所用的API: 发送消息到消息队列PostMessage; 从消息队列读取消息GetMessage, PeekMessage; 分发一个消息到相应窗口DispatchMessage; 非排队消息:直接发送到指定窗口的窗口过程。非排队消息所用的API: SendMessage,直到接收方窗口过程处理完才返回 接收方正处于GetMessage,而接受并处理SendMessage送来的消息之后,仍处于GetMessage。为防止死锁,一般要:if (InSendMessage()) ReplyMessage(TRUE);
83
图形用户接口GUI(续11) 消息循环:不断移出消息,并加以处理。用户不作处理的消息,应传给默认窗口过程加以处理:DefWindowProc() WM_PAINT消息:通知窗口客户区中的某部分(region)已被改变,应用程序应该对其重新绘制。总是被排在线程消息队列的最后,并且多个WM_PAINT消息中的region会自动被合并为一个
84
四、系统调用 系统调用:用户在程序中调用操作系统所提供的一些子功能
这是特殊的过程调用,由特殊的机器指令实现(每种机器的机器指令集中都有一条系统调用指令——访管指令) 这条指令将系统转入管态 系统调用是一个低级过程,只能由汇编语言直接访问 系统调用是操作系统提供给编程人员的唯一接口 利用系统调用,动态请求和释放系统资源 完成与硬件相关的工作以及控制程序的执行等 每个操作系统都提供几百种系统调用
85
1、系统调用简介 系统调用的例子-1 汇编程序例子:打印5个字符 方法1:调用DOS功能 MOVE A, PARA1
MOVE B, PARA2 INT 21H
86
系统调用简介(续1) 系统调用的例子-2 方法2:用OUT语句直接打印 L1:MOVE A,I IN ADDR1,B OR B,BS
JNC L1 OUT ADDR2,A RET
87
系统调用简介(续2) I/O设备的硬件接口 一般由四种寄存器(地址,数据,状态,控制)或其子集组成
88
系统调用简介(续3) 系统调用的例子-3 汇编程序例子2:读写硬盘文件内容 MOVE DX,OFFSETBUFF MOVE CX,BYTE
MOVE BX,HANDLE MOVE AH,3FH INT 21H
89
系统调用简介(续4) 系统调用的例子-4 磁盘读写的例子:更复杂 原因:
A、磁盘的控制和状态接口寄存器比打印机的复杂的多,而且还有地址接口寄存器 B、通常一个外存存储介质上可以存放多个文件,随着文件的建立、删除和拷贝在不停地变化,每个文件的长度随着其内容的变化而不停地变化
90
系统调用简介(续5) 系统调用的例子-5 高级语言例子:打印5个字符 char buff[4]=“abcde”;
for(i=4;i>=0;i--) print(buff[i]); 高级语言例子: 读硬盘文件f1的第10到20个字节 seek(fd,10,0); read(fd,buff,11);
91
系统调用简介(续6) . A= A+1 printf(. . .) B=B+A (1)源程序段
92
系统调用简介(续7) INT . A=A+1 B=B+A IN OUT 嵌入后 该系统调用的操作系统内部实现代码 (2)printf目标代码
(3)程序段编译产生的 可执行代码 (4)操作系统 内部代码
93
系统调用简介(续8) 凡是与硬件相关、与应用无关的工作,都通过操作系统程序来完成 用户程序 函数 操作系统
94
2、系统调用的处理过程 需要有一个类似于硬件中断处理的处理机构 当用户使用系统调用时,产生一条相应的指令
处理机在执行到该指令时发生相应的中断,并发出有关的信号给该处理机构 该处理机构在收到了处理机发来的信号后,启动相关的处理程序去完成该系统调用所要求的功能
95
系统调用的处理过程(续1) 在系统中为控制系统调用服务的机构称为陷入(TRAP)或异常处理机构
相对应,把由于系统调用引起处理机中断的指令称为陷入或异常指令(或称访管指令) 在操作系统中,每个系统调用都对应一个事先给定的功能号,例如0、1、2、3等,称为系统调用功能号 (在陷入指令中必须包括对应系统调用的功能号 有些陷入指令中,还带有传给陷入处理机构和内部处理程序的有关参数)
96
系统调用的处理过程(续1) 必须为实现系统调用功能的子程序编造入口地址表 每个入口地址与相应的系统调用执行程序名对应
陷入处理程序把陷入指令包含功能号与入口地址表有关项对应, 驱动有关子程序执行 在系统调用处理结束之后,用户程序需利用系统调用返回结果继续执行 保护现场: 进入系统调用处理前,陷入处理机构还需保存处理机现场 在系统调用处理结束之后,要恢复处理机现场,现场被保护在特定的内存区或寄存器中
97
用户程序 陷入处理机构 系统子程序 入口地址表 (1)保护处理现场 system call A0 (2)取系统调用功能号并寻找子程序入口
用户程序 陷入处理机构 系统子程序 system call 入口地址表 (1)保护处理现场 (2)取系统调用功能号并寻找子程序入口 (3)返回 A0 A1 Ai An Sub0 Sub1 Subi Subn 系统调用的处理过程
98
系统调用处理过程 read (fd, buffer, nbytes)
99
3、参数传递过程问题 怎样实现用户程序和系统程序间的参数传递? 常用的3种实现方法:
由陷入指令自带参数:陷入指令的长度有限的,且还要携带系统调用功能号,只能自带有限的参数 通过有关通用寄存器来传递参数:这些寄存器应是系统程序和用户程序都能访问,由于寄存器长度较短,从法传递较多的参数 大多在内存中开辟专用堆栈区来传递参数
100
4、系统调用的分类 系统功能可分为两部分 系统自身所需要的 作为服务提供给用户的 OS的系统调用: 进程控制类系统调用 文件操作类系统调用
进程通信类系统调用 设备管理类系统调用 信息维护类系统调用
101
进程管理
102
文件管理
103
目录管理
104
其他
105
5、系统调用与一般过程调用比较 系统调用方式(INT)与程序中一般的调用方式的相同点: 改变指令流程 重复执行和公用
改变指令流程后需要返回原处 系统调用方式(INT)与程序中一般的调用方式的不同点:
106
系统调用与一般过程调用比较(续1) 运行在不同的系统状态 一般过程调用,其调用程序和被调用程序都运行在相同状态:核心态或用户态
系统调用:调用程序在用户态,被调用程序在系统态 状态的转换 一般的过程调用不涉及系统状态的转换,可直接由调用过程转向被调用过程 运行系统调用时,调用和被调用过程在不同系统状态,不允许由调用过程直接转向被调用过程 通过软中断机制先由用户态转换为核心态 在OS核心分析后,转向相应的系统调用处理子程序
107
系统调用与一般过程调用比较(续2) 返回问题 一般过程调用在被调用过程执行完后,回调用过程
抢占式调度的系统中,被调用过程执行完后,系统将对所有要求运行的进程进行优先级分析。如果调用进程仍有最高优先级,则返回到调用进程执行 否则,引起重新调度,让优先级最高的进程优先执行。此时,系统把调用进程放入就绪队列 嵌套或递归调用 对系统调用,一般不允许在同一个进程中发生嵌套或递归(不同进程可以重入同一个系统调用)
108
系统调用与一般过程调用比较(续3) 进入方式不同 利用int或trap指令进行系统调用;利用call 或 jmp 指令进入普通的过程调用
将该CALL指令中所含的地址(即被调用代码所在地址)送入PC RET指令的内部实现过程 从栈顶弹出返回地址送入程序计数器PC
109
系统调用与一般过程调用比较(续4) 系统调用是动态调用,而CALL调用方式是静态调用 a. 同一程序中不包含被调用代码
系统调用是动态调用,程序中不包含被调用代码,好处: (1)用户程序长度缩短 (2)当OS升级时,调用方不必改变
110
系统调用与一般过程调用比较(续5) b. 系统调用方式的调用地址和返回地址都是不固定的 系统调用指令中不包含调用地址, 只包含功能号
系统调用指令中不包含调用地址, 只包含功能号 是按功能号(在可执行目标程序中)调用的 在操作系统内部 由系统调用处理程序通过系统调用分支表 (OS的一个数据结构) 将功能号转换为相应的指令地址
111
系统调用与一般过程调用比较(续6) OS . 功能号 地址 显 示 打 印 读文件 OS的系统调用分支表 OS代码 显示 打印 用户程序
功能号 地址 显 示 打 印 读文件 OS的系统调用分支表 OS代码 显示 打印 OS 用户程序 INT
112
系统调用与一般过程调用比较(续7) 系统调用返回指令中不包括返回地址,通过栈保存和弹出返回地址
系统调用返回地址不固定,因为用户程序在不同的地方调用OS CALL调用方式是静态调用,被调用代码与调用代码在同一程序之内。CALL调用方式,其调用地址是固定的,包含在调用语句中;返回地址是不固定的(同一子程序可能被不同处多次调用),在程序执行过程中通过栈的实现来保存和弹出返回地址
113
系统调用与一般过程调用比较(续8) c. 安全接口 INT指令和IRET指令的执行过程中 要处理程序状态字PSW
INT指令中要保存用户程序的老PSW 并根据中断向量表设置新PSW IRET指令中要在返回用户程序前恢复用户程序的老PSW
114
系统调用与一般过程调用比较(续9) 安全接口(续1) 目的:目态、管态的管理 系统态与用户态的转换
由系统在INT指令与IRET指令内部自动完成 没有用一条单独的专门指令 好处:有效地防止在系统态下执行用户程序
115
6、Win32 应用程序接口 在Windows中,定义了一系列程序(应用程序接口Win32 API),提供OS服务
事实上,一个Windows版本中的系统调用也许在另一个Windows版本中会在用户空间执行 由于图形子系统在内核中运行(在某些Windows版本中),它们也是系统调用,否则是库调用
118
五、操作系统的安装与启动 操作系统怎样开始运行 怎样形成系统操作环境 怎样从程序的顺序执行转换到支持程序的并发执行
119
1、操作系统的引导和装入 操作系统的引导有两种方式: 独立引导(bootup) 辅助下装(download)
120
操作系统的引导和装入(续1) (1)独立引导方式 大多数系统采用 OS核心文件存储在系统本身的存储设备中
最后建立一个操作环境
121
操作系统的引导和装入(续2) 独立引导方式步骤 (1)系统加电,执行系统初启程序
(2)执行初启程序,对系统硬件和配置进行自检,保证系统没有硬件错误 (3)从硬盘中读入操作系统初启文件,并将控制权交给该程序模块 (4)执行操作系统初启程序,完成系统环境配置和操作系统初始化工作 (5)继续读入其余的OS文件,逐个执行相应的系统程序,完成OS各种功能模块的装入,完善OS的操作环境,做好程序并发执行的准备 (6)等待用户请求和用户作业的输入,经过操作系统调度后并发执行
122
操作系统的引导和装入(续3) (2)辅助下装方式 OS主要文件不放在系统本身的存储设备中 而是在系统启动后,执行下装操作
从另外的计算机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境 优点:可以节省较大的存储空间 下装的OS并非是全部代码,只是常驻部分或者专用部分 当这部分OS出现问题和故障时,可以再请求下装
123
2、系统配置与初始化 操作系统引导是从程序的顺序执行到并发执行的过程 在操作系统初始化完成后,才能建立这样一个环境 步骤:
(1)关掉系统中断,以保证系统顺利引导 (2)对当前的系统运行环境进行检查,对系统的配置进行认定 并保存检测的结果作为系统的初始配置条件。 (3)进行操作系统的初始化
124
3、初始化工作要点 (1)根据OS设计时定义的全局参数,在内存中建立OS工作时所必需的数据结构和各种记录表格,并且根据当前系统的环境配置情况,填写相应的表格和结构,设定它们的初始条件、参数和状态 (2)最重要的是建立有关进程的所有数据结构,如建立PCB表,建立相应的进程队列 (3)操作系统根据检查得到的数据获得自由存储空间的容量,并以此作为存储分配的基数之一,同时建立存储管理的若干数据结构,如自由空间队列、分配空间队列等,获得待分配的自由空间的地址
125
初始化工作要点(续1) (4)分别建立系统设备和文件系统的控制结构及相应表格,并填写好设备的初始条件、状态和类型,建立好访问文件系统的各种索引表格 (5)对PCB表和几个进程队列进行初始化 此时,可以建立一个空进程(NULL),或者把执行的这个程序本身作为第一个进程 如果系统有实时时钟控制,还需对时钟控制逻辑进行初始化
126
4、初始化需要注意的问题 (1)系统初启引导过程不属于操作系统 由初启过程转入OS初始化程序才算进入了操OS模块
(2)初启引导程序没有通过,不再进入系统初始化,系统出错提示用户重启或停机 (3)初始化程序开始要建立大量的数据结构,所有系统全局变量都在此过程中建立并定位 (4)对数据结构的初始化和赋初值是根据系统设计的目标和规范拟定而进行的,尤其是对PCB表的初始化,这些初始值的设置构成并发运行的基础
127
初始化需要注意的问题(续1) (5)在OS初始化过程中不允许发生中断,因此必须关闭中断,初始化完成再打开中断,从而进入并发环境
(6)初启引导过程和初始化过程中的程序都是顺序执行的,一旦初始化完成便开放中断,当下一个时间片到来或者中断发生就进入了程序的并发执行 这是顺序到并发的分界点 (7)若处于并发环境,没有多个进程或多道程序等待,此时运行空进程代码,或者进入一个无限循环,或者运行待机程序,或者运行安全检测程序等,直到有并发程序进入,引起调度切换
Similar presentations