线程调度里thread_block方法在执行当前线程状态更新前把中断给关上了,然后调用schedule函数执行切换,schedule函数会将当前线程换下,从就绪队列里再pop队首线程上处理器执行,现在有两种情况,如果此时队首是一个新线程,则新线程会开中断,所以理论上就绪队列里的所有线程都有机会上处理器执行,但是如果此时队首的线程是已经执行过的,那该线程是不会开中断的,这样就会出现新换上的线程会一直执行,不会被中断打断,直到改线程结束,但是结束也有问题,多线程调度里并没有写线程什么时候结束。

这个感觉是个bug,或者我还没有读到。 在线程调度代码里,当执行schedule时,会关掉中断,然后切换到新的线程,如果新的线程是第一次上CPU执行,代码里会在kernel_thread里打开中断,这个没有问题,但是如果新的线程不是第一次上CPU执行,就会出现schedule里关掉了中断,但是在后面没有打开中断,导致无法通过时钟中断调度的问题,但是奇怪的是后面这个程序跑起来了,没有问题,所有估计部分代码作者没有贴全

我靠,找到了,之前学的没有记住,在7.4.2里说中断发生时的压栈是说过,在中断发生时,CPU会自动按照顺序压栈EIP/CS/EFLAGS,然后在执行完中断处理程序以后会再按照顺序把栈里的数据按照顺序给弹到对应寄存器里,所以在中断处理程序中没有显示的开中断。

转载于:https://www.cnblogs.com/caiyao/p/11085445.html

操作系统真相还原不明白的地方相关推荐

  1. [操作系统] 操作系统真相还原读书笔记三:MBR加载loader到内存并跳转到loader执行

    为什么要有loader程序? 通过操作系统真相还原读书笔记二:编写MBR主引导记录我们已经能够正常运行MBR主引导记录(有些书籍也叫做boot)程序了,但该程序什么也没做.我们的MBR 受限于 512 ...

  2. 操作系统真相还原学习笔记

    录像51 操作系统真相还原–学习笔记 这个笔记是把郑钢先生的代码在windows上编译运行了,希望大家在win上也调试地愉快. 链接:https://pan.baidu.com/s/1T7Sj_ZwA ...

  3. 操作系统真相还原-编译遇到“__stack_chk_fail_local”错误

    编写操作系统真相还原 – 中断系统时, 在编译链接时遇到了一个问题 我先按照书上所说(如下方), 进行编译 gcc -m32 -I lib/kernel/ -I lib/ -I kernel/ -c ...

  4. 读书笔记之计算机操作系统的启动——《操作系统真相还原》

    首先,致敬作者-郑刚!一个偶然机会看到了真本书,然后就学着别人的刻苦,利用了地铁上的时间看了本书的试读版.不得不说,作者的功力很深厚,通俗易懂,讲解的十分详细,纵使之前学习过操作系统,但是看了此书之后 ...

  5. 操作系统真相还原——第6章 完善内核

    函数底层调用约定 cdecl:函数参数由栈进行传递,从右向左顺序入栈,栈空间由调用者清理,函数的返回值存储在EAX 寄存器. syscall:参数从右到左入校.参数列袤的大小被放置在AL 寄存器中 o ...

  6. 无意中又喜获一本好书——《操作系统真相还原》——郑钢 著

    盗版还真是无处不在呀!电子版的PDF封面也都有了.不过为了能够躺着看,我还是买了一本正版的.拿到手上也只是烦了几页,最近其实是在学习C.C++等语言,实在的说,没有时间和经历看这些厚厚的操作系统书的. ...

  7. 学习《操作系统真相还原》三

    前言 我们开始实现了loader,从mbr跳转到loader.并执行的loader的代码.在屏幕上打印了"2 LOADER". 1.进入保护模式 保护模式,顾名思义,就是为了让操作 ...

  8. 操作系统真相还原——环境准备

    一.宿主机系统 Centos 7 二.安装bochs 1.下载: wget http://sourceforge.net/projects/bochs/files/bochs/2.6.2/bochs- ...

  9. 操作系统真相还原_第5章第4节:特权级

    文章目录 特权级 TSS简介 CPL和DPL入门 处理器提供的从低特权级到高特权级的方法 门.调用门和RPL序 特权级 保护模式下特权级按照权力大小分为0.1.2.3级 0特权级是操作系统内核所在的的 ...

最新文章

  1. TCP通信速率与延时关系
  2. 2019北京智源大会在京开幕, 中外学术大咖共话人工智能研究前沿
  3. 值得收藏!7个值得下载的软件,让人大开眼界!
  4. QML模拟示波器界面。
  5. elxel表格纸张尺寸_纸张知识|克重厚薄多少,正度大度纸开本尺寸规格是什么大小,和A4有啥区别?...
  6. C++ 特殊类设计:只能在堆、栈上创建的类、无法继承的类、无法拷贝的类、只能创建一个对象的类
  7. java list 接口_Java 集合 List接口
  8. 吴恩达深度学习 —— 3.11 随机初始化
  9. JAVA多态(向上转型)与RTTI向下转型
  10. spring中bean属性scope
  11. Android编译libjpeg-turbo so高效压缩图片
  12. 微信小程序开发视频分享
  13. STM32F4xx固件库分析
  14. 定义电竞AI,引领数据体育-火星数据
  15. 一个很好的看电子书的软件
  16. spi通信问题-有波形但无法获取正确数据:MOSI和SCK
  17. 基于Java SSM springboot健身管理系统设计和实现
  18. Mac 截取一个视频中部分片段(命令行方法)
  19. win7用计算机名共享打印机,win7共享打印机需要输入用户名和密码该怎么办啊?...
  20. 车辆运动控制(6)考虑侧倾约束

热门文章

  1. JAVA读取、写入Excel表格(含03版)
  2. POJ 3268 Bookshelf 2 动态规划法题解
  3. 为IoT和大数据项目分配IT资源
  4. 超出想象-超级终端显示器
  5. redis获取存在的键值_Redis 分布式锁、限流
  6. [Java] 蓝桥杯ALGO-125 算法训练 王、后传说
  7. [Java] 蓝桥杯 BASIC-4 基础练习 数列特征
  8. 蓝桥杯 ALGO-72 算法训练 成绩的等级输出
  9. 【操作系统】输入输出系统(下下)-思维导图0.0
  10. 干加个偏旁可以变成什么字_字好看的孩子,都是用了这些小学生学写字的方法...