操作系统结构
内容 操作系统服务 用户与操作系统接口 系统调用 操作系统结构
操作系统服务 用户接口User Interface 命令行接口Command-Line Interface (CLI), 图形用户接口Graphics User Interface (GUI) 批处理 Batch 程序执行 - 调入一个程序进入内存并运行之的系统能力 I/O操作 - 由于用户程序不能直接执行I/O操作,操作系统必须提供完成I/O操作的手段 文件系统操纵 – 程序能够读、写、创建和删除文件
操作系统服务 通信 - 运行的进程间在同一计算机或由网络连接的不同系统中交换信息。通过共享存储器或消息传递实现 出错检测 – 通过探测在CPU与内存硬件中,在I/O设备中,或在用户程序中的错误,确保正确运算 资源分配- 把资源分配给多个用户或多个同时运行的作业 计帐- 跟踪和记录用户对资源的使用,用于帐单和统计 保护 - 确保对资源的所有访问均在控制中
操作系统的用户界面(接口) 操作系统与用户接口 命令接口Command Interface 程序接口Program Interface (系统调用) 命令接口 命令行用户接口,文本界面 图形用户接口
操作系统的用户界面(接口) 命令行用户界面(Command line User Interface CUI) 键盘输入 DOS、Linux、UNIX 图形用户界面(Graphic User Interface GUI) 鼠标输入 MacOS、OS/2、WINDOWS、Linux等 程序接口 系统调用( System Calls)、API 系统调用和API的区别?
系统调用 系统调用提供了进程与操作系统之间的接口 这些调用通常以汇编语言指令的形式提供 有些语言(如C, C++和Perl)已经取代了汇编语言而直接用于系统编程 向操作系统传递参数通常用三种方法 通过寄存器来传递参数 参数数量可能会比寄存器多 将参数存放在内存的块或表中,并将块的地址作为参数传递给寄存器 指针 将参数放在堆栈中,并通过操作系统弹出堆栈 不限制所传递参数的数量或长度
参数作为表传递
Example of Standard API Consider the ReadFile() function in the Win32 API—a function for reading from a file A description of the parameters passed to ReadFile() HANDLE file—the file to be read LPVOID buffer—a buffer where the data will be read into and written from DWORD bytesToRead—the number of bytes to be read into the buffer LPDWORD bytesRead—the number of bytes read during the last read LPOVERLAPPED ovl—indicates if overlapped I/O is being used
为什么需要系统调用 系统调用是内核向用户进程提供服务的唯一方法,应用程序调用操作系统提供的功能模块(函数)。 用户程序通过系统调用从用户态(user mode)切换到核心态(kernel mode),从而可以访问相应的资源。这样做的好处是: 为用户空间提供了一种硬件的抽象接口,使编程更加容易。 有利于系统安全。 有利于每个进程度运行在虚拟系统中,接口统一有利于移植。
系统调用的类型 进程控制:结束,中止,装入,执行,创建、终止进程等 文件管理:创建文件,删除文件,打开,关闭文件等 设备管理:请求设备,释放设备,读、写、重定位设备等 信息维护:读取时间或日期、设置时间或日期等 通信:创建、删除通信连接,发送、接收消息,传递状态信息等
c库中的printf() c库中的write() 系统调用、API和C库 应用编程接口(API)其实是一组函数定义,这些函数说明了如何获得一个给定的服务;而系统调用是通过软中断向内核发出一个明确的请求,每个系统调用对应一个封装例程(wrapper routine,唯一目的就是发布系统调用)。一些API应用了封装例程。 API还包含各种编程接口,如:C库函数、OpenGL编程接口等 系统调用的实现是在内核完成的,而用户态的函数是在函数库中实现的 调用printf() c库中的printf() c库中的write() sys_write()系统调用 应用程序 C库 内核
操作系统的设计 操作系统设计有着不同于一般应用系统设计的特征: 复杂程度高 研制周期长 正确性难以保证 最早Uinx是1400行代码; Windows xp有4000万行代码; fedroa core有2亿多行代码,Linux kernel 3.10有1700万行代码。 解决途径: 良好的操作系统结构 先进的开发方法和工程化的管理方法(软件工程) 高效的开发工具
操作系统的设计考虑 功能设计:操作系统应具备哪些功能 算法设计:选择和设计满足系统功能的算法和策略,并分析和估算其效能 结构设计:选择合适的操作系统结构 按照系统的功能和特性要求,选择合适的结构,使用相应的结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简单、可靠、易读、易修改,而且使用方便,适应性强
几种常见的操作系统结构 简单结构 层次化结构 单(宏)内核结构 微内核 模块(Modules) 虚拟机
简单结构 Simple Structure MS-DOS - 利用最小的空间提供最多的功能 没有被划分成模块
MS-DOS Structure
Traditional UNIX System Structure
UNIX系统结构 UNIX - 最初受到硬件功能的限制,它由两个独立的部分组成 内核 系统程序 包括系统调用接口之下和物理 硬件之上的所有部分 内核通过系统调用提供文件系统、CPU调度、内存管理和其他操作系统功能。 系统程序 UNIX、Linux从另一个角度看也是单内核结构
层次结构 Layered Approach 操作系统分成若干层,每层建立在较低层之上。最底层(层0)是硬件,最高层(层N)是用户接口 分层法的主要优点是模块化。选择了分层,这样每层只能利用较低层的功能(或操作)和服务。 分层法与其他方法相比其效率稍差。
Layered Operating System
单/宏内核结构 Monolithic Kernels Structure Monolithic Kernels :the entire code of the kernel — including all its subsystems such as memory management, filesystems, or device drivers — is packed into a single file. Each function has access to all other parts of the kernel; Earliest and most common OS architecture (UNIX,MS-DOS) Every component of the OS is contained in the Kernel Examples: OS/360, VMS and Linux
微内核结构 Microkernel System Structure 这种方法将所有非基本部分从内核中移走,并将它们当做系统级程序和用户级程序来实现,用这种方法来构建操作系统 用户模块之间采用消息传递的方式进行通信
Microkernel System Structure (微内核结构) 优点 微内核易于扩展 易于提升OS至一个新的体系结构 更可靠(内核模式中运行的代码更少) 更安全 缺点 用户空间 与内核空间的通信代价较高 Windows NT ... Windows 8、Mac OS、Mach、L4
Windows Kernel Windows NT 4.0 起,采用 microkernel 的架构 Kernel Mode CLIENT AP Network Service ... Display Service SERVER Heap Service File Service SEND REPLY User Mode Kernel Mode Micro Kernel Hardware Windows NT 4.0 起,采用 microkernel 的架构
模块 Modules 许多现代操作系统实现内核模块(kernel modules) 总之,模块类似与分层,但模块更具灵活性 用面向对象的方法 内核的组成部分相互分离 任务之间的交互通过已知的接口来实现 每个模块在内核中是按照需要可装载的 总之,模块类似与分层,但模块更具灵活性 Linux、Solaris、Mac OS
Solaris Modular Approach
Mac OS X Structure
虚拟机 virtual machine 虚拟机采用了分层的方法。它将物理硬件和OS内核统一看作为硬件 虚拟机提供了与基本硬件相同的接口 通过利用CPU调度和虚拟内存技术,操作系统能创建一种幻觉,以至于进程认为有自己的处理器和自己的(虚拟)内存。 物理计算机共享资源以创建虚拟机 CPU调度能共享出CPU造成一种每个用户都有自己的处理器的感觉 假脱机和文件系统能提供虚拟读卡机和虚拟行式打印机 一个普通的用户分时终端提供虚拟机操作员终端的功能 virtual machine software: VMWARE、 VirtualBox 、Virtual PC
(a)Non-virtual Machine Virtual Machines (a)Non-virtual Machine (b)Virtual Machine
虚拟机的优缺点 通过完全保护系统资源,虚拟机提供了一个坚实的安全层 虚拟机允许进行系统开发而不必中断正常的系统操作 但虚拟机概念很难提供真实的硬件效果
习题分析 1、相对于单一内核结构,采用微内核结构设计和实现操作系统具有诸多好处,但是, 并不是微内核的优势。 1、相对于单一内核结构,采用微内核结构设计和实现操作系统具有诸多好处,但是, 并不是微内核的优势。 A.使系统更高效 B. 想添加系统服务时,不必修改内核 C. 使系统更安全 D. 使系统更可靠 2、操作系统中提供了一种进程间的通信机制,把一个进程的标准输出与另一个进程的标准输入连接起来,这种机制称为 A. 重定向 B. 管道 C. socket D. 共享内存
习题分析 3、为了在通用操作系统管理下的计算机上运行一个程序,需要经历几个步骤。但是, 不一定需要。 A.向操作系统预定运行时间 3、为了在通用操作系统管理下的计算机上运行一个程序,需要经历几个步骤。但是, 不一定需要。 A.向操作系统预定运行时间 B. 将程序装入内存 C. 确定起始地址,并从这个地址开始执行 D. 用控制台监控程序执行过程
习题分析 4、下列选择中, 不是操作系统关心的主要问题。 A. 提供保护和安全机制 B. 管理目录和文件 C. 提供应用程序接口 4、下列选择中, 不是操作系统关心的主要问题。 A. 提供保护和安全机制 B. 管理目录和文件 C. 提供应用程序接口 D. 提供JAVA语言编译器
End