进程 | 线程 | |
---|---|---|
调度的基本单位 | 传统OS未引入线程的时候,进程作为独立调度和分派的基本单位,因此进程是能独立运行的基本单位。每次被调度的时候,都需要进行上下文切换,开销较大。 | 在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位。当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程。在同一进程中,线程的切换不会引起进程的切换,但不同进程中的线程切换,必然会引起进程切换。 |
并发性 | 不同进程间可以并发 | 一个进程中的多个线程、不同进程的线程均可并发 |
拥有资源 | 进程可以拥有资源,并作为系统中拥有资源的一个基本单位 | 线程本身不拥有资源,仅有一点必不可少的、能保证独立运行的资源,如程序计数器…。允许多个线程共享该进程所拥有的的资源。 |
独立性 | 为了防止进程之间彼此干扰和破坏,每个进程都拥有一个独立的地址空间和其它资源,除了共享全局变量外,不允许其它进程的访问。 | 同一进程的不同线程往往是为了提高并发性和合作而创建的,它们共享进程的内存地址空间和资源。 |
系统开销 | 在创建或撤销进程时,系统都要为之分配和回收进程控制块PCB、分配或回收其它资源(如内存空间和I/O设备)。在进程切换时,还涉及到进程上下文的切换 | 当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程。由于一个进程的多个线程具有相同的地址空间,线程之间的同步和通信也比进程简单,因此,在一些OS中,线程的切换、同步和通信都无需操作系统内核的干预。 |
支持多处理机系统 | 传统进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。 | 对于多线程进程,可以将一个进程中的多个线程分配到多个处理机上,使它们并发执行。 |
本文为《计算机操作系统》第四版 学习笔记+个人总结。