操作系统原理,在进程的基础上,处于性能考虑引入线程,线程的概念,线程的三种实现

本文介绍了操作系统中为了提高性能从进程基础上引入线程的原因。线程作为CPU的调度单位,拥有标识符、状态、上下文等属性,并且在进程内共享资源。线程的实现包括用户级、核心级和混合型三种方式,每种都有其优缺点。用户级线程创建快速,但面临内核阻塞问题;核心级线程由内核管理,能实现真正并行,但创建成本较高;混合型线程则试图平衡这两者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统原理,在进程的基础上,处于性能考虑引入线程,线程的概念,线程的三种实现

O、在进程的基础上引入线程主要处于应用需要,开销,性能方面的考虑
进程本身需要线程实现并发的任务处理以提升进程的总体处理效率,相比进程,线程的创建和释放,上下文切换更快,相互通信不需要通过内核,而是在进程中共享文件和内存。

一、进程的两个基本属性:资源拥有者,CPU调度单位
随着线程的引入,进程仍然是资源拥有着,但是线程继承了进程的CPU调度单位这一属性。

二、线程:进程中的一个运行实体,是CPU的调度单位,有时将线程称为轻量级进程。
线程的属性:
1、标识符ID
2、有状态和状态装欢操作
3、不运行时保存上下文,程序计数器等寄存器
4、有自己的栈和栈指针
5、共享所在进程的地址空间和其他资源
6、可以创建、撤销另一个线程,程序开始是以一个单线程进程的方式运行的,和操作系统一开始只有一个进程一样。

三、线程的实现:
1、用户级线程
2、核心级线程
3、混合-两者结合方法

四、用户级线程(user level thread)实现方法
1、在用户空间建立线程库,提供一组管理线程的过程(函数接口)
2、运行时系统runtime,完成线程的管理工作,维护相关操作(函数接口)和数据结构(线程表)
3、内核管理的时进程,不会感知到线程的存在
4、线程切换不需要内核态特权

在这里插入图片描述

示例:unix使用的线程库,遵循了POSIX线程库标准规定的接口
例如unix和Linux下编程常用的pthread_create,pthread_exit,pthread_yield这样的接口
其中pthread_yield接口使线程自愿让出CPU,因为线程感知不到时钟中断,一个线程占用所有CPU资源时,其他的线程就会无法运行,所以给线程自愿让出CPU的接口。

五、用户级线程的优点:
1、创建,释放,切换速度快,效率高
2、调度算法可以由应用程序自行决定
3、用户级线程可以运行在任何操作系统上,只需要实现相应的运行时库runtime就可

六、应用级线程的不足之处:
1、内核只能将处理器分配给进程,进程内部的多线程并发从进程的视角看其实是串行运行的,同一个进程下的两个线程不会同时运行在两个CPU处理器上。
2、大多数系统调用是阻塞的吗,如果进程中某个线程进行系统调用导致内核阻塞了进程,进程中的其他线程也会被阻塞。

七、核心级线程kernel level thread
1、内核管理所有线程,并向应用程序提供API接口
2、内核维护进程和线程的上下文信息和切换工作
3、示例:Windows操作系统

在这里插入图片描述

八、混合型线程
1、线程的创建在用户空间完成,线程调度等在核心态完成,例如Solaris系统
2、多个用户及线程通过多路复用机制对应到多个内核级线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值