《第7章接口.ppt》由会员分享,可在线阅读,更多相关《第7章接口.ppt(82页珍藏版)》请在三一文库上搜索。
1、7.1 操作系统接口,程序启动方式,程序结束时系统所做的工作 用户与操作系统的接口 系统调用:用户程序提出服务请求的手段, 基本思想,实现方法 操作系统安装与启动,7.1.1 程序的启动和结束 1. 程序的启动五种启动方式,程序开始执行时必须满足两个前提条件: 程序已装入内存 程序计数器PC中已置入该程序在内存的入口地址,第一种方式:命令方式,命令提示符下打入程序名和参数,回车 如DOS : c UNIX:$ 命令解释程序 DOS: (在所设路径中) UNIX: SHELL Windows:窗口菜单显示和鼠标操作,命令方式的程序启动,开机,显示命令提示符,输入命令,从外存调入 外部命令执行,
2、执行命令解释 程序中的该命令,合法否?,N,内部命令?,Y,N,Y,第二种方式:批处理方式,.BAT 文件 (DOS系统) 例子:启动中文环境需要多条命令: 装入字库 启动主程序 装入汉字输入法 AUTOEXEC.BAT (开机时的自动批处理),批方式下的装 入执行过程,第三种方式: EXEC方式,EXEC方式的过程,在一个程序中运行另一个程序 返回原来的程序,第四种方式: 第五种方式:自启程序,由硬件装入程序和启动程序执行,自己装入自己, 并启动自己开始执行的程序 自启程序由两部分组成 引导程序和程序主体,自启程序装入 与启动的过程,引导程序,2. 程序的结束,正常结束:程序按自身的逻辑有效
3、地完成预定功能后结束 (a) 返回父程序并回送结果信息。 (b) 释放所用资源(空间.设备),记录使用情况,记帐等 异常结束:发生了某些错误而导致程序在没有完成预定功能时提前结束,7.1.2 用户与操作系统的接口,1. 作业级接口,作业级接口 程序级接口,操作系统为用户对作业运行全过程控制提供的功能 (1) 联机接口(交互式) (2) 脱机接口,脱机作业 是指用户不能直接与计算机系统交互,中间通过操作员干预的作业。 通常是在批处理系统中使用,所以也成为批量型作业 联机作业 是指用户和计算机系统直接交互,用户通过终端或控制台键盘上的操作命令或菜单图表等方式控制器作业的运行,也成交互型作业或终端型
4、作业,脱机用户接口:由一组作业控制命令,或称作业控制语言组成 脱机用户接口:使用作业控制卡和作业说明书两种形式,作业控制卡:就是使用作业控制语言将用户对作业的控制意图、程序、数据等卡片一起送入系统,由系统解释执行 作业说明书:是使用某种作业控制命令将用户对作业控制的意图写成作业说明书,从而实现对作业的控制。 作业说明书主要包括作业情况和作业资源要求两方面的内容;前者主要指用户名、作业名、使用语言、作业控制方式、优先级等;后者包括内存核外村的空间要求量、设备的类型、台数、估计的计算时间等。 作业说明书中常用命令的主要类型如下: 输入/输出命令 编译命令 操作命令 条件命令,全称: Simulta
5、neous Peripheral Operations On-Line 含义: 联机情况下的同时外围操作(假脱机技术) 包括: 输入程序模块 输出程序模块 作业调度程序 工作过程: 利用磁盘作缓冲, 将输入、计算、输出分 别组织成独立的任务流, 使I/O和计算真正并行。,(3) SPOOLing (假脱机),用慢速设备将作业预先输入到输入井 (后援存储器 如:磁盘、磁鼓)中, 称为预输入。 运行时, 按某种调度策略选择几种搭配得当的作业,从输入井调入内存, 使用数据时, 从输入井中取出。 作业运行中输出数据不必直接启动外设, 只需将这些数据写入输出井中。 作业全部运行完毕, 再由外设输出全部数
6、据和信息,称为缓输出。 实现了对作业输入、组织调度和输出的统一管理使外设在CPU控制下, 与CPU并行工作(称为假脱机)。,SPOOLing系统,典型的作业步,2. 程序级接口,系统为用户在程序一级提供有关服务而设置 由一组系统调用命令组成。 负责管理和控制运行的程序 并在这些程序与系统控制的资源和提供的服务间实现交互作用 用汇编语言:在程序中直接用系统调用命令 用高级语言:可在编程时使用过程调用语句,7.1.3. 交互式系统接口,1. 联机命令接口,在操作系统与计算机用户之间提供易于理解的双向通信机制。 基本任务: 解释命令, 传送命令以便执行 接受系统信息, 以响应语言的形式提交给用户,交
7、互式命令的接口复杂 含功能结构, 问题的处理, 如各种约定, 前端处理, 命令日志, 注解, 宏命令及命令组等。 交互式控制灵活方便: 可以随时进行各种处理, 排除问题, 方便调试; 系统利用率低。 接口包括: 联机命令, 终端处理程序, 命令解释程序。 联机命令(p221): 系统访问命令、磁盘操作命令、文件管理命令、目录操作命令、其它命令。,2. 终端处理程序,交互式命令接口用户同操作系统的通信是通过一个I/O装置来实现的。 I/O装置一般是显示终端。 输入通过键盘, 或通过指示装置(鼠标)输入。 某些系统中, 提供图形显示功能。 不管哪种I/O方式, 这个终端装置是由一个终端处理程序来管
8、理和控制的。 终端处理程序提供的输入输出方式对整个用户命令接口有重大影响。 也确定了用户与其应用程序间的通信方式。,(1)字符接收功能 接收键盘打入的字符,并将键码转换为ASCII码,面向字符方式(将字符传送给程序)和面向行方式。 (2)回送显示(Echoing) 通常, 每从键盘打入一个字符, 终端处理序回送响应的字符到显示屏上。 有时用户要求其显示一个不同的字符或不显示(例如, 用户键入口令时)。 对于通过远程通信线路访问的终端, 回送显示委托给远程终端来实现。,键盘终端处理程序的功能,(3)字符缓冲 打入的字符在送到程序前, 由终端处理程序保存。提供编辑, 甚至取消命令的机会; 如行缓冲
9、的行编辑。有专用缓冲方式(每个终端专用)和公用缓冲方式。 (4)提前打入(Type ahead) 输入字符在程序处理它们之前由“提前打入进程”把它们保存在缓冲区中(可以保存多行)。当缓冲区存满后, 再打入的字符会漏掉或覆盖缓冲区原有内容。 (5)字符变换 有些情况下,需要对打入的字符进行代码变换。 如: 把小写字母转换成大写字母,或者反之。,(5)屏幕编辑 对输入字符进行屏幕编辑, 插入、删除或改写。 (6)特殊字符处理(热键) 中断字符:当前执行的程序可接受中断字符立即终止运行。如: CTRL+C、CTRL+Break。 停止上卷字符CTRL+S 恢复上卷字符CTRL+Q,3. 命令解释程序
10、,如:DOS 、UNIX shell (P227) (a)由终端命令解释程序直接处理 在无创建子进程功能的系统中, 终端命令由对应的命令解释程序处理; 仅有一个进程对应一个终端用户。 (b)由子进程代为处理 在具有创建子进程功能的系统中, 对于较为单纯的命令, 如列目录, 拷贝文件等, 命令解释程序本身便能完成,此时由命令解释程序直接处理。 对较复杂命令, 如对于 Pascal 源程序进行编译, 命令解释程序本身不能处理, 此时创建一个子进程, 并由该子进程运行 Pascal 编译程序。,MS-DOS Execution,UNIX System Structure,4. 命令接口的结构,命令接
11、口由命令处理器来实现,它的实现方式: (a)作为OS的一个部分 如:OS/MVT或VAX/VMS (b)作为OS的一个独特模块,能方便地修改或替换 如:RT-11或CP/M (c)作为一易于被替换的普通程序 如:UNIX 操作系统 (d)在某些系统中, 可能用专门设计的命令接口替代标准的命令接口 如:多用户UNIX,用户可有不同命令接口,5. 命令语言,命令语言规定由OS执行的一系列操作 在一般的命令语言中, 用户通过打入称为命令行的一行指令(语句)来规定每一个动作。 命令行以命令开始, 它标识所要执行的操作。 命令是用运行一段程序来执行所请求的操作。 多数命令行中要给出一些参数, 每一命令语
12、句实际上是带有参数的一个过程调用。,命令语言通常提供下列几组命令: (p228) (1)系统访问命令 登录命令,如:login等 撤离命令,如:logout等 (2)文件操作命令 (3)编辑、编译和执行命令 (4)询问命令 (5)操作员专用命令,典型命令实例: (1)UNIX系统: who ls -l (2)DOS系统 dir c: (3)VAX/VMS run mypro,命令的附加功能 命令的附加功能用以扩大命令的功能性、选择性、适应性。包括: (1)参数表 用参数表示位置、操作对象等附加信息 用“”或“/”加关键字表示子功能 (2)命令通配符: “*”和“?” (3)重定向命令(p230
13、): 用“”将标准输入或输出重新定向到其它文件上。 (4)管道命令: 用“|”来连接两条命令,第1条命令的输出作为第2条命令的输入, 管道作缓冲。 (5)通信命令、后台命令,针对脱机用户操作和大量顺序操作功能而设计。 批处理命令可以是专门的命令,也可是系统的基本命令;还有有关的语法结构,循环、分支、转移、判别等,枸成一套特殊的命令语言。,6. 批处理命令,7. 图形用户接口,以Windows为代表,许多现代OS都提供了图形用户接口,使用起来非常方便, 不需要用户记忆大量的命令名称、功能、格式和参数。 图形界面, 以窗口(windows)、图标(icon)、菜单(menu)、指点装置(point
14、ing device)为基础的交互式系统, 形成WIMP标准, 以实际动作代替复杂语法。 (见P243249),8. 交互式系统的历史与展望,六十年代中期: 问答式对话、文本菜单或命令语言,基于命令行界面的交互式系统。 八十年代: 图形界面, 形成WIMP标准,以指点装置的实际动作代替复杂语法。 多媒体界面是WIMP另一种风格, 是单通道的。 未来的交互式系统必将是多通道的 通过各种不同的人体通道, 如: 语音、手势、思维语言等交互, 大大提高交互的自然性和高效性。 遵循以人为中心的自然交互特点, 实现人与系统的无障碍自然交互。,7.1.4 交互式系统实例分时系统,分时系统中的用户控制作业的执
15、行大致有四个阶段: 终端的连接 用户登录 控制作业执行 用户退出,1. 终端的连接,必须使终端设备与计算机系统线路接通 近程终端是直接与计算机系统连接的, 当终端设备加电后, 终端就与计算机系统线路接通。 远程终端通过租用专线或交换线接到计算机系统, 在终端加电后用户还需通过电话拨号进行呼叫, 直到接通。 当终端与计算机系统在线路上接通后, 计算机系统会在终端上显示信息告诉用户。,2. 用户登录,用户必须向系统登录 用户首先输入“登录”命令(login)命令 系统会向询问用户名、作业名、口令和资源需求等, 经过识别用户、核对口令, 系统在终端上显示“已登录”和进入系统的时间等信息。 若口令不对
16、或资源暂时不能满足时,则系统在终端上显示“登录不成功”并给出登录失败的原因。 用户的登录过程可看作是对终端作业的作业调度,3. 控制作业执行,登录成功的终端用户 可从终端上输入作业的程序和数据 用系统提供的命令语言或会话语句控制作业执行 每输入一命令或一会话语句后, 由系统解释执行且在终端上显示执行成功或问题, 由用户决定下一步命令或会话, 直到作业完成,4. 用户退出,用户输入“退出”命令 (logout) 请求退出系统, 系统接收命令后就收回该用户所占的资源让其退出, 同时在终端上显示“退出时间”或“使用系统时间。 时间片轮转: 在OS控制下,采用“时间片轮转”方法使每个终端作业都能在一个
17、“时间片”内去占用处理器。 当时间片用完后, 让出处理器给另一终端作业。 这样, 保证从终端用户输入命令到计算机系统给出应答只是几秒钟的时间, 使端用户感到满意。,7.2 系统调用,7.2.1. 系统调用简介,为了保证OS不被用户程序破坏, 不允许用户程序直接访问OS的系统程序和数据, 只能用系统调用访问。 1. 系统调用 用户在程序中调用操作系统提供的子功能 是特殊的过程调用, 由特殊的机器指令实现。几百种 系统调用指令还将系统转入管态 系统调用程序是一个低级过程,只能由汇编语言直接访问(许多高级语言也增加了此项功能)。 系统调用是操作系统提供给编程人员的唯一接口,利用系统调用, 动态请求和
18、释放系统资源, 完成与硬件相关的工作以及控制程序的执行等。,Passing of Parameters As A Table,A System Call is the main way a user program interacts with the Operating System.,Figure 3.1,Figure 2.8,System Calls,2. 处理器的状态,根据运行程序对资源和机器指令的使用权限将处理器设置为不同状态 多数系统将处理器工作状态划分为管态和目态 管态:操作系统管理程序运行的状态,较高的特权级别, 又称为特权态(特态)、系统态 目态:用户程序运行时的状态, 较低
19、的特权级别, 又称为普通态(普态)、用户态,管态和目态的差别,处理器处于管态时: 全部指令(包括特权指令)可以执行 可使用所有资源 并具有改变处理器状态的能力 处理器处于目态时: 只有非特权指令能执行 特权级别不同可运行指令集合也不同 特权级别越高,可以运行指令集合越大 高特权级别对应的可运行指令集合包含低特权级的,3.系统调用的实例,汇编程序例子:在屏幕上显示一字符串 查系统调用表得知,调用号为09H,出口参数无, 入口参数: DS:DX输出字串所在缓冲区首址: MOV AH, 09H MOV DX, SEG Mystring MOV DS, DX MOV DX, OFFSET Mystri
20、ng INT 21H Mystring DB Hello World,高级语言例子:打印5个字符 char buff4=“abcde”; for(i=4;i=0;i-) print(buffi); 高级语言例子: 读硬盘文件f1的第10到20个字节 seek(fd,10,0); read(fd,buff,11);,A=A+1 printf(. . .) B=B+A,(1)源程序段,INT,(2) printf 目标代码,IN,OUT,(3) 操作系统 内部代码,该系统调用的操作系统内部实现 代码,凡是与硬件相关、与应用无关的工作,都通过操作系统程序来完成,系统调用与一般过程调用的对比,不同点:
21、(1) 一般过程调用,调用程序和被调用程序都运行在相同状态(核心态或用户态), 而系统调用, 调用程序在用户态, 被调用程序在核心态。 (2)一般过程调用调用时不涉及系统状态转换,直接转向被调用过程; 而系统调用调用时涉及系统状态的转换, 不允许由调用过程直接转向被调用过程, 要先通过软中断机制由用户态转换为核心态, 在OS 核心分析后, 再转向相应的系统调用处理子程序。 (3)抢占式调度系统中,系统调用返回时会引起重新调度,相同点: 改变指令流程,转去执行公用程序段, 可嵌套。,7.2.2系统调用的类型,从系统调用的服务目的分为两部分: (1) 系统自身所需要的。 (2) 作为服务提供给用户
22、的。 按系统调用的功能分为四类: 1. 进程控制类系统调用: 2. 进程通信类系统调用: 3. 文件操作类系统调用: 4. 信息维护类系统调用:,UNIX系统调用的类型: (P238) 1. 进程控制类系统调用: 创建进程: fork( ) 终止进程: exit( ) 等待子进程结束: wait( ) 执行一个可执行文件(覆盖调用者): exec( ) 获得进程ID: getp-id( )、getpgrp( )、getppid( ) 获得用户ID: getuid( )、getgid( ) 进程暂停: pause( ),2. 进程通信类系统调用: 消息机制:打开连接/接收连接,发送/接收消息;
23、建立消息队列msgget( ) 发送消息msgsed( ) 接收消息msgrcv( ) 共享存储区机制: 建立存储区: shmget( ) 建立连接: shmat( ) 拆除连接: shmdt( ) 信号量机制: 信号量集表, 信号量表. 建立信号量集: semget( ) 对信号量集操作: semop( ) 、semctl( ),3. 文件操作类系统调用: 创建文件: creat( ) 打开文件: open( ) 关闭文件: close( ) 读/写文件: read( ) 、write( ) 移动读/写指针: seek( ) 共享的连接和去连接(删除): link( ) 、unlink( )
24、 4. 信息维护类系统调用: 设置和获得系统时间stime( ) 获得进程时间: times( ) 设置文件访问和修改时间: utime( ) 获得当前系统名称:uname ( ) 包括名称串,标准名,在网络中的名称,7.2.3 系统调用的实现,用户怎样通过系统调用得到系统服务的呢? 需要有一个类似于硬件中断处理的处理机构。当用户使用操作系统调用时产生一条相应的指令, 处理机在执行到该指令时发生相应的中断, 并发出有关的信号给该处理机构,该处理机构在收到了处理机发来的信号后, 启动相关的处理程序去完成该系统调用所要求的功能。,1. 中断和陷入硬件机构 (1)中断是CPU对系统发生的某(外部)事
25、件的响应: CPU暂停正在执行的程序,保护现场转去执行该事件的中断处理程序,执行完后返回原程序断点继续执行。 (2) 陷入(内中断,捕获)是由CPU内部事件引起的中断 如: 非法指令、地址越界、溢出、电源故障等。 陷入由执行现行指令引起,中断则与现行指令无关。 还可以把由于系统调用引起处理机中断的指令称为陷入或异常指令(或称访管指令), 或软中断指令。从中断的观点看, 引起中断的事件就是系统调用本身。,(3) 每个系统调用都对应一个事先给定的功能号 在陷入指令中必须包括对应系统调用的功能号,而且,还带有传给陷入处理机构和内部处理程序的有关参数。 (4)中断和陷入向量(P 237 图7-5) 必
26、须为系统调用功能的各子程序编造陷入(中断)向量表, 每个表目由入口地址和处理机状态字PSW两个字组成; 陷入处理机构把陷入指令包含的功能号与入口地址表项相对应, 执行对应的子程序。 (5) 保护和恢复现场: 在进入系统调用之前,在系统栈保护处理机现场。 在系统调用结束之后要恢复处理机现场。,2.系统调用的参数传递,每一条系统调用都含有若干个参数,执行系统调用时,将这些参数传递给相应的子程序。怎样实现用户程序和系统程序间的参数传递?有两种传递方式: (1) 通过有关通用寄存器来传递参数: 直接将参数送入相应的寄存器(如DOS 21h号中断), 这些寄存器应是系统和用户程序都能访问的,此方法简单,
27、但由于寄存器数量较少, 无法传递较多的参数。 (2)参数表方式 将系统调用所需的参数放入一张参数表中,在将指向该参数表的指针放在某个寄存器(如R0)中; 此方式又分为直接方式和间接方式。(P237 图7-6),变元表:,N 参数1 参数2 参数N,变元表:,N 指针,直接方式,间接方式,UNIX系统中非共享程序用直接方式,共享程序用间接方式。,用户态非共享代码,数据段:,用户态共享代码, trap 00 syscall-p ,user 结构,user 结构,核心态 ppda区,3. 系统调用的处理步骤 (1) 将处理机状态由用户态转为系统态; 由硬件和内核程序进行一般性处理, 即保护现场: 将
28、处理机状态字PSW、程序计数器PC、系统调用号、用户栈指针和通用寄存器内容压入堆栈; 再将用户定义的的参数传送到指定的地方。 (2) 分析系统调用类型, 按系统调用入口表转入相应的系统调用处理子程序(并传递参数); 该表目含该系统调用自带参数的个数(与参数表指针)和入口地址。 (3) 执行系统调用处理子程序。 (4) 执行完后, 恢复被中断的或设置新进程的CPU现场, 然后返回被中断进程或进入新进程。, 系统调用 ,入口表,(1) 转核心态 保护现场 (2) 取系统调 用功能号 找到入口 传递参数,A0 A1 Ai An,Sub0,Sub1,Subi,Subn,用户程序,系统调用 处理过程,(
29、3) 恢复现场 返回原处 或 重新调度 设新现场 进新进程,陷入处理机构 系统子程序,另一进程, ,DOS: INT 21h 软中断, 寄存器传递参数和入口。 Linux: 0x80 (或128)中断向量用来实现系统调用 现代操作系统一般不直接提供系统调用指令接口, 通常做法: 提供一套方便实用的应用程序函数库(API ) 从应用层面重新封装系统调用、屏蔽复杂的系统调用传参问题、提供高级语言接口, 有助于快速开发 在更高层面提供系统程序设计模板库和类库, 如: Windows 2000/XP 提供封装系统调用 Win32 API和高层编程设施MFC以及ATL。 Linux 提供封装系统调用,
30、符合POSIX标准的 API和C运行库。,UNIX系统调用的处理步骤 执行CHMK指令, CPU状态转为核心态, 并保护CPU环境由硬件自动将 PSL、PC、code 压入用户核心栈, 再按中断和陷入向量表转入中断和陷入总控程序trap.S 保护其它环境, 再调用公共处理程序trap.C。 trap.C程序: 确定系统调用号 用参数表传递参数 利用系统调用定义表转入相应的处理程序 善后公共处理,“广义指令”和“虚处理机”,系统调用命令扩充了机器指令, 增强了系统的功能,方便用户使用, 称之为“广义指令”。从用户角度来看,它扩充了机器指令系统, 增强了处理机功能。 “广义指令”和机器指令的不同:
31、 机器指令是由硬件线路直接实现的 “广义指令”由软件(OS提供的多个子程序)实现的 “虚处理机”: “广义指令”相当于, 提供了一台功能更强, 使用更方便的处理机 , 实现了处理机性能上的扩充。为了区别于真实的物理处理机, 称它为“虚处理机”。,3. Win32 应用程序接口,在Windows中, 定义了种类非常多的数以千计的应用程序接口(Win32 API), 提供OS服务 Windows中分辨不出哪些是系统调用(被内核执行), 哪些是用户空间的库调用。事实上, 一个 Windows版本中的系统调用, 也许在另一个Windows 版本中会在用户空间的库调用 在某些Windows版本中, 图形
32、子系统在内核中运行, 它们也是系统调用, 否则是用户空间的库调用,7.4 操作系统的安装与启动,操作系统怎样开始运行(引导和装入) 怎样形成系统操作环境(配置和初始化) 怎样从程序的顺序执行转换到支持程序的并发执行,1. 操作系统的引导和装入,(1) 独立引导方式,操作系统的引导有两种方式: 独立引导(bootup) 辅助下装(download) 大多数系统采用 OS核心文件存储在系统本身的存储设备中 由系统自己将OS核心程序读入内存并运行 最后建立一个操作环境,独立引导方式步骤: (1)系统加电, 执行BIOS中的系统初启程序。 (2)对系统硬件和配置进行自检, 保证无硬件错误。 (3)从硬
33、盘中读入操作系统启动文件,并将控制权交给该程序模块。 (4)执行操作系统启动程序,完成系统环境配置和操作系统初始化工作。 (5)继续读入其余的OS文件,逐个执行相应的系统程序,完成OS各种功能模块的装入,完善OS的操作环境,做好程序并发执行的准备。 (6)等待用户请求和用户作业的输入,经过操作系统调度后并发执行。,OS主要文件不放在系统本身的存储设备中, 而是在系统启动后, 执行下装操作。 从另外的计算机系统中将操作系统常驻部分传送到该计算机中, 使它形成一个操作环境。 优点:可以节省较大的存储空间。 下装的OS并非是全部代码, 只是常驻部分或者专用部分。 当这部分OS出现问题和故障时, 可以
34、再请求下装。,(2) 辅助下装方式,2. 系统配置与初始化,操作系统引导是从程序的顺序执行到并发执行的过程, 操作系统初始化完成后, 才能建立这样的环境。 步骤: (1)关掉系统中断, 以保证系统顺利引导 (2)对当前的系统运行环境进行检查;对系统的配置进行认定, 保存检测的结果作为系统的初始配置条件。 (3)进行操作系统的初始化,BIOS(基本输入输出系统)概览,1. 打开电源 2. 硬件将控制权交给BIOS 3. BIOS运行通电自测试程序,测内存 4. 确认所有外部设备: 键盘、硬盘或扩充卡 5. 确定主引导或初始程序加载(IPL)设备的位置 6. BIOS建立系统资源表 7. 选择并启
35、用初始输入设备 (键盘) 和输出设备(显示器); BIOS在成功启动时俘获这些设置, 并将他们存储到存储器中,8. 搜索非PnP设备, 如外部设备互连(PCI)总线,并将这些设备的ROM的数据添加到资源表中 9. BIOS解决设备冲突,并配置选择的引导设备 10. 通过用适当参数呼叫PnP ( Plug and Play 即插即用) 设备的任选ROM来启动这些设备 11. 启动引导装入程序 12. IPL设备将操作系统装到存储器中 13. BIOS将控制权交给操作系统, 操作系统可以进行其他资源的分配,初始化工作要点,(1)根据OS定义的全局参数,在内存中建立OS工作时所必需的数据结构和各种记
36、录表格, 并且根据当前系统的环境配置情况, 填写相应的表格和结构, 设定它们的初始条件、参数和状态。 (2)最重要的是建立有关进程的所有数据结构,如建立PCB表, 建立相应的进程队列。 (3)操作系统根据检查得到的数据获得自由存储空间的容量, 并且以此作为存储分配的基数之一, 同时建立存储管理的若干数据结构, 如自由空间队列、分配空间队列等, 获得待分配的自由空间的地址。,(4)分别建立系统设备和文件系统的控制结构及相应表格, 并填写好设备的初始条件、状态和类型, 建立好访问文件系统的各种索引表格。 (5)对PCB表和几个进程队列进行初始化。 此时, 可以建立一个空进程(NULL), 或者把执
37、行的这个程序本身作为第一个进程。 如果系统有实时时钟控制, 还需对时钟控制逻辑进行初始化。,操作系统初始化完成后,系统给出系统版本提示和系统信息,开放系统中断。此时,若无其它进程,系统执行空进程,进入循环等待,用户敲击键盘,将会产生键盘中断,从而引起对命令的解释,生成新的进程,引起进程调度。用户通过命令或者程序与操作系统交互,完成用户作业。如果是分时系统或者采用时间片调度,每当时间片到,系统产生中断,也引起新的进程调度,联机命令接口 命令:系统访问,磁盘操作,文件操作,目录操作,通信,其它 终端处理程序: 输入信息,回送显示,提前打入,字符变换,行缓冲,中断字符 命令解释程序: 直接处理,外部
38、命令由子进程代为处理 2. 命令语言通常提供下列几组命令 (1)系统访问: 登录命令login等, 撤离命令logout等 (2)文件操作、目录操作 (3)编辑、编译和执行命令 (4)询问命令 (5)操作员专用命令 (6)重定向命令、管道命令、通信命令 (7)后台命令、批处理命令,3. 系统调用 是操作系统提供给编程人员的唯一接口 分为四类: 进程控制, 进程通信, 文件操作, 信息维护 4.系统调用与一般过程调用比较 相同点: 改变指令流程,转去执行公用程序段, 可嵌套。 不同点: (1) 一般过程调用,主调和被调程序都在相同状态而系统调用,主调程序在用户态, 被调程序在核心态。 (2)一般
39、过程调用直接转向被调过程; 而系统调用先通过软中断机制在OS 核心分析后, 再转被调子程序。 (3) 抢占式调度中,系统调用返回时会引起重新调度 4. 系统调用的实现 中断和陷入:中断,陷入,功能号,向量,保护和恢复现场 传递参数: 通用寄存器、参数表(直接, 间接)方式,5. 系统调用的处理步骤 (1) 处理机状态转为系统态; 保护现场 (2) 按系统调用入口表转入相应的子程序(并传递参数); (3) 执行系统调用处理子程序。 (4) 恢复被中断进程或设置新进程的现场, 返回或进入 6. UNIX系统调用的处理步骤 执行CHMK指令, 转为核心态, 并保护CPU环境 转入中断和陷入总控程序trap.S 保护其它环境 再调用公共处理程序trap.C:确定系统调用号、用参数表传递参数、用系统调用定义表转入相应的处理程序、完成后善后公共处理 7.图形用户接口 以窗口、图标、菜单、指点装置为基础的交互式系统, 形成WIMP标准, 以实际动作代替复杂语法。,课后题: P249 1,7,13,16,17,
链接地址:https://www.31doc.com/p-2578582.html