前言:
进程的概念包括了两个不同的特点:1.资源全部权;2.调度/运行能力;
既然这两个特点是独立的。那么操作系统应该可以独立地处理它们,这就引出了线程的概念。为区分这两个特点,我们把分派的单位称为线程或者轻量级进程。而把拥有资源全部权的单位通常仍称为进程。
线程的概念:
指操作系统在单个进程内支持多个并发运行路径的能力。
线程的长处:
1.在进程中创建线程比直接创建进程快;
2.终止线程比终止进程快;
3.同一个进程内线程切换比进程切换快;
4.线程提高不同运行程序的通信效率。(进程通信须要内核的介入。而进程内多个线程之间共享内存和文件。无需调用内核)
注:进程挂起操作涉及把一个进程的地址空间换出内存来为其它进程的地址空间腾出位置,由于一个进程中全部线程共享同一地址空间,所以它们都会同一时候被挂起。
线程分类:
1.用户级线程:
在一个纯粹的用户级线程软件中,有关线程管理的全部工作都由应用程序完毕,内核意识不到线程的存在。不论什么应用程序都能够通过使用线程库被设计成多线程程序。线程库是用于用户级线程管理的一个历程包,它包括用于创建和销毁线程的代码、在线程间传递消息和数据的代码、调度线程运行的代码。以及保存和恢复线程上下文的代码。
长处:
1.线程切换用不着内核态特权;
2.调度能够是应用程序相关的;
3.用户级线程能够在不论什么操作系统中执行。不须要对底层内核改动以支持用户级线程
缺点:
1.用户级线程运行系统调用时,不仅这个线程会被堵塞。进程中全部线程均堵塞。
2.内核一次仅仅把一个进程分配给处理器。因此一次进程中仅仅有一个线程能够运行。
2.内核级线程:
纯粹内核级线程中,有关线程管理的全部工作由内核完毕,应用程序部分没有进行线程管理的代码。缺点是一个线程传送到还有一线程时,须要内核的状态转换。