一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的
人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现。所
以在分析 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 导读分析的更多相关文章

  1. MINIX3 进程调度分析

    MINIX3 进程调度分析  5.1MINIX3 进程调度概要  MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存, ...

  2. Minix3信号处理分析

    进程的信号处理的相关结构 PM中存放着所有进程的进程描述符,在一个进程描述符中,有一个指针,指向一个sigaction结构二维数组中的一项,表示这个进程所有信号的操作.一个sigaction结构包含信 ...

  3. Update(Stage4):sparksql:第5节 SparkSQL_出租车利用率分析案例

    目录: 1. 业务2. 流程分析3. 数据读取5. 数据清洗6. 行政区信息 6.1. 需求介绍 6.2. 工具介绍 6.3. 具体实现7. 会话统计 导读 本项目是 SparkSQL 阶段的练习项目 ...

  4. PM 时钟机制

    PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 ...

  5. MINIX3 进程通信分析

    MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MI ...

  6. MINIX3 内核时钟分析

    MINIX3 内核时钟分析  4.1 内核时钟概要  先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? ...

  7. MINIX3 内核整体架构回顾及内核定 性分析

    MINIX3  内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模 ...

  8. MyBatis 源码分析系列文章导读

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  9. Spring AOP 源码分析系列文章导读

    1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...

随机推荐

  1. Entity Framework 复杂类型

      为了说明什么是复杂属性,先举一个例子. public class CompanyAddress { public int ID { get; set; } public string Compan ...

  2. 转:Linux 安装 Mysql

    前段时间安装了Mysql,但是有些问题,就想把他卸载了,重新安装一个,但是没想到在Linux卸载软件是一个很痛苦的事情.   我的Mysql是用命令的方式安装的,就是上一篇文章用到的那个命令(sudo ...

  3. double int char 数据类型

    贴心的limits... 测试代码: #include <iostream> #include <stdio.h> #include <limits> #inclu ...

  4. bzoj 1951: [Sdoi2010]古代猪文

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

  5. POJ 1719 二分图最大匹配(记录路径)

    Shooting Contest Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4097   Accepted: 1499 ...

  6. JavaScript中字符串转Json方法小记

    例如: JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }'; JS ...

  7. Hibernate中的一对多与多对一映射

    1.需求 一个部门有多个员工;         [一对多] 多个员工,属于一个部门    [多对一] 2.实体Bean设计 Dept: public class Dept { private int ...

  8. 中国广核集团:BPM与ERP紧密结合

    全球能源消耗不断增长,电能已经达到了无可替代的位置.同时,传统的电力供应模式正在受新模式的影响,营造更具价值的生态系统.面对挑战,核电企业在提高能效并降低成本的同时,也迫切需要进行转型.面对公众对可再 ...

  9. windows下安装openssh服务并实现远程登录

    需要准备的工具: winscp 点击下载        openssh 点击下载  步骤: 在远程计算机安装 1.首先安装openssh,双击并安装 2.指定用户的home directory为C:\ ...

  10. sql左连接,右连接,内连接

    1.sql查询时什么叫左连接和右连接    左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少.    左或 ...