李治军操作系统学习(五)——多线程切换


一、线程是什么?

在这里插入图片描述

在一个进程中,可以有多个指令序列在执行,这些指令序列共享进程的资源(进程代码、进程数据、进程映射表等)。这些进程中的多个执行的指令序列称为线程。线程相比进程更轻量化,启动更快,且线程之间的切换更加容易,因为线程之间的切换只用切换指令序列,内存映射表不变,而进程之间的切换要切换内存映射表。

二、 用户级线程的切换

在这里插入图述
网页浏览器访问网站时会启动多个线程,比如一个线程向站点服务器请求数据,一个线程将数据显示在页面上。上图代码创建了两个线程,分别用于实现这两种功能。要想实现(伪)并发需要将线程交替执行,在用户态下这种交替执行通过调用yield函数执行。

1. yield函数如何实现切换?

用堆栈

在这里插入图片描述
如果两个执行序列用一个堆栈,首先A函数中调用B函数,先将地址104压入堆栈,接着跳转到B函数执行。在B函数中调用Yield()切换线程,则将地址204压入堆栈,跳转到C函数执行。C函数中调用D函数时,将地址304压入堆栈,跳转到D函数执行。在D函数中调用Yield()切换线程时,假定Yield函数能找到跳回上个线程所需的地址204,但在跳回去后,B函数执行完,右花括号在编译时相当于ret,会将地址404弹出返回,这会导致原本该跳回A函数执行的操作变为跳回D函数执行,出现问题了。

每个指令序列的函数调用是在指令序列内部发生的事,因而每个指令序列应该有属于自己的栈,解决办法是每个线程都有一个独立的堆栈。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统 治军 pdf》是一本由作者治军撰写的关于操作系统的书籍的电子版PDF文件。操作系统是计算机系统中的一个核心组成部分,它负责管理和控制计算机的硬件和软件资源,使得计算机能够高效地运行各种应用程序。 在这本书中,治军详细介绍了操作系统的基本概念、原理和设计原则。他从操作系统的起源和发展历程出发,讲解了多道、分时和实时操作系统等不同类型的操作系统,并深入解析了其内核结构和功能。此外,书中还讨论了进程管理、内存管理、文件系统、输入输出控制等重要的操作系统主题,为读者提供了全面了解和深入学习的机会。 这本书的PDF版本使得读者可以更加便捷地获取其中的内容,无论是在电脑、平板还是手机上都可以进行阅读。通过阅读这本书,读者可以深入了解操作系统的基本原理和相关技术,有助于他们提升对计算机系统的理解和应用。对于学习计算机科学或相关专业的学生和从事软件开发工作的技术人员来说,这本书是一本宝贵的参考资料。 总之,《操作系统 治军 pdf》是一本全面介绍操作系统的书籍的电子版PDF文件,读者可以通过阅读它来深入了解操作系统的原理和技术。这本书的出现为学习和研究操作系统提供了便利,对于对计算机系统有兴趣的人士来说是一本值得阅读的优秀教材。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值