MINIX3 导读分析
一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的
人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现。所
以在分析 MINIX3 时,我认为同时看多个模块对于理解 MINIX3 是有好处的,特
别是因为 MINIX3 是采用微内核结构,也就造成阅读源码的一个比较大的障碍。
在此我统领的描述下 MINIX3 和 PM 部分内容,给读者 MINIX3 形成一个整体的
导读框架:
1 MINIX3 采用微内核结构,什么是微内核呢?MINIX3 设计者认为除了部分非
常重要的 像中断机制,消息机制,保护模式机制等实现,必须处在内核里执行,
其他模块都放在放在用户模块执行。这种设计思想可能和 LINUX/UNIX 有非常
大的不同,以 LINUX 为例,LIUNX 将驱动,进程管理,内存管理,中断,消息
机制等等都放在内核中,这就造成了 LINUX 内核非常的庞大,MINIX3 设计者
认为,内核越大,不安全的可能性就越大,这点我没有把握,但是有点我是相信
的,内核越大,维护越大,随着内核不断的扩大,给内核维护者带来极大的困难。
MINIX3 怎么实现这种微内核机制呢?MINIX3 采用非常巧妙的方法:------消息
传递机制。利用消息传递机制来实现内核和外核的通信,当然不光光是消息传递
机制,也要通过非常复杂的布局才能够实现,关于消息传递机制,可以参考进程
间通信模块分析那一章。

2 MINIX3 怎么实现中断机制呢?MINIX3 为了兼容 8259,设立了非常多的编
程技巧来完成整个中断机制,对于中断陷入,中断执行,以及中断的收尾工作,
都体现了 MINIX3 优秀的设计思想-------简明,技巧. 具体内核可以参考 MINIX3

中断处理分析
3 MINIX3 在 386 平台能够得以运行,就必须容忍 386 这个历史包袱。MINIX3 很巧妙的省去了一些繁杂的工作。以很简单的模式驾驭了 386,具体可以参考 MINIX3 保护模式分析
4 时钟是可谓是整个 MINIX3 一个最核心的部件,事实上时钟是所有分时操作
系统的运行的心脏,MINIX3 是如何使得时钟能够得以高效安全的运行呢?怎么
来处理多个内核警报器问题呢? 具体内容可以参考 MINIX3 内核时钟分析那一
章

5 进程调度的好坏可以说是对整个系统的响应起着最重要的作用。MINIX3 将 进程调度编写的简单小巧,调度算法耗时非常少,但是却能够得以高效的进行, MINIX3 是怎么做到的呢
具体的内容可以参考 MINIX3 进程调度分析那一章

6 用户使用一个操作系统主要希望操作系统能够帮忙完成一个任务,举一个非 常简单的例子,如果我希望操作系统告诉我现在是多长时间,或者我想请操作系 统内核帮我申请一块内存,这些都涉及到系统调用,事实上,MINIX3 的系统调 用和 LINUX 的系统调用是不同的,主要也是由于微内核的原因,到底差异在哪 里,怎么理解这个差异性,MINIX3 又是怎么实现系统调用的?具体内容参考 MINIX3 系统调用分析那一章
7 用户希望操作系统提供信号量机制来实现用户进程间的异步,MINIX3 通过
PM 和内核共同来巧妙的实现了 MINIX3 的信号量机制,这里主要参考 MINIX3 信号量机制

8 用户的 alarm 调用是由谁来处理呢?是由前面的 MINIX3 内核时钟吗?可能
你已经注意到,时钟前加了内核,那么应该也有外核时钟!对,你猜的没有错, 的确有外核时钟这个说法,但是硬件时钟只有一个,MINIX3 是通过什么样的机
制来实现内核和外核时钟呢?具体内容参考 MINIX3PM 时钟分析和 MINIX3 内
核时钟分析。
9 通过上面 1 到 8,你们可能觉得整个 MINIX3 被我拆散的不像样子了,我们是 不是应该把 MINIX3 整合一下,用定量的 或者定性的技巧分析下 MINIX3 的性 能,当然这个分析仅仅是个尝试,做出一个精准的分析,已经完全超出我的能力 范围。我仅仅是提供一个我的思路。具体内容参考 MINIX3 整体性能分析
MINIX3 导读分析的更多相关文章
- MINIX3 进程调度分析
MINIX3 进程调度分析 5.1MINIX3 进程调度概要 MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存, ...
- Minix3信号处理分析
进程的信号处理的相关结构 PM中存放着所有进程的进程描述符,在一个进程描述符中,有一个指针,指向一个sigaction结构二维数组中的一项,表示这个进程所有信号的操作.一个sigaction结构包含信 ...
- Update(Stage4):sparksql:第5节 SparkSQL_出租车利用率分析案例
目录: 1. 业务2. 流程分析3. 数据读取5. 数据清洗6. 行政区信息 6.1. 需求介绍 6.2. 工具介绍 6.3. 具体实现7. 会话统计 导读 本项目是 SparkSQL 阶段的练习项目 ...
- PM 时钟机制
PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 ...
- MINIX3 进程通信分析
MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MI ...
- MINIX3 内核时钟分析
MINIX3 内核时钟分析 4.1 内核时钟概要 先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? ...
- MINIX3 内核整体架构回顾及内核定 性分析
MINIX3 内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...
- MyBatis 源码分析系列文章导读
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
- Spring AOP 源码分析系列文章导读
1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...
随机推荐
- struts2视频学习笔记 07-08(为Action的属性注入值,指定需要Struts 2处理的请求后缀,常用常量)
课时7 为Action的属性注入值(增加灵活性,适用于经常更改的参数) Struts2为Action中的属性提供了依赖注入功能,在struts2的配置文件中,我们可以很方便地为Action中的属性注入 ...
- 支持新版chrome,用webstorm编译形成css和sourcemap,调试sass和less源文件(转)
旧版的chrome有个support for sass,但是新版chrome没有这个功能了.看到网上提供的方法比较多,也很乱,旧版新版的都有.而且不能指定自己所需要的路径. 所以就做了下改版. sas ...
- java并发带返回结果的批量任务执行
转载:http://www.it165.net/pro/html/201405/14551.html 一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的 ...
- sql server还原数据库文件(.bak)常见问题解决办法笔记
还原的时候出现错误:备份集中的数据库备份与现有的数据库不同 SQL Server 2005数据库还原出错错误具体信息为:备份集中的数据库备份与现有的A数据库不同 具体操作如下:第一次:新建了数据库A, ...
- Hadoop MapReduceV2(Yarn) 框架简介[转]
对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介.使用和学习过老 H ...
- Jquery.Page.js 分页插件的使用
1.简单直接贴代码 需要引用以下样式和脚本 <link href="~/Scripts/Page/pager.css" rel="stylesheet" ...
- Windows获取文件大小
Windows最初的设计允许我们处理非常大的文件,所以最初的设计者选用64位值来表示文件大小.但是我们在日常处理过程中文件大小一般不会超过4GB.故Windows提供了两个联合类型的数据结构表示文件大 ...
- The Python web services developer: XML-RPC for Python
原文地址:http://www.ibm.com/developerworks/webservices/library/ws-pyth10/index.html 摘要:概括地说,您可以将 XML-RPC ...
- 转: Div与table的区别
1:速度和加载方式方面的区别 div 和 table 的差异不是速度,而是加载方式,速度只能是指网络速度,如果速度足够快,是没有差异的: div 的加载方式是即读即加载,遇到 <div> ...
- HDU 4036 存疑题目,数论 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=4036 一开始以为需要用斜抛,结果发现只需要用能量守恒定律?+与最大速度的坏土豆速度保持一致 #include & ...