操作系统进程模型对比分析
操作系统的演化与发展趋势

操作系统的演化与发展趋势操作系统作为计算机系统中的核心组成部分,随着计算机技术的不断演进和应用场景的扩大,也在不断进行着演化与发展。
本文将就操作系统的演化历程以及目前的发展趋势进行介绍。
一、操作系统的演化历程操作系统的演化可以追溯到20世纪50年代,那时的计算机只能进行一项任务,无法同时处理多个程序。
随着计算机技术的不断进步,系统需求的增加以及用户对计算机的多任务支持的需求,操作系统也开始了演化。
1. 批处理系统在20世纪60年代,批处理系统成为主流。
批处理系统通过将多个用户提交的任务按顺序进行处理,并将处理结果逐一输出,实现了计算机的多任务支持。
2. 分时系统分时系统的出现可以追溯到20世纪60年代末和70年代初。
分时系统使得多个用户能够同时共享一个计算机系统,每个用户都能独立使用计算机资源,实现了多用户并发访问。
3. 客户端-服务器模型20世纪80年代,计算机技术的快速发展推动了操作系统的进一步改进。
客户端-服务器模型引入了分布式计算的概念,将服务器作为计算机系统的核心,在客户端和服务器之间进行协作,提供更加灵活的计算能力和资源共享。
4. 网络操作系统随着互联网的普及,操作系统的重心也逐渐转向网络操作系统。
网络操作系统具有跨平台、分布式、可扩展等特点,用户可以通过互联网访问和管理远程计算资源。
二、操作系统的发展趋势目前,操作系统的发展趋势主要集中在以下几个方面:1. 并发性与多核处理随着硬件技术的进步,计算机系统的处理器核心数量不断增加。
操作系统需要具备强大的并发处理能力,能够有效利用多核处理器,并提供高效的调度算法,以实现任务的并行执行和资源的合理分配。
2. 虚拟化技术虚拟化技术是操作系统发展的重要趋势之一。
虚拟化技术可以将物理资源虚拟化为多个逻辑资源,提供更高效的资源利用率。
通过虚拟化技术,用户可以在一台物理计算机上同时运行多个操作系统,并实现资源的动态分配和管理。
3. 高可用性与容错性对于关键应用和系统,高可用性和容错性是至关重要的。
几种主流操作系统的对比分析

三、总结
综上所述,Windows、Mac和Linux三种主流操作系统各有优缺点和适用场景。 Windows功能丰富且兼容性强,适用于大部分普通用户;Mac注重用户体验和稳定 性,适合苹果粉丝和技术爱好者;而Linux则以其高度自定义性和安全性见长, 适合高级用户和技术爱好者。在选择操作系统时,用户应根据自身需求进行权衡 和选择。
Windows、Mac和Linux是当前最为主流的三种操作系统。Windows起源于微 软公司,具有广泛的用户群体和市场份额;Mac由苹果公司开发,因其出色的用 户体验和稳定性而受到追捧;Linux则是一款开源的操作系统,因其灵活性和高 度可定制性而受到部分用户的喜爱。
二、对比分析
1、功能
Windows操作系统功能丰富,兼容性强,支持大量的应用程序和硬件设备。 同时,Windows还提供了多任务处理、网络冲浪、多媒体播放等功能。
2、性能
在性能方面,Mac操作系统通常表现出色,具有流畅的用户体验和卓越的稳 定性。Windows操作系统则因硬件兼容性和软件优化问题偶发卡顿或崩溃现象, 但总体上性能也相当可靠。Linux系统则因其高度可定制性及出色的任务管理能 力而性能优越,尤其适用于多核处理器和高内存环境。
3、易用性
Windows操作系统学习曲线平缓,对新手用户较为友好。同时,Windows还拥 有丰富的软硬件资源,用户可以轻松找到所需的应用程序和驱动程序。
感谢观看
4、安全性
在安全性方面,Linux系统具有显著优势,因其内核开源及社区支持,使得 安全漏洞容易被发现和修复。相比之下,Windows和Mac虽然也有相应的安全机制, 但仍然容易受到病毒和恶意软件的攻击。
5、资源占用
在资源占用方面,Mac操作系统较为轻量级,对硬件资源的需求较低,可以 保证较长的续航时间和流畅的运行速度。Windows和Linux系统则因功能丰富和自 定义能力强,对硬件资源的需求相对较高。尤其是Windows系统,如果配置不当, 可能会出现资源占用过高的情况。
操作系统进程调度算法模拟实验报告

操作系统进程调度算法模拟实验报告一、实验目的本实验旨在深入理解操作系统的进程调度算法,并通过模拟实验来探究不同调度算法之间的差异和优劣。
二、实验原理操作系统的进程调度算法是决定进程执行顺序的重要依据。
常见的调度算法有先来先服务(FCFS)、最短作业优先(SJF)、优先级调度(Priority Scheduling)、轮转法(Round Robin)和多级反馈队列调度(Multilevel Feedback Queue Scheduling)等。
1.先来先服务(FCFS)算法:按照进程到达的先后顺序进行调度,被调度的进程一直执行直到结束或主动阻塞。
2.最短作业优先(SJF)算法:按照进程需要的执行时间的短长程度进行调度,执行时间越短的进程越优先被调度。
3. 优先级调度(Priority Scheduling)算法:为每个进程分配一个优先级,按照优先级从高到低进行调度。
4. 轮转法(Round Robin)算法:将进程按照到达顺序排列成一个队列,每个进程被分配一个时间片(时间量度),当时间片结束时,将进程从队列头取出放置到队列尾。
5.多级反馈队列调度算法:将进程队列分为多个优先级队列,每个队列时间片大小依次递减。
当一个队列中的进程全部执行完毕或者发生阻塞时,将其转移到下一个优先级队列。
三、实验步骤与结果1.实验环境:- 操作系统:Windows 10- 编译器:gcc2.实验过程:(1)首先,设计一组测试数据,包括进程到达时间、需要的执行时间和优先级等参数。
(2)根据不同的调度算法编写相应的调度函数,实现对测试数据的调度操作。
(3)通过模拟实验,观察不同调度算法之间的区别,比较平均等待时间、完成时间和响应时间的差异。
(4)将实验过程和结果进行记录整理,撰写实验报告。
3.实验结果:这里列举了一组测试数据和不同调度算法的结果,以便对比分析:进程,到达时间,执行时间,优先------,----------,----------,-------P1,0,10,P2,1,1,P3,2,2,P4,3,1,P5,4,5,a.先来先服务(FCFS)算法:平均等待时间:3.8完成时间:15b.最短作业优先(SJF)算法:平均等待时间:1.6完成时间:11c. 优先级调度(Priority Scheduling)算法:平均等待时间:2.8完成时间:14d. 轮转法(Round Robin)算法:时间片大小:2平均等待时间:4.8完成时间:17e.多级反馈队列调度算法:第一级队列时间片大小:2第二级队列时间片大小:4平均等待时间:3.8完成时间:17四、实验总结通过上述的实验结果可以得出以下结论:1.在上述测试数据中,最短作业优先(SJF)算法的平均等待时间最短,说明该算法在短作业的情况下能够有效地减少等待时间。
Linux操作系统实验总结分析报告

Linux操作系统实验总结分析报告从系统的⾓度分析影响程序执⾏性能的因素1.Linux系统概念模型从全局的⾓度来看,Linux系统分为内核空间和⽤户空间,但毫⽆疑问内核空间是Linux系统的核⼼,因为内核负责管理整个系统的进程、内存、设备驱动程序、⽂件,决定着系统的性能和稳定性。
于是从这个⾓度我构建的Linux系统的概念模型如下图所⽰:此模型将Linux系统主要划分为四个模块:内存管理、进程管理、设备驱动程序、⽂件系统。
这四个部分也是⼀个操作系统最基本也是最重要的功能。
2.概念模型解析2.1 内存管理Linux系统采⽤虚拟内存管理技术,使得每个进程都有各⾃互不⼲涉的进程地址空间。
该空间是块⼤⼩为4G的线性虚拟空间,⽤户所看到和接触到的都是该虚拟地址,⽆法看到实际的物理内存地址。
利⽤这种虚拟地址不但能起到保护操作系统的效果(⽤户不能直接访问物理内存),⽽且更重要的是,⽤户程序可使⽤⽐实际物理内存更⼤的地址空间。
内存管理主要有分为如下⼏个功能:地址映射、虚拟地址管理、物理内存管理、内核空间管理、页⾯换⼊换出策略和⽤户空间内存管理,这些模块的架构图如下所⽰:2.2 进程管理进程管理是Linux系统⾮常重要的⼀部分,进程管理虽然不像内存管理、⽂件系统等模块那样复杂,但是它与其他⼏个模块的联系是⾮常紧密的。
进程管理主要包括进程的创建、切换、撤销和进程调度。
2.2.1 进程的创建、切换、撤销进程的创建:在Linux编程中,⼀般采⽤fork()函数来创建新的进程,当然,那是在⽤户空间的函数,它会调⽤内核中的clone()系统调⽤,由clone()函数继续调⽤do_fork()完成进程的创建。
整个进程创建过程可能涉及到如下函数:fork()/vfork()/_clone----------->clone()--------->do_fork()---------->copy_process()进程的切换:进程切换⼜称为任务切换、上下⽂切换。
四种实时操作系统的分析比较

本文对四种实时操作系统(RTOS)特性进行分析和比较。
它们是:Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux--新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux。
近年来,实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。
1、基本特征概述QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。
它遵循POSIX.1、(程序接口)和POSIX.2(Shell和工具)、部分遵循POSIX.1b(实时扩展)。
它最早开发于1980年,到现在已相当成熟。
LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。
它最早开发于1988年。
RT-Linux是一个嵌入式硬实时操作系统,它部分支持POSIX.1b标准。
KURT-Linux不是为嵌入式应用设计的,不同于硬(hard)实时/软(soft)实时应用,他们提出"严格(firm)"实时应用的概念,如一些多媒体应用和ATM网络应用,KURT是为这样一些应用设计的"严格的"实时系统。
2、体系结构异同实时系统的实现多为微内核体系结构,这使得核心小巧而可靠,易于ROM固化,并可模块化扩展。
微内核结构系统中,OS服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。
但它也有弱点,进程间通信和上下文切换的开销大大增加。
相对于大型集成化内核系统来说,它必须靠更多地进行系统调用来完成相同的任务。
QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。
所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。
几种主流操作系统的对比分析

分析Technology AnalysisI G I T C W 技术128DIGITCW2020.080 引言在计算机发展史上,出现过许多不同的操作系统。
操作系统种类比较多,很难用单一标准进行统一分类。
按照用户界面的使用环境和功能特征可分为批处理操作系统、分时操作系统,实时操作系统;按照用户应用领域来可划分为桌面操作系统、服务器操作系统、嵌入式操作系统;按照所支持的用户数目可分为单用户操作系统和多用户操作系统;单用户操作系统包括MS DOS ,Windows 95、Windows 98、Windows ME 。
从自Windows 2000之后的Windows 操作系统都是多用户操作系统。
多用户多任务操作系统有UNIX 、Linux 、Mac OS 等操作系统。
根据硬件结构,可分为网络操作系统,如 Netware 、Windows N 、UNIX 、Linux 、Mac OS 网络操作系统;现最为流行的操作系统有Windows 、 Linux 、Mac OS 等。
1 几种操作系统的特点1.1 W indows 操作系统Windows 操作系统于1983年开始由微软公司开发,开发的最初是为用户提供基于MS-DOS 的多任务图形界面,于1985年具有图形用户界面的第一个版本Windows 1.0 问世;于1987年Windows 2.0版发布,这一版本最显著的变化是多窗口接口的形式相互重叠,但是没有引起人们的注意。
直到1990年,Windows 3.0的推出才成为一个重要的里程碑,它决定了Windows 系统在PC 领域的垄断地位,取得了压倒性的商业成功,现今流行的Windows 窗口界面的基本形式也是从Windows3.0开始基本确定的。
Windows 8于2012年10月正式发行,被应用于个人电脑和平板电脑上,广泛适用于移动触控电子设备,如平板电脑、触屏手机等。
如今Windows 10可谓是现在最流行的版本了。
process model15解读

1. 简介进程模型是操作系统中的核心概念之一,它描述了程序如何在计算机中执行,如何进行通信和同步等重要内容。
在计算机科学中,有许多不同的进程模型,每种模型都有其特定的特点和适用场景。
本文将对进程模型进行深入解读,包括其基本概念、分类、特点、应用等方面的内容。
2. 进程模型的基本概念进程是指在计算机系统中运行的程序的实例。
它是操作系统资源分配的基本单位,具有独立的位置区域空间、独立的内存空间、独立的文件系统等特点。
进程模型则是描述进程如何被创建、管理、调度、通信和同步的理论模型。
它包括了进程的状态转换、进程间的通信机制、进程的调度算法等内容。
3. 进程模型的分类根据进程的调度方式,进程模型可以分为多种类型。
常见的进程模型包括批处理系统、交互式系统、实时系统等。
批处理系统是指按照程序提交的顺序进行执行的系统,其中每个程序都需要等待前一个程序执行完毕才能开始执行。
交互式系统是指用户可以直接与系统进行交互的系统,用户可以随时输入指令并得到相应的结果。
实时系统是指对时间要求非常严格的系统,能够在严格的时间限制内完成任务的系统。
4. 进程模型的特点不同的进程模型具有不同的特点。
批处理系统具有高效、稳定的特点,但用户体验较差;交互式系统可以提供良好的用户体验,但需要保证系统响应速度和并发执行能力;实时系统需要满足时间要求非常严格的特点,能够在规定的时间内完成任务。
5. 进程模型的应用进程模型的应用非常广泛。
在操作系统中,不同类型的进程模型可以应用于不同的场景。
批处理系统常用于需要进行大量计算的场景,如科学计算、数据分析等;交互式系统常用于普通用户使用的计算机系统,能够提供良好的用户体验;实时系统常用于对时间要求非常严格的场景,如航空航天、工业控制等领域。
6. 结语进程模型是操作系统中非常重要的概念,对于理解计算机系统的运行原理和优化程序设计具有重要意义。
不同的进程模型具有不同的特点和适用场景,合理地选择和使用进程模型能够提高系统的性能和可靠性。
操作系统进程调度算法模拟实验

操作系统进程调度算法模拟实验进程调度是操作系统中一个重要的功能,它决定了哪些进程能够获得处理器资源以及如何按照一定的策略来分配这些资源。
为了更好地理解进程调度算法的工作原理,我们可以进行一个模拟实验来观察不同算法的表现效果。
实验设想:我们设想有5个进程要运行在一个单核处理器上,每个进程有不同的运行时间和优先级。
进程信息如下:进程A:运行时间10ms,优先级4进程B:运行时间8ms,优先级3进程C:运行时间6ms,优先级2进程D:运行时间4ms,优先级1进程E:运行时间2ms,优先级5实验步骤:1.先来先服务(FCFS)调度算法实验:将上述进程按照先来先服务的原则排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。
2.最短作业优先(SJF)调度算法实验:将上述进程按照运行时间的大小排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。
3.优先级调度算法实验:将上述进程按照优先级的大小排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。
4.时间片轮转(RR)调度算法实验:设置一个时间片大小,将上述进程按照先来先服务的原则排序,运行对应的模拟程序,观察每个进程的运行时间、完成时间和等待时间。
实验结果:通过模拟实验,我们可以得到每个进程的运行时间、完成时间和等待时间。
对于FCFS算法,进程的运行顺序是按照先来先服务的原则,因此进程A首先得到处理器资源并完成运行,其它进程依次按照到达顺序得到资源。
因此,对于进程A、B、C、D、E,它们的完成时间分别是10ms、18ms、24ms、28ms和30ms,等待时间分别是0ms、10ms、18ms、24ms和28ms。
对于SJF算法,进程的运行顺序是按照运行时间的大小,即短作业优先。
因此,进程E首先得到处理器资源并完成运行,其它进程依次按照运行时间的大小得到资源。
对于进程E、D、C、B、A,它们的完成时间分别是2ms、6ms、12ms、20ms和30ms,等待时间分别是0ms、2ms、6ms、12ms和20ms。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统进程模型对比分析华中科技大学计算机科学与技术学院计算机系统结构张寅摘要:文章分析了Minix、Linux系统的进程模型以及嵌入式uC/OS-II的任务模型,对进程的基本概念、结构、调度、通信和进程的数据表示分别进行描述,还特别对比了通用操作系统进程模型与嵌入式领域进程模型的异同,得出了有用的结论。
关键字:操作系统,进程模型对比,Minix,Linux,uC/OS-II1.进程概述进程是现代操作系统的核心概念。
进程与程序不同,它是一个程序的一次执行,是一个动态的过程。
在多道程序系统中,有多个进程同时在运行,从宏观上他们有各自的运行上下文环境,但微观上是一个CPU在各个进程之间快速地切换。
每个进程靠自己独有的程序计数器来控制自己的程序执行流程,实际的物理程序计数器只有一个,当某个进程获得物理CPU时它的逻辑程序计数器以及其他寄存器值就被装入实际的程序计数器和相应寄存器中。
现代操作系统中,更小的执行单位是线程。
进程是资源分配的最小单位,而线程是调度的最小单位。
本文只讨论进程的概念,不涉及线程。
进程有其从创建到销毁的生命周期。
通常将进程分为前台进程和后台进程。
前台进程负责与用户交互,如用户可以终端上输入命令启动程序;后台进程不与特定的用户关联,负责处理一些专用的事件,比如监听网络端口的请求,后台进程又称为守护进程。
进程完成它的工作后就自动退出,释放所占用的系统资源。
有时候进程并不是正常退出,它可能是由另外的进程杀死的,也可能是因为发生了严重错误被系统强制终止的,比如exit(0)和exit(1)分别表示正常退出和异常退出。
有些进程是操作系统启动或运行时生成的,有些进程是由其他进程创建的(即父进程创建子进程)。
进程之间形成一种树状的层次结构,称作进程树。
虽然每个进程都是一个独立的实体,有它自己的程序计数器、堆栈、打开的文件、定时器和内部状态,但进程之间还要进行交互、通信以及其他同步操作。
由于有些进程之间要相互依赖,同步执行,这就决定了进程从创建开始是很难一口气执行到底的,进程调度也要求进程中执行期间必须有间歇。
大体上我们把进程的状态分为三种:运行态、就绪态和阻塞态。
进程处于运行态是指它正在占用CPU。
从运行态转入就绪态仅仅是因为处理机的调度策略使把正在执行的进程换出CPU ,转而去执行其他进程,当时间片又转回来时,处于就绪态的进程就可以立刻执行。
从运行态转入阻塞态是由于进程缺少某种必须的资源,如程序要执行必须是等待用户参数的输入,当阻塞的进程获得这种资源后就转入就绪态,只要调度策略允许它随时可以执行。
图1 进程转换模型 为了实现进程模型,操作系统维持一张表格,称为进程表。
每一进程占用一个表项,该表项叫做进程控制块(PCB )。
PCB 包含了特定进程的状态、程序计数器、栈指针、内存分配情况、打开文件状态、统计和调度信息、定时器、以及其他运行上下文环境和相关必要的信息。
这样进程再被切换后,所有信息都保存下来,下一次再次被调度时,可以“无缝”的接着运行,就像什么都没有发生过。
本文将以Minix 和Linux 位实例分析通用操作系统的进程模型。
另外,本文也将通过嵌入式uC/OS-II 操作系统来简单介绍嵌入式系统的进程模型。
2.Minix 进程模型2.1 Minix 内部结构Minix3的内部结构如下图所示:图2 Minix3内部结构用户进程内核 设备驱动程序服务器进程Minix3系统结构从下到上依次指定为1、2、3、4层。
内核负责进程的调度,并负责进程在运行态、就绪态和阻塞态之间切换。
内核还负责进程间所有的通信消息,消息需要核实目标的合法性,定位内存中发送和接收的缓存区,并把消息从发送缓存复制到接收缓存。
内核的另一部分是支持对I/O端口和中断的访问。
内核以上的其他三层统称为用户层,内核对这三层同等对待。
它们都不直接对I/O进行操作,也不能访问分配给他们以外的内存。
在第2层设备驱动层的进程相比更上层的程序拥有更多的特权,比如只有这一层的进程可以提出访问I/O 端口等内核调用。
每种类型设备都需要特定的驱动程序。
第3层包含了服务器,即向用户进程提供有用的服务。
有两个服务必不可少:进程管理器和文件系统。
进程管理器执行所有涉及启动或终止进程的Minix系统调用,如fork,exec,wait等,并负责执行与信号有关的系统调用,如alarm,kill。
进程管理器还负责内存管理,如brk系统调用。
文件系统负责执行文件的系统调用,如read,mount,chdir等。
再生服务器启动或重启那些不与内核一起加载到内存中的设备驱动程序。
如果驱动程序在操作中失败,再生服务器检测到这一失败,并杀死这个驱动程序(如果它还没有死),重启这个驱动程序的一个新副本,从而提高操作系统的容错能力。
第2层和第3层内的设备驱动程序和服务器可以统称为系统进程,它是操作系统的一部分,不属于某一特定用户,并且大部分在第一个用户登录前启动。
第4层是所有的用户进程,如shell程序、编辑器、编译器、用户程序等。
许多用户进程是随着用户的登录、工作、退出而创建和销毁的,而有些进程是从系统启动时创建并一直运行的。
守护进程(daemon)是周期性地运行或一直等待某个事件的后台进程。
2.2 Minix的启动当硬盘启动Minix系统时,硬盘的第一个磁道第一个扇区512字节是一个主引导记录(MBR,master boot record),它包含了一段可执行程序的一个磁盘分区表。
执行这段程序并读入分区表选择活动分区。
活动分区的第一个扇区有一个引导程序,引导程序执行后启动boot程序。
Boot程序找到引导镜像(Boot Image),并把引导镜像中的各个文件分装到内存的适当位置。
引导镜像中几个重要的文件是内核、进程管理器、文件系统、再生服务器、Init进程等。
内核运行后,首先启动系统任务和时钟任务,然后是进程管理器和文件系统。
进程管理器和文件系统还将负责加载引导镜像的其它一部分程序。
当这些都完成后,进程管理器和文件系统程序将阻塞。
在Minix中只有包含在引导镜像中的所有任务、驱动程序和服务器程序都阻塞后,Init就会开始运行。
Init进程作为第1个用户进程也是作为引导镜像的一部分加载的最后一个进程,它在系统运行期间一直存在。
一个Minix用户启动多个shell,在shell里面执行自己的进程,各个shell都是init的子进程,而用户进程则是init的孙进程,所有的用户进程都是同一棵进程树的组成部分。
Fork系统调用是创建新进程的唯一途径,exec允许一个进程执行一个指定的程序。
2.3 进程间通信Minix提供三条原语来发送和接收消息:send ( dest , &message ) 用来向进程dest发送一条消息;receive ( source , &message ) 用来接收一条来自进程source 的消息;sendrec ( src_dst , &message ) 用来发送一条消息并等待同一个进程的应答。
IPC的高层代码在proc.c中。
函数mini_send、mini_receive和mini_notify是Minix3中标准消息传递机制的核心。
2.4 Minix进程调度中断系统能够使多道程序操作系统持续不断的运行。
事实上,系统“滴答”就是依靠时钟中断来实现的。
每次系统节拍到来,就会运行进程调度程序,依靠某种策略重新选择进程。
当然,在进程被中断,不管是硬终端或者是软中断都会发生进程的重新调度。
Minix采用了优先级队列加时间片轮转的调度策略。
调度器拥有一个16级的排除系统。
最低级别的是IDLE进程,用户进程启动时默认的优先级会比IDLE 进程的优先级高一些。
在Minix四层结构中,用户进程的优先级最低,服务器进程次低,驱动程序比前两者要高,而时钟和系统任务则处于最高的优先级别上。
此外针对不同类别的进程它所分到的时间片(即进程在被抢占前所允许运行的最大时间间隔)也是不同的。
用户进程拥有一个较小的时间片,驱动程序进程和服务器进程可以运行到阻塞,但它们是可强占的。
当一个优先级高的进程超时运行时将把该进程放到一个较低优先级队列的队尾,如果下一次这个进程又运行超时,那么它的优先级将再被降低一级。
当然被降了级的进程其优先级也还是有机会得到提高的,这种情况发生在它用完了时间片但没有妨碍其他进程运行时。
2.5 Minix进程数据结构proc.h定义了进程在进程表中的数据结构,其中包括堆栈信息、段信息、寄存器等信息。
struct proc {struct stackframe_s p_reg; /* 进程保存在堆栈中的寄存器*/reg_t p_ldt_sel; /* 描述符表相关寄存器*/struct segdesc_s p_ldt[2+NR_REMOTE_SEGS]; /* 代码段和数据段寄存器*/proc_nr_t p_nr; /* 进程编号*/struct priv *p_priv; /* 特权结构体*/char p_rts_flags; /* 进程的消息状态*/char p_priority; /* 进程当前的优先级*/char p_max_priority; /* 进程最大优先级*/char p_ticks_left; /* 剩余运行时间时间*/char p_quantum_size; /* 时间片最小单位*/struct mem_map p_memmap[NR_LOCAL_SEGS]; /* 内存映射*/clock_t p_user_time; /* 用户时间滴答*/clock_t p_sys_time; /* 系统时间滴答*/struct proc *p_nextready; /* 指向下一个就绪的进程表项*/struct proc *p_caller_q; /*消息通信时指向要通信的进程链*/struct proc *p_q_link; /* 指向下一个要发送消息的进程*/message *p_messbuf; /* 已发送消息缓冲区*/proc_nr_t p_getfrom; /* 等待接收消息的源进程*/proc_nr_t p_sendto; /* 要发送消息的目的进程*/sigset_t p_pending; /* 信号位图*/char p_name[P_NAME_LEN]; /* 进程的名字*/};3.Linux进程模型分析3.1 Linux进程结构Linux系统中存在一个树形结构的进程谱系图,通常所有进程都是PID为1的init进程的后代。
这是因为init作为系统引导阶段最后部分被启动,由它调用rc脚本完成剩下部分系统启动,此阶段启动的驱动程序等父进程就是init了。