头歌操作系统 课堂练习2.1 外部中断 答案

这篇具有很好参考价值的文章主要介绍了头歌操作系统 课堂练习2.1 外部中断 答案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一关:时钟中断的发生

作答要求:

根据相关知识进行实际操作,一直输入 c 直到 0/1 将第一行完全填满。回答问题:当第一行 0/1 字符全部输出完毕的时候一共发生了几次时钟中断,即第一行完全填满时 jiffies 记录的已发生次数为多少?

一、设置版本1内核为分析对象

首先解压版本1内核源码。使用cp命令将/data/workspace/myshixun/exp1中的1.tgz复制到~/os/目录下;

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

切换到~/os/linux-0.11-lab目录下,将1.tgz解压到当前目录下;

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

然后调整cur的指向。先使用rm -rf curcur删除,再使用ln命令创建符号链接。

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

现在可以编译和测试版本 1 内核。首先进入1/linux目录下编译内核;

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

然后回到目录~/os/linux-0.11-lab,并使用./run启动虚拟机检测内核是否正常;

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

如果正常虚拟机在加载完毕之后将会出现如下画面。

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
二、开始使用 gdb 调试内核

先关闭bochs虚拟机,然后打开两个终端,其中一个终端在linux-0.11-lab目录下运行rungdb脚本,以启动 bochs 虚拟机并等待 gdb 连接;

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

在另一个终端里切换到目录~/os/linux-0.11-lab/,然后启动脚本./mygdb,这个命令会启动 gdb 并读入内核符号信息,同时会通过执行0.gdb中的调试命令来连接到 bochs 虚拟机,并进而跟踪到 main 函数入口。

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
三、跟踪分析时钟中断

等待 gdb 完全启动之后可以在函数 do_timer(由时钟中断的处理函数 timer_interrupt 调用)处设置断点;让程序继续运行(使用命令 c ),分析在输出第一行 0/1 字符的过程中断点 do_timer 出现的次数,此即为时钟中断的次数。通过全局变量jiffies可以直接查看已发生的时钟中断的次数。

例如,当第 2 个时钟中断发生时系统状态如下所示:

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

一直输入 c 直到 0/1 将第一行完全填满,如图所示

第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

第2关:第一次时钟中断

根据相关知识分析第一次时钟中断的恢复点的地址是多少,并将答案填写在/data/workspace/myshixun/恢复点指令地址.txt中。

准备阶段

本关卡的分析对象是版本1内核,可以基于前一关卡环境进行后续实验,如果重置实验环境则需要重新将版本1内核设置为分析对象,详见第一关的相关知识。

使用 gdb 调试内核

启动两个终端,在一个终端里切换到目录~/os/linux-0.11-lab,然后运行脚本 rungdb,以启动 bochs 虚拟机并等待 gdb 连接;在另一个终端里切换到目录~/os/linux-0.11-lab,然后执行脚本./mygdb,以启动 gdb 并读入符号信息,跟踪到 main 函数入口。

./rungdb
./mygdb
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
跟踪分析时钟中断

在函数 do_timer(由时钟中断的处理函数 timer_interrupt 调用)处设置断点;跟踪到该断点第 1 次出现;

b do_timer
c
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
中断/异常的恢复点分析

当一个中断/异常被 gdb 捕获时,通常正在运行中断处理程序,这时可以继续跟踪,直至回到恢复点指令。以时钟中断为例,为了从函数 do_timer 跟踪到恢复点,可以如下操作:

bt

时钟中断处理程序的入口是 timer_interrupt 函数。跟踪到当前函数(do_timer)执行完毕返回到 timer_interrupt 函数;

finish
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

跟踪到 timer_interrupt 函数(用汇编语言写的)末尾的 iret 指令;

disas
si
si
disas
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
b *0x77dd
c
si
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档
第一次时钟中断的恢复点的地址,头歌实验平台,头歌操作系统实验,linux,Powered by 金山文档

得到恢复点地址为0x796c文章来源地址https://www.toymoban.com/news/detail-516834.html

到了这里,关于头歌操作系统 课堂练习2.1 外部中断 答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌操作系统 课堂练习3.1:进程的描述与状态 答案

    第1关:任务寄存器(TR)的分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第一关.txt 中) 1 号进程的任务状态段(TSS)的地址是多少?1 号进程的核心栈栈底的位置是多少? 1 号进程运行时,任务寄存器(TR)的值是多少?它指向的任务状态段

    2023年04月25日
    浏览(28)
  • 头歌课堂练习5:进程的同步与互斥

    *tidp 是 pthread_t 类型,也就是指向线程标识符的指针 通俗来讲,要开一个新线程, 那么就得新定义一个 pthread_t 类型的指针。 *arrt 是 pthread_arrt_t 类型 说的是用来设置线程属性,我还没怎么接触这个 一般用NULL *strat_rtn 是这里 (void*)(*hh)(void*) 类型 是线程运行函数的起始地址

    2024年02月04日
    浏览(124)
  • 2.1万字,30张图详解操作系统常见面试题(收藏版)

    耗时两周,新版的操作系统常见知识点/问题总结总算搞完了,手绘了30多张图。大家可以用来复习操作系统或者准备操作系统面试。对于大部分公司的面试来说基本够用了,不过,像腾讯、字节这种大厂的面试还是要适当深入一些。 这篇文章总结了一些我觉得比较重要的操作

    2023年04月13日
    浏览(34)
  • 头歌操作系统Linux实验

    Linux操作系统 第1关 Linux初体验 cd / ls -a 第2关 Linux常用命令 touch newfile mkdir newdir cp newfile newdir/newfileCpy 第3关 Linux 查询命令帮助语句 man 3 fopen Linux文件/目录管理 第1关 Linux之文件创建/删除 touch file1 file2 rm oldFile1 oldFile2 第2关 Linux之目录创建/删除 mkdir newDir1 newDir2 rm oldDir1 -r old

    2024年02月10日
    浏览(31)
  • 头歌操作系统 课后作业4.1:段式内存管理 答案

    第1关:0号进程和1号进程的mynext变量的取值变化 编程要求 根据相关知识,修改版本 1.3 内核回答问题: 通过 gdb 调试查找答案,将第三关的答案填写在 /data/workspace/myshixun/第三关.txt 中。 1 号进程的 output_char 函数调用会执行几次? 每次调用时,1 号进程和 0 号进程的 mynext 变

    2024年02月06日
    浏览(31)
  • 头歌操作系统 课后作业3.1:进程的描述与状态

    第1关:1 号进程的核心栈内容分析 编程要求 根据相关知识,回答问题: (将答案填写在 /data/workspace/myshixun/第三关.txt 中) 1 号进程的核心栈栈底的位置是多少? 1 号进程(用 si)执行函数 task1 中的第一个 int 0x81 指令后,核心栈栈顶的位置是多少?从栈底到栈顶依次放了哪

    2024年02月05日
    浏览(30)
  • 操作系统的运行机制、中断和异常、系统调用

    🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 程序是如何运行的? 一条高级语言的代码翻译过来可能会对应多条机器指令 程序运行的过程就是CPU一条一条的机器指令的执行过程 “指令”就是处理器(

    2024年02月14日
    浏览(35)
  • 操作系统原理 —— 什么是中断?(四)

    我们先来看看早期的计算机的工作流程: 如上图,在早期的计算机假设有三个程序需要执行,执行顺序是:先执行程序1,等待程序1结束之后,再开始执行程序2,以此类推,所以它们是串行执行的,这种方式效率就比较低,为了能够使计算机能够同时执行多个程序,从而引入

    2023年04月24日
    浏览(80)
  • 【操作系统】聊聊不可中断进程和僵尸进程

    当我们输入top命令之后 其中S代表的是当前进程的状态 R (Running 或 Runnable) 进程在CPU的就绪队列中,正在运行或者等待运行。 D (Disk Sleep) 不可中断睡眠,进程正在跟硬件交互,不运行被其他进程或者中断打断。 Z (Zombie) 进程已经结束,但是父进程没有回收资源 (描述符、PID等

    2024年02月07日
    浏览(35)
  • 《操作系统真象还原》学习笔记:第七章 中断

    由于 CPU 获知了计算机中发生的某些事,CPU 暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后,CPU 继续执行刚才的程序。整个过程称为中断处理,也称为中断。 把中断按事件来源分类,来自CPU外部的中断就称为外部中断,来自CPU内部的中断就称为

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包