《微内核技术课件》由会员分享,可在线阅读,更多相关《微内核技术课件(23页珍藏版)》请在金锄头文库上搜索。
1、第二章 微内核技术,目标: 为构造其它操作系统提供通用的基础 支持大容量、稀疏的地址空间 实现网络资源透明性 在系统和应用集上拓展并行性 实现高度的可移植性 为此,尽可能地将代码由低层移向高层,由核心移向进程,由系统态移向用户态。,第二章 微内核技术,1 进程 进程不再是系统中独立的可执行单位和资源调度单位。进程只代表了一个资源集合以及它可以提,通过其内含的线程的执行来是一个分配资源的单位。 1.进程组成 一个仅仅用来实现初始化的可执行程序 一个专用地址空间,定义了进程可以使用的虚拟地址集合 一组系统资源,包括信号量、通信端口、文件等,由操作系统分配给进程 若干执行线程,第二章 微内核技术,进
2、 程,地址空间,线 程,其它: 挂起指针 调度参数 仿真地址 统计部件,核 心,进程 端口,寄存器 端口,例外 端口,初始 端口,第二章 微内核技术,进 程 属 性 服 务 进程id I/O计数器 创建进程 读/写虚拟内存 存取令牌 VM操作计数器 打开进程 保护虚拟内存 基本优先级 退出状态 查进程信息 锁定/解锁虚拟内存 缺省处理器族 置进程信息 查询虚拟内存 配额限制 当前进程 刷新虚拟内存 执行时间 终止进程 异常情况/调试端口 分配/释放虚拟内存,第二章 微内核技术,2.地址空间 以段为单位组成,但段数量与长度可以动态增加。段的属性有:段长、线程对其访问权限、能否动态(向上/向下)增
3、加。,虚拟地址空间描述,对象表,可用对象,第二章 微内核技术,3.创建进程 选择目标机器 创建进程执行环境 创建初始线程,Copy-on-write方式:,共享页,共享页,进程A,进程A,进程B,进程B,写之前,写之后,第二章 微内核技术,2 线程 1.线程概念 线程是系统中的活动实体,任何线程属于、且仅属于一个进程,同一个进程中的线程可以并行执行。一个处理器上可以有多个进程,但一个时间瞬间只能执行一个线程。从而将并行引入进程内部。 同一个进程中的线程共享进程的地址空间和所有资源。但是,线程也有自己的专用资源,如线程端口。 线程存在于进程的地址空间中,使用进程的地址空间进行工作。 在面向对象的
4、系统中,线程也是一个对象。,第二章 微内核技术,Windows-NT中的线程对象,线 程 属 性 服 务 线程ID 线程执行时间 创建线程 置描述表 线程描述表 报警状态 打开线程 挂起 动态优先级 挂起计数 查询线程信息 重新开始 基本优先级 模仿令牌 置线程信息 报警线程 线程处理器族 终止端口 当前线程 检测线程警报 线程退出状态 终止线程 寄存器终止端口 取得描述表,第二章 微内核技术,2.线程调度 所谓线程调度,就是确定在何时、给何线程赋予CPU,运行多长时间。由系统核心进行。 线程的状态 运行态 阻塞态 就绪态 线程的优先数 以基本优先数为基础,可以浮动。,第二章 微内核技术,创建
5、并初始化线程,完成初始化,就 绪,备 用,调 度,抢 先,运 行,切换描述表,抢先或 时间片到,终 止,等 待,执行 结束,事件未发生,事件发生,转 化,资源不可用,资源变为可用,第二章 微内核技术,3 端口 计算机系统中各部分实现通信的方式: 利用公共存储区交换数据 利用消息传送交换数据 1. 端口对象 一类受保护的信箱,是核心中的数据结构,属于单向的数据信道。 支持顺序传送的法则,同一线程的消息先来先送,但不保证多个线程消息的时间顺序。,第二章 微内核技术,绝大部分归进程所有,线程可以被授权使用。 线程只拥有与核心通信的特殊端口。 同一段口可有多个进程拥有发送权(一次或多次),但任一时刻最
6、多只有一个进程拥有接收权。拥有发送权的进程可以向其他进程转让发送权。 多个端口可以组成端口集,以便对多个端口实施组播(收)操作。 端口数据结构包括:消息队列、当前消息、消息数量、所属的端口集、拥有转让访问权的进程数、发出错报告的端口名、端口上阻塞的线程队列、拥有接收权的进程、指向核心对象的指针,等等。,第二章 微内核技术,2.端口的管理 分配。创建一个端口,将其访问权限插入相应的进程权限表中。 撤消。删除一个端口,并从相应权限表中撤销表项。 去分配。从权限表中撤销相应的权限表项。 收回授权。从其它进程权限表中撤销某个表项。 修改端口集。在端口集中增加或减少端口。 置消息数目。确定端口可以拥有消
7、息的最大数目,通常由拥有接收权的进程确定。创建端口时缺省值为5。,第二章 微内核技术,3. 发送与接收 消息格式 消息类型 回答权限 目标权限 消息长度 目的地端口表 应答端口表 消息种类 功能码 说明1 数据域1 说明2 数据域2 ,第二章 微内核技术,4. 消息的接收与发送,计算机A,计算机B,进程S,进程R,网络网络,网 络,对照表,对照表,4 21,7 21,第二章 微内核技术,4 存储对象 1.存储管理的组成 页面映射部分 管理MMU,在核心中运行,实现地址映射并捕捉缺页中断。 缺页处理部分 管理地址映射表,处理内外存交换,在核心中运行。 存储管理部分 又称外部存储对象管理器,通常组
8、织为进程,在用户态下运行。实现如淘汰算法、管理磁盘空间与内存空间,解决策略性问题。,第二章 微内核技术,2.存储对象 即段,由于采用段页式管理,为页的有序集合。 用户可以通过文件管理进程的通信端口写入消息提出对存储对象的操作要求。如: 分配:分配一段虚拟地址空间 释放:释放一段虚拟地址空间 映射:将别的内容映射到存储对象上 复制:将存储对象的内容复制到另一个存储对象上 置保护:对存储对象置保护信息(可以以页为单位) 读:读取另一个进程的存储对象内容 写:向另一个进程的存储对象写入内容 等等。,第二章 微内核技术,3. 存储共享 几个进程处于同一处理机的情形 充分共享 通过将各自的虚拟地址都映射
9、到同一个物理地址,实现共享物理存储。,进 程 1,进 程 2,物理存储,第二章 微内核技术, 父子进程共享 父进程为子进程复制一个存储区。为了解决大量的只读数据区(或主要是读)可以节省内存,通常建议采用copy-on-write方法。 多机情形 外部存储管理器 用来处理存储语义问题,确定其页面离开内存后存放在何处、存储对象去除映射后的处理规则等。 为了将一个对象映射到进程的地址空间,需要三个端口。,第二章 微内核技术,对象端口:由外部存储管理器创建,随后为核心所使用。用来向外部存储管理器通知缺页中断和其它与该存储对象有关的事件。对核心,它是只写的;对外部存储管理器是只读的。 控制端口:由核心创
10、建,核心在对象端口创建之后,创建控制端口,用来供外部存储管理器响应事件时使用。对外部存储管理器,它是只写的,对核心来说是只读的。 名字端口:用来区分端口。当线程向核心要求将某个虚地址归属于某个段时,核心的应答应该是一个指针,指向该段的名字端口。同一段的不同地址有相同的名字端口。,第二章 微内核技术,以缺页中断处理为例: 缺页中断发生后,通过对象端口发送异步消息,告知外部存储管理器哪一页需调入,同时挂起用户线程,进行调度;外部存储管理器接着检查页访问是否合法,如合法,将该页地址通过控制端口送回核心;如还有空闲页面,核心将该页映射到用户线程的存储空间,解挂线程;当核心发现没有空闲页面时,再向外部存
11、储管理器发送消息,请求淘汰,后者根据淘汰算法选取淘汰页并将其写回磁盘,再将淘汰页所占据的用户线程空间中的页地址通知核心,核心将所缺的页调入该地址。,缺 页,核 心,外部存储管理器, 通过对象端口, 通过控制端口,中断,第二章 微内核技术, 多机存储共享 引入一类新的存储对象:共享页,设置专门的外部存储管理器来管理。 如果共享页是只读的,只需设置许多副本 如果是可写的,则只能存在一个拷贝,由一个特定的管理器(DSM)来管理,每一台机器都配备一个。当某台计算机上的某个线程要写时,本机上的DSM将向核心(及所有共享该页的机器的核心)发送消息,获取操作令牌。一旦某台机器获得令牌,其它机器对该页都变为不可访问的。直到令牌交回,才又回到原有状态。,第二章 微内核技术, 引入镜像机制,在内核中设置缓冲对象,A 机 内 核,B 机 内 核,内存缓冲对象,进程地 址空间,段D,