进程与线程
进程:操作系统分配资源的最小单位
-
计算机程序:所编写的代码与必要的资源文件的结合
-
进程的概念与特征
- PCB块的概念
- 引入进程的概念,以便更好地描述和控制程序的并发执行,为了使参与并发执行的程序(包括数据)能够独立地运行,
需要为其设置一个专门的数据结构,称为进程控制模块(即为PCB)。系统利用PCB来描述进程的基本情况和运行状态,
从而实现对进程的控制和管理。 - PCB是进程存在的唯一标志
- 引入进程的概念,以便更好地描述和控制程序的并发执行,为了使参与并发执行的程序(包括数据)能够独立地运行,
- 进程的不同角度的典型定义
- 1 进程是程序的一次执行过程
- 2 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 3 进程是具有独立功能的程序在一个数据集合上运行的过程,是系统资源分配和调度的一个独立单位
- 进程的特征
- 1 动态性 是进程最基本的特征
- 2 并发性
- 3 独立性 凡未建立PCB的程序,都不能作为一个独立的单位参与运行
- 4 异步性
- 5 结构性
- PCB块的概念
-
进程的基本状态与状态间的切换
- 进程的状态
- 运行态 进程正在处理机上运行
- 就绪态 进程获得了除处理机外的一切所需资源,一旦得到处理机,即刻运行。可能有多个进程处于就绪态
通常排成一个队列,为就绪队列 - 阻塞态 进程正在等待某一个事件而暂停运行,如等待某资源变为可用(不包括处理机)或等待输入/输出结束
- 创建态 进程正在被创建,尚未转到就绪态
- 结束态 进程正从系统中消失
- 进程状态间的转换(主要存在于就绪、运行、阻塞三者间)
- 就绪->运行:处于就绪态的进程被调度后,获得处理机的资源,发生状态转换
- 运行->就绪:运行中的进程在时间片用完后,或是有更高优先级进程就绪后,调度程序使得进程让出处理机转为就绪
- 运行->阻塞:进程请求某一个资源(如外设)的使用或等待某一个事件(如I/O操作的完成)时,转为阻塞
- 阻塞->就绪:进程等待的事件到来时,中断处理程序将相应进程的状态由阻塞转为就绪
- 一个进程从运行态转为阻塞态是主动行为,从阻塞态变为就绪态是被动行为,需要其他相关进程协助
- 进程的状态
-
进程控制
- 创建
- 1 分配一个唯一的进程标识号(进程ID),并申请一个空白PCB
- 2 为进程分配资源,为新进程的数据和程序以及用户栈分配必要的内存空间(在PCB中体现)
如果资源不足(如内存空间),进程不会创建失败,而是进入阻塞态,等待资源分配 - 3 初始化PCB
- 4 若进程就绪队列能够接纳新进程,将新进程插入就绪队列,等待被调度运行
- 切换
- 调度是指决定资源分配给哪个进程的行为,是决策的过程,而切换就是实际的分配操作,先有资源调度后有进程切换
- 创建
线程:CPU调度执行的最小单位
- 引入线程是为了减小程序在并发执行时所付出的时空开销
- 一个进程中可以包含多个线程
- 线程可以共享同一个进程的资源
- 并发的概念
- 并发是指两个或多个事件在同一时间间隔内发生
- 在多道程序环境下,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机环境下实际只能有一道程序
执行,因此在微观上这些程序仍然是分时交替执行的。操作系统的并发性是通过分时得以实现的 - 并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上的工作。并行性需要有相关硬件支持
如多流水线或多处理机的硬件环境
- 线程之间 上下文状态切换 – 不太浪费资源 (线程的单位比较小)
- 举例子:
- 一个进程中只有一个线程: 完全顺序结构 只能在同一时间做一件事情
- 多线程的优点 - 微信: 给好发送文件时 也需要同时能去聊天
进程与线程的关系
- 定义:进程是程序在某个数据集合上的一次运行活动;线程是进程的一个执行路径。
- 角色:进程是系统资源分配的单位,线程是CPU调度的单位
- 拥有资源:进程是拥有资源的基本单位,线程不拥有系统资源
- 资源共享:进程间不能共享资源,线程共享进程的地址空间和其他资源。线程还有自己的栈和栈指针、程序计数器等(线程间相互通信无需通过内核)
- 独立性:进程有自己独立的地址空间,线程无,线程必须依赖于进程存在
- 开销:进程切换开销大,线程相对小