JOS学习笔记(一)

操作系统内核的绝佳学习材料——JOS 操作系统内核的绝佳学习材料——JOS 前言:关于JOS和一些经验之谈 这一学期的操作系统课使用的是MIT用于教学的JOS操作系统,并且StonyBrook在其基础上做了大量改动,最重要的变化就是从32位移植到了64位。因为个人之前曾系统学习过Linux 0.11内核(《操作系统内核Hack:(四)内核雏形》,实现到时钟中断部分停下了),深知自己从零开始实现内核的工作量。即便是如我个人实 阅读详情

起初 神创造天地。 
地是空虚混沌.渊面黑暗. BIOS运行在水面上。 
神说、要有mbr、就加载了mbr。 
神看mbr是好的、就用mbr加载了kernel。 
神称mbr为引导程序、称kernel为内核.有晚上、有早晨、这是头一日。



用课余时间重新拾起JOS,作为一个码农通过了解不同技术层面的机制对自己的技术水平提高非常大,而JOS作为一个MIT的开放课程,可让我们从一无所有构造一个自己的操作系统,这无疑是学习OS的一个非常好的方法。

然而不可否认,操作系统本身是非常复杂的,即使是一个简化过的、只有基本功能的OS,里面的代码也够我研究好久,所以我在学习之余写这么几篇博客,当作学习笔记。

我使用的是6.828版本。地址http://pdos.csail.mit.edu/6.828/2011/schedule.html

1、环境搭建

(1)建立一只ubuntu11.10虚拟机,刚做好的系统是裸系统并,没有装任何东西。

(2) 装git,vim,cscope,qemu,eclipse(本来想用vim+cscope看代码的,结果因为本人太低端,vim还是玩不转,所以又装了eclipse用来看代码)

 

2、start

首先让我们从lab1开始,lab1的目的也就是让我们熟悉一下os的启动过程,所以这篇笔记也就不拘泥于里面的excerise了而直接尝试去理解里面的代码。

先按lab1的pdf里的说明将jos的代码git下来:

git clone http://pdos.csail.mit.edu/6.828/2011/jos.git lab

然后拖到eclipse里,我们就可以阅读代码了。

通过讲义(或者是经验)我们知道,当计算机加电,首先会把bios加载进内存执行,然后bios从硬盘加载mbr,之后由mbr来加载操作系统或者grab之类的东西。

那么这个过程我们就会面临很多问题

(1)bios加载进了内存的什么地方?

直接上图不解释:

 

+------------------+  <- 0xFFFFFFFF (4GB)
|      32-bit      |
|  memory mapped   |
|     devices      |
|                  |
/\/\/\/\/\/\/\/\/\/\

/\/\/\/\/\/\/\/\/\/\
|                  |
|      U
6.828 JOS在Mac下的环境配置 官网上是建议只安装qemu的依赖,再安装他们自己改良过的qemu。但是在实际操作中configure的时候总是提示pkg_config找不到,看了下脚本好像是找不到pkg_config_exe不知道啥情况。最后参考这篇文章进行的配置 安装qemu brew install qemu 安装i386-jos-elf-gcc和i386-jos-elf-gdb brew tap liudangy... 阅读详情

相关推荐

MIT JOS LAB3学习笔记

LAB3概述:本次操作系统实验,我们对计算机的操作系统进行了初步的探究,通过完成作业和问题,对lab3部分有了较好的理解。Lab3主要实现能运行被保护的用户模式环境(protected user-mode environment,即process)的内核服务。我们将增加数据结构来记录进程、创建进程、为其装载一个程序镜像。我们还要让JOS 内核能够处理进程产生的系统调用和异常。具体来说:第一部分主要...

codes_first的博客 1325

JOS操作系统源码解析——Lab1与Lab2实战详解

JOS(Joseph OS)是一个用于教学的操作系统,旨在帮助开发者深入理解操作系统底层机制。它基于x86架构,涵盖从引导加载、内存管理到进程调度等核心组件的实现。本章将介绍JOS的基本结构与设计目标,并指导如何搭建完整的实验环境。推荐使用Linux系统配合QEMU模拟器和GCC交叉编译工具链进行开发。通过make qemu命令即可运行JOS镜像,结合GDB可实现源码级调试,为后续章节的内核探索打下坚实基础。

weixin_42465332的博客 936

JOS:为 MIT 的 6.828 操作系统工程课程构建的 Exokernel 操作系统

乔斯 为 MIT 的 6.828 操作系统工程课程构建的 Exokernel 操作系统

jos操作系统

北大操作系统实验课,包括讲义资料和相应的程序,学习以后对操作系统有很深刻的了解

MIT JOS 操作系统 完整版

MIT JOS 操作系统 完整版 从lab1-lab6的完整代码加注释

一个小型操作系统JOS的框架

一个小型操作系统JOS的框架。适合操作系统学习,写自己的操作系统。

步进电机梯形加减速算法的实现

步进电机梯形加减速算法的实现

m0_69251699的博客 1318

CST毫米波雷达ADAS仿真:从直角反射器到距离多普勒(RD图)的实战解析

本文通过CST Studio Suite实战解析毫米波汽车雷达ADAS仿真,详细演示了从构建直角反射器目标、参数化定义速度、进行参数扫描到生成距离多普勒图(RD图)的全过程。文章深入探讨了雷达关键参数(如距离分辨率、速度分辨率)的设计权衡与工程逻辑,并提供了单位统一、速度范围设定等实用避坑指南,帮助工程师高效完成雷达系统性能的前期验证与优化。

weixin_29292535的博客 502

外部ADC之AD7949——14bit、8通道、250k

在实际项目中,仅靠单片机内部的ADC采样,很有可能达不到实际采样精度,这个时候就需要外接外部ADC芯片进行采样,这些外部ADC一般都是SPI接口或者是并口。单片机通过SPI接口或并口读写芯片内部寄存器,配置参考极性、采样通道、低通滤波器带宽、基准电压源、通道序列器等。本文主要对ADI家的14bit、8通道、250k的ADC7949做一个总结,这款ADC在实际项目中使用,采样精度达到要求,读取时序有点点绕,但是是一款十分常用的ADC芯片。就是价格不太友好哈哈,一块芯片快60。

cyaya6的博客 6715

DDR3性能优化实战:如何用Xilinx MIG控制器实现800MHz稳定读写(7系列FPGA版)

本文深入探讨了在Xilinx 7系列FPGA上使用MIG控制器实现DDR3存储器800MHz稳定高速读写的实战优化技巧。文章聚焦于高级时序调优、Bank Machine调度策略、用户接口设计优化以及利用ILA进行信号完整性调试,旨在帮助工程师突破性能瓶颈,实现接近理论峰值的稳定带宽,并为进一步冲刺更高频率提供进阶调参指南。

seed的博客 776

microduck复刻实战:强化学习机器人从仿真训练到真机部署全攻略

强化学习是智能体通过与环境交互试错来学习最优策略的机器学习范式,在机器人控制领域,常借助物理仿真环境进行策略训练,以降低真实世界的试错成本。其核心原理是通过奖励信号引导策略网络迭代优化,PPO等算法则在稳定性和样本效率之间取得平衡。仿真训练的价值在于可批量验证控制策略,但仿真与真实硬件之间存在物理参数偏差,需通过域随机化等技术实现迁移。从四足机器人到仿生机器人,这类方案广泛应用于复杂运动控制任务。microduck作为一个典型的强化学习机器人项目,其复刻过程涉及环境搭建、奖励设计、PPO调参及Sim-to-

weixin_29061425的博客 361

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 725

从养殖场到科技前沿:YOLOv11+OpenCV精准计数鸡蛋与鸡

YOLOv11结合OpenCV技术,精准识别和计数鸡蛋与鸡,广泛应用于养殖场、市场监控和自动化包装。通过深度学习与计算机视觉,提升农业生产效率,让智能化管理更简单高效。

专注于深入研究多种编程语言,以实战为导向,逐步拓展开发技能,提升工程化编码和思维能力,展现无敌技术实力。 1205

Openclaw接入大模型API,操作本地windows文件

本文介绍了在WSL2环境下配置OpenClaw使用阿里百炼API的方法。主要内容包括:1)确认WSL2安装完成;2)配置阿里百炼API(需注意Qwen3-Max-Thinking为收费模型);3)提供正确的JSON配置格式示例,强调apiKey必须填写真实值;4)说明配置错误需修改Linux配置文件;5)建议通过询问模型信息验证连接成功。后续将介绍如何切换免费API及本地文件访问功能。

qq_27246521的博客 989

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IDEA的使用指南

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

VC中sqlite的使用

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 数学的力量(四)
下一篇: InterviewStreet题目(1)
ROger__Wong
博客等级 码龄14年 250粉丝 78原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值