《《操作系统接口》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《操作系统接口》PPT课件.ppt(41页珍藏版)》请在金锄头文库上搜索。
1、第九章第九章 操作系统接口操作系统接口OS 用户与计算机之间的接口。用户与计算机之间的接口。2接口类型接口类型1.用户接口n支持用户与OS的交互:用户向OS请求服务,系统向用户返回服务结果。2.程序接口n即API(Application Programming Interface)n支持程序员编程时使用,使程序可在执行中访问系统资源和服务。n组成:系统调用(system call),每个系统调用是一个能完成特定功能的子程序(访问OS底层服务)。3用户接口用户接口用户接口是计算机系统与用户之间进行交互作用和通信的通路。对绝大多数用户而言,一个计算机系统的可接受性在很大程度上取决于用户接口。用户接
2、口可分为两类:n联机用户接口n脱机用户接口47.1 联机用户接口联机用户接口联机用户接口也叫联机命令接口、交互式用户接口,用于联机作业控制,由一组可与系统交互的命令组成。两种形式:n字符方式w终端字符流n键盘终端输入命令n显示终端反馈结果n图形方式w图标、菜单、对话框5命令语言命令语言用户组终端键盘键入的命令被称为命令语言,由一组命令动词和参数组成,以命令行的形式输入并提交给系统。每一条命令指示系统完成特定的功能。完整的命令集反映了系统提供给用户可使用的全部功能。命令语言又可分为两种方式:n命令行方式n批命令方式6命令行方式命令行方式用户从终端直接输入命令,系统反馈后才能输入下一条命令的执行时
3、间断的,伴随着用户和系统之间的不断交互一般形式:nCommand arg1 arg2 argn7批命令方式批命令方式将多条命令写入批命令文件,一次建立,多次执行。n如,MS-DOS中的.BAT文件。用户不必记忆和键入命令,系统可连续执行多条命令,可减少出错和提高效率。87.1.2 联机命令的类型联机命令的类型1.系统访问类2.磁盘操作命令3.文件操作命令4.目录操作命令5.其它命令9命令接口的支持程序命令接口的支持程序为了实现命令方式下的人机交互,系统需配备:n键盘终端处理程序n命令解释程序107.1.3 键盘终端处理程序键盘终端处理程序功能:1.接收用户从终端上打入的字符2.字符缓冲,用于暂
4、存所接收的字符3.回送显示4.屏幕编辑5.特殊字符处理117.1.4 命令解释程序命令解释程序位于是OS的最高层,以便与用户交互。功能:n先对用户输入的命令进行解释n再转入相应命令的处理程序去执行例如:nMS-DOS中的COMMAND.COMnUNIX中的Shell127.1.4 命令解释程序命令解释程序1.作用n在屏幕上给出提示符,读入和识别命令,转入相应命令处理程序的入口地址,把控制权交给该处理程序执行,将处理结果回送到屏幕显示。2.组成3.工作流程137.3 系统调用系统调用程序接口:OS专为用户程序设置的接口,是用户程序取得OS服务的唯一途径,由各种类型的系统调用组成。1.系统调用的概
5、念2.系统调用的类型3.POSIX标准4.系统调用的实现147.3.1 系统调用的基本概念系统调用的基本概念OS核心中的一组实现各种系统功能的子程序(过程),可以提供给应用程序使用。但是,为了避免破坏OS,不允许用户程序直接调用这些子程序(过程),OS提供了一系列系统调用命令,应用程序只能通过系统调用去调用所需系统过程。15系统态和用户态系统态和用户态为了防止系统程序被破坏,为计算机设置了两种状态:n系统态(管态、核心态)w操作系统n用户态(目态)w应用程序实际运行中,处理机会在系统态和用户态切换。使用系统调用时,需要进行两种状态的切换。16特权指令和非特权指令特权指令和非特权指令特权指令n系
6、统态时运行的指令n对内存空间访问不受限制,可访问用户空间,也可访问系统空间n如:启动外设、设置系统时钟、关中断n只允许操作系统使用,不允许应用程序使用非特权指令n用户态时运行的指令n只能访问用户空间n不能直接访问系统中的硬件和软件,避免应用程序运行异常时破坏系统n采用硬件实现权限的限制17系统调用系统调用前述机制带来的矛盾:n为了安全性,应用程序不能直接调用操作系统过程n不使用操作系统提供的服务,应用程序做不了什么有价值的工作,甚至无法正常工作系统调用的作用:n使应用程序可以间接调用OS的相关过程,取得相应的服务。系统调用的本质n应用程序向OS请求服务时的过程调用n是一种特殊的过程调用18系统
7、调用的特殊性系统调用的特殊性与一般的过程调用相比,系统调用具有一定的特殊性系统调用一般过程调用运行状态主调程序:用户态被调程序:系统态主调程序和被调程序同在用户态或系统态状态切换通过软中断进入状态切换不切换返回问题可能引起调度不调度嵌套调用有深度限制不限制深度19系统态系统态用户态用户态系统调用举例系统调用举例读写文件读写文件读读写写opencreatereadwritecloseexit用户程序用户程序系统调用系统调用输入文件输入文件输出文件输出文件20中断机制中断机制系统调用通过中断机制实现,一个操作系统的所有系统调用都通过同一个中断入口来实现。n如:wMS-DOS提供了INT 21HwL
8、inux使用80h217.3.2 系统调用的类型系统调用的类型1.进程控制n创建/终止进程,获得/设置进程属性,等待某事件2.文件操纵n创建/删除文件,打开/关闭文件,读/写文件3.进程通信n打开/接受连接;发送/接收消息,关闭连接4.设备管理n申请/释放设备、设备I/O、重定向、设置设备属性、逻辑上连接/释放设备等5.信息维护n获得系统时间/版本,文件时间/日期,当前用户,空闲内存、磁盘空间大小等227.3.3 POSIX标准标准为了实现应用程序与操作系统平台的无关性,国际化标准组织ISO给出了有关系统调用的国际标准POSIX1003.1(Portable Operation System
9、IX),也称为“基于UNIX的可移植操作系统接口”。POSIX定义了标准应用程序接口(API),用于保证应用程序在源代码一级兼容多种操作系统。POSIX规定了系统调用的功能,没有明确规定系统调用的实现形式。常见实现形式:n汇编语言,可看作扩展机器指令,可在汇编语言编程中直接使用nC语言,以库函数提供,可在C语言编程中直接使用23系统调用接口位置系统调用接口位置用户程序用户程序编程编程工具工具二进制指令系统二进制指令系统硬件硬件系统调用接口系统调用接口编程工具包编程工具包操作系统操作系统硬件硬件硬件控制程序硬件控制程序文件子系统文件子系统I/O设设备备字符字符块设备块设备设备驱动设备驱动程序程序
10、进进程程控控制制进程间通信进程间通信进程调度进程调度内存管理内存管理247.3.4 系统调用的实现系统调用的实现用户态到系统的转换,需借助中断和陷入机制。中断和陷入机制包括:n中断和陷入硬件机构n中断和陷入处理程序过程:n系统调用指令中断信号送入中断和陷入硬件机构启动中断和陷入处理程序25中断和陷入硬件机构中断和陷入硬件机构1.中断和陷入的概念n中断:CPU对系统发生某事件时的一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。(见图7-5)n进一步细分:w外中断:由外部设备事件引起的中断w内中断:由CPU内部事件引起的
11、中断,由现行指令引起,也成为“捕获”或“陷入”(trap)26中断和陷入硬件机构中断和陷入硬件机构1.中断和陷入向量n中断向量:每个设备有一个对应的中断处理程序,其入口地址存放在某个内存单元,也对应着不同处理机状态字PSW,存放在与中断处理程序入口指针相邻的单元。这两个字称为中断向量。n陷入向量与中断向量类似,对应系统调用。n所有的中断向量和陷入向量构成中断和陷入向量表。27系统调用号和参数的设置系统调用号和参数的设置系统调用号n一般为每条系统调用赋予一个唯一的系统调用号。n系统调用号用来传递给中断和陷入机制。系统调用号及其他参数的传递方法n陷入指令自带(使用指令的若干位,很少)n寄存器(数量
12、有限)n参数表(内存),参数表指针(寄存器)28系统调用的处理步骤系统调用的处理步骤处理机状态切换(用户态系统态),保护被中断进程的CPU现场;转入系统调用处理子程序执行;恢复CPU现场,返回被中断进程或新进程执行297.4 实例实例: UNIX系统调用系统调用1. 进程控制n创建进程(fork)n终止进程(exit)n等待子进程结束(wait)n执行一个文件(exec)n获得进程ID(getp-id, getpgrp, getppid)n获得用户ID(getuid, geteuid, getgid)n进程暂停(pause)30示例:创建子进程示例:创建子进程31示例示例. 两进程分别输出两进
13、程分别输出A,B#include #include main()int i;pid_t pid;if (pid=fork()0)return -1;elseif (pid=0)for (i=1; i11; i+)printf(Child Process B, PID:%dn, getpid();sleep(i);elsefor(i=1; i11; i+)printf(Parent Process A, PID:%dn, getpid();sleep(2*i);32比较:比较:Windows中进程创建中进程创建int system( const char *command ) 运行命令行命令(程
14、序)commandint _spawnl( int mode, const char *cmdname, const char *arg0, const char *arg1, . const char *argn, NULL )以模式mode,创建进程并以新进程执行程序cmdname,传入参数arg0-argn33_spawn调用的模式调用的模式_P_OVERLAY 子进程执行后,父进程中止_P_WAIT 父进程暂停,等待子进程运行完成后继续_P_NOWAIT 父进程、子进程并行运行_P_DETACH 父子进程并行运行,但子进程不能使用脱离对控制台键盘和显示输出的控制34Autorun.ex
15、e实现实现#include #include int main(int argc, char argv)system(explorer .);/ printf(virus code may run here!n);/ system(pause);return 0;35Autorun2.exe的实现的实现#include stdafx.hint APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)_spawnl(_P_NOWAIT, C:windowsexplor
16、er.exe, C:windowsexplorer.exe, ., NULL);MessageBox(0, Virus Code May Execute here, Virus, MB_ICONWARNING);return 0;367.4 实例实例: UNIX系统调用系统调用2. 文件操纵n创建文件(create)n打开文件(open)n关闭文件(close)n读和写文件(read和write)n连接和去连接(link和unlink)w用于共享wi.link=0时删除文件,UNIX无文件删除系统调用377.4 实例实例: UNIX系统调用系统调用3. IPC(Inter-ProcessCom
17、munication):用于实现进程间通信的软件包,包括三部分:n消息机制wmsgget(建立消息队列), msgsend, msgrcvn共享存储器机制wshmget(建立共享存储区), shmat(连接本进程到共享区), shmdt(拆除链接)n信号量机制387.4 实例实例: UNIX系统调用系统调用4. 信息维护n设置和获得时间(stime)n获得进程和子进程时间(times)n设置文件访问和修改时间(utime)n获得当前UNIX系统的名称(uname)397.4.2 被中断进程的环境保护被中断进程的环境保护trap.S程序nUNIX的中断和陷入总控程序,用于中断和陷入的一般性处理。
18、n包含了绝大部分中断和陷入向量的入口地址,系统发生中断和陷入情况时,通常先进入trap.S程序。407.4.2 被中断进程的环境保护被中断进程的环境保护CPU环境保护n执行系统调用命令前(用户态)w参数表地址R0n执行系统调用命令后w用户态核心态wCPU现场保护(初步:PSL、PC、code入用户栈,硬件实现)w转入trap.S程序执行,继续保存CPU现场(陷入类型、用户栈指针、被中断进程的CPU环境中的一系列寄存器)417.4.3 系统调用陷入后需处理的公共问题系统调用陷入后需处理的公共问题确定系统调用号n进入trap.S后,再调用trap.C,trap.C用于处理各种陷入情况,调用形式如下:wtrap(usp, type, code, PC, PSL)w可从code参数确定系统调用号参数传递n指系统调用的参数表,首址入R0, 由trap.C送入U.U-arg利用系统调用定义表转入相应的处理程序n系统调用定义表包含了各种处理子程序的入口地址n子程序执行完毕,返回trap.C系统调用返回前的公共处理nUNIX使用动态优先级调度,返回trap.C后,要重新计算进程优先级,重新调度