前几天研究java的线程,感觉理论的掌握不够,故向同学借了点资料研究,不了同学给我考博的操作系统的材料,我总结了一下,把其中部分分享一下,大家一同进步.
1 线程的引入
进程:资源分配单位(存储器、文件)和CPU调度(分派)单位。又称为"任务(task)"
线程:作为CPU调度单位,而进程只作为其他资源分配单位。
只拥有必不可少的资源,如:线程状态、寄存器上下文和栈
同样具有就绪、阻塞和执行三种基本状态
线程的优点:减小并发执行的时间和空间开销(线程的创建、退出和调度),因此容许在系统中建立更多的线程来提高并发程度。
线程的创建时间比进程短;
线程的终止时间比进程短;
同进程内的线程切换时间比进程短;
由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信;
2 进程和线程的比较
地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享--某进程内的线程在其他进程不可见
通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信--需要进程同步和互斥手段的辅助,以保证数据的一致性
调度:线程上下文切换比进程上下文切换要快得多