头歌操作系统-课堂练习3.2:进程的创建

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

第1关:进程创建前后TR寄存器值的分析

编程要求

根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第一关.txt中)

  • 0 号进程的 fork 系统调用(main.c:147)中的陷入指令的地址是多少?
  • 0 号进程执行 fork 系统调用之前,TR 寄存器的值为多少?
  • 0 号进程刚执行完 fork 系统调用时,TR 寄存器的值为多少?

准备阶段

本实训需要设置内核版本 1 为调试分析的对象,用 gdb 调试内核,内核版本 1 的压缩文件存放在/data/workspace/myshixun/exp1中。


首先先解压内核,敲熟悉的老铁已经形成手指肌肉记忆,秒搞定,还不会的友友可以跟着来。

 1.打开终端,分别输入以下指令。

cp /data/workspace/myshixun/exp1/1.tgz ~/os/
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz 1
rm -rf cur
ln -s 1 cur
cd 1/linux 
make
cd ../..
./rungdb

2.环境配置完了。打开另一个终端,输入以下指令。前面一个不要关闭。

cd ~/os/linux-0.11-lab
./mygdb

3.接着我们会进入到GDB DEBUGING,如图所示。

头歌操作系统-课堂练习3.2:进程的创建

 输入以下指令:

(gdb)b 145
(gdb)c
(gdb)n
(gdb)x/5i $eip
(gdb)si
(gdb)x/5i $eip
(gdb)quit
y
./rundbg
<bochs>b 0x68e8
<bochs>c
<bochs>sreg
<bochs>n
<bochs>sreg

头歌操作系统-课堂练习3.2:进程的创建

头歌操作系统-课堂练习3.2:进程的创建


第2关:1 号进程创建前后的GDT和PCB分析

编程要求

根据相关知识,回答问题:(将答案填写在/data/workspace/myshixun/第二关.txt中)
注:操作过程中只能出现一个0x0000690a

  • 0 号进程的进程控制块的起始地址是多少?0 号进程的 TSS 的地址是多少?
  • 在 1 号进程创建前,task 数组的前 2 项是多少?GDT 的 4~7 号描述符(64位)是多少?其中存储的段起始地址分别是多少?
  • 在 1 号进程创建后,task 数组的前 2 项是多少?GDT 的 4~7 号描述符(64位)是多少?其中存储的段起始地址分别是多少?
  • 1 号进程的进程控制块的起始地址是多少?1 号进程的 TSS 的地址是多少?1 号进程执行的第一条语句的地址是多少?
  • 1 号进程的核心栈栈底的位置是多少?该位置距离 1 号进程的进程控制块的起始位置有多远(字节数)?

准备阶段

本实训需要设置内核版本 1 为调试分析的对象,用 gdb 调试内核,内核版本 1 的压缩文件存放在/data/workspace/myshixun/exp1中。


内核环境配置不再说,可以看前面的。第一关过的到了第二关可以不用再解压和修改内核,如果重置环境则要。

打开一个终端

cd ~/os/linux-0.11-lab
./rungdb

再打开一个终端,前一个不要关闭.

cd ~/os/linux-0.11-lab
./mygdb
(gdb)b 145
(gdb)c
(gdb)n
(gdb)x/5i $eip
(gdb)si
(gdb)p &task[0]->tss
(gdb)ni 
(gdb)p task
(gdb)x/20wx gdt
(gdb)p &task[1]->tss
(gdb)p/x task[1]->tss

 头歌操作系统-课堂练习3.2:进程的创建


课堂练习3.2:进程的创建的两关就算全部搞定了,如果对这些指令运行原理感兴趣的话,或者是说答案怎么从这些指令中找出,可以跟我交流噢!OK了,以上是本次文章的全部内容,stay tuned!文章来源地址https://www.toymoban.com/news/detail-425769.html

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

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

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

相关文章

  • 操作系统练习:在Linux上创建进程,及查看进程状态

    进程在执行过程中可以创建多个新的进程。创建进程称为“父进程”,新的进程称为“子进程”。每个新的进程可以再创建其他进程,从而形成进程树。 每个进程都有一个唯一的进程标识符(process identifier,pid)。在Linux中,init进程是所有其他进程的根进程。 在Linux中,可以

    2024年02月12日
    浏览(53)
  • 头歌课堂练习5:进程的同步与互斥

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

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

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

    2024年02月05日
    浏览(38)
  • 操作系统——MFC实现进程创建和通信2

    我接着上篇博客讲,如果没有构建项目的童鞋请移步到操作系统——MFC实现进程创建和通信1 实现进程通信的方法有很多,我们先用一个比较简单的方法实现一下。 window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具

    2024年02月07日
    浏览(41)
  • 【Linux操作系统】深入探索Linux进程:创建、共享与管理

    进程的创建是Linux系统编程中的重要概念之一。在本节中,我们将介绍进程的创建、获取进程ID和父进程ID、进程共享、exec函数族、wait和waitpid等相关内容。 在Linux系统中,进程的创建使用 fork() 系统调用。 fork() 系统调用会创建一个与当前进程相同的子进程,子进程会复制父进

    2024年02月12日
    浏览(57)
  • [入门篇]Linux操作系统fork子进程的创建以及进程的状态 超超超详解!!!我不允许有人错过!!!

    目录 0.前言 1.fork()创建子进程讲解 1.1fork()的简单介绍 1.2 创建子进程详解 1.2.1 如何理解fork创建子进程 1.2.2 子进程的PCB以及子进程的代码和数据 1.2.3为什么要共享写时拷贝 1.2.4 什么时候发生写时拷贝 1.3 fork函数返回值详解 1.3.1引入fork返回值的作用 1.3.2 fork返回执行逻辑剖析

    2024年03月21日
    浏览(63)
  • 大数据:HDFS的Shell操作,进程启动管理,文件系统操作命令,创建文件文件夹,下载上传,复制移动,删除,展示,追加内容

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月07日
    浏览(71)
  • 头歌(Linux之进程管理一):第2关:进程创建操作-fork

    任务描述 在上一关我们学习如何获取进程的 pid 信息,本关我们将介绍如何编程创建一个新的进程。 本关任务:学会使用 C 语言在 Linux 系统中使用 fork 系统调用创建一个新的进程。 相关知识 在 Linux 系统中创建进程有很多函数可以使用,其中包括了系统调用也包括库函数。

    2024年02月06日
    浏览(58)
  • 头歌操作系统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日
    浏览(43)
  • 头歌操作系统 课后作业4.1:段式内存管理 答案

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

    2024年02月06日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包