一.什么是进程
进程就是我们电脑内正在运行的那些程序,打开任务管理器就会看到你的电脑正在运行的那些进程如图:
二:操作系统是如何管理进程的
所谓的操作系统,通俗讲就相当于一个学校,学校里有老师,学生,班级,课程,各个部门等等.
操作系统本身是一个大话题,是一个非常复杂的软件.功能非常多,其中有一个和咱们密切相关的功能块--进程管理.
1.什么进程
所谓的进程通俗点就是指的是一个班在上课,而它进行上课需要有教室,老师,学生,还需要系办进行排课.而这些都是你要是上课所需要的资源,进程就相当于这样一个过程.
要想运行一个进程就需要系统资源才能运行,如果缺少任何一个资源就无法运行.
进程管理分两步:
1.描述一个进程:使用结构体/类,把一个进程有哪些信息表示出来.
2.组织这些进程:使用一定的数据结构,把这些结构体/对象,放到一起.
2.进程的结构体(PCB)的属性:
1.pid:每个进程需要有一个唯一的身份标识.
2.内存指针:当前这个进程使用的内存是那一部分
3.文件描述符表:文件比如硬件上存储的数据,往往就是以文件为单位的进行整理(进程每次打开一个文件夹,就会产生一个"文件描述符表".
文件描述符表:(表示了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符,把这些文件描述符放到一个顺序表这样的结构里,就构成文件描述表
3.进程调度
并行:同一时刻,两个核心同时执行两个进程,此时这两个进程就是并行执行
并发:一个核心,先执行进程1,执行一会儿之后,再去执行进程2,再执行一会儿之后,再执行进程3.此时只要这里切换速度足够快.此时看起来进程1 2 3 就是"同时执行"
通常都是通过并发+并行的方式来执行系统任务,统称为并发.高并发是一个核心(主体)并发的执行1W个任务就称为高并发.
4.进程调度的基本属性
1.进程状态:进程的状态主要是:就绪态 阻塞态
就绪态:该进程已经准备好,随时可以上CPU.
阻塞态:该进程暂时无法上CPU.
2.进程的优先级
进程之间的调度不一定是"公平的" 有的要优先调度
3.上下文
就是描述里当前进程执行到哪里这样的"存档记录".进程在离开CPU的时候就要把当前运行的中间结果"存档".等到下次进程回来CPU 上,在恢复之前的"存档",从上次的结果继续执行
所谓的上下文具体指的就是运行过程中cpu内部的一系列寄存器的值
存档:进程里靠CPU就需要把这些寄存器的值保存到PCB的上下文字段中.
读档:进程下次回来cpu在把PCB再把PCB中的值给恢复到寄存器中
4.记账信息
统计了每个进程在CPU上都执行了多久进行统计,可以作为调度的参考依据
操作系统往往使用双向链表这样的结构来组织pcb:1.创建进程,就是创建一个链表节点:2.销毁一个进程,就是把链表的节点给删除了:3.遍历进程列表,就是在遍历链表
进程的缺陷:如果频繁的创建/销毁进程,成本比较高
弥补缺陷:引进线程,进程包含线程:一个进程里可以有一个线程,或者多个线程,每个线程都是一个独立的执行流,多个线程之间,也是并发执行的.