操作系统中的进程是什么?(详细讲解进程调度相关PCB信息)
目录
1.进程调度是什么
2.操作系统的管理
2.1.描述:
2.2.组织:
3.PCB块中的信息
3.1pid标识
3.2内存指针
3.3文件描述符
4.进程调度相关的
4.1进程状态
4.1.1就绪状态
4.1.2阻塞状态
4.2进程优先级
4.3进程上下文
4.4进程记账信息
1.进程调度是什么
进程调度是一组操作系统提供的API,通常是用C的风格来编写的,应用程序必须调用这些API才能够完成一些基础的工作,从而让CPU更高效的利用.
2.操作系统的管理
操作系统通过
2.1.描述:
表示清楚进程的信息(这里面先不考虑线程,可以理解为系统通过一种特殊的结构体来描述进程的属性和信息,称之为PCB块[进程控制块])
2.2.组织:
操作系统通过一定的数据结构来组织PCB块,系统通常会使用链表的结构进行组织
3.PCB块中的信息
3.1pid标识
pid标识是进程的一种身份认证号,就好像我们每个人都有身份证号一样
3.2内存指针
这个简单理解为指向进程可使用的内存空间就好了
3.3文件描述符
每个进程都可以打开一些文件,这个就是描述进程可以打开哪些文件的,也就是持有的资源文件
4.进程调度相关的
进程调度其实是通过"并行" 和 "并发" 的方式让计算机可以执行多个进程
并行:就是多核心的CPU上面,每个CPU都执行一个进程,这样就可以同时执行多个进程了
并发:就是一个CPU上面多个进程交互执行,交互时间短,从而让人感觉上是一起执行的
4.1进程状态
4.1.1就绪状态
就是相当于你辅导员说下午要做核酸,然后你中午吃完饭也没睡觉,就在那等着消息,辅导员一通知做核酸,你就可以直接去做核酸,这种随时待命的状态就是就绪状态
4.1.2阻塞状态
阻塞状态就相当于你中午睡了个午觉,手机静音,这时候不管怎么样,辅导员联系不上你,你就不执行他需要你完成的任务,这种就叫阻塞状态
总结:就绪状态的进程可以被CPU调用,阻塞状态的进程不能被CPU调用
4.2进程优先级
系统中的进程是有优先级的,同时两个进程需要上CPU,要有个先后顺序的,就好像,你室友喊你打游戏,你辅导员请你去办公室喝茶,那这两件事情对于你来说,就有个优先级,肯定把辅导员晾着,游戏不能耽误,这种情况就是打游戏的优先级大于辅导员请喝茶的优先级
并且在进程创建的时候,我们是可以通过一些系统调用来干预优先级的,但是我们设置完之后,不一定就先执行,如果三个进程优先级都是4,那么这三个进程的执行顺序就是随机的
4.3进程上下文
这个就类似于你在玩游戏,辅导员说要喊你去,给你发奖学金,你就会先把你的游戏存档,这个存档就叫做进程上下文.
CPU执行任务时"并发"和"并行"一起使用的,所以有时候并发执行的时候,当CPU再次回到这个进程上的时候,我们需要保证能够读取到上次进程的进行程度
4.4进程记账信息
这个就好像你去教室上课,你们老师很喜欢一些同学,但是为了给你们加平时分,就会用一些手段给你加分
在CPU中也一样,虽然进程有优先级,但是并不希望有的进程没机会执行,所以会适当给这些优先级低的进程一些安排一些时间上CPU
5.进程的虚拟地址空间
进程中还有一个特别重要的概念叫做虚拟地址空间
系统会给每一个进程安排一些虚拟地址空间,通过映射来并进行判断是否合法,然后再放到内存中去
根据这张图来理解
两个虚拟地址空间指向的那个浅紫色的盒子叫做MMU,这张图很好的诠释了各个部件间的联系和作用
有了虚拟地址空间就让进程有了"隔离性",那我们的进程是不是就不能有联系了呢?
并不是,系统又引入了一个叫做进程间通信的东西,核心原则基本就是找一个多个进程都能访问的地址空间或者文件,然后基于公共的资源进行数据的交互就可以了