首页 > 代码库 > 【操作系统】线程

【操作系统】线程

前言:
进程的概念包含了两个不同的特点:1.资源所有权;2.调度/执行能力;
既然这两个特点是独立的,那么操作系统应该能够独立地处理它们,这就引出了线程的概念。为区分这两个特点,我们把分派的单位称为线程或者轻量级进程,而把拥有资源所有权的单位通常仍称为进程。

线程的概念:
指操作系统在单个进程内支持多个并发执行路径的能力。

线程的优点:
1.在进程中创建线程比直接创建进程快;
2.终止线程比终止进程快;
3.同一个进程内线程切换比进程切换快;
4.线程提高不同执行程序的通信效率。(进程通信需要内核的介入,而进程内多个线程之间共享内存和文件,无需调用内核)

:进程挂起操作涉及把一个进程的地址空间换出内存来为其他进程的地址空间腾出位置,因为一个进程中所有线程共享同一地址空间,所以它们都会同时被挂起。

线程分类:
1.用户级线程:
    在一个纯粹的用户级线程软件中,有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。任何应用程序都可以通过使用线程库被设计成多线程程序。线程库是用于用户级线程管理的一个历程包,它包含用于创建和销毁线程的代码、在线程间传递消息和数据的代码、调度线程执行的代码,以及保存和恢复线程上下文的代码。
    优点:
    1.线程切换用不着内核态特权;
    2.调度可以是应用程序相关的;
    3.用户级线程可以在任何操作系统中运行,不需要对底层内核修改以支持用户级线程
    缺点:
    1.用户级线程执行系统调用时,不仅这个线程会被阻塞,进程中所有线程均阻塞。
    2.内核一次只把一个进程分配给处理器,因此一次进程中只有一个线程可以执行。
2.内核级线程:
    纯粹内核级线程中,有关线程管理的所有工作由内核完成,应用程序部分没有进行线程管理的代码。缺点是一个线程传送到另一线程时,需要内核的状态转换。