《操作系统接口》PPT课件.ppt_第1页
《操作系统接口》PPT课件.ppt_第2页
《操作系统接口》PPT课件.ppt_第3页
《操作系统接口》PPT课件.ppt_第4页
《操作系统接口》PPT课件.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第九章 操作系统接口,OS 用户与计算机之间的接口。,接口类型,用户接口 支持用户与OS的交互:用户向OS请求服务,系统向用户返回服务结果。 程序接口 即API(Application Programming Interface) 支持程序员编程时使用,使程序可在执行中访问系统资源和服务。 组成:系统调用(system call),每个系统调用是一个能完成特定功能的子程序(访问OS底层服务)。,用户接口,用户接口是计算机系统与用户之间进行交互作用和通信的通路。 对绝大多数用户而言,一个计算机系统的可接受性在很大程度上取决于用户接口。 用户接口可分为两类: 联机用户接口 脱机用户接口,7.1 联

2、机用户接口,联机用户接口也叫联机命令接口、交互式用户接口,用于联机作业控制,由一组可与系统交互的命令组成。 两种形式: 字符方式 终端字符流 键盘终端输入命令 显示终端反馈结果 图形方式 图标、菜单、对话框,命令语言,用户组终端键盘键入的命令被称为命令语言,由一组命令动词和参数组成,以命令行的形式输入并提交给系统。 每一条命令指示系统完成特定的功能。 完整的命令集反映了系统提供给用户可使用的全部功能。 命令语言又可分为两种方式: 命令行方式 批命令方式,命令行方式,用户从终端直接输入命令,系统反馈后才能输入下一条 命令的执行时间断的,伴随着用户和系统之间的不断交互 一般形式: Command

3、arg1 arg2 argn,批命令方式,将多条命令写入批命令文件,一次建立,多次执行。 如,MS-DOS中的.BAT文件。 用户不必记忆和键入命令,系统可连续执行多条命令,可减少出错和提高效率。,7.1.2 联机命令的类型,系统访问类 磁盘操作命令 文件操作命令 目录操作命令 其它命令,命令接口的支持程序,为了实现命令方式下的人机交互,系统需配备: 键盘终端处理程序 命令解释程序,7.1.3 键盘终端处理程序,功能: 接收用户从终端上打入的字符 字符缓冲,用于暂存所接收的字符 回送显示 屏幕编辑 特殊字符处理,7.1.4 命令解释程序,位于是OS的最高层,以便与用户交互。 功能: 先对用户输

4、入的命令进行解释 再转入相应命令的处理程序去执行 例如: MS-DOS中的COMMAND.COM UNIX中的Shell,7.1.4 命令解释程序,作用 在屏幕上给出提示符,读入和识别命令,转入相应命令处理程序的入口地址,把控制权交给该处理程序执行,将处理结果回送到屏幕显示。 组成 工作流程,7.3 系统调用,程序接口:OS专为用户程序设置的接口,是用户程序取得OS服务的唯一途径,由各种类型的系统调用组成。 系统调用的概念 系统调用的类型 POSIX标准 系统调用的实现,7.3.1 系统调用的基本概念,OS核心中的一组实现各种系统功能的子程序(过程),可以提供给应用程序使用。 但是,为了避免破

5、坏OS,不允许用户程序直接调用这些子程序(过程),OS提供了一系列系统调用命令,应用程序只能通过系统调用去调用所需系统过程。,系统态和用户态,为了防止系统程序被破坏,为计算机设置了两种状态: 系统态(管态、核心态) 操作系统 用户态(目态) 应用程序 实际运行中,处理机会在系统态和用户态切换。 使用系统调用时,需要进行两种状态的切换。,特权指令和非特权指令,特权指令 系统态时运行的指令 对内存空间访问不受限制,可访问用户空间,也可访问系统空间 如:启动外设、设置系统时钟、关中断 只允许操作系统使用,不允许应用程序使用 非特权指令 用户态时运行的指令 只能访问用户空间 不能直接访问系统中的硬件和

6、软件,避免应用程序运行异常时破坏系统 采用硬件实现权限的限制,系统调用,前述机制带来的矛盾: 为了安全性,应用程序不能直接调用操作系统过程 不使用操作系统提供的服务,应用程序做不了什么有价值的工作,甚至无法正常工作 系统调用的作用: 使应用程序可以间接调用OS的相关过程,取得相应的服务。 系统调用的本质 应用程序向OS请求服务时的过程调用 是一种特殊的过程调用,系统调用的特殊性,与一般的过程调用相比,系统调用具有一定的特殊性,系统态,用户态,系统调用举例读写文件,读 写,open create read write close exit ,用户程序,系统调用,输入文件,输出文件,中断机制,系统

7、调用通过中断机制实现,一个操作系统的所有系统调用都通过同一个中断入口来实现。 如: MS-DOS提供了INT 21H Linux使用80h,7.3.2 系统调用的类型,进程控制 创建/终止进程,获得/设置进程属性,等待某事件 文件操纵 创建/删除文件,打开/关闭文件,读/写文件 进程通信 打开/接受连接;发送/接收消息,关闭连接 设备管理 申请/释放设备、设备I/O、重定向、设置设备属性、逻辑上连接/释放设备等 信息维护 获得系统时间/版本,文件时间/日期,当前用户,空闲内存、磁盘空间大小等,7.3.3 POSIX标准,为了实现应用程序与操作系统平台的无关性,国际化标准组织ISO给出了有关系统

8、调用的国际标准POSIX1003.1(Portable Operation System IX),也称为“基于UNIX的可移植操作系统接口”。 POSIX定义了标准应用程序接口(API),用于保证应用程序在源代码一级兼容多种操作系统。 POSIX规定了系统调用的功能,没有明确规定系统调用的实现形式。常见实现形式: 汇编语言,可看作扩展机器指令,可在汇编语言编程中直接使用 C语言,以库函数提供,可在C语言编程中直接使用,系统调用接口位置,用户程序,编程工具,二进制指令系统,硬件,系统调用接口,编程工具包,操作系统,硬件,硬件控制程序,文件子系统,I/O,设备,字符 块设备,设备驱动程序,进程控制

9、,进程间通信,进程调度,内存管理,7.3.4 系统调用的实现,用户态到系统的转换,需借助中断和陷入机制。 中断和陷入机制包括: 中断和陷入硬件机构 中断和陷入处理程序 过程: 系统调用指令中断信号送入中断和陷入硬件机构启动中断和陷入处理程序,中断和陷入硬件机构,中断和陷入的概念 中断:CPU对系统发生某事件时的一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。(见图7-5) 进一步细分: 外中断:由外部设备事件引起的中断 内中断:由CPU内部事件引起的中断,由现行指令引起,也成为“捕获”或“陷入”(trap),中断和陷

10、入硬件机构,中断和陷入向量 中断向量:每个设备有一个对应的中断处理程序,其入口地址存放在某个内存单元,也对应着不同处理机状态字PSW,存放在与中断处理程序入口指针相邻的单元。这两个字称为中断向量。 陷入向量与中断向量类似,对应系统调用。 所有的中断向量和陷入向量构成中断和陷入向量表。,系统调用号和参数的设置,系统调用号 一般为每条系统调用赋予一个唯一的系统调用号。 系统调用号用来传递给中断和陷入机制。 系统调用号及其他参数的传递方法 陷入指令自带(使用指令的若干位,很少) 寄存器(数量有限) 参数表(内存),参数表指针(寄存器),系统调用的处理步骤,处理机状态切换(用户态系统态),保护被中断进

11、程的CPU现场; 转入系统调用处理子程序执行; 恢复CPU现场,返回被中断进程或新进程执行,7.4 实例: UNIX系统调用,1. 进程控制 创建进程(fork) 终止进程(exit) 等待子进程结束(wait) 执行一个文件(exec) 获得进程ID(getp-id, getpgrp, getppid) 获得用户ID(getuid, geteuid, getgid) 进程暂停(pause),示例:创建子进程,示例. 两进程分别输出A,B,#include #include main() int i; pid_t pid; if (pid=fork()0)return -1; elseif (

12、pid=0) for (i=1; i11; i+) printf(Child Process B, PID:%dn, getpid();sleep(i); else for(i=1; i11; i+)printf(Parent Process A, PID:%dn, getpid();sleep(2*i); ,比较:Windows中进程创建,int system( const char *command ) 运行命令行命令(程序)command int _spawnl( int mode, const char *cmdname, const char *arg0, const char *a

13、rg1, . const char *argn, NULL ) 以模式mode,创建进程并以新进程执行程序cmdname,传入参数arg0-argn,_spawn调用的模式,_P_OVERLAY 子进程执行后,父进程中止 _P_WAIT 父进程暂停,等待子进程运行完成后继续 _P_NOWAIT 父进程、子进程并行运行 _P_DETACH 父子进程并行运行,但子进程不能使用脱离对控制台键盘和显示输出的控制,Autorun.exe实现,#include #include int main(int argc, char argv) system(explorer .); /printf(virus

14、code may run here!n); /system(pause); return 0; ,Autorun2.exe的实现,#include stdafx.h int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) _spawnl(_P_NOWAIT, C:windowsexplorer.exe, C:windowsexplorer.exe, ., NULL); MessageBox(0, Virus Code May Execute here, V

15、irus, MB_ICONWARNING); return 0; ,7.4 实例: UNIX系统调用,2. 文件操纵 创建文件(create) 打开文件(open) 关闭文件(close) 读和写文件(read和write) 连接和去连接(link和unlink) 用于共享 i.link=0时删除文件,UNIX无文件删除系统调用,7.4 实例: UNIX系统调用,3. IPC(Inter-ProcessCommunication):用于实现进程间通信的软件包,包括三部分: 消息机制 msgget(建立消息队列), msgsend, msgrcv 共享存储器机制 shmget(建立共享存储区),

16、 shmat(连接本进程到共享区), shmdt(拆除链接) 信号量机制,7.4 实例: UNIX系统调用,4. 信息维护 设置和获得时间(stime) 获得进程和子进程时间(times) 设置文件访问和修改时间(utime) 获得当前UNIX系统的名称(uname),7.4.2 被中断进程的环境保护,trap.S程序 UNIX的中断和陷入总控程序,用于中断和陷入的一般性处理。 包含了绝大部分中断和陷入向量的入口地址,系统发生中断和陷入情况时,通常先进入trap.S程序。,7.4.2 被中断进程的环境保护,CPU环境保护 执行系统调用命令前(用户态) 参数表地址R0 执行系统调用命令后 用户态核心态 CPU现场保护(初步:PSL、PC、code入用户栈,硬件实现) 转入trap.S程序执行,继续保存CPU现场(陷入类型、用户栈指针、被中断进程的CPU环境中的一系列寄存器),7.4.3 系统调用陷入后需处理的公共问题,确定系统调用号 进入trap.S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论