我们接着上篇博文说。

2.2 第二题题目

修改本章的源程序,使之能够顺序完成以下工作:
(1)从程序管理器任务切换到任务A,显示一条消息;
(2)再从任务A转换到任务B,显示一条消息;
(3)从B直接返回到程序管理任务。

2.3 分析

(1)很容易,(2)如何实现?我的思路是在任务A的符号表中安装B的任务门。

程序运行的具体流程如下:

  1. 内核的符号表中要增加一个条目,用来接收B任务门描述符的选择子
  2. A任务的符号表中也要有B任务的任务门条目(留待内核重定位);
  3. 内核加载任务B,在内核符号表中安装B的任务门描述符的选择子;
  4. 内核加载任务A,加载的时候,自然会对A的符号表进行重定位,这样就把B任务的任务门选择子写到了A的符号表中;
  5. 从内核切换到任务A;
  6. 任务A通过B的任务门(已经在符号表中)切换到任务B;
  7. 任务B返回到内核。

2.4 对内核代码的修改

在内核符号表中增加一个条目。

安装调用门的时候,一定要除去最后的任务门。

加载任务B,安装B的任务门描述符,并且填写选择子到符号表。

内核加载任务A,通过JMP指令切换过去。

2.4 对用户程序1的修改

在A的符号表中增加一个条目。

以上截图,只截取了比较重要的部分,其他地方的修改,还请读者下载我的完整代码。

2.5 运行结果

代码下载地址:
http://download.csdn.net/detail/u013490896/9578192

第15章习题解答(二)——《x86汇编语言:从实模式到保护模式》读书笔记41相关推荐

  1. 第15章习题解答(一)——《x86汇编语言:从实模式到保护模式》读书笔记40

    1. 第15章代码修改 先不说习题,说一说我对源码的修改.从运行结果来看,主要是增加了颜色支持.不过把我的代码与配书代码相比较的话,还是有很多不同的.这些修改是怎么来的,可以参考我之前的博文. 运行效 ...

  2. c语言与单片机技术试卷与答案,哈尔滨工业大学《单片机原理及应用》课件、各章习题解答、试题及答案...

    哈尔滨工业大学<单片机原理及应用>课件.各章习题解答.试题及答案等 本光盘依托张毅刚等编著,高等教育出版社出版的高等学校教材<单片机原理及应用>制作的.主要包括电子教案及各种电 ...

  3. c语言程序设计教程第三版答案9.5,C语言程序设计-第5-9章习题解答.ppt

    C语言程序设计-第5-9章习题解答 华中科技大学计算机学院 C语言程序设计 第5-9章 部分习题解答 作业中问题较多的习题 第5章5.4(2) 第6章6.1,6.3,6.5(6),6.8 第7章无 第 ...

  4. c语言判断正整数位数 请用strengh,C语言程序设计-4、12章习题解答.doc

    C语言程序设计-4.12章习题解答 C语言程序设计概述 一个C程序的执行是从 A . A.从main()函数开始,直到main()函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直 ...

  5. 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14

    首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照 ...

  6. X86汇编语言从实模式到保护模式15:任务和任务的创建

    目录 1. 任务的概念与组成 1.1 任务的概念 1.2 多任务系统 1.3 任务的组成 1.3.1 局部描述符表LDT 1.3.2 任务状态段TSS 2. 任务控制块和TCB链表 2.1 为何需要任 ...

  7. ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构

    ★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...

  8. [书]x86汇编语言:从实模式到保护模式 -- 第13章 mbr加载内核、内核加载应用程序

    # mbr加载内核 1.0x7c00,16位实模式 2.进入保护模式前的准备工作:创建段描述符(代码段.数据段.堆栈段.显示缓冲区),构建gdt 3.进入保护模式 ; 开启保护模式 ; CR0的第1位 ...

  9. 任务和特权级保护(五)——《x86汇编语言:从实模式到保护模式》读书笔记36

    任务和特权级保护(五)--<x86汇编语言:从实模式到保护模式>读书笔记36 修改后的代码,有需要的朋友可以去下载(c14_new文件夹).下载地址是: GitHub: https://g ...

最新文章

  1. 安永创新中心落子北京,聚焦5G技术赋能企业数字化转型
  2. 使用html5 Geolocation显示你的地理位置
  3. T-SQL问题解决集锦——数据加解密
  4. 利用matlab对xml文件进行批量处理
  5. PriorityQueue源码解析
  6. 过滤器、拦截器、监听器的区别与使用
  7. CSS3 经典教程系列:CSS3 圆角(border-radius)详解
  8. kux转换为mp4软件_kux2mp4(优酷kux转换为mp4软件)下载-kux2mp4(优酷kux转换为mp4软件)免费版下载v2021...
  9. markdown 换行_markdown傻瓜指南(github)
  10. 如何基于Jupyter notebook搭建Spark集群开发环境
  11. fork-join详解(2)
  12. Apache和Tomcat的区别与联系
  13. 拓端tecdat|r语言聚类分析:k-means和层次聚类
  14. Qt之切换语言的方法(传统数组法与Qt语言家)
  15. Matlab中mapminmax函数使用注意事项
  16. 哈佛幸福课--部分笔记
  17. 苹果手机注册时显示链接服务器出现问题,苹果手机出现连接到服务器时出现问题是什么回事...
  18. 统计学分析公式 MA移动平均线
  19. linux设定u盘启动,cdlinux u盘启动,教您如何设置
  20. 罗马建立在水渠上:为什么需要优先建设绿色光网?

热门文章

  1. NYOJ 558 一二三
  2. NYOJ 914 Yougth的最大化(二分搜索 + 贪心)
  3. hdu 1106 排序
  4. nginx 配置404错误页面
  5. Prometheus部署监控容器
  6. NEU 1497 Kid and Ants 思路 难度:0
  7. Razor Engine,动态脚本语言,mvc上的语法,适用于文件内容生成,静态网页生成等。...
  8. linux下 C编程改变输出字体颜色
  9. 浅谈 Python 程序和 C 程序的整合
  10. 视频分类/动作识别数据库研究现状