操作系统概述——系统结构中山大学计算机科学系陈国明博士模块组合结构•整个系统按功能进行设计和模块划分。系统是一个单一的、庞大的的软件系统。这种结构思想来源于服务功能观点,而不是资源管理的观点。模块组合结构•模块结构的特点:模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程–优点:具有一定灵活性,在运行中的高效率–缺点:功能划分和模块接口难保正确和合理;模块之间的依赖关系,降低了模块之间的相对独立性--不利于修改层次结构从资源管理观点出发某一层次上代码只能调用低层次上的代码,使模块间的调用变为有序性。系统每加一层,就构成一个比原来功能更强的虚拟机。有利于系统的维护性和可靠性。目的:要清除模块接口法的缺点就必须减少各模块之间毫无规则地相互调用、相互依赖的关系,特别是清除循环现象方法:操作系统的所有功能模块按功能的调用次序分别排列成若干层(单向依赖或单向调用)分层原则•基本功能放在外层:如文件系统管理--设备管理•资源管理的公用模块放在低层:如缓冲区队列、堆栈操作•存储器管理放在次低层:便于利用虚拟存储功能•最低层的硬件抽象层:与机器特点紧密相关的软件放在最低层。如WindowsNT中的HAL•资源分配策略放在最外层,便于修改或适应不同环境•与硬件有关的BIOS(管理输入输出设备)放在最内层。所以当硬件环境改变时只需要修改这一层模块就可以了分层原则•共同使用的基本部分放在内层随着这些操作方式而改变的部分放在外层(例如,调度程序、键盘命令解释程序和作业控制语言解释程序等)•系统调用:为进程提供服务,这些功能模块(各系统调用功能)构成操作系统内核,放在系统的内层。前面这4层并不是操作系统的一部分,而是构成了处理器硬件•第1层:由电路组成,处理的对象是寄存器、存储单元和逻辑门。•第2层:处理器指令集合。如加、减、加载和保存。•第3层:增加了过程或子程序的概念•第4层:引入了中断,能导致处理器保存当前环境、调用中断处理程序。•第5层:进程、信号•第6层:辅存•第7层:虚存•第8层:处理信息通信和进程间的消息•第9层:支持称为文件的长期存储。•第10层:提供访问外部设备的标准接口。•第11层:目录•第12层:用户进程•第13层:Shell例如,这一层的界面可以以图形方式实现,通过菜单提供用户可以使用的命令,并使用输出到一个特殊设备(如屏幕上的图形)显示结果现代操作系统特征•微内核结构•多线程•对称多处理•分布式操作系统•面向对象设计微内核体系•单体内核:由大内核提供包括调度、文件系统、网络、设备驱动程序、存储等•微内核体系结构:给内核分配地址空间、进程间通信和基本调度等基本功能。其他由运行在用户模式下与应用程序类似的进程提供。•窗口系统(Windows发展历程略)两种机器状态•用户态(用户态)或者说目态(核心态)处于目态时为用户服务•系统态或者说核心态、管态当其通过系统调用或访管指令进入到OS内核运行时,处于管态时可能为用户服务,也可能做系统维护工作。客户/服务器模型•把操作系统分成若干分别完成一组特定功能的服务进程(如内存管理服务、进程创建服务和处理器调度服务),等待客户提出请求;而系统内核只实现操作系统的基本功能(如:虚拟存储、消息传递)。•微内核(micro-kernel):将更多操作系统功能放在核心之外,作为独立的服务进程运行;–服务进程–客户进程•内核消息:是一定格式的数据结构。①发起调用,送出请求消息②请求消息到达并进行处理③送出回答消息④整理回答消息,返回结果;Windows2000/XP系统模型•融合了分层操作系统和微内核(客户/服务器)操作系统的设计思想,使用面向对象的分析与设计,采用整体式的实现•Windows2000/XP通过硬件机制实现了核心态以及用户态两个特权级别。对性能影响很大的操作系统组件运行在核心态。•内存管理器、高速缓存管理器、对象及安全管理器、网络协议、文件系统和所有线程和进程管理,都运行在核心态。Windows2000/XP的构成•计算机的处理器支持两种模式:用户态和核心态。用户应用程序代码在用户态下运行,操作系统代码(如系统服务和设备驱动程序)在核心态下运行•目的:保证了应用程序的不当行为在总体上不会破坏系统的稳定性。装入第三方的设备驱动程序时一定要谨慎,因为一旦进入核心态,软件就能完全访问所有的操作系统数据。系统调用描述•用户所需要的功能有些功能可由硬件完成,并设有相应的指令,如启动外设工作,就有用于输入/输出的硬指令。•系统资源的分配、控制不能由用户干预,而必须由操作系统统一管理。•Msdos通过int21实现•Linuxint0x80系统调用目的与使用•1用户程序和内核程序相分离•2内核程序为用户提供相关功能,使用不必了解系统程序内部结构和相关硬件细节,用户提供系统调用名、参数。•3通过高级程序语言内部库函数使用。•4系统调用功能(操作系统功能)系统调用的过程•1当系统调用发生时,处理器通过一种特殊的机制,通常是中断或者异常处理,把控制流程转移到监控程序内。同时,处理器模式转变为特权模式。•2由监控程序执行被请求的功能代码。•3处理结束后,监控程序恢复系统调用之前的现场;把运行模式从特权模式恢复成为用户方式;最后将控制权转移回原来的用户程序。系统调用的实现过程•陷阱指令中功能号--入口地址表•入口地址表—系统子程序•设置系统调用号和参数。–调用号作为指令的一部分(如早期UNIX),或装入到特定寄存器里(如:DOSint21h,AH=调用号。)–参数装入到特定寄存器里。系统调用举例凡是与硬件相关、与应用无关的工作,都通过操作系统程序来完成。向打印机输出字符方法1:调用DOS功能向打印机输出MOVAH,05HMOVDL,ALINT21H方法2:用OUT指令直接打印L1:MOVA,IINADDR1,BORB,BSJNCL1OUTADDR2,AINTA=A+1B=B+A............INOUT...可执行代码操作系统可内部代码嵌入后该系统调用的操作系统内部实现代码系统调用是动态调用,程序中不包含被调用代码,好处:(1)用户程序长度缩短(2)当OS升级时,调用方不必改变系统支持进程服务进程应用程序环境子系统服务管理器本地安全验证服务Windows登陆会话管理器任务管理器Windows浏览器用户级应用程序子系统动态链接库系统级线程用户态核心态系统级服务调度进程核心态可调用接口图形驱动程序I/O设备管理器设备、文件系统驱动程序局部过程调用注册表配置管理器进程和线程虚拟存储器电源管理器即插即用设备管理器对象管理器文件系统缓存管理器系统核心硬件抽象层(HAL)硬件接口(总线、I/O设备驱动、中断、时钟间隔、直接内存存取(DMA)、存储器缓存控制器等等)安全指向监视器系统支持进程•Idle进程•会话管理器SMSS•Win32子系统CSRSS•登录进程WINLOGIN•本地安全身份验证服务器LSASS•服务控制器SERVICES及其相关的服务进程•……服务进程•spoolsv.exe缓冲(spooler)服务是管理缓冲池中的打印和传真作业。•service.exe用于管理启动和停止服务•winmgmt.exe是win2000客户端管理的核心组件。处理来自应用客户端的请求•Svchost进程提供很多系统服务,系统服务是以动态链接库(dll)形式实现的,由svchost调用相应服务的动态链接库来启动服务•三种环境子系统:POSIX、OS/2和Win32(OS/2只能用于x86系统)它们提供api•Win32子系统必须始终处于运行状态,其他两个子系统只是在需要时才被启动,Win32子系统是Windows2000/XP运行的基本条件之一。NTDLL•主要用于子系统动态链接库的特殊系统支持库•功能–提供系统调用入口–为子系统、子系统动态链接库、及其他本机映像提供内部支持函数–提供从用户态调用执行体系统服务接口核心态组件–硬件抽象层(HAL,HardwareAbstractionLayer)将内核、设备驱动程序以及执行体同硬件分隔开来,实现硬件映射。使用HAL函数(IN指令访问设备端口–设备驱动程序(DeviceDrivers)包括文件系统和硬件设备驱动程序等–窗口和图形系统包含了实现图形用户界面(GUI,GraphicalUserInterface)的基本函数。核心态组件–核心(kernel)包含了最低级的操作系统功能,例如线程调度、中断和异常调度、多处理器同步等。–执行体包含基本的操作系统服务,例如内存管理器、进程和线程管理、安全控制、I/O以及进程间的通信。传统的UNIX系统现代UNIX系统•SVR4•Solaris9•4.4BSDLinux操作系统•模块结构:模块的集合,通过命令自动地加载和卸御•单体内核:一大块代码中实际包含所有操作系统功能,作为一个单一进程运行,具有唯一地址空间。