• MINIX3 导读分析


    一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的
    人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现。所
    以在分析 MINIX3 时,我认为同时看多个模块对于理解 MINIX3 是有好处的,特
    别是因为 MINIX3 是采用微内核结构,也就造成阅读源码的一个比较大的障碍。
    在此我统领的描述下 MINIX3 和 PM 部分内容,给读者 MINIX3 形成一个整体的
    导读框架:

    1 MINIX3 采用微内核结构,什么是微内核呢?MINIX3 设计者认为除了部分非
    常重要的 像中断机制,消息机制,保护模式机制等实现,必须处在内核里执行,
    其他模块都放在放在用户模块执行。这种设计思想可能和 LINUX/UNIX 有非常
    大的不同,以 LINUX 为例,LIUNX 将驱动,进程管理,内存管理,中断,消息
    机制等等都放在内核中,这就造成了 LINUX 内核非常的庞大,MINIX3 设计者
    认为,内核越大,不安全的可能性就越大,这点我没有把握,但是有点我是相信
    的,内核越大,维护越大,随着内核不断的扩大,给内核维护者带来极大的困难。
    MINIX3 怎么实现这种微内核机制呢?MINIX3 采用非常巧妙的方法:------消息
    传递机制。利用消息传递机制来实现内核和外核的通信,当然不光光是消息传递
    机制,也要通过非常复杂的布局才能够实现,关于消息传递机制,可以参考进程
    间通信模块分析那一章。

     

    wpsAFD1.tmp

    2    MINIX3 怎么实现中断机制呢?MINIX3 为了兼容 8259,设立了非常多的编

    程技巧来完成整个中断机制,对于中断陷入,中断执行,以及中断的收尾工作,
    都体现了 MINIX3 优秀的设计思想-------简明,技巧. 具体内核可以参考 MINIX3

    wpsB001.tmp

    中断处理分析

    3  MINIX3 在 386 平台能够得以运行,就必须容忍 386 这个历史包袱。MINIX3 很巧妙的省去了一些繁杂的工作。以很简单的模式驾驭了  386,具体可以参考 MINIX3 保护模式分析

    4   时钟是可谓是整个 MINIX3 一个最核心的部件,事实上时钟是所有分时操作

    系统的运行的心脏,MINIX3 是如何使得时钟能够得以高效安全的运行呢?怎么
    来处理多个内核警报器问题呢? 具体内容可以参考 MINIX3 内核时钟分析那一

    wpsB011.tmp

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

    具体的内容可以参考 MINIX3 进程调度分析那一章

    wpsB031.tmp

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

    7  用户希望操作系统提供信号量机制来实现用户进程间的异步,MINIX3  通过

    PM 和内核共同来巧妙的实现了 MINIX3 的信号量机制,这里主要参考 MINIX3 信号量机制

    wpsB061.tmp

    8  用户的 alarm 调用是由谁来处理呢?是由前面的 MINIX3 内核时钟吗?可能

    你已经注意到,时钟前加了内核,那么应该也有外核时钟!对,你猜的没有错, 的确有外核时钟这个说法,但是硬件时钟只有一个,MINIX3 是通过什么样的机
    制来实现内核和外核时钟呢?具体内容参考 MINIX3PM 时钟分析和 MINIX3 内
    核时钟分析。

    9  通过上面 1 到 8,你们可能觉得整个 MINIX3 被我拆散的不像样子了,我们是 不是应该把 MINIX3 整合一下,用定量的 或者定性的技巧分析下 MINIX3 的性 能,当然这个分析仅仅是个尝试,做出一个精准的分析,已经完全超出我的能力 范围。我仅仅是提供一个我的思路。具体内容参考 MINIX3 整体性能分析

  • 相关阅读:
    Swift学习笔记4
    《将博客搬至CSDN》
    传入一个integer数组,取出最大、最小值
    Centos7下完美安装并配置mysql5.6
    linux常用命令总结
    centos7下安装配置redis3.0.4
    VMware下centos桥接模式静态ip配置
    解决centos7下tomcat启动正常,无法访问项目的问题
    centos7系统下安装配置jdk、tomcat教程
    Apache+Tomcat+mod_jk实现负载均衡
  • 原文地址:https://www.cnblogs.com/sfwtoms/p/3929327.html
Copyright © 2020-2023  润新知