1. 进程的定义:
- 进程是程序的一次执行
- 进程是可以和别的计算并发执行的计算
- 进程是一个数据结构及能在其上进行操作的程序
- 进程是程序及其数据在处理机上顺序执行的过程
- 进程是程序在某一数据集合上的运行过程
进程(强调并发性和动态性):可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位,并发的基本单位。
2. 进程和程序的区别:
- 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制。创建而产生,调度而运行,撤销而消亡。
- 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存。
- 进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
- 进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。
3. 进程的特征:
- 结构性:由程序+数据+进程控制块组成了进程实体,其中进程控制块(PCB)是进程存在的标志。
- 动态性:进程是进程实体的执行过程,它由创建而产生,由调度而执行,因某事件而暂停,由撤销而消亡。
- 并发性:多个进程同时存于内存中,一起向前推进,并发执行。
- 独立性:进程是独立获得资源和独立调度的基本单位。
- 异步性:各进程都各自独立的不可预知的速度向前推进。
4. 进程的三种基本状态及其转换:
(1)运行态:当一个程序在处理机上运行时,则称该进程处于运行状态。
(2)就绪态:一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态。
(3)阻塞态:当一个进程正在等待某一事件发生(例如请求I/O,申请资源未获得)而暂时停止运行,故称该进程处于阻塞状态。注意与就绪状态的不同在于即使处理机处于空闲状态也无法运行。
- 就绪--->运行:调度程序选择一个新的进程运行
- 运行--->就绪:运行进程用完时间片被中断或在抢占调度方式中,因为一高优先级进程进入就绪状态
- 运行--->阻塞:进程发生I/O请求或等待某事件时
- 阻塞--->就绪:当I/O完成或所等待的事件发生时
5. 挂起状态(细分的进程调度状态):
由于终端用户及操作系统的需要(排除故障或为系统减负),为了能够将指定进程暂时静止下来(不接受调度),增加了静止阻塞(阻塞挂起)和静止就绪(就绪挂起)态,原阻塞和就绪改称为活动阻塞和活动就绪状态。
(1)运行或活动就绪--->静止就绪,活动阻塞--->静止阻塞,通过挂起操作
(2)静止就绪--->活动就绪,静止阻塞--->活动阻塞,通过激活操作
(3)静止阻塞--->静止就绪:当等待的事件发生时。
6. PCB:
进程是一个正在执行的程序。 进程是程序的一个实例。 进程能分配处理器并由处理器执行的实体。 如果从内核的角度看的话:进程是分配系统资源的单位。当一个程序被加载到内存之后并为他分配一个PCB(进程控制块),这时候就称为进程了。
在linux中PCB就是一个名字叫做task_struct的结构体,我们叫他”进程描述符”。它里面有进程执行的所有信息,所以CPU对task_struct进行管理就相当于在对进程进行管理。 PCB叫做进程控制块,它用来维护进程相关的信息,每个进程都有一个PCB。在linux中这个PCB是一个叫做task_struct的结构体。
- PCB表:
系统把所有PCB组织在一起,并把它们放在内存固定区域,就构成了PCB表。
PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度。 - PCB表组织方式:链接方式和索引方式
成员:
- 标识符:描述本进程的唯一标示符,用来区别其他进程;
- 状态:任务状态,退出代码,退出信号等;
- 优先级:相对于其他进程的优先级;
- 程序计算器:程序中即将被执行的下一条指令的地址;
- 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针;
- 上下文数据:进程执行时处理器的寄存器中的数据;
- I/O状态信息:包括现实的I/o请求,分配给进程的I/O设备和被进程使用的文件列表;
- 记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号;
- 其他