关于线程的部分概念

一、线程存在的原因

  • 在许多应用中,同时发生着多种活动,其中某些活动随着时间的推移会被阻塞,通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得简单。
  • 线程比进程更轻量级,比进程更容易,容易创建,也容易撤销。

二、线程的定义

进程中的一条执行流程

进程的理解:

1、从资源组合的角度

进程把一组相关的资源组合起来,构成了一个资源平台(环境),包括地址空间(代码段、数据段)、打开的文件等各种资源。

2、从运行的角度

代码在这个资源平台上的一条执行流程(线程)。

三、线程的优缺点

线程就是进程减去共享资源。

1、优点:

  • 一个进程中可以同时存在多个线程;
  • 各个线程之间可以并发地执行;
  • 各个线程之间可以共享地址空间和文件等资源;

2、缺点:

一个线程崩溃,会导致其所属进程的所有线程崩溃。


四、进程与线程的比较

  • 进程是资源分配单位,线程是CPU调度单位;
  • 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如上图的寄存器和栈;
  • 线程同样具有就绪、阻塞、运行三种基本状态,同样具有状态之间的转换关系;
  • 线程能减少并发执行的时间和空间开销;

        ----线程的创建时间比进程短;

        ----线程的终止时间比进程短;

        ----同一进程内的线程切换时间比进程短;

        ----同一进程的各线程间共享内存和文件资源,可直接进行不通过内核的通信;

五、线程的实现

主要有三种线程的实现方式:

  • 用户线程:在用户空间实现(操作系统看不到的)
        例如:POSIX Pthreads,Solaris threads
  • 内核线程:在内核中实现(操作系统管理的)
        例如:Windows、Linux、Solaris
  • 轻量级进程:在内核中实现,支持用户线程

        例如:Solaris

1、用户线程

在用户空间实现的线程机制,它不依赖于操作系统的内核,由一组用户级的线程库函数来完成线程的管理,包括线程的创建、终止、同步和调度等。



2、内核线程

是指在操作系统的内核当中实现的一种线程机制,由操作系统的内核来完成线程的创建、终止和管理。



3、轻量级进程

是内核支持的用户线程,一个进程可有一个或多个轻量级进程,每个量级进程由一个单独的内核线程来支持。(Solaris和Linux)

六、上下文切换

定义:停止当前运行进程(从运行状态改变为其他状态)并且调度其他进程(转变为运行状态)

  • 必须在切换之前存储许多部分的进程上下文
  • 必须能够在之后恢复他们,所以进程不能显示他曾经被暂停过
  • 必须快速切换(上下文切换是非常频繁的)

猜你喜欢

转载自blog.csdn.net/qq_32164245/article/details/81016589