目录
⚽回顾
🏐进程管理(process)
进程理解(总结)
进程
程序到进程
内存中的进程
进程状态
状态类型
状态转移
进程控制块
🏀总结
回顾
前一篇文章的重点在于操作系统的结构,从简单结构到UNIX结构(对程序功能进行分级,彼此不能跨域访问),最后到微内核结构(减轻内核的内存,将服务包装起来作为驱动程序等)
现代计算机多采用微内核结构,所以我们电脑在安装操作系统后,很多的驱动程序(音频、USB接口等驱动)需要自己去下载安装,否则便不能使用
进程管理(process)
进程理解(总结)
1、进程可以看作执行的程序,进程也就是程序的一种
2、进程就是操作系统对象,是程序运行的实例。程序只是被动的实体,如存在磁盘上的exe文件
3、进程执行需要分配其对应程序所需要的资源,如:内存、CPU、文件等
4、程序的运行必须保证顺序性,单通道程序靠硬件实现顺序执行,并发程序靠进程来保证顺序链的实现
5、利用shell去运行自己所写的程序实际上就是创建shell进程的子进程,运行程序
6、程序写好保存后只是存储在硬盘中的代码,只有运行后才会创建进程,才是平常所说的跑起来
7、进程创建后也存储在内存当中
进程
程序到进程
一张图说明一个程序是如何变为一个进程的:
从图中可以清楚地看到进程创建后会放到内存中
内存中的进程
当运行一个程序时,我们就在内存中保存这样一个进程作为程序的实例(程序运行实际的载体)
其中:
1、堆栈(stack):存储程序运行中的临时数据、函数参数和局部变量
2、堆(heap):存储程序运行中动态分配的内存
3、数据:存储程序运行中的全局变量
4、文本段:存储程序代码(二进制文件)
5、堆和堆栈中间的空白:堆和堆栈共享的空间,在程序运行后才会填充上
进程状态
进程在运行时会不停切换状态,用以实现多程序的并行
状态类型
新的(new):进程正在创建(还没创建成功)
运行(running):指令正在执行
等待(waiting):进程等待发生某个事件(如等待I/O指令完成)
就绪(ready):进程等待分配处理器(等待CPU处理)
终止(terminated):进程已经完成执行
状态转移
1、允许:允许一个程序,shell程序调用系统调用驱动,对程序进行检查,检查允许后建一个新的进程
2、调度器调度:在CPU空闲后会通知内核,内核在多个ready中选择一个调转到CPU执行
3、中断:一个进程正在运行过程中,此时另一个之前运行的进程的特定事件(输入输出事件)完成后,外设会发送中断信号给内核。内核在收到中断后,会在正常running程序的一个时钟周期后将其转为ready状态,先去执行之前运行的进程(中断优先!!)
4、I/O或事件等待:一个进程在运行中遇到I/O或特定事件则会进入等待状态,进入该状态之前会对现场进行保存
5、I/O或事件完成:当一个等待中的进程完成了I/O或特定事件则会发送中断信号给内核,同时由内核将其状态修改为ready
6、退出:进程运行完成后由运行变为终止状态
状态的修改必须由内核完成
进程控制块
为什么需要PCB?
进程存在内存中,内核为了方便自己对多个进程进行统一的调度和管理,会为多个进程创建目录,这个目录中放置的就是一个又一个进程的进程控制块(自己的类比,仅方便理解)
每创建一个进程后,内核会在自己内部创建这个进程对应的进程控制块(Process Control Block)进程控制块也称为任务控制块,因为每一个进程可以认为是计算机的一个任务
(上图中就是一个放在内核的内存块(内核中)中PCB的模型)
1、进程状态:记录进程的状态
2、进程编号:进程的pid值,进程检索、跳转时使用
3、程序计数器:记录程序运行到哪个步。计数器本身是一个寄存器,但是和程序并行时维持顺序性有直接的关系,故被分离
4、寄存器:进程状态转移是保存现场使用
5、内存界限:内核为每一个进程划分独立内存,这里记录这个内存的开始和结束位置。操作系统利用内存界限的映射,对每一个进程独立出一个内存空间并映射在相同地址空间(程序运行中所用的实际空间地址对程序员透明)
6、打开文件列表:程序中打开文件时,会将文件的资料存储在PCB当中
总结
本文到这里就结束啦~~这堂课的内容较为杂乱、复杂,但是学一学拓展一下知识是非常好的呀~~
如果觉得对你有帮助,辛苦友友点个赞哦~
知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解。不要私下外传