课堂练习3.4:进程的切换

3-9 课堂练习3.4:进程的切换

进程切换是支持多进程的一个关键环节,涉及到 CPU 现场的保存和恢复,本实训分析 Linux 0.11 的进程切换过程。

2edabf20e4e04b989f3bf58a57b0162a.png

 

第1关第一次进程切换过程分析

任务描述

本关任务回答问题: 在第一次进程切换时: 1.是从几号进程切换到几号进程?0 号进程和 1 号进程的剩余时间片分别是多少? 2.在(ljmp)切换前,寄存器对 CS:EIP 和 SS:ESP 的值是多少?其下一条指令的地址是多少?0 号进程的 TSS 中的字段对 cs:eip 和 ss:esp 的值是多少?1 号进程的 TSS 中的字段对 cs:eip 和 ss:esp 的值是多少? 3.在(ljmp)切换后,寄存器对 CS:EIP 和 SS:ESP 的值是多少?0 号进程的 TSS 中的字段对 cs:eip 和 ss:esp 的值是多少?1 号进程的 TSS 中的字段对 cs:eip 和 ss:esp 的值是多少?

相关知识

为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.在 Linux 0.11 中,进程是如何切换的; 3.如何跟踪到引发进程切换的 ljmp 指令; 4.如何查看寄存器的值; 5.如何查看一个进程的 TSS 的值。

实验准备

本关卡对版本 1 内核进行修改,内核文件存放在/data/workspace/myshixun/exp1中。

实验过程及答案

实验过程

ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.tgz ~/os

94131b9c442641aca067c450afc62e04.png

cd os/linux-0.11-lab
tar -zxvf ../1.tgz 1

de0ebd3263cc4230a9de53bf430dcc0c.png

rm -rf cur
ln -s 1 cur
ls

f12d91d64d9c4b5db1cbd88daf504c59.png

cd 1/linux
make

ee35757477f1428b93032742a723085e.png

cd ../..
./rungdb

23f0bde27ee344dd940cda4d4cb7acf8.png

另开一个终端

cd os/linux-0.11-lab
./mygdb

164f5c0adaf1445daea419b6f8c24e68.png

17b5b501c459438aad0f5bf25f97b81e.png571ebc1599304fb6ac9a6c04f3e16e44.png9f2800e0a244489e828fda871b806ac7.png5d1e05ae44f04654afe9470e5c7d9307.pnga66a784413cb4bc78fcdec348f8d4193.pngbb3afee7278e4a12a94cfbe7d05046bf.png62019ba06dff41a188438c3da9771d4e.png0734898fde2d4f93912ca8ee8ed0d9a3.pngaabcf76e60d0495eb4c1586816412c8e.png

答案

266b3ea2ec684bb2afa10e25fa252c42.png

第2关第一进程切换时TR寄存器的变化分析

任务描述

本关任务回答问题: 1.第一次进程切换前,CPU 中 TR 寄存器的值是多少?它所指向的 GDT 描述符中的段起始地址是多少?是几号进程的 TSS 地址? 2.第一次进程切换后,CPU 中 TR 寄存器的值是多少?它所指向的 GDT 描述符中的段起始地址是多少?是几号进程的 TSS 地址?

相关知识

为了完成本关任务,你需要掌握: 1.CPU 是如何找到当前进程的任务状态段的; 2.如何查看 TR 寄存器的值; 3.如何查看进程 TSS 的地址; 4.Linux 0.11 的进程调度算法是怎样的; 5.在 Linux 0.11 中,进程是如何切换的; 6.如何跟踪到引发进程切换的 ljmp 指令。

实验准备

本关卡实验版本 1 内核进行修改,使用 gdb 和 dbg 共同调试分析。

实验过程及答案

本关卡实验版本 1 内核进行修改,可以直接沿用第一关

实验过程

ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.tgz ~/os

94131b9c442641aca067c450afc62e04.png

cd os/linux-0.11-lab
tar -zxvf ../1.tgz 1

de0ebd3263cc4230a9de53bf430dcc0c.png

rm -rf cur
ln -s 1 cur
ls

f12d91d64d9c4b5db1cbd88daf504c59.png

cd 1/linux
make

ee35757477f1428b93032742a723085e.png

cd ../..
./rundbg

e92322b671dd4064a306a51957c42607.png74bbacada00f488ebd129261070fd7fd.png

利用第一关得到的ljmp的地址0x6f33

13c32cbe29784698a63e30b973c5d50b.png0a2268271ca94f9ea9831ecd679363a5.pnge2d6a304458d4a1396c2fdd7d4dacd2b.png

ljmp的下一条指令的地址0x6f37

e15d9dd5001d4360868aae4f3dd7080a.pngbde028fa2ab141fd98eea5970e4e90ea.pngb7cc0c787c3f4137aa7d73a2d3d8c8eb.png


答案17aeab8b20ea48a988b0e6b9ff5e6a89.png

3-10 课后作业3.4:进程的切换

进程切换是支持多进程的一个关键环节,涉及到 CPU 现场的保存和恢复,本实训分析 Linux 0.11 的进程切换过程。

 

第1关第二次进程切换过程分析

任务描述

本关任务回答问题: 在第二次进程切换时: 1.是从几号进程切换到几号进程?0 号进程和 1 号进程的剩余时间片分别是多少? 2.在(ljmp)切换前,寄存器对 CS:EIP 的值是多少?1 号进程的 TSS 中的字段对 cs:eip 的值是多少?0 号进程的 TSS 中的字段对 cs:eip 的值是多少? 3.在(ljmp)切换后,寄存器对 CS:EIP 的值是多少?其上一条指令的地址是多少?1 号进程的 TSS 中的字段对 cs:eip 的值是多少?0 号进程的 TSS 中的字段对 cs:eip 的值是多少? 4. 0 号进程是在执行哪一条指令时首次切换到 1 号进程的?当 0 号进程后来恢复运行时,是从哪一条指令开始执行的?

相关知识

为了完成本关任务,你需要掌握: 1.Linux 0.11 的进程调度算法是怎样的; 2.在 Linux 0.11 中,进程是如何切换的; 3.如何跟踪到引发进程切换的 ljmp 指令; 4.如何查看寄存器的值; 5.如何查看一个进程的 TSS 的值; 6.如何知道当前指令的上一条是什么。

实验准备

本关卡使用版本 1 内核,使用 gdb 调试分析。

 实验过程及答案

实验过程

ls /data/workspace/myshixun/exp1
cp /data/workspace/myshixun/exp1/1.tgz ~/os

94131b9c442641aca067c450afc62e04.png

cd os/linux-0.11-lab
tar -zxvf ../1.tgz 1

de0ebd3263cc4230a9de53bf430dcc0c.png

rm -rf cur
ln -s 1 cur
ls

f12d91d64d9c4b5db1cbd88daf504c59.png

cd 1/linux
make

ee35757477f1428b93032742a723085e.png

cd ../..
./rungdb

23f0bde27ee344dd940cda4d4cb7acf8.png

另开一个终端

cd os/linux-0.11-lab
./mygdb

164f5c0adaf1445daea419b6f8c24e68.png

 

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
译者序 前言 第1章 系统概貌 1.1 历史 1.2 系统结构 1.3 用户看法 1.3.1 文件系统 1.3.2 处理环境 1.3.3 构件原语 1.4 操作系统服务 1.5 于硬件的假设 1.5.1 中断与例外 1.5.2 处理机执行级 1.5.3 存储管理 1.6 本章小结 第2章 内核导言 2.1 UNIX操作系统的体系结构 2.2 系统概念介绍 2.2.1 文件子系统概貌 2.2.2 进程 2.3 内核数据结构 2.4 系统管理 2.5 本章小结 2.6 习题 第3章 数据缓冲区高速缓冲 3.1 缓冲头部 3.2 缓冲池的结构 3.3 缓冲区的检索 3.4 读磁盘块与写磁盘块 3.5 高速缓冲的优点与缺点 3.6 本章小结 3.7 习题 第4章 文件的内部表示 4.1 索引节点 4.1.1 定义 4.1.2 对索引节点的存取 4.1.3 释放索引节点 4.2 正规文件的结构 4.3 目录 4.4 路径名到索引节点的转换 4.5 超级块 4.6 为新文件分配索引节点 4.7 磁盘块的分配 4.8 其他文件类型 4.9 本章小结 4.10 习题 第5章 文件系统的系统调用 5.1 系统调用Open 5.2 系统调用read 5.3 系统调用write 5.4 文件和记录的上锁 5.5 文件的输入/输出位置的调整lseek 5.6 系统调用close 5.7 文件的建立 5.8 特殊文件的建立 5.9 改变目录及根 5.10 改变所有者及许可权方式 5.11 系统调用stat和fstat 5.12 管道 5.12.1 系统调用pipe 5.12.2 有名管道的打开 5.12.3 管道的读和写 5.12.4 管道的闭 5.12.5 例 5.13 系统调用dup 5.14 文件系统的安装和拆卸 5.14.1 在文件路径名中跨越安装点 5.14.2 文件系统的拆卸 5.15 系统调用link 5.16 系统调用unlink 5.16.1 文件系统的一致性 5.16.2 竟争条件 5.17 文件系统的抽象 5.18 文件系统维护 5.19 本章小结 5.20 习题 第6章 进程结构 6.1 进程的状态和状态的转换 6.2 系统存储方案 6.2.1 区 6.2.2 页和页表 6.2.3 内核的安排 6.2.4 u区 6.3 进程的上下文 6.4 进程上下文的保存 6.4.1 中断和例外 6.4.2 系统调用的接口 6.4.3 上下文切换 6.4.4 为废弃返回(abortive return)而保存上下文 6.4.5 在系统和用户地址空间之间拷贝数据 6.5 进程地址空间的管理 6.5.1 区的上锁和解锁 6.5.2 区的分配 6.5.3 区附接到进程 6.5.4 区大小的改变 6.5.5 区的装入 6.5.6 区的释放 6.5.7 区与进程的断接 6.5.8 区的复制 6.6 睡眠 6.6.1 睡眠事件及其地址 6.6.2 算法sleep和wakeup 6.7 本章小结 6.8 习题 第7章 进程控制 7.1 进程的创建 7.2 软中断信号 7.2.1 软中断信号的处理 7.2.2 进程组 7.2.3 从进程发送软中断信号 7.3 进程的终止 7.4 等待进程的终止 7.5 对其他程序的引用 7.6 进程的用户标识号 7.7 改变进程的大小 7.8 Shell程序 7.9 系统自举和进程init 7.10 本章小结 7.11 习题 第8章 进程调度和时间 8.1 进程调度 8.1.1 算法 8.1.2 调度参数 8.1.3 进程调度的例子 8.1.4 进程优先权的控制 8.1.5 公平共享调度 8.1.6 实时处理 8.2 有时间的系统调用 8.3 时钟 8.3.1 重新启动时钟 8.3.2 系统的内部定时 8.3.3 直方图分析 8.3.4 记帐和统计 8.3.5 计时 8.4 本章小结 8.5 习题 第9章 存储管理策略 9.1 对换 9.1.1 对换空间的分配 9.1.2 进程的换出 9.1.3 进程的换入 9.2 请求调页 9.2.1 请求调页的数据结构 9.2.2 偷页进程 9.2.3 页面错 9.2.4 在简单硬件支持下的请求调页系统 9.3 对换和请求调页的混合系统 9.4 本章小结 9.5 习题 第10章 输入输出子系统 10.1 驱动程序接口 10.1.1 系统配置 10.1.2 系统调用与驱动程序接口 10.1.3 中断处理程序 10.2 磁盘驱动程序 10.3 终端驱动程序 10.3.1 字符表Clist 10.3.2 标准方式下的终端驱动程序 10.3.3 原始方式下的终端驱动程序 10.3.4 终端探询 10.3.5 建立控制终端 10.3.6 间接终端驱动程序 10.3.7 注册到系统 10.4 流 10.4.1 流的详细的示例 10.4.2 对流的分析 10.5 本章小结 10.6 习题 第11章 进程间通信 11.1 进程跟踪 11.2 系统V IPC 11.2.1 消息 11.2.2 共享存储区 11.2.3 信号量 11.2.4 总的评价 11.3 网络通信 11.4 套接字 11.5 本章小结 11.6 习题 第12章 多处理机系统 12.1 多处理机系统的问题 12.2 主从处理机解决方法 12.3 信号量解决方法 12.3.1 信号量定义 12.3.2 信号量实现 12.3.3 几个算法 12.4 Tunis系统 12.5 性能局限性 12.6 习题 第13章 分布式UNIX系统 13.1 卫星处理机系统 13.2 纽卡斯尔连接 13.3 透明型分布式文件系统 13.4 无存根进程的透明分布式模型 13.5 本章小结 13.6 习题 附录A 系统调用 参考文献 索引

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItsNorth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值