一. 进程是什么?
进程可以简单理解成跑起来的程序,xx.exe都称为"可执行文件",把这些运行起来的可执行文件,称为“进程”,如下面的QQ等等都是一个进程.
二. 操作系统是如何管理进程的?
操作系统管理进程,会用到进程控制块(PCB)或者叫进程表,我们可以把进程表理解为是一种数据结构,把进程当作链表中的一个结点;
进程管理就是把一个进程用类似结构体把信息描述出来
然后把一堆进程组织起来,类似一个进程就是链表中的一个节点
首先,为了管理进程,系统会先创建一个PCB,就类似链表的节点一样
(1)标记进程身份:为每个进程创建一个pid,每个进程需要一个唯一的身份标识;
(2)内存指针:当前这个进程使用的内存是那一部分
(3)为进程创建文件描述符表:进程每次打开一个文件,就会产生一个文件描述符,一个进程可能打开很多文件,对应一组文件描述符,把这些文件描述符放在一个顺序表中,就构成"文件描述符表"
因此进程是操作系统进行资源分配的基本单位
三. 系统如何调度进程?
对于我们人大部分时候,一次性只能做一件事情,比如看电视和写作业这两个事情大概率不会一起做,因为我们注意力不能同时放在两个事情,但是会有人会边做作业边看电视,原理就是把注意力来回的从看电视和写作业中来回跳.
对于进程,CPU的一个核心同时只能执行一个进程,那么计算机是如何做到可以同时运行多个程序的呢?大致也是上述原理,只要跳的够快就能一起做很多事情.
操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源.
进程的运行,需要从操作系统这里申请资源,进程是操作系统进行资源分配的基本单位。
接下来的一组属性,就是描述和CPU资源相关的属性,这些都是辅助进行,进程调度
1.进程状态:a.就绪态:该进程已经准备好,随时可以上cpu执行
b.阻塞态:该进程暂时无法上cpu执行
2.进程的优先级:进程之间的调度不一定是公平的,需要一定的优先调度
3.进程的上下文:所谓上下文就是描述了当前进程执行到哪里这样的存档记录,当进程在离开CPU的时候就要把当前运行的中间结果,“存档”等待下次进程回来CPU上,恢复之前的“存档‘,从上次的结果继续往后执行.具体到进程,所谓的上下文具体指就是进程运行过程中,CPU内部的一系列寄存器的值,寄存器有很多种,最经典的就是保存当前进程执行的中间结果,包括进程执行到哪一条指令,进程离开CPU就需要把这些寄存器的值保存到CPU的上下文字段中.
4.进程的记账信息:统计了每个进程在CPU上执行了多久,可以作为调度的参考依据.
四. 并行与并发
并行: 就是两个核心同时执行两个进程
并发: 就是一个核心做完1,在做2再做3,只要切换得够快就可以看起来这三个进程是同时进行的. 很多时候会把并行和并发称为并发