| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 操作系统(3) 进程描述和控制 -> 正文阅读 |
|
[嵌入式]操作系统(3) 进程描述和控制 |
1.进程概念1.1 进程和进程控制块进程:程序在一个数据集上的一次执行过程
进程的组成(进程映像):①程序代码 ②数据集、栈③进程控制块(process control block 简写为PCB,PCB是进程存在的唯一标识,OS根据PCB中的属性控制进程)
简单理解一个实例:设有一进程P0正在CPU上执行,某时刻P0发出I/O请求,发生了阻塞(或者是时间片结束,发生了中断),此时发生进程切换,这时候则引起上下文切换,保存现场到PCB0,放入队列,此时P1符合使用CPU的要求,则从PCB1中恢复现场,P1开始执行,执行过程发生中断(设此时P0的I/O结束,发生中断),发生进程切换,此时保存现场到PCB1,从PCB0中恢复现场,继续执行。
2.进程的创建和终止?分派器的作用:选择并调度一个进程,使之占用CPU运行 进程创建:OS为该进程建立PCB(唯一标识),分配内存空间。 进程终止:回收内存,释放资源,销毁PCB 3.?进程的五状态模型
首先一个进程被新建,加载必要资源(除CPU外)内存等后进入就绪状态,等待分派器调度,当分派器指定该进程被调度时,进入运行状态,当在运行过程中,进程时间片完或者是更高优先级的进程被调度时,进程从运行态进入就绪态,等待再次被调度,如果是进程在运行过程中需要等待某事完成(如I/O),则此时进入阻塞状态,此时若有其他进程需要使用CPU,则会发生进程切换,分派指派新的进程执行,当需要等待的某事完成后,该进程从阻塞态恢复为就绪态,等待被分派器调度,当运行完成后,结束,退出。 如图: ? 进程队列处于同一状态的进程PCB组成一个进程队列
如图 PCB数量OS中PCB数量固定或不固定,但总是有限的
4.被挂起的进程-两种挂起态为什么需要挂起? 内存不足,不得不把部分进程交换到磁盘
?一个基本挂起态机制如上图所示,其中与挂起态无关的过程与五状态模型的运行机制完全一致,变为就绪挂起态的时机有三个:①当进程刚刚新建,但是内存不足,就会被直接加载到磁盘中去②当进程变为就绪态时但没有被调度而且内存不足时,也会被加载到磁盘中③当进程在运行中,内存不足时也会被挂起运行,变为就绪挂起态,阻塞挂起态相对简单,当一个进程长时间阻塞而又占用内存时,此时就会被换出到磁盘中,需要注意的是尽管代码数据被换出到外存了,但是PCB始终还是在内存中,
5.进程描述?5.1?操作系统的控制结构?OS构造而且维护所管理的每个实体的信息表,4类: ?①内存表:跟踪内存(实存)和外存(虚拟内存) ?②I/O表:管理I/O设备和通道 ?③文件表:文件属性 ?④进程表:PCB集合 ?5.2?进程的控制结构-PCB?PCB:进程属性的集合,在OS中进程表包含了所有进程的PCB,创建新进程时,分配进程表中一个空闲PCB,填写属性,在进程终止时回收PCB ? 该图解释了PCB表是如何与寄存器等基础设施进行进程控制的,首先PCB表中有索引,以该索引来表示表示该表项控制哪一个进程,基址寄存器则是标明了当前进程的代码数据所在内存的基址位置,而界限寄存器则是标明了当前进程的代码数据结束的地址位置,程序计数器则是存储了当前进程执行的指令,通过这么一套配合下来,实现进程的访问控制。 5.3 PCB的属性解析?? ?5.4?进程控制结构-(program status word,psw)PSW??程序状态字寄存器:指明CPU当前特权级别、中断屏蔽码(中断优先级等) 6.进程控制
6.1?执行模式-CPU特权级别当CPU要执行特权指令时,会引起“陷入trap”,也就是CPU由用户态切换到系统态(称为模式切换),然后去执行OS内核中的一段(特权指令)代码。可以简要描述为:首先CPU在执行用户指令,此时是用户态,此时要执行特权指令,则会转入系统态,执行内核代码,完成后则由转回用户态,继续执行非特权指令。 CPU从用户态到系统态的时机:①执行系统调用(即内核代码,由OS提供服务)时②发生中断或异常时,执行中断处理程序 从系统态到用户态的过程:系统调用或中断处理完毕之后,执行IRTE(中断返回)指令,恢复原进程的PSW,回到用户态。 一个简单的例子:当CPU在用户态下执行指令时,此时需要系统调用或者中断处理,就会从用户态转为系统态,注意,当在系统态下发生中断嵌套时,响应另一中断、中断返回在系统态运行时也可以响应中断
7.进程创建创建新进程的步骤: ①给新进程分配一个新的PCB和唯一的PID ②给进程分配内存空间(代码、栈、数据) ③初始化PCB:各属性取默认值或者所请求的值,在UNIX中,子进程PCB基本复制自父进程PCB ④将PCB放置到就绪队列或就绪挂起队列 ⑤创建其他数据结构:如记账、日志等 8.进程切换何时进行进程切换? 中断发生时:如时钟中断。当前进程的时间片结束,让出CPU,调度新进程,因此发生新旧进程切换 陷阱发生时:当前进程的指令产生错误或异常,非致命时重试或者报告,致命时将直接结束本进程,调度新进程 当前进程执行系统调用时,通常会被阻塞,让出CPU 进程切换的步骤: ①保存当前的上下文到对应的进程PCB上(保存现场),更新PCB,将PCB转移到相应的就绪队列或者阻塞队列 ②选择(调度)另外一个就绪进程,准备执行 ③更新该进程PCB,从就绪队列中移出,更新内存管理的数据结构(如设置页表指针、基址/界限寄存器)将该进程的上下文恢复到寄存器中
进程类型
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:17:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |