当前位置:
文档之家› 2Windows操作系统体系结构
2Windows操作系统体系结构
系统调用目的与使用
• 1 用户程序和内核程序相分离 • 2 内核程序为用户提供相关功能,使用不必
了解系统程序内部结构和相关硬件细节, 用户提供系统调用名、参数。 • 通过高级程序语言内部库函数使用。
系统调用的过程
• 1 当系统调用发生时,处理器通过一种特殊的机
制 , 通 常 是中 断 或者 异常处 理,把 控制 流程转 移 到 监 控 程 序 内 。同时 ,处理器模式 转变为特权 模 式。 2 由监控程序执行被请求的功能代码。 3 处 理结束 后,监控 程序 恢复系统调用之前的现 场 ; 把 运行 模 式 从特 权模式 恢复成 为用 户方式 ; 最后将控制权转移回原来的用户程序。
操作系统的设计问题
• 操作系统设计有着不同于一般应用系统设计的特
征:
– – – 复杂程度高 研制周期长 正确性难以保证
• 解决途径:
– 良好的操作系统结构 – 先进的开发方法和工程化的管理方法 – 高效的开发工具
操作系统的设计目标
• • • • • • •
可靠性:正确性和健壮性 高效性:提高系统的运行效率 易维护性:易读、易扩充、易剪裁、易修改性 易移植性:作系统程序中与硬件相关的部分相对 独立 安全性:计算机软件系统安全性的基础 可适应性 简明性
•
若干个370虚拟机
系统调用陷入 CMS I/O指令陷入 CMS VM/370 370裸机 CMS
微内核(客户/服务器结构)
• 非常适宜于应用在网络环境下,应用于分布式处 •
理的计算环境中 由下面两大部分组成 :
– “微”内核 – 若干服务
客户/服务器模型
把操作系统分成若干分别完成一组特定功能的服务进程(如内存管 理服务、进程创建服务和处理器调度服务) ,等待客户提出请 求;而系统内核只实现操作系统的基本功能(如:虚拟存储、消 息传递)。
作系统的设计思想,使用面向对象的分析与设 计,采用整体式的实现 Windows 2000/XP通过硬件机制实现了核心态以 及用户态两个特权级别 。对性能影响很大的操作 系统组件运行在核心态。 内存管理器、高速缓存管理器、对象及安全管理 器、网络协议、文件系统和所有线程和进程管 理,都运行在核心态。
• Windows 2000/XP的核心态组件使用了面向对象 • •
层次结构
• THE系统:
5
4
操作员 用户程序 输入/输出管理 操作员-进程通信 内存和磁盘管理 处理器分配和多道程序
3
2
1 0
分层结构的特点
• 优点:
– 功能明确,调用关系清晰(高层对低层单向依 赖),有利于保证设计和实现的正确性 – 低层和高层可分别实现(便于扩充);高层错 误不会影响到低层;避免递归调用
数调用,用来创建新进程的内部系统服务。
• 3 Windows内部例程:
位 于 Windows 执 行 体 、 内核 或硬件 抽象 层 ( HAL) 内 的 子 例 程 , 只 能 从核心态 调 用。例 如 , ExAllocatePool 是 由设 备 驱动程序调用的
• 4 Windows服务:
由Windows服务控制管理器启动的进程。
分层原则
便于将操作系统移植到其他机器上 : • 机器特点紧密相关的软件(如中断处理、输 入输出管理等)放在紧靠硬件的最低层 • 与硬件有关的BIOS(管理输入输出设备)放 在最内层。所以当硬件环境改变时只需要 修改这一层模块就可以了
分层原则
• 前台处理分时作业,又可在后台以批处理
方式运行作业 • 共同使用的基本部分放在内层随着这些操 作方式而改变的部分放在外层(例如,调度 程序、键盘命令解释程序和作业控制语言 解释程序等)
系统调用的实现过程
• 陷阱指令中功能号--入口地址表 • 入口地址表—系统子程序
• 设置系统调用号和参数。
– 调用号作为指令的一部分(如早期UNIX),或 装入到特定寄存器里(如:DOS int 21h,AH= 调用号。) – 参数装入到特定寄存器里,或以寄存器指针指 向参数表(内存区域)。
• 执行trap(int)指令:入口的一般性处
系统调用的功能
3) 进程控制:创建、中止、暂停等控制; Fork 创建进程 Exit 进程自我终止 Wait 阻塞当前进程 Sleep 进程睡眠 Getpid 读父进程标识 4) 进程通信:消息队列、共享存储区、socket等通信渠道的建立、使用 和删除; 5) 存储管理:内存的申请和释放; 6) 系统管理:设置和读取时间、读取用户和主机标识等; gtime 读取时间 Stime 设置时间 getuid 读取用户标识
第2章 Windows 2000/xp的体系结构
• • • • •
1 操作系统的设计 2 Windows2000/xp操作系统模型 3 Windows2000/xp体系结构 4 Windows2000/xp系统机制 5 Windows2000/xp注册表
操作系统的设计
设计操作系统的复杂性。 例:IBM公司的OS/360系统 由4000个模块组成 共约100万条指令 花费5000人年 经费达数亿美元 每个版本都仍然隐藏着无数的错误
模块组合结构
整个系统按功能进行设计和模块划分。系统是一个单一的、 庞大的的软件系统。这种结构思想来源于服务功能观点, 而不是资源管理的观点。
模块组合结构
• 模块结构的特点:模块由众多服务过程
(模块接口)组成,可以随意调用其他模 块中的服务过程
– 优点:具有一定灵活性,在运行中的高效率 – 缺点:功能划分和模块接口难保正确和合理; 模块之间的依赖关系,降低了模块之间的相对 独立性--不利于修改
分层原则
• 系统调用:为进程提供服务,这些功能模
块(各系统调用功能)构成操作系统内核,放 在系统的内层。
3.虚拟机结构
• 如IBM大型机上的系列操作系统 • 基本思想:系统应该提供
1)多道程序能力 2)一个比裸机有更方便扩展界面的计算机 。但 是二者的实现应该相互独立 优缺点
– 虚拟机概念可以实现完全保护 – 用软件从硬件逐层扩展 – 虚拟机方法把多道程序和扩充机器的功能完全分开
分层原则
• 被调用功能在低层:如文件系统管理--设备管理--设 • • • •
备驱动程序 资源管理的公用模块放在最低层:如缓冲区队列、堆栈操 作 存储器管理放在次低层:便于利用虚拟存储功能 最低层的硬件抽象层:与机器特点紧密相关的软件放在最 低层。如Windows NT中的HAL 资源分配策略放在最外层,便于修改或适应不同环境
•
系统调用(SYSTEM CALL)
• 系统调用是操作系统提供给软件开发人员的唯一 •
接口,开发人员可利用它使用系统功能。OS核心 中都有一组实现系统功能的过程(子程序) 中断处理程序(系统调用子例程)
系统调用描述
• 用户所需要的功能有些功能可由硬件完 • • •
成,并设有相应的指令,如启动外设工 作,就有用于输入/输出的硬指令。 系统资源的分配、控制不能由用户干预, 而必须由操作系统统一管理。 Msdos 通过int 21 实现 Linux int 0x80
2.层次结构
从资源管理观点出发,划分层次。在某一层次上代码只能调 用低层次上的代码,使模块间的调用变为有序性。系统每 加一层,就构成一个比原来功能更强的虚拟机。有利于系 统的维护性和可靠性。 目的:要清除模块接口法的缺点就必须减少各模块之间毫无 规则地相互调用、相互依赖的关系,特别是清除循环现象 方法:操作系统的所有功能模块按功能的调用次序分别排列 成若干层 (单向依赖或单向调用 ) 如只允许上层或外层模块调用下层或内层模块)
陷阱指令(访管指令) :
控 制系统 调 用 服务 的机构 称 为陷阱( trap) 处理机构 • 为了实现对这些事先编制好的、具有特定 功能 的例 行 子 程 序 的 调 用 , 现 代 计 算 机系统 一般提供访管指令。 • 当处理机执行到这一条指令时就发生中 断,该中断称为访管中断,借助中断可使机 器状态由目态转为管态。 •
操作系统的设计考虑
• 功能设计:操作系统应具备哪些功能 • 算法设计:选择和设计满足系统功能的算
法和策略,并分析和估算其效能 • 结构设计:选择合适的操作系统结构
操作系统结构
• 程序结构
– 程序结构的两层含义 整体结构 局部结构
• 软件结构:大型程序是小规模程务”
• 5 DLL(动态链接库):
作为二进制映像连接的、可调用的子例程集。
两种机器状态
• 用户态或者说目态
处于目态时为用户服务
• 系统态或者说核心态、管态
当其通过系统调用或访管指令进入到OS内核运行时,处于管 态时可能为用户服务,也可能做系统维护工作。
操作系统的结构设计
• 1. 模块组合结构 • 2.层次结构 • 3. 虚拟机结构 • 4. 客户/服务器体系结构
• 在不同的场合有不同的意义 • 可以指操作系统中可调用的例程、设备驱
动程序或服务器进程
• 1. Win32 API函数:Win32 API中文档化
的 、可调 用的 子 程 序 。 例 如 CreateProcess、 CreateFile、GetMessage。 • 2 Windows 系 统 服 务 ( 执 行 体 系 统 服 务) 。例如,NtCreateProcess是由CreateProcess函
• 微内核(micro-kernel):将更多操作系统功能放在核心 之外,作为独立的服务进程运行;
– 服务进程 – 客户进程
• 内核消息:是一定格式的数据结构。①发起调用,送 出请求消息②请求消息到达并进行处理③送出回答消 息④整理回答消息,返回结果;
Windows 2000/XP系统模型
• 融合了分层操作系统和微内核(客户/服务器)操 • •
向打印机输出字符
方法1:调用DOS功能向打印机输出 方法2:用OUT指令直接打印 MOV AH,05H L1:MOV A,I MOV DL,AL IN ADDR1,B INT 21H OR B,BS JNC L1 OUT ADDR2,A