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天时间阅 ...
随机推荐
- easyui 中重复加载两次url
之前一直在使用easyui中,忽视了官网上的小细节,类似于datagrid.combobox 等组件在使用的时候,它的数据加载方式分为两种: 官网中: ①在html中,比如: <table id ...
- C#基础学习文章导航
第一部分:入个门 C#入门篇-1:HelloWorld的类 C#入门篇-2:什么是变量 C#入门篇-3:数据类型及转换 C#入门篇-4:使用运算符 第二部分:流程控制语句 C#入门篇5-1:流程控制语 ...
- SQL语句大全(mysql,sqlserver,oracle)
SQL语句大全 --语句功能--数据操作SELECT --从数据库表中检索数据行和列-selectINSERT --向数据库表添加新数据行-insertDELETE --从数据库表中删除数据行-del ...
- [Jquery]瀑布流
$(window).load(function(e){ waterfall(); var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'}, ...
- JavaScript 自定义事件
//自定义事件 function Event() { var handles = []; //绑定事件 this.addHandle=function(fn) { handles.push(fn); ...
- Jquery判断div是否显示
$("#test").is(":hidden");//是否隐藏 $("#test").is(":visible");// ...
- Cisco IOS Debug Command Reference Command E through H
debug eap through debug he-module subslot periodic debug eap : to display information about Extensib ...
- Android 查看webview里面的图片
今天介绍一下怎么查看WebView里面的图片,首先要设置WebView能够支持JavaScript,然后实现JavaScript的监听接口: mWebView.getSettings().setJav ...
- 阿里公共DNS 正式发布了
喜大普奔!集阿里巴巴集团众多优秀工程师开发维护的公共DNS---AliDNS终于上线啦!作为国内最大的互联网基础服务提供商,阿里巴巴在继承多年优秀技术的基础上,通过提供性能优异的公共DNS服务,为广大 ...
- Centos使用key登录验证
1. 新建用户lsyw 设置密码 #useradd lsyw #passwd lsyw 2. 测试新建用户可以登录 3. 修改root登录密码为通用root密码,测试用新密码登录是否成功 0!B2pj ...