课堂练习3.2:进程的创建

3-3

进程是操作系统中一个非常重要的概念。程序的运行是通过进程来完成的。在层次结构的操作系统中,进程不仅是系统分配资源的基本单位,而且是 CPU 调度的基本单位。进程管理是操作系统最重要的功能之一。通过本实训将会学习到:Linux 0.11 的进程的创建方法。

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

任务描述

本关任务回答问题:

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

相关知识

为了完成本关任务,你需要掌握: 1.系统调用的处理过程; 2.TR 寄存器的作用; 3.在 0 号进程执行 fork 系统调用时,所用陷入指令的地址是多少; 4.0 号进程刚执行完 fork 系统调用是在什么时候; 5.在 bochsdbg 调试模式下,如何判断当前进程是几号进程; 6.在 bochsdbg 中如何查看寄存器的值; 7.在 bochsdbg 中如何反汇编; 8.在 bochsdbg 中如何单步执行。

准备阶段

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

实验过程及答案

实验过程
ls /data/workspace/myshixun/exp1
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
ls

cd 1/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

答案

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

任务描述

本关任务回答问题:

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

相关知识

为了完成本关任务,你需要掌握: 1.系统调用的处理过程; 2.TR 寄存器的作用; 3.如何查看任何一个现有进程的进程控制块; 4. 1 号进程所执行的第一条语句的地址; 5. 0 号进程执行 fork 系统调用时的陷入指令地址; 6.如何单步执行一条指令直到其运行结束(step over); 7.进程的核心栈与进程控制块之间的位置关系。

准备阶段

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

实验过程及答案 

实验过程

因为是和第一个是同时做的,所以不需要重新配置环境,如果重启释放环境,配置环境过程见下

ls /data/workspace/myshixun/exp1
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
ls

cd 1/linux
make

cd ../..
./rungdb

另开一个终端

cd os/linux-0.11-lab
./mygdb

答案

3-4

本实训分析 Linux 0.11 的进程创建过程,并练习相关系统调用的使用方法。

第1关系统调用fork和execve的跟踪分析

任务描述

本关任务:修改版本 0 内核,使每次进程创建时都输出父子进程的进程号,使每次执行可执行文件时,都输出可执行文件的名字和当前进程号。

相关知识

为了完成本关任务,你需要掌握: 1.系统调用的处理过程; 2.如何使每次进程创建时都输出父子进程的进程号; 3.如何使每次执行可执行文件时都输出可执行文件的名字和当前进程号。

准备阶段

本实训需要设置内核版本 0 为调试分析的对象,修改完毕之后请确认cur指向链接是否正确,系统能否正常使用。

实验过程及答案

实验过程
打开桌面上的vscode 添加如下代码 添加如下代码
cd os/linux-0.11-lab/0/linux

cd ../..
./run

第2关构建一个最小的可用操作系统

任务描述

本关任务:修改版本 0 内核和硬盘达到以下目标。

  1. 硬盘中的文件越少越好,且所有的文件都在根目录下;
  2. 用该内核和硬盘能够正常启动系统,没有错误提示,且依然能够运行ls、cat、rm 和 sync 命令。
  3. 系统启动后,自动执行命令setls -l /

相关知识

为了完成本关任务,你需要掌握: 1.如何修改硬盘镜像文件中的内容; 2.在修改了硬盘后,启动时报错怎么办; 3.系统启动时会执行哪些可执行文件。

实验过程及答案

实验过程

先把第一关改过的部分删掉,可能会影响评测

打开vscode

改成和我一样

评测即可成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231157.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某马点评——day04

达人探店 发布探店笔记 改一下&#xff0c;图片保存路径就可以直接运行测试了。 查看探店笔记 Service public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IBlogService {Resourceprivate IUserService userService;Overridepublic Resu…

Docker build 无法解析域名

### 报错 Docker build 无法解析域名 报错&#xff1a;ERROR [ 2/12] RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 解决Docker build无法解析域名 # 追加到 etc/docker/daemon.json&#xff0c;注意JSON的格式 {"dn…

【GAMES101】观测变换

图形学不等于 OpenGL&#xff0c;不等于光线追踪&#xff0c;而是一套生成整个虚拟世界的方法 记得有个概念叫光栅化&#xff0c;就是把三维虚拟世界的事物显示在二维的屏幕上&#xff0c;这里就涉及到观察变换 观察变换&#xff0c;叫viewing transformation&#xff0c;包括…

基于Live555实现RtspServer及高清高码率视频传输优化

基于Live555实现RtspServer及高清高码率视频传输优化 最近做了一些pc和嵌入式平台的RTSP服务器项目&#xff0c;大多数的要求是简单但是功能全面&#xff0c;并且性能还要强劲。综合考虑后&#xff0c;基本都是在基于live555的基础上进行开发&#xff0c;在进行Live555本身的优…

前端-杂记

1 子域请求时候会默认带上父域下的Coolkie 2 document.cookie 设置cookie只能设置当前域和父域&#xff0c;且path只能是当前页或者/ 比如当前页面地址为 http://localhost:3000/about 我们设置 document.cookie "demo11"; 设置 document.cookie "demo22; …

[ROS2] --- param

1 param介绍 类似C编程中的全局变量&#xff0c;可以便于在多个程序中共享某些数据&#xff0c;参数是ROS机器人系统中的全局字典&#xff0c;可以运行多个节点中共享数据。 全局字典 在ROS系统中&#xff0c;参数是以全局字典的形态存在的&#xff0c;什么叫字典&#xff1f;…

Ubunutu18.04 ROS melodic 无人机 XTDrone PX4 仿真平台配置

一、依赖安装 sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk pip2 install pandas jinja2 pyserial cerberus pyulog0.7.0 n…

【uC/OS-II】

uC/OS-II 1. uC/OS-II1.1 代码组成1.2 任务基本概念1.3 任务控制块![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/23fe7cd390b94b7eb06a110b10165d22.png)1.4 任务的状态与切换1.5 任务创建的代码 2 任务2.1 系统任务2.2 任务管理相关函数2.3 任务基本属性2.4 uC/…

IP地址定位技术:追踪位置、识别风险

随着互联网的普及&#xff0c;IP地址定位技术逐渐成为网络安全领域的一项重要工具。通过追踪IP地址位置&#xff0c;可以识别潜在的风险用户&#xff0c;加强网络安全。本文将深入研究IP地址定位技术的原理、应用以及相关的风险与防范。 1. IP地址定位技术的原理&#xff1a; …

架构面试:全链路压测,你是怎么设计的?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;很多小伙伴拿到一线互联网企业、上市企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 就在前几天&#xff0c;尼恩的指导一个 30岁小伙拿到一个工业互联网上市企业55W年薪的offer&#xff0c;是架构师…

Python数据处理的六种方式总结,Python零基础学习

文章目录 前言1、dedup()去重并排序2、traverse()拆分嵌套数组3、filter()数据筛选4、groupby()分组运算5、select()遍历结果集6、sort()数据排序 总结 前言 在 Python 的数据处理方面经常会用到一些比较常用的数据处理方式&#xff0c;比如pandas、numpy等等。 今天介绍的这…

AI文档助手,当下热门的AI文档助手【2024】

在当今信息爆炸的时代&#xff0c;文档创作的需求愈发庞大。为了满足用户对高效、准确、原创性文档的需求&#xff0c;人工智能技术的应用日益广泛。本文将专心分享AI文档助手领域的热门推荐。 AI文档助手的背景与应用 AI文档助手作为人工智能技术在文档创作领域的一大应用&am…

跨平台的文本编辑器——CudaText

CudaText 是一个轻量级、跨平台的文本编辑器&#xff0c;它免费开源&#xff0c;启动速度非常快&#xff0c;有拓展功能&#xff0c;可安装插件。 下载 浏览器搜索框输入CudaText - Home进行搜索&#xff0c; 选择官网进入&#xff0c; 进入官网界面如下&#xff1a;选择点击…

孩子都能学会的FPGA:第二十六课——用FPGA实现CIC抽取滤波器

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

windows系统如何解决爆满C盘

目录 方法一&#xff1a;清理临时文件 方法二&#xff1a;清理临时文件 方法三&#xff1a;清理系统更新文件 方法四&#xff1a; 设置自动清理无用文件 4.1 清理缓存 4.2 打开存储感知 4.3 调整新内容存储地方 方法一&#xff1a;清理临时文件 代码&#xff1a;win …

Python框架篇(4):FastApi-错误处理

提示: 微信搜索【猿码记】回复 【fastapi】即可获取源码信息~ 1.验证错误 1.1 默认返回 当传参不符合模型验证规则时&#xff0c;默认错误信息和格式返回如下: { "detail": [ { "loc": [ "body", "age" …

22、pytest多个参数化的组合

官方实例 # content of test_multi_parametrie.py import pytestpytest.mark.parametrize("x",[0,1]) pytest.mark.parametrize("y",[2,3]) def test_foo(x,y):print("{}-{}".format(x,y))pass解读与实操 要获得多个参数化参数的所有组合&…

科学指南针助力江西高校开展《透射电子显微镜简介及案例分析课程》讲座

2023年11月&#xff0c;科学指南针与江西各大高校合作&#xff0c;共同开展了一场关于《透射电子显微镜的简介及案例分析课程》讲座。该讲座旨在加强学生对于透射电子显微镜的了解&#xff0c;提高他们在科学研究中的实践能力。 透射电子显微镜&#xff08;简称TEM&#xff09…

【LeetCode】每日一题 2023_12_9 下一个更大的数值平衡数(枚举/打表二分)

文章目录 刷题前唠嗑题目&#xff1a;下一个更大的数值平衡数题目描述代码与解题思路官方解法 结语 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;下一个更大的数值平衡数 题目链接&#xff1a;2048. 下一个更大的数值平衡数 …

C++11原子操作atomic

文章目录 原子操作atomic原子操作的相关函数原子操作的特点“平凡的”与“合格的” 原子操作atomic 前面我们介绍了互斥锁等一系列多线程相关操作&#xff0c;这里我们来说下原子操作atomic。 可以理解为原子变量就是将上面的操作进行了整合的一个全新变量&#xff0c;但是实际…