操作系统原理第四章 线程

本科生操作系统原理学习记录
学习记录全家桶

4.1 什么是线程

4.1.1 引入原因

性能:

操作进程系统开销大

Unix的轻型进程(fork)

应用:

进程代码并发执行的需求

例子:PPT编辑(输入、拼写检查、存盘)

硬件:

多核处理器

加速进程的运行

Thread 线程 在Windows里面 这个叫法

Process 进程

4.1.2 线程

线程:

可在CPU上运行的基本执行单位

进程内的一个代码片段可以被创建成一个线程

进程依旧是资源分配的基本单位

4.1.3 进程和线程

进程线程
代码进程包含线程线程是进程中的一段代码
资源进程是资源分配的基本单位线程不拥有资源,共享使用进程的资源
调度同一个进程中的线程切换不会引起进程切换线程是基本调度单位
切换重量级上下文切换,代价大轻量级切换,代价小
生命期今年初撤销会导致它的所有线程被销毁线程撤销不会影响进程

线程依附于进程存在

如果是两个不同的进程的线程之间通信,则进程也要切换

4.1.4 线程结构

代码和数据:来自进程

各类资源:来自进程

线程控制块:TCB Thread Control Block

​ 每个线程都有自己的 ID ,线程 ID

4.1.5 线程优点

响应度高

​ 线程创建开销小

​ 例子:web服务器

资源共享:进程中的线程可以共享进程资源

经济性

​ 线程创建、上下文切换比进程块

Solaris:创建线程比进程快30倍,线程切换比进程切换快5倍

MP体系结构的运用:一个进程的线程在不同处理器上并行运行

4.1.7 Linux线程

通过 clone() 系统调用创建线程,但是clone函数需要传入参数

用术语 “任务” task ,表示进程和线程,一般不用 “线程”

用户线程:PThreads 线程库

多线程矩阵运算,操作系统有的支持多线程,有的不支持多线程操作

4.2 多线程模型

4.2.1 用户线程

用户线程:由用户线程库进程管理的线程

  • ​ 内核看不到用户线程
  • ​ 用户线程的创建和调度在用户空间中,不需要内核的干预
  • ​ 应用于传统的只支持进程的操作系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hgF7kcDf-1641211985938)(E:\文档和PPT\大三课程学习\操作系统\Pictures\第四章\用户线程.png)]

4.2.2 内核线程

内核线程:内核进行管理的线程

  • 需要内核支持
  • 由内核完成线程调度
  • 由内核进行创建和撤销

例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvU40sEz-1641211985941)(E:\文档和PPT\大三课程学习\操作系统\Pictures\第四章\内核线程.png)]

4.2.3 多线程模型

多对一模型
  • 不支持内核线程的操作系统:内核只有进程

  • 内核只看到一个进程:多个线程不能并行运行在多个处理器上

  • 进程中的用户线程由进程自己管理:

    ​ 进程内线程切换不会导致进程切换

    ​ 一个线程的系统调用会导致整个进程阻塞

一对一模型
  • 用于支持线程的操作系统:

    ​ 用户线程映射到内核线程

    ​ 操作系统管理这些线程

  • 并发性好:多个线程可并行运行在多个处理器上

  • 内核开销大

Windows普遍采用这种多线程模型

多对多模型

多个用户线程映射为相等或更小数目的内核线程 <=

  • 并发性和效率兼顾
  • 增加复杂度
两级模型

类似于 M :M

4.3 线程库

为程序员提供API来创建和管理线程

两种模式:

用户库 (用户线程)

内核库 (内核线程)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值