进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
包含:
程序的代码
程序处理的数据
程序计数器中的值,指示下一条将运行指令
一组通用的寄存器的当前值,堆、栈
一组系统资源(打开的文件)
进程与程序的联系
程序是产生进程的基础
程序的每次运行构成不同的进程
进程是程序功能的体现
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可以包括多个程序
进程与程序的区别
进程是动态的,程序是静态的;程序是有序代码的集合,进程是程序的执行,进程有和心态/用户态
进程是暂时的,程序是永久的;进程是一个状态变化的过程,程序可长久保存
进程与程序的组成不同;进程的组成包括程序、数据和进程控制块(进程状态信息)
进程的特点:动态性、并发性、独立性、制约性
进程控制块(PCB):是进程存在的唯一标识
包含:进程标识信息、处理机状态信息保存区、进程控制信息
进程的生命周期:
进程创建:系统初始化、用户请求创建一个新进程、正在运行的进程执行了创建进程的系统调用
进程运行:内核选择一个就绪的进程,让它占用处理机并执行
进程等待:进程只能自己阻塞自己
进程唤醒:进程只能被别的进程唤醒
进程结束:正常退出(自愿的)、错误退出(自愿的)、致命错误(强制性的)、被其他进程杀死(强制性的)
线程管理
线程:进程当中的执行流程(进程分成了资源管理和执行流程(线程)两部分)
特征:
(1)实体之间可以并发地执行
(2)实体之间共享相同的地址空间
(3)一个进程中可以有多个线程
实现线程的方式:
(1)用户线程:使用线程管理库来实现,操作系统不参与库
如果一个新城发起系统调用而阻塞,则整个进程都会等待
当一个线程开始运行后,除非它主动的交出CPU的使用权,否则它所在的进程当中的线程无法运行
(2)内核线程:
由操作系统的内核完成线程的创建、终止和管理
资源与时间开销大
(3)轻量级进程:
内核支持用户线程、一个进程可以有一个或多个轻量级进程,每个量级进程由一个单独的内核线程来支持
上下文切换:停止当前运行进程(从运行态改成其他状态)并且调度其他进程(转变成运行状态)
进程控制
进程创建fork()
进程的加载和执行exec()
虚存管理vfork()
进程的等待与终止
等待子进程结束wait()
进程结束exit()
CPU调度:从就绪队列中挑选一个进程/线程