Minix3进程概述
介绍Minix3中的系统组织结构及进程实现。
概述
- UNIX 的内核是一个部分模块的单块程序
- MINIX 是微内核结构,是一组进程的集合,内核功能较少,进程之间以及用户进程之间使用进程级通信机制(IPC)进行通信
内部结构
- 注意:内核层的 system task 是系统任务,第二第三层统称为系统进程 system process
- 除了第一层为内核层,其他层都是user mode。
- 进程都潜在有一定特权,这是第二层、第三层、第四层内的进程的不同之处。
- kernel call 与system call的区别
- 内核调用(kernel call)是由系统服务提供的以使驱动程序和服务器完成工作的低层函数。例如读硬件的I/O端口。
- system call 是用POSIX规范定义的高层调用,如read、fork和unlink,这些调用供第四层的用户程序使用。
- 用户程序包含很多POSIX调用,但不包含内核调用。
内核层(Kernel)
多数用 C 写,汇编负责内核直接与硬件交互的最底层部分。
主要功能是为上层驱动程序和服务提供一组特权内核调用。
内核
- 进程调度,负责进程在就绪态、运行态、阻塞态之间转换
- 处理进程间的消息
- 支持对 I/O 端口和中断的访问,在处理器中需要使用特权内核模式(kernel mode),这些指令在用户指令中是没有的。
时钟任务
- 类似设备驱动程序,与产生时钟信号的硬件交互
- 只提供内核接口,用户不能访问
系统任务
- 为驱动程序和服务器提供内核调用,用户进程不可调用
- 包括读写 I/O 端口、跨地址空间复制数据
设备驱动程序(Device Drives)
- 请求系统任务代表它们读写 I/O 端口
- 请求系统任务将读取的数据副本到另一个地址空间
- 实现操作系统工作一:管理资源
服务器进程(server processes)
进程管理器(Process Manage)
- 执行所有涉及或者终止进程的MINIX3系统调用,例如fork,exec和wait。
- 还负责执行与信号有关的系统调用,例如alarm和kill。
- 管理内存,如发出brk系统调用。
文件系统(File System)
- 执行文件系统的调用,如read,mount和chdir。
- 实现操作系统工作二:通过实现系统调用提供一个扩展的计算机(PM & FS)
信息服务器(information server)
- 负责提供其他驱动程序和服务器的调试和状态信息的工作。
再生服务器(reincarnation server)
- 启动或者重启那些不与内核一起加载到内存的设备驱动程序。
网络服务器(network server)
- 可以通过驱动程序来请求I/O。
用户进程(user processes)
- 如shell程序、编辑器、编译器和用户程序。
- 系统进程比用户进程拥有更高的执行优先级
- Init进程
- 在系统引导时启动
- Daemon 守护进程
- 周期性运行或总是等待某个事件的后台进程
MINIX3 中的进程管理
MINIX3 的启动
软盘
只有第一个分区可以引导(引导块,boot block),由它装入引导程序(bootstrap),引导程序很小,并装入一个更大的程序boot,由boot装入操作系统。
boot block -> bootstrap -> boot -> boot image
硬盘
可能包含很多分区,第一个扇区包含主引导记录。
主引导记录(master boot record)= 第1个扇区内的一小段程序(用于选择活动分区)+ 磁盘分区表(partition table)
程序部分被执行以读入分区表并选择活动分区,活动分区的第一个扇区有一个引导程序,被装入并执行以查找启动程序boot。
master boot record -> partition table -> active parttition -> boot block (扇区1) -> bootstrap-> boot -> boot image
在 BIOS 中设置启动盘的搜索顺序
- 软盘启动
- 硬盘启动
- 程序部分被执行读入分区表并选择活动分区,活动分区第一个扇区中的引导程序被装入执行并以查找并启动程序boot
boot
- 是MINIX3的磁极装入程序,不仅可以装入操作系统,而且作为一个金控程序,允许用户改变、设置和保存不同的参数。
引导映像(boot image)
- MINIX3 的 boot 程序将在软盘或硬盘分区上找一个包含多个部分(各种程序,如PM、FS 等)的文件,并将各部分装到内存适当的位置。
引导映像的各个部分是独立的程序,内核、FS、PM、再生服务器必须是引导映像的一部分。
- 在初始化阶段,内核先启动系统任务和时钟任务,再启动进程管理器和文件系统,接着是其他一些服务器和驱动程序,这些都完成之后被阻塞,然后第1个用户进程 init 才开始运行。
进程树的初始化
Init 是第1个用户进程,也是作为引导映像(boot image)的一部分加载的最后一个进程
- init进程首先执行
/etc/rc
脚本,启动不在引导映像中的其他服务器和驱动程序。 - 其中一个使用程序为服务(service),是再生服务器的用户接口
- 最后启动守护进程
- init不是进程树的树根,其结构也不能判断系统进程的启动顺序
进程管理器
是用户空间运行的第1个进程再生服务器
是其他所有再引导映像中启动的进程的父进程
- init进程首先执行
MINIX3 中的进程间通信
- 原语
- Send
- Receive
- Sendrec
- 发送一条消息,并等待同一个进程的应答
实现:内核中的消息传递机制将消息从发送者复制到接收者
- 同步通讯:当一个进程发送消息到目标进程而目标进程并不在等待消息时,发送进程将阻塞,直到目标进程调用 receive 为止。
- 当 A 向 B 发送消息时,如果 B 向 A 发送消息,会导致死锁。
每个任务、驱动程序或服务器只允许与一些特定的进程通信
Notify
- 不阻塞消息发送
- 只发送一个很简单的通知,使用置位就可以存储。
- 异步通讯,可以避免死锁
- 消息通知(notification message)的简单性在于,不能被接受的通知可以很容易的存储起来,以便当接受者调用receive时可以收到这个通知。
- 实现
- 通过置位来接收,notify 只包含发送者信息和一个内核加上的时间戳
MINIX3 中的进程调度
结构:多级排队系统
- 共 16 个队列
- 最低优先级位 IDLE 进程,只在没有其他任务时运行
- 系统和时钟任务处于最高优先级队列中
驱动程序和服务器进程通常具有一个较大的时间片,通常是运行结束被阻塞而非时间片到了被中断
只有当前一个队列中没有就绪的程序时,才会转向下一个队列
优先级调度 + 改进的轮转调度算法
进程的优先级可根据实际情况调整
参考资料
- Operating System:Design and Implementation,Third Edition
Minix3进程概述相关推荐
- 【Linux系统编程】进程概述和进程号
00. 目录 文章目录 00. 目录 01. 进程概述 02. 进程状态 03. 进程控制块 04. 进程号 05. 进程号相关函数 06. 案例实战 07. 附录 01. 进程概述 我们平时写的 C ...
- 操作系统-课堂笔记-进程概述(南航)
文章目录 进程概述 1.引言 2.进程的概念 2.1进程的内存抽象 2.2分段保护 2.2.1例一 2.2.2例二 2.2.3小结 2.3进程的状态 版本1 版本2 提升思考(可跳过,涉及虚拟内存) ...
- 冷月手撕408之操作系统(5)-进程概述
操作系统的进程概述主要是介绍了进程的概念,进程的组成(进程实体).进程的特征.进程的五状态模型.进程控制,其中重点掌握PCB.五状态模型及其状态转换. 主要的重点冷月做出了标识,知识点如下图(pdf版 ...
- 操作系统导论-进程概述
进程概述 相关概念 Q1:什么是进程? 进程就是运行中的程序.程序是存在磁盘上的一些指令的合集,包含一些系统调用.过程调用以及静态数据等.程序是没有生命周期的,谁听说过某某某程序到了晚上8点就不执行了 ...
- 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
作者:熊轶翔@熊仙僧,中国科学院软件研究所智能软件研究中心 上一章我们学习了进程调度,进程调度的过程是由操作系统内核管理的.在Linux中还存在着另一种由内核管理且又与进程运行息息相关的操作,也是就在 ...
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- 23.多线程(进程的概述和多进程的意义,线程的概述和多线程的意义,JVM运行原理以及JVM启动的线程探讨,实现多线程 线程调度,线程控制,Lock锁,死锁现象)
1.进程概述及多进程的意义 1.线程和进程 要想说线程,首先必须得聊聊进程,因为线程是依赖于进程存在的. 2.进程概述 什么是进程呢?通过任务管理器我们就可以看到进程的存在. ...
- Linux 守护进程的原理与实现
一.守护进程概述 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程.为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定 ...
- Oracle数据库在进程中是,由浅入深讲解Oracle数据库进程的相关概念
Oracle数据库进程概述: Database buffer cache主要用于存储数据文件中的数据块 数据库高速缓存的数据块是高速缓存与数据文件进行信息交换的基本单位.在Oracle数据库8i以前, ...
最新文章
- 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)
- 带权重的随机输出数组中的元素
- 1000内同时被3,5,7整除的数
- linux 命令行简介
- Spring源码分析——资源访问利器Resource之接口和抽象类分析
- react-router-dom v6.1.1 使用方式
- 分区变为RAW的解决办法
- 【干货】如何利用NLP与知识图谱处理长句理解.pdf(附下载链接)
- win11安装助手闪退怎么办 Windows11安装助手闪退的解决方法
- MD(d)、MT(d)编译选项的区别
- #0的作用及time slot的划分
- 联想拯救者y7000p加内存条_内存、硬盘不够用?手把手教你升级联想拯救者Y7000P...
- Unity 粒子特效相对位置和大小的调整
- Racket读写JSON
- find7刷Android,OPPO Find 7刷Color OS 2.0教程
- 运算放大器单电源设计
- 今日卢布美元汇率换算
- BNN系列-Dropout as a Bayesian Approximation
- 威联通[vNAS內置虚拟机]体验评测 让企业实现无限可能
- c语言用分支结构判断最大字符,第3章C语言 分支结构PPT课件.ppt