Minix2.0内核源代码的组织结构-程序员宅基地

技术标签: 操作系统  内存管理  c/c++  

Minix2.0操作系统的源代码由两个目录组成:include/目录和src/目录

include/目录包含了操作系统所有的头文件(即.h文件)

src/目录下包含了操作系统所有的源文件(.c或.s文件)

头文件的组织结构为:

include/目录下为POSIX标准头文件;

include/sys/目录下为额外的POSIX标准头文件;

include/minix/目录下为MINIX操作系统定义的头文件

源文件的组织形式为:

src/kernel/目录存放着MINIX操作系统第一层(进程管理)和第二层(设备管理)的源代码;

src/mm/目录存放着MINIX操作系统第三层中内存管理子系统的源代码;

src/fs目录下存放着MINIX操作系统第三层中文件管理系统的源代码;

src/lib目录下存放着MINIX操作系统使用的库例程源代码(e.g. open,read);

src/tools目录下存放着Init源程序,用于启动Minix;

src/boot目录下存放着启动和安装MINIX操作系统的源代码


minix OS的主体是以C语言编写的,在minix2.0的源代码中,以“.c”结尾的文件均为C语言源程序

minix的内核源代码少部分是用汇编语言编写的,其中大部分是关于中断与异常处理的底层程序。在minix2.0源代码中,以“.s”结尾的文件均为汇编语言源程序


src/commands/ :包含公用程序(e.g. cat, cp, date, ls, pwd)的源代码

src/test/: 包含有一些被设计用来对新编译好的Minix系统进行完整测试的工具(由于Minix是一个用于教学的操作系统,这意味着对它常常要作修改)

src/inet/: 包含了重新编译Minix以使之支持网路的源代码 


Minix的内部结构:

Minix被组织成4层,每一层执行一套定义得很完整的功能,这4层如下图所示:

第1、2层的代码位于src/kernel/下。第一层是Minix内核的最底层,该层包括完成以下的功能函数:系统的初始化、中断、消息传递以及进程调度。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34343000/article/details/85572198

智能推荐

java实体类实现序列化的意义(转)-程序员宅基地

一、序列化的意义客户端访问了某个能开启会话功能的资源,web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他

7-14 Dijkstra算法(模板)-程序员宅基地

给一个n(1 ≤ n ≤ 2500) 个点 m(1 ≤ m ≤ 6200) 条边的无向图,求 s 到 t 的最短路。输入格式:第一行四个由空格隔开的整数 n、m、s、t。之后的 m 行,每行三个正整数 s​i​​、t​i​​、w​i​​(1≤w​i​​≤10​9​​),表示一条从s​i​​ 到 t​i​​ 长度为 w​i​​ 的边。输出格式:一个整数,表示从s 到t 的最短路径...

Vue修改ElementUi表格,下拉框,标签页等样式_element下拉列表样式-程序员宅基地

当在vue页面内对elementui的组件样式修改时,会遇到一些问题。vue页面内一般需要使用scoped这个属性,如果使用该属性,则样式仅仅应用到 style 元素的父元素及其子元素。意思是改样式仅在该页面生效。对修改elementui样式会造成影响。第一次使用时解决办法是重新写一个<style>标签不添加scoped属性做样式修改。后面看到可以使用class >>&..._element下拉列表样式

7084:迷宫问题 (BFS 搜索,输出路径问题 板子)-程序员宅基地

描述定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。输入一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。输出左上角到右下角的最短路径,格式如样例所示。样例输入0 1 0 0 00 1 0 1 0

循环冗余校验编码(CRC校验码)介绍以及编程源代码_crc校验原理及代码-程序员宅基地

计算机数据通信中,由于干扰等各种内外因素,数据出现差错不可避免,在数据通信中需要对数据进行差错检测。实现差错检测的基本原理是:发送方在发送数据的基础上生产某些编码,然后将校验编码附加在数据后面一起发送,接收方在收到数据和校验码之后,用校验码对数据进行校验,确认传输的数据是否正确。差错检测技术的核心是校验编码,常用的校验有奇偶校验,恒比较校验和循环冗余校验编码三种。在此我们主要介绍循环冗余校验编码。_crc校验原理及代码

Unity 3D: 鼠标和键盘自由切换场景视觉_unity 键盘、手柄切换源码-程序员宅基地

前言: 前面介绍过,鼠标控制 视觉移动文章,现在用键盘实现视觉移动,并可以让鼠标和键盘自由切换来控制当前角色的视觉移动。脚本如下(C#):using System.Collections;using System.Collections.Generic;using UnityEngine;public class Camera_move : MonoBehaviour { public_unity 键盘、手柄切换源码

随便推点

在jsp页面使用el表达式获取javaBean属性值-程序员宅基地

JavaBean类package entity;public class Student { private boolean flag;//是否接受协议 public Student(){} public boolean getFlag() { return flag; } public void setFlag(boolean flag) { this.flag

语音告警(一)——基于YOLOv5目标检测的语音告警_yolov5报警_是刺猬吖的博客-程序员宅基地

当小火苗、山林大火和烟雾的置信度大于预设的阈值时,播放三个类别对应的语音实现语音告警。首先选取FFmpeg播放器来播放自己录制好的mp3文件,FFmpeg拥有LGPL/GPL许可和前沿音/视频编解码库libavcodec,使用方便,功能强大。虽然FFmpeg(Fast Forward mpeg视频编码标准)在Linux系统开发并且在Linux系统使用较多,但在windows系统下也同样可以用来录制、编解码、转换、流化音视频等。然后在命令行调测语音,语音正常播放之后,再最终进行语音告警模块的实..._yolov5报警

国产 Linux 发行版再添一员,界面不输苹果!太漂亮了。。_互联网架构的博客-程序员宅基地

点击关注下方公众号,架构师全套资料 都在这里0、2T架构师学习资料干货分享上一篇:深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?大家好,我是互联网架构师。今天给大..._国产免费linux

ceph集群安装报错解决方法-程序员宅基地

1.创建密钥时报错[root@node1 ~]# ceph-deploy gatherkeys node1[node1][DEBUG ] get remote short hos..._ceph安装报错

django零基础全程笔记_`d蕭忙艐伞蓹蕣-程序员宅基地

一、简介Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。二、django的环境搭建1、安装python环境安装_`d蕭忙艐伞蓹蕣

python3学习笔记(字典keys(),基于父与子一书)-程序员宅基地

在16章图形中,设计随机彩圈程序时出现以下错误TypeError: 'dict_keys' object does not support indexing翻看资(百)料(度)后发现是python3返回的是dict_keys对象,支持iterable 但不支持indexable,所以需要将XX.keys()先转换为list(XX.keys())再进行其他处理,以下是随机彩圈的代码:import p...