lab-1:Xv6 and Unix utilities

2024-03-31 15:36
文章标签 unix lab xv6 utilities

本文主要是介绍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
    复制子进程的退出状态到等待序列

用户级睡眠程序

这篇关于lab-1:Xv6 and Unix utilities的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/864671

相关文章

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

【unix高级编程系列】线程

引言 我们知道unix进程中可以有多个线程,进程中的线程可以访问该进程的所有组成部分。并且CPU的调度单元就是线程。这就面临一个问题:当进程中的临界资源需要在多个线程中共享时,如何解决一致性问题? 本文将从线程的概念、线程的使用方式、unix提供哪些方式解决一致性问题进行介绍,加深对线程的理解。 线程概念 线程的优点: 简化代码结构。比如在业务上为每种事件类型分配单独的处理线程,可以

linux的nohup命令的用法。在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样,这样我们就需要nohup命令,怎样使用nohup命令呢?这里讲解nohup命令的一些用法。 nohup /root/

【Unix编程】进程间通信(IPC)

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 一、管道 管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。 1、特点: 它是半双工

Unix与Linux的关系

Unix 和 Linux 之间有着密切的历史和技术联系,尽管它们是两个独立的操作系统。 Unix 的历史 Unix 的历史可以追溯到1969年,当时 AT&T 的贝尔实验室的工程师肯·汤普逊(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)开始开发 Unix 操作系统。Unix 设计之初是为了方便进行程序开发工作,它强调的是多用户、多任务的能力,以及良好的文件系统支持。

【docker无法启动】 can't create unix socket /var/run/docker.sock: is a directory

一次重启docker后出现的问题 Oct 18 19:18:20 worker systemd[1]: Starting Docker Application Container Engine...Oct 18 19:18:20 worker1 dockerd-current[118257]: time="2018-10-18T19:18:20.734668371+08:00" level=w

sqli-lab靶场学习(一)——Less1

前言 最近一段时间想切入安全领域,因为本身有做数据库运维工作,就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外,需要有个实践的环境,刚好看到sqli-lab这个靶场,就打算先用这个来学习。 安装部署 网上很多关于安装部署的教程,很简单。本人是下载PHPStudy进行部署的。由于sqli-lab是用php5版本,现在很多一体化环境(我用wamp)的php都是7版本。我试过

在 Linux 和类 Unix 系统中,终端(Terminal)和 Shell

在 Linux 和类 Unix 系统中,终端(Terminal)和 Shell 是两个相关但不同的概念。以下是它们的定义和关系: 1. 终端(Terminal) 终端 是一个用于与计算机交互的用户界面。它可以是一个物理设备(如早期的硬件终端)或一个软件应用程序(如现代的终端模拟器)。终端提供了一个输入和输出的窗口,用户可以在其中输入命令,并查看计算机的响应。 物理终端: 在早期计算机中,物

会议记录|MAS Lab 年度组会记录

前言:本篇博客记录 20240831 MAS Lab 第一次大组会要点。 “预测未来最好的方式就是创造它” —— 面向对象之父 Alan Kay 张老师提及 The MIT Media Lab (中国多媒体大会上了解到的这个实验室),用技术带动产业发展、创造生态。 产业布局 未来产业的新赛道将是各领域与AI的强强联合 国家人工智能学院……京津冀:基础研究长三角:商业模式

Linux和Unix的区别及为什么鸿蒙系统不用Unix的原因

目录 Linux是什么? Unix是什么? 他们的区别: 鸿蒙系统介绍及鸿蒙系统不用Unix的原因 Linux是什么? Linux的历史可以追溯到1991年,由芬兰的计算机科学家林纳斯·托瓦兹(Linus Torvalds)为了学习操作系统的工作原理而开始编写的个人项目。Linux的起源与Unix操作系统有着密切的联系,Unix最初由Ken Thompson和Denni