一、什么是进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
定义
狭义定义:进程是正在运行的程序的实例。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
操作系统引入进程的概念的原因:
从理论角度看,是对正在运行的程序过程的抽象;
从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
进程调度是指:操作系统按某种策略或规则选择进程占用CPU进行运行的过程。
我们可以通过任务管理器查看当前的进程:
二、操作系统是如何管理进程的
1、描述:
详细的表示清楚,一个进程有哪些属性/信息,通常用结构体来描述,包含一个进程的各种信息,这个结构体也叫做PCB(进程控制块)(进程包含了线程.一个线程对应一个PCB,一个进程对应一组PCB(内存指针和文件描述符表,都是一份.状态,优先级,记账信息,上下文.每个线程有独立的)进程是资源分配的基本单位,线程是调度执行的基本单位)。
其中PCB中有:
pid(进程的身份标识):
一个主机,同一时刻,这些的进程的pid是唯一的,通过pid来区分一个进程。
内存指针
既然要创建进程,势必要给进程分配内存空间!然后这个内存空间上就有很多区域:有的用来放指令,有的用来放数据,还有的用来维护运行状态(就是描述哪块内存是干嘛的)
文件描述符表
每个进程,都可以打开一些文件~~(文件其实是存储在硬盘上的数据),文件描述符表里面就记录了当前进程都打开了哪些文件.(打开了之后就可以后续针对这些文件进行读写操作了)
2、组织:
通过一定的数据结构,把若干个用来描述的实体,给放到一起(系统中通常会使用双向链表这样的结构来吧这些PCB给组织在一起),并且进行增删改查。
创建进程:先创建出PCB,然后把PCB加入到双向链表中;
销毁进程:找到链表上的PCB,将其从链表上删除;
查看任务管理器:遍历链表。
三、进程调度的基本属性
1.状态
就绪状态、阻塞状态、睡眠状态
2.优先级
时间分配的优先级别以及多少
3.记账信息
统计每个进程分别执行了多久、执行了哪些指令、排队等了多久,给进程调度提供指导依据
4.上下文
表示上次进程被调度出CPU时程序的执行状态
四、调度算法
进程的调度算法包括:
实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。