1. 进程的特点
资源所有权 - 一个进程包括一个存放进程映像的虚拟地址空间;
调度/ 执行 - 一个进程沿着轨迹执行,可能和其他进程交替。
2. 线程的引入
系统必须完成的操作:
创建进程
进程切换
撤消进程
缺点:时间空间开销大,限制并发度的提高。
进程的引入提高了计算机资源的利用效率。但在进一步提高进程的并发性时,人们发现进程切换开销占的比重越来越大,同时进程间通信的效率也受到限制。
线程的引入正是为了简化进程间的通信,以更小的开销来提高进程内的并发程度。
某些操作系统独立处理进程的两个特点:
调度和分派:基本单位通常称为线程或轻量级进程;
资源分配和保护:独立单位通常称为进程
传统:单线程;
现在:多线程 — 每个进程内允许包含多个并发执行的实体(控制流)。
一、多线程
OS 在单个进程内支持多个并发执行路径的能力。
DOS 系统支持;
UNIX 系统;
Java 运行环境。
1. 线程和进程的区别
进程是资源分配和抢占 CPU 的单位;所有线程共享该进程的状态和资源,驻留在同一块地址空间,可以访问到相同数据;
线程是进程内部最小的调度单位;一个进程可产生多个线程,并发执行;
线程不拥有系统资源,共享内存,线程通信和切换开销小。
2. 多线程环境下的进程
是操作系统中进行除处理器外的资源分配和保护的基本单位;
有独立的虚拟地址空间,用来容纳进程映像(如与进程关联的程序与数据);
各种资源实施保护:如受保护地访问处理器、文件、外部设备及其他进程(进程间通信)。
3. 多进程环境下的线程
是进程中能够独立执行的实体;
是处理器调度和分派的基本单位;
线程是进程的组成部分。
每个线程都有独立的栈,独立的控制块包含寄存器值、优先级和其他线程相关的状态信息。
每个线程的相关元素:
线程执行状态;
在未运行时保存的线程上下文;
一个执行栈;
用于每个线程局部变量的静态存储空间;
与进程内的其他线程共享的进程内存和资源的访问。
4. 线程组成
线程标识符;
线程状态信息:运行态、阻塞态、就绪态;
线程上下文:可把线程看成是进程中一个独立的程序计数器在操作;
内核栈:内核态下工作时,保存参数,函数调用时的返回地址等;
私有存储区:用于存放线程局部变量及用户栈。
5. 线程的优点
创建新线程比创建一个新的进程要快许多;
终止一个线程比终止进程时间少;
同一进程内线程间切换比进程间切换时间少;
线程提高了不同的执行程序间通信的效率。
6. 线程的功能特性
6.1 线程状态:
①运行态、 ② 就绪态、③阻塞态。
6.2 基本操作:
派生:派生新进程同时派生新线程;线程也可在同一个进程中派生新线程;
阻塞:当线程等待一个事件时;
解除阻塞:当等待的事件发生, 移入就绪队列;
结束:线程执行完毕,释放其寄存器上下文和栈。
6.3 线程同步
一个进程中的所有线程共享地址空间和其他资源;
一个线程对资源的修改都会影响同一个进程中其他线程的环境;
需同步各线程,互不干涉,保护数据结构