操作系统(6)线程

一、定义与特点

  1. 定义:线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

  2. 特点

    • 轻量级:线程比进程更轻量,创建和切换线程的开销相对较小。
    • 共享资源:线程之间共享进程的资源,包括内存空间、文件句柄等。
    • 并发执行:线程可以并发执行,从而提高程序的执行效率。

二、状态与转换

线程在执行过程中也会经历不同的状态,并可以相互转换。常见的线程状态包括:

  1. 执行状态:线程已获得处理机而正在运行。
  2. 就绪状态:线程已具备各种执行条件,等待CPU继续执行。
  3. 阻塞状态:线程在执行中因某事件受阻而处于暂停状态。

线程的状态转换与进程类似,如线程可以从就绪状态转换为执行状态,也可以从执行状态转换为阻塞状态或就绪状态等。

三、实现方式

  1. 用户级线程:由用户程序创建和管理,它们是在用户空间中运行的。用户线程依赖于内核线程的支持,但不直接由操作系统内核管理。用户级线程的优点是创建和切换开销小,但缺点是调度不够灵活。
  2. 内核级线程:由操作系统内核创建和管理,它们是在内核空间中运行的。内核级线程的优点是调度灵活,但缺点是创建和切换开销相对较大。
  3. 组合方式线程:同时支持用户级线程和内核级线程的系统,如POSIX线程(pthread)。在这种系统中,用户级线程和内核级线程之间存在某种映射关系,以实现更灵活的调度和更低的开销。

四、调度与同步

  1. 线程调度:操作系统根据一定的策略选择就绪队列中的线程占用处理器执行。常见的调度算法有时间片轮转法、优先级调度法等。线程调度的目标是提高系统的吞吐量和响应时间。
  2. 线程同步:为了保证多个线程在并发执行时能够正确访问共享资源,操作系统提供了线程同步机制。线程同步可以通过互斥量、信号量、条件变量等机制来实现。这些机制可以确保线程在访问共享资源时不会发生竞态条件和死锁等问题。

五、通信

线程间通信是操作系统中实现线程间数据交换和信息共享的重要机制。常见的线程间通信方式包括:

  1. 共享变量:多个线程共享同一块内存空间,通过读写共享变量来进行通信。
  2. 锁机制:使用锁来保证只有一个线程能够访问共享资源。当一个线程获取到锁时,其他线程需要等待锁的释放才能继续执行。常见的锁包括互斥锁和读写锁等。
  3. 条件变量:用于线程间的条件等待和通知。一个线程可以等待某个条件满足后再继续执行,而另一个线程可以在某个条件满足时通知等待的线程继续执行。
  4. 管道和消息队列:虽然主要用于进程间通信,但也可以用于线程间通信。它们提供了缓冲区来确保通信的可靠性和顺序性。

六、创建与删除

  1. 线程的创建:通常通过系统调用或线程库函数来创建新线程。新线程会继承父线程(即创建它的线程)的某些属性和资源,并获得一个唯一的线程标识符。
  2. 线程的删除:当线程执行完毕或出现异常时,操作系统会将其终止并回收相关资源。此时,线程的标识符和相关信息会被清除。

总结

综上所述,操作系统中的线程是进程内的一条执行路径或执行流。它具有轻量级、共享资源和并发执行等特点。线程的实现方式、调度与同步、通信以及创建与删除都是操作系统中线程管理的重要方面。

结语

行为决定命运

习惯塑造品格

!!!

相关推荐
小宇子2B8 小时前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B1 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B1 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
小宇子2B6 天前
一个 pthread_mutex_lock() 到底锁了什么——从用户态 CAS 到内核调度
操作系统
小宇子2B7 天前
多线程 malloc 为什么会变慢——glibc 的 arena 到 bins 全景
操作系统
fakerth12 天前
【OpenHarmony】communication_ipc模块
操作系统·openharmony
Coisinier12 天前
RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)
linux·运维·服务器·前端·nginx·操作系统
小宇子2B13 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
触底反弹15 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页15 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统