1、 操作系统操作系统 原理原理 Operating System Principle 2-4 系统调用系统调用 A View of Operating System Services (How to use?) System calls provide the interface between a running program and the operating system. 系统调用提供在运行程序和操作系统之间的接口 System Calls 系统调用 Generally available as assembly-language instructions. 通常以汇编语言指令形式提供
2、通常以汇编语言指令形式提供 Languages defined to replace assembly language for systems programming allow system calls to be made directly (e.g., C. Bliss, PL/360) 替代汇编语言的、供系统编程的语言,允许直接使用系统调用替代汇编语言的、供系统编程的语言,允许直接使用系统调用 Win32 API for Windows POSIX API for POSIX-based systems (including virtually all versions of UNI
3、X, Linux, and Mac OS X) Java API for the Java virtual machine (JVM) Mostly accessed by programs via a high-level Application Program Interface (API) rather than direct system call use System Calls 系统调用 02 01 03 Processing of system call System Calls 系统调用 CPU在执行到该指令时发生中断,发出有关的信号给陷入处理机构 处理机构在收到了 CPU发来
4、的信号后,启动相关的处理程序去完成该系统调用所要求的功能 在处理系统调用之前,陷入处理机构还需保存处理机现场( PSW、PC、系统调用号、用户栈指针、通用寄存器、用户定义的参数等) 当用户使用系统调用时,产生一条相应的指令 1 2 3 4 Processing of system call (cont.) 01 如何找到实现系统调用功能的子程序:入口地址表,每个入口地址与相应的系统程序对应 02 陷入处理程序用系统调用功能号查找入口地址表,得到该系统程序的入口地址,并执行之 03 系统调用处理结束后,要恢复处理机现场,从而用户程序可以继续执行 System Calls 系统调用 (1)保护处理
5、机现场 (2)取系统调用功能号并据此寻找子程序入口 (3)返回 A0 A1 Ai An Sub0 Sub1 Subi Subn 用户程序 陷入处理机构 系统子程序 系统调用的处理过程 A0 A1 An Ai 入口地址表 system call System Calls 系统调用 Three general methods are used to pass parameters between a running program and the operating system. 3种常用方式用于在运行程序和操作系统之间的参数传递 Pass parameters in registers. 寄存
6、器中的参数传递 Store the parameters in a table in memory, and the table address is passed as a parameter in a register. 参数存在内存的一张表中,表地址作为寄存器的参数传递 Push (store) the parameters onto the stack by the program, and pop off the stack by operating system. 程序把参数压入栈,由操作系统弹出 System Calls 系统调用 (How to use?) Passing of Parameters As A Table 表格方式的参数传递 Types of System Calls process control file management including allocate and free memory device management information maintenance communications