【MIT6.S081】xv6学习路线、用户程序的编写、系统调用编写

xv6第一章:神奇的makefile梳理 其中,扩展名必须为大写的 S,这是因为,大写的 S 可以使 gcc 自动识别汇编程序中的 C 预处理命令,像#include、 #define、 #ifdef、 #endif 等,也就是说,使用 gcc 进行编译,你可以在汇编程序中使用 C 的预处理命令。对于这一行,我们可以看到,我们使用了echo $(LAB),这其实是打印出LAB对应的SYSCALL并且在SYSCALL中使用tr,可以看到后边是一个tr的命令,他的意思是,将所有的小写字母转化为大写字母!有人会问,LAB这个变量从何而来,其实很简单。 阅读详情
AI摘要

这篇博客介绍了如何在MIT操作系统课程中使用xv6环境添加系统调用,如ps、getprocount等,并详细阐述了Makefile的工作原理。从用户程序的编写到系统调用的实现,每个步骤都有清晰的说明。此外,还深入探讨了Makefile的格式和在解决构建问题中的作用,帮助理解其内部的依赖关系解析机制。



一、前言

  MIT麻省理工学院本科操作系统课程,本次操作系统课程实践的任务是:借助现有的xv6环境,熟悉xv6内核相关代码,根据操作系统内核实现逻辑添加相关的系统调用,包括进程管理相关:ps()、pstree()、getprocount()、getppid(),内存管理相关:getfreemem()、vmprint()函数,文件管理相关:umask()、chmod()、ls()、ls -a、symlink、lseek、cdd()、pwd()、cat --help等。

二、预备知识

2.1 用户程序的编写,以helloworld为例

Step 1: user/路径下编写helloworld.c用户程序

在这里插入图片描述

Step 2: 修改xv6-labs-2021目录下的Makefile文件。命令:vim Makefile

在这里插入图片描述
  按照格式$U/_**\完成配置工作:找到UPROGS,添加$U/_helloworld\。

Step 3: 在xv6-labs-2021目录下执行make qemu,进行测试。

xv6学习笔记——Lab: Xv6 and Unix utilities 文章目录前言一、进程二、使用步骤1.引入库2.读入数据总结 前言 最近在学习MIT经典的操作系统课程——xv6操作系统,之前在本科生期间同样实现过一个简单的操作系统内核,所以代码阅读起来不是特别困难。在这里简单记录一下写实验期间自己的学习笔记,自己实现的代码不一定准确,也希望大佬们多多指正。 一、进程 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import s 阅读详情

相关推荐

MIT 6.S081 操作系统课程:从 xv6 到 RISC-V 的硬核实践指南

操作系统是连接硬件与上层应用的基石,也是人工智能、云计算、高性能计算等领域工程师绕不开的底层能力。理解进程管理、虚拟内存、文件系统与并发控制,能帮助开发者真正读懂框架源码中的线程池、内存映射与锁机制。MIT 6.S081 作为一门开源的操作系统工程实践课,以教学内核 xv6 为载体,在 RISC-V 架构上完整呈现了操作系统核心机制。课程包含多个实验,从系统调用、页表、陷阱处理到写时复制与网卡驱动,全部要求动手实现并通过自动化测试。对于希望深入 AI 框架底层、准备系统设计面试或自学操作系统原理的开发者,这

weixin_33404102的博客 292

AI工程师底层必修课:MIT 6.S081操作系统与xv6内核实战指南

操作系统是计算机系统的核心基础设施,无论是高性能计算、云计算还是人工智能训练推理,都离不开内核在进程管理、内存分配、文件系统和并发控制上的底层支撑。理解操作系统原理,不仅能解释线上服务为何出现高CPU上下文切换或内存抖动,更能帮助开发者从根源上优化性能与稳定性。MIT 6.S081作为经典的操作系统工程课程,以精简的xv6教学内核为载体,通过十个循序渐进的Lab实践,让学习者亲手实现系统调用、页表操作、写时复制、锁竞争优化与文件系统扩展,从而将抽象概念转化为工程直觉。无论你是AI方向的学生还是希望补齐底层功

weixin_31714129的博客 223

OSTEP三件套+CS537:一套从理论到Shell实战的操作系统学习路径

操作系统是计算机科学的基石,其核心概念包括进程管理、内存虚拟化、并发同步与文件系统持久化。理解这些原理,通常需要从CPU虚拟化、地址空间映射、锁与信号量等基础机制入手。然而,从原理到工程实践之间存在巨大鸿沟,许多学习者掌握概念后仍难以落地代码。通过系统化的项目训练,例如实现一个支持fork、exec、wait等系统调用的迷你Shell,能够有效桥接理论与实战。同时,基于调度模拟器、地址翻译模拟器等交互工具,可以直观观察算法行为,加深对调度策略、页表机制、并发交错等抽象内容的理解。无论是操作系统课程学习、考研

weixin_34014555的博客 441

系统学操作系统:CS537课程与OSTEP教材配套实践指南

操作系统是计算机核心基础课,但学习者常面临视频、教材、实验彼此脱节的困境。理解进程调度、虚拟内存、并发同步等核心概念,不仅需要掌握原理,更需通过工程实践验证设计动机。威斯康星大学麦迪逊分校CS537课程提供了一套完整的学习路径:以OSTEP问题驱动教材为主线,配套中英双语字幕视频和可运行的C语言实验,覆盖CPU虚拟化、内存管理、并发与持久化等关键模块。从调度模拟器到xv6或pintos工程,学习者可亲手实现调度算法、页表转换与锁机制,将抽象理论转化为可调试的代码。该资源尤其适合考研408复习、校招面试准备及

weixin_30315435的博客 331

图解五大计算机核心基础:从零到一构建你的知识图谱,附全网最全学习路线与资源

本文详细解析了计算机五大核心基础(数据结构、计算机网络、数据库、计算机组成原理、操作系统)的重要性及其内在联系,提供了从零开始构建知识图谱的系统学习路线。通过图解学习法和实战案例,帮助读者深入理解这些基础概念,并附上全网最全的学习资源与面试突破策略,助力技术能力全面提升。

weixin_33883104的博客 303

计算机核心5科学习路径规划:从C++/数据结构到操作系统/计组的3阶段递进方案

本文详细介绍了计算机核心五科(C++、数据结构、操作系统、计算机组成原理、数据库)的系统化学习路径,分为基础筑基、系统原理深化和综合应用三个阶段。通过科学的渐进式学习路线,帮助开发者构建完整的计算机知识体系,从底层原理到高阶应用全面提升技术能力。

weixin_29195217的博客 302

用QEMU仿真Apple芯片:在Linux上搭建可调试的XNU内核实验床

操作系统内核研究离不开可调试的实验环境,虚拟化与仿真技术为此提供了灵活路径。QEMU作为开源硬件虚拟化工具,通过TCG动态二进制翻译,可跨架构执行目标系统指令。darwin-vm项目基于QEMU仿真Apple的A系列及M系列芯片,在普通Linux主机上运行完整Darwin系统,并开放gdbstub调试接口,使研究者能够对XNU内核下断点、单步跟踪启动流程。这一方案降低了macOS底层研究的硬件门槛,适用于内核安全分析、崩溃复现与操作系统教学,也为没有真实Mac设备的开发者打开了一扇深入理解苹果生态底层机制的

weixin_33938733的博客 208

操作系统面试通关攻略:从进程调度到手写锁的底层原理与实践

操作系统是计算机系统的核心,面试中常围绕进程与线程、死锁、内存管理、调度算法等基础概念展开。理解进程是资源分配的基本单位,线程是CPU调度的最小单位,而协程则通过用户态协作式调度解决高并发IO场景的瓶颈。死锁的四个必要条件与银行家算法、虚拟内存的页表与TLB缺页流程、生产者消费者模型的条件变量实现,都是高频考点。掌握这些原理,不仅有助于面试,更能指导实际工程中的性能调优与故障排查。从Linux常用命令到手写自旋锁,再到国产操作系统的生态演进,系统性地构建知识框架,才能在面试中从容应对。本文从基础概念切入,结

weixin_33768481的博客 349

零基础也能搞定!华为USG6000V防火墙WEB管理界面开启教程

本文详细介绍了华为USG6000V防火墙WEB管理界面的开启教程,从环境准备、网络配置到防火墙初始化,逐步指导用户完成图形化管理界面的搭建。特别适合零基础用户快速掌握企业级防火墙的可视化操作,提升安全管理效率。

grape的博客 787

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 804

告别手动群发!用IDA Pro和CE搞定企业微信4.1.38.6011的HOOK开发(附完整代码)

本文详细介绍了如何利用IDA Pro和Cheat Engine进行企业微信4.1.38.6011的HOOK开发,实现自动化群发功能。从逆向工程环境配置、关键函数定位到HOOK框架设计,提供完整代码示例,帮助企业提升运营效率。

weixin_42533120的博客 479

工业以太网通讯Profinet协议详解

Profinet是通过西门子控制系统被广泛使用的工业通信协议,是一种较新的,基于以太网的工业通讯协议。

mydatai的专栏 8853

论文、报告中那些乱七八糟的图(甘特图、卡吉图,桑基图,小提琴图,弦图,螺旋图,风玫瑰图)

在一些论文或报告中,总是会看到一些熟悉的图,但作者总是不能好好说话,非得搞个洋名字、缩写字或者半洋半中的词来显示它多么高大上,有时候这种故弄玄虚、华而不实的写法也实在是让人看了不伦不类,图首先是让读者更容易看懂的,不是让你来故作高深、玩玄学的。

David_jiang 9429

Buck-Boost电路实战:如何用LM2596模块快速搭建升降压电源(附元件选型指南)

本文详细介绍了如何使用LM2596模块快速搭建Buck-Boost升降压电路,包括硬件选型、电路搭建、示波器实测和进阶技巧。通过实测数据和避坑指南,帮助电子工程师解决电压不稳定、效率低下等常见问题,提升DC-DC变换器的设计水平。

weixin_30485379的博客 111

华为OD机考双机位C卷 - 区间交集(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 区间交集

算法大师! 1137

全志平台camera驱动开发(3)MIPI接口camera驱动开发

详细沟通: 请加video_D 目前开发过的allwinner平台: V5/V3/V3S/V40/T3/T7/A64等 开发过的mipi sensor: sony:imx317、imx477、imx274、imx258、imx286、imx307、imx385等 ov:ov2718、ov12895、ov2710等 ar: ar0238等 国产:gc1024、gc1034...

jzwjzw19900922的博客 9030

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 【算法系列】二分、排序、高精度、前缀和、双指针、差分
下一篇: 【算法系列】数据结构,包括链表、双向链表、栈、队列、并查集等
For 丶I  Forever
博客等级 码龄7年 49粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

For 丶I Forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值