lab-1:Xv6 and Unix utilities

实验工具

  • clone实验源码
    git clone git://g.csail.mit.edu/xv6-labs-2023
  • 进入目录
    cd xv6-labs-2023
  • 运行内核
    make qemu
  • 打印数据
    Ctrl-p
  • 退出
    ctr+a+x

xv6中的system call

int fork()  Create a process, return child’s PID. 
int exit(int status)  Terminate the current process; status reported to wait(). No return. 
int wait(int *status)  Wait for a child to exit; exit status in *status; returns child PID. 
int kill(int pid)  Terminate process PID. Returns 0, or -1 for error. 
int getpid()  Return the current process’s PID. 
int sleep(int n)  Pause for n clock ticks. 
int exec(char *file, char *argv[]) Load a file and execute it with arguments; only returns if error. char *sbrk(int n)  Grow process’s memory by n bytes. Returns start of new memory. 
int open(char *file, int flags)  Open a file; flags indicate read/write; returns an fd (file descriptor). 
int write(int fd, char *buf, int n) Write n bytes from buf to file descriptor fd; returns n. 
int read(int fd, char *buf, int n) Read n bytes into buf; returns number read; or 0 if end of file. 
int close(int fd)  Release open file fd. 
int dup(int fd)  Return a new file descriptor referring to the same file as fd. 
int pipe(int p[])  Create a pipe, put read/write file descriptors in p[0] and p[1]. 
int chdir(char *dir)  Change the current directory. 
int mkdir(char *dir)  Create a new directory. 
int mknod(char *file, int, int) Create a device file. 
int fstat(int fd, struct stat *st) Place info about an open file into *st. 
int stat(char *file, struct stat *st) Place info about a named file into *st. 
int link(char *file1, char *file2) Create another name (file2) for the file file1. 
int unlink(char *file)  Remove a file.

exit()

  • 作用:系统调用,用于当前进程停止执行、释放资源。
  • 返回值:0-成功,1-失败
  • 具体作用:返回当前进程被的子进程(退出或杀死)的PID
    复制子进程的退出状态到等待序列

用户级睡眠程序

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

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

相关文章

腾讯云2核4G服务器优惠价格165元一年,限制500GB月流量

腾讯云轻量2核4G5M服务器租用价格165元1年、252元15个月、三年900元,配置为轻量2核4G5M、5M带宽、60GB SSD盘、500GB月流量、上海/广州/北京,腾讯云优惠活动 yunfuwuqiba.com/go/txy 腾讯云轻量2核4G5M服务器租用价格 腾讯云:轻量应用服务器1…

RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

项目中发现一个奇怪的现象 RecyclerView 加载完数据以后,调用 notifyItemInserted 方法,RecyclerView 会滑动到底部。 简化后的效果图: 因为这个 RecyclerView 的适配器有一个 FootViewHolder,所以怀疑是 FootViewHolder 的问题…

Linux中常用命令(文件、目录和文件压缩)及功能示例

一、Linux关于文件与目录的常用命令及其功能示例 命令: ls 全名: List (列表) 常用选项: -l: 详细列表格式,显示详细信息。-a: 显示所有文件,包括隐藏文件。 功能: 列出目录内容。 示例: ls -la /home 此命令以详细格式列出/home目录中的所有文件&#x…

推荐一本牛逼的入门 Python书!,如何试出一个Python开发者真正的水平

本书详细解说了 Python 语言和编程的本质,无论你是否接触过编程语言,只要是 Python 编程的初学者,都可阅读本书。 本书讲解的内容虽然基础,但并不简单。本书提供了 165 幅图表,可以让大家能够轻松地理解并掌握复杂的概…

踏入网页抓取的旅程:使用 grequests 构建 Go 视频下载器

引言 在当今数字化的世界中,网页抓取技术变得越来越重要。无论是获取数据、分析信息,还是构建自定义应用程序,我们都需要从互联网上抓取数据。本文将介绍如何使用 Go 编程语言和 grequests 库来构建一个简单的 Bilibili 视频下载器&#xff…

多线程(22)Executor`框架

Executor框架是Java提供的一套高级的线程管理机制,它在java.util.concurrent包中。这个框架旨在简化并发编程,提供了线程池管理、任务调度、异步计算等功能,让开发者能够更加专注于任务的执行逻辑,而不是线程的管理和调度。 核心…

UE4_碰撞_射线检测不到物体原因及跳不到圈内的问题

UseSimpleAsComplex 和 UseComplexAsSimple 标记的作用和使用时间。 虚幻引擎 4 中有简单和复杂碰撞形态。 简单碰撞 是基础,如盒体、 球体、胶囊体和凸包。 复杂碰撞 是给定对象的三角网格图。 虚幻引擎 4 会默认创建简单和复杂两种形态,然后基于用户需…

gan zoo: 最新GAN 相关paper/code收集

相关推荐: 简单实现 GAN 简单实现 DCGAN 简单实现 InfoGAN 简单实现 Pix2Pix 一文带你读懂概率生成模型 GPT-1/GPT-2/GPT-3简介 GPT从0到1构建(附视频代码链接) 一文带你读懂变分自编码器(VAEs) 文本引导图像生成模型的演变(DALLE/CLIP/GLIDE) 作者对迄今为止所有的…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(10)

接前一篇文章:软考 系统架构设计师系列知识点之云原生架构设计理论与实践(9) 所属章节: 第14章. 云原生架构设计理论与实践 第2节 云原生架构内涵 14.2 云原生架构内涵 关于云原生的定义有众多版本,对于云原生架构的…

Java类和对象练习题

练习一 下面代码的运行结果是() public static void main(String[] args){String s;System.out.println("s"s);} 解析:本题中的代码不能编译通过,因为在Java当中局部变量必须先初始化,后使用。所以此处编译不…

Playwright库page.evaluate()方法执行JavaScript 表达式

page.evaluate() 方法是 Playwright 中常用的方法之一,用于在页面上下文中执行 JavaScript 代码。它允许在浏览器环境中执行各种操作,如操作 DOM 元素、获取页面数据、执行复杂的计算等,并将结果返回到 Node.js 或 Python 代码中。 在 Playw…

JAVAEE之网络原理

1.IP地址 IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址。 格式 IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)&…

每日一题(leetcode331):验证二叉树的前序序列化——栈

类似消消乐,数字+“#”“#”就可以消成一个“#”,到最后如果栈中只剩一个“#”便说明序列正确。 当然也可以用槽位理解,一个数字出现会消耗一个槽位产生两个槽位(即产生一个槽位),一个“#”出现…

企业防止数据泄露的措施有哪些?(企业机密文件防泄密解决方案)

企业防止数据泄露的措施是一个复杂且关键的问题,涉及到企业的核心竞争力和信息安全。 随着信息技术的快速发展,数据泄露事件频发,给企业带来了巨大的经济损失和声誉损害。 企业防止数据泄露的措施有哪些? 首先,企业需要建立健全…

递归的三种选数

/* 指数型枚举&#xff08;每个数有选和不选两种情况&#xff09; #include<bits/stdc.h> using namespace std; const int N20; int n; int st[N];//记录每个数的状态&#xff0c;0还没有考虑&#xff0c;1表示选这个数&#xff0c;2表示不选这个数 void dfs(int x){/…

雷卯有多种接口与电源保护方案

在当今的电子设备中&#xff0c;各种接口和电源保护至关重要。它们不仅关乎设备的正常运行&#xff0c;更直接影响到数据传输的稳定性和设备的安全。雷卯公司以其专业的技术和丰富的经验&#xff0c;为您提供全面的接口与电源保护方案&#xff0c;确保您的系统安全稳定运行。 …

【Vue面试题】v-show和v-if有什么区别?使用场景分别是什么?

# 一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />当表达式为true的时候&…

Android vehicle车辆属性新增demo

目录 前言一、Vehicle模块1.1 简介1.2 Vehicle框架1.3 主要功能和特点1.4 重要服务CarService1.4.1 简介1.4.2 组成1.4.3 启动时序1.4.4 作用 二、车辆属性新增demo2.1 CarPropertyService2.1.1 简介2.1.2 架构2.1.3 车辆属性 API2.1.4 CarPropertyService 初始化流程 2.2 App …

学习鸿蒙基础(9)

目录 一、鸿蒙国际化配置 二、鸿蒙常用组件介绍 三、鸿蒙像素单位介绍 四、鸿蒙布局介绍 1、Row与Column线性布局 2、层叠布局-Stack 3、弹性布局 4、栅格布局 5、网格布局 一、鸿蒙国际化配置 base目录下为默认的string。en_US对应美国的。zh_CN对应中国的。新增一个s…

Backend - gitea 首次建库(远端本地)

目录 一、建立远端储存库 1. 进入新增画面 2. 填写储存库名称&#xff08;如book&#xff09;&#xff0c;点击“建立”即可 二、本地关联远端储存库 1. 本地初始化储存库代码 &#xff08;1&#xff09;新建文件夹 &#xff08;2&#xff09;获取远端储存库 2. 本地编写…