操作系统 2-6 课后作业2.3:系统调用

第1关版本1内核执行的完整系统调用序列

任务描述

分析版本1内核,回答下列问题: 从系统开机直到输出第 4 个字符‘1’,系统依次执行了哪些系统调用?分别是在几号进程中执行的?(对于一组连续出现的 0 号进程 pause 系统调用,每组只保留 1 个)

相关知识

为了完成本关任务,你需要掌握: 1.跟踪系统调用的发生; 2.查看当前进程的进程号; 3.跳过 0 号进程发出的连续多个 pause 系统调用; 4.捕获到系统调用时自动显示系统调用号和实现函数名。

实验过程及答案

如果题目要求在版本0

cd 0/linux
make
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

此时继续输入c会发现全是pause

第2关在版本1中输出系统调用信息

任务描述

本关任务:修改版本 1 内核,使得每次产生系统调用时,都在屏幕上输出系统调用号和当前进程号。(形式如29(0),表示0 号进程执行了系统调用 pause) (对于一组连续出现的 0 号进程 pause 系统调用,每组只保留 1 个)。

相关知识

为了完成本关任务,你需要掌握: 1.内核态下的字符输出; 2.如何在汇编程序中调用一个 C 函数并传递参数; 3.如何只输出 1 次信息; 4.系统调用的编号与名字之间的对应关系。

环境准备

本关卡使用版本 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

在main.c最后补上以下这段 插入这个

第3关在版本0中输出系统调用信息

任务描述

本关任务:修改版本 0 内核,使得每次产生系统调用时(忽略 0~3 号进程产生的系统调用),都在屏幕上输出系统调用号和当前进程号。(形式如11(6),表示 6 号进程执行了系统调用 execve )

相关知识

为了完成本关任务,你需要掌握: 1.内核态下的字符输出; 2.如何在汇编程序中调用一个 C 函数并传递参数; 3.系统调用的编号与名字之间的对应关系。

环境准备

本关卡使用版本 0 内核进行修改,请确认cur指向是否正确。

实验过程及答案

rm -rf cur
ln -s 1 cur
ls

在最后加

加入这个

cd 0/linux
make

第4关为版本0内核增加一个系统调用getjiffies

任务描述

为版本 0 内核增加一个系统调用 getjiffies,其功能是获得全局变量 jiffies 的值;同时,在系统启动时自动调用该系统调用并输出结果,画面类似如下:

,

要求:该系统调用的接口函数取名为 getjiffies(),没有参数。

相关知识

为了完成本关任务,你需要掌握: 1.系统调用的执行过程是怎样的; 2.如何在内核中增加一个函数; 3.如何跟踪系统调用的发生?

编程要求

为版本 0 内核增加一个系统调用 getjiffies,其功能是获得全局变量 jiffies 的值;同时,在系统启动时自动调用该系统调用并输出结果,画面类似如下:

,

实验过程及答案

还是0内核所以不做修改

sys.c

sys.h

unistd.h

system_call.s

main.c

cd 0/linux
make

第5关在用户程序中使用新增的系统调用 

任务描述

本关任务: 1.编写一个这样的用户程序 mytest:调用上一关新增的系统调用 getjiffies,并将结果输出,系统运行画面类似如下(使用上一关开发的内核):

2.修改文件 /etc/rc ,使系统启动时自动运行该用户程序,修改内容如下图所示:

相关知识

为了完成本关任务,你需要掌握: 1.如何在用户程序中定义一个系统调用接口函数? 2.如何将文件放入 bochs 虚拟机? 3.在 bochs 虚拟机中如何编辑文件? 4.在 bochs 虚拟机中如何编译文件? 5.系统调用的执行过程是怎样的? 6.如何跟踪系统调用的发生?

编程要求

1.编写一个这样的用户程序 mytest:调用上一关新增的系统调用 getjiffies,并将结果输出,系统运行画面类似如下(使用上一关开发的内核):

2.修改文件 /etc/rc ,使系统启动时自动运行该用户程序,修改内容如下图所示:

实验过程及答案

用vscode编写如下程序

注释掉之前写的print_nr

运行虚拟机即可

以下为虚拟机内操作

注意mcopy b:test .  后面不要落下 .

uemacs /etc/rc

  1. 保存文件,可以使用命令:Ctrl-X Ctrl-S。
  2. 退出 uemacs,可以使用命令:Ctrl-X Ctrl-C。

重启虚拟机即可

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜讯:加速度商城系统全系列产品品牌全新升级为Shopfa

2月1日讯:经过1年多的品牌文化塑造,深圳市加速度软件开发有限公司经过研究决定,将旗下的多商户商城系列、小程序商城系列、B2B商城系列、供应商集采系列、电子元器件商城系列、跨境独立站商城系列、MRO工业品商城系列、外卖商城系列、智慧零售…

老电脑重置后能连上WIFI但是打开360网页老是提示该网址不是私密连接

看了一下可以忽略这次提示,能够上网,但是每次打开新网页都会有“该网址不是私密连接”提示,这个提示非常大,严重影响上网。 强行下载了谷歌浏览器并打开后,提示“您的时钟慢了”,然后看了一下电脑右下角日期…

【如何写论文】——写作提效的n个技巧:Word图、表自动编号 +Zotero实现参考文献自动化

目录 一、Word图、表自动编号1.1、单级编号1.2、多级编号1.3、交叉引用1.4、修改题注格式 二、Zotero实现参考文献自动化最后 一、Word图、表自动编号 在论文写作中,通常会包含数十张图片或表格。默认情况下,这些图片和表格都是没有编号的。 然而&…

快速入门FastAPI中的Field参数

快速入门FastAPI中的Field参数 在构建RESTful API时,定义资源模型是至关重要的。FastAPI是一个用于构建API的现代Python web框架,它使用Pydantic库来处理数据验证和模型。在这个过程中,Field 参数起着关键的作用。 本教程将向您介绍如何在F…

对Spring源码的学习:一

目录 BeanFactory开发流程 ApplicationContext BeanFactory与ApplicationContext对比 基于XML方式的Bean的配置 自动装配 BeanFactory开发流程 这里的第三方指的是Spring提供的BeanFactory,Spring启动时会初始化BeanFactory,然后读取配置清单&#…

【K8S】微服务不香了?单体化改造悄然兴起!!

微服务一直以来是服务治理的基本盘之一,落地到云原生上,往往是每个 K8s pods 部署一个服务,独立迭代、独立运维。 但是在快速部署的时候,有时候,我们可能需要一些宏服务的优势。有没有一种方法,能够 “既要又要” 呢?本文基于 tRPC-Go 服务,提出并最终实践了一种经验证…

常见的中间件--消息队列中间件测试点

最近刷题,看到了有问中间件的题目,于是整理了一些中间件的知识,大多是在小破站上的笔记,仅供大家参考~ 主要分为七个部分来分享: 一、常见的中间件 二、什么是队列? 三、常见消息队列MQ的比较 四、队列…

matplot绘图时图像太大报错但能保存

matplot绘图时,图像太大,可能在jupyter里面报错,但是图像可以保存。 报错:Image size of 12237479x675 pixels is too large. It must be less than 2^16 in each direction. 在这里插入图片描述

在Windows 11中,除了快捷键能让你迅速回到桌面,还有其他方法可以实现

本文介绍了在Windows11上显示桌面的所有不同方式。 使用键盘快捷键显示桌面 查看桌面的最快方法是使用键盘快捷键。有三种方法,每种方法都有自己的好处: WIN+D:按下这些键可以最小化所有打开的窗口,这样你就可以看到桌面并与之交互。重复此操作可以将所有窗口放回原位。W…

银河麒麟安装lnmp,安装chrome。

银河麒麟下载地址 兆芯 arm 架构64 点击下载 安装lnmp 下载相关文件 链接:https://pan.baidu.com/s/1YqFLfGpE5DP3Sf_2GsXqNg?pwdptsn –来自百度网盘超级会员V7的分享 上传到服务器 我所选择上传的地方是 /home/npf/nginx-server, php放在跟nginx-…

学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇

学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN3.1 卷积神经网络的概念3.1.1 什么是CNN?3.1.2 为什么要用CNN?3.1.3 人类的视觉原理 3.2 CNN的基本原理3.2.1 主要结构3.2.2 卷积层(Convolution layer)1.…

[wp]“古剑山”第一届全国大学生网络攻防大赛 Web部分wp

“古剑山”第一届全国大学生网络攻防大赛 群友说是原题杯 哈哈哈哈 我也不懂 我比赛打的少 Web Web | unse 源码&#xff1a; <?phpinclude("./test.php");if(isset($_GET[fun])){if(justafun($_GET[fun])){include($_GET[fun]);}}else{unserialize($_GET[…