2. 操作系统中的程序/进程、并发/并行

2022-10-26 14:37:16 浏览数 (2)

进程也可以说是一个任务, 是一种操作系统中非常重要的软件资源, 把一个可执行程序跑起来,系统中就会产生一个相对应的进程,如果这个程序结束了,那么相对应的进程也会被系统随之销毁, 因此,进程也可以被看作是可执行程序的“过程”

程序/可执行程序 VS 进程

可执行程序和进程不是一个概念,下面我们来具体区分一下

可执行程序

可执行程序是磁盘中的一个文件,也就是每当下载完一个软件之后,所生成的 .exe应用文件 这个文件一定是静态的,再我们电脑的磁盘中可以找到对应的可执行程序,如下

进程

进程是可执行文件跑起来的一个具体实现过程,那么当我们双击可执行程序时,可以在电脑的任务管理器中找到这个运行程序,这个就是进程

把.exe 文件中的很多内容都加载到内存中了,分配一些资源,并开始执行这个可执行程序中包含的指令

进程也是操作系统中进行资源分配的最小单位

创建进程包含信息

每创建一个进程,就同时创建了一个PCB这样的类的实例

使用双向链表把所有的PCB对象串到一起,双击一个exe,创建一个进程的时候,本质上就是在内核中,先创建了一个PCB对象,然后把这个对象加入到链表中,关闭一个程序,结束一个进程的时候,本质上就是在内核中,找到这个对应的PCB对象,然后从链表上删掉,并且释放该资源

通过任务管理器查看到的所有的进程信息,本质上 就是在遍历内核中的这个链表,依次读取对应PCB的节点信息

PCB里面包含的信息有:

1.pid(进程id)进程的身份标识 2.一组内存指针:指向该进程持有的一些重要数据在内存中的位置 3.进程的状态:表示当前的程序是在运行还是休眠… 4.优先级: 这个进程是优先上CPU执行还是放到后面上 5.进程的记账信息:记录了进程在CPU上一共执行了多长时间,通过这个事件来限制不要让某个进程霸占CPU太长时间导致的其他程序无法执行 6.上下文:保存量上次进程在CPU上执行的进度,以便下次进程上CPU的时候能继续执行

以上的3~6点都是为了实现 进程调度 一般情况都会出现 进程数量多,CPU数量少

并发和并行

CPU数量少,但是进程数量多怎么解决呢?

我们电脑中同一时间会运行多个进程,这是通过快速频繁的切换CPU来达到每个线程一起工作, 这样从宏观上看多个线程是同时进行的----------> 并发 从微观上看和从宏观上啃都是同时进行的-------> 并行

但在具体应用中,并发和并行的区分不大

状态

进程中的状态还是比较重要的,这里详细介绍一下

一个进程的状态有一下几种: R: 就绪状态。正在CPU上执行,或是即将执行 S:睡眠状态。这些进程没法在CPU上执行,而是在等待 D: 深度睡眠状态。进程在长时间忙于IO操作,没尽力理会CPU X:进程已经被销毁了 阻塞状态。进程不具备运行条件,正在等待某个事件的完成。 …

0 人点赞