OS161 源代码阅读-1

操作系统OS161基础组件实践任务解答 操作系统(O/S)是管理计算机硬件与软件资源的程序。它作为用户与计算机硬件系统之间的中介,提供了一系列基础组件,包括进程管理、内存管理、文件系统、设备管理、网络通信等。这些组件共同工作,使得计算机系统能够高效、稳定地运行各种应用程序。信号量是一个整数变量,可以用来控制对共享资源的访问。它是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出的,旨在避免多线程环境中对共享资源的竞争条件。信号量的主要作用是实现进程间的同步与互斥。内存管理是操作系统设计的核心组件之一,它负责高效地使用计算机的物理内存资源。 阅读详情

/kern/arch/mips/mips/start.s

系统开始引导于此。
22-25    为了gdb的方便,留了20字节作为stack frame
27-57    由注释得知,系统初始时,将一个引导字串放到a0中,并且将内核加载到0x80001000(物理地址0x00001000)中。
         80000000将会是exception handler。_end是链接完成后,kernel的结束地址。
59-64    将a0中的bootstring拷贝到_end后面,即将bootstring追加到kernel后面。
66-71    计算出bootstring的长度,并且加上NULL的一个字节
74-76    计算出以bootstring尾部的地址后面第一个页首的地址
78       再增加一页的空间(4k),留作第一个堆栈的空间,此地址便为栈顶地址
80-83    将计算好的stack top地址附给sp,并且将其存储到curkstack(当前内核堆栈地址),和firstfree(第一空余的页面地址)
         此处需要注意的是,这两个地址不冲突。堆栈将地址向下减,firstfree向上加,是两个方向。
85-97    至此bootstring存储在s0里面。依旧是为了gdb准备了20字节的stack frame。
103-108  将uTLB的exception handler拷贝到0x80000000
110-115  将exception handler拷贝到0x80000080
118-122  针对mips系统,清除instruction的cache
124-128  初始TLB
154-155  设置状态寄存器,将interrupt寄存器enable
158-162  开始执行kmain()。(不解bootstring虽然在s0,但是为什么在jal kmain后才将move a0,s0呢?)
166-176  kmain是不会返回的,如果返回了,那一定出错了,就执行panic。

/kern/main/main.c

kmain(bootstring)

161      执行boot()进行OS必要的初始化
163      menu(bootstring)

boot()

64-71    打印版本信息
73       内存初始化
74       调度器初始化
75       线程初始化
76       文件系统初始化
77       设备初始化
78       虚拟内存初始化
79       kprintf初始化
82       文件系统设置引导文件系统emu0,(此时忽略错误,因为事实上emu0不存在)
88-89    比较userptr_t的类型是否和char*一样

shutdown()

102      清理bootfs
103      清理curdir(当前目录)
104      解除所有设备的绑定
106      禁用所有中断
108      停止scheduler
109      线程终止

sys_reboot(int code)

124-131  判断入口参数合法性
133      调用shutdown()终止系统
136-139  如果是RB_HALT,就执行md_halt();
140-143  如果是RB_REBOOT,md_reboot();
144-147  如果是RB_POWEROFF,就执行md_poweroff();
150-151  这三个函数都是不可能返回的函数,如果返回了,一定是reboot行为失败了。

OS161:OS161分配的源代码-同步基元,文件和进程系统调用以及虚拟内存 OS161 OS-161是由哈佛大学创建的具有指导意义的OS,是一个独立的内核和一个简单的用户区,全部用C编写。 源代码包含对以下内容的实现(由我添加): 锁,条件变量和读写器锁的实现 文件系统调用的实现-打开,关闭,读取,写入,getpid,dup2 流程系统调用的实现-fork,execv,sbrk 功能齐全的虚拟内存子系统的实现-使用分页和交换来管理内存 为了更好地理解代码,我整理了一份指南,说明重要文件在源文件中的位置及其内容。 如果其他人愿意的话,这将使其他人可以阅读我的代码并了解操作系统的内部工作原理。 一种。 kern / syscall / execv.c -Execv()系统调用实现b。 kern / syscall / fileOperations.c -open(),close(),read(),write(),dup2(),chdir(),getcwd() 立即下载

相关推荐

os161-kernel:操作系统OS161内核开发

操作系统OS / 161内核开发 关于OS / 161 OS / 161是教学操作系统,即用于教学操作系统课程的简化系统。 它的感觉类似于BSD,并且比大多数其他教学OS具有更多的“真实性”。 当它在模拟器上运行时,它具有较大系统的结构和设计。 关于System / 161 System / 161是一种机器模拟器,可为OS黑客攻击提供简化但仍然现实的环境。 它是一个32位MIPS系统,最多支持32个处理器,最多31个硬件插槽,每个插槽可容纳一个简单的设备(磁盘,控制台,网络等)。它旨在支持OS / 161,并兼顾了简单性和现实主义的选择,使其对教学具有最大的帮助。 但是,它也被证明是用于快速开发研究内核项目的平台很有用。 System / 161通过远程gdb进入模拟器,支持完全透明的调试。 它还提供透明的内核配置,统计监视,事件跟踪(低至单个机器指令的级别),并且可以使用“集线器”程序将多个正在运行的System / 161实例连接到网络中。 构建自己的操作系统 了解操作系统的最好方法是实施一个。 因此,编程任务是的核心。 ops-class.org作业使用出色的教学操作系

os161的运行和调试

在VS code 中 ctrl+shift+p输入 Remote-Containers:attach to running container... 远程连接基于docker的os161 直接运行os161: 新建终端,执行指令: 进入root路径下:cd $HOME/os161/root 直接运行kernel(非调试):sys161 kernel 注意:ubuntu执行的文件是sys161,它是主机上的可执行文件,这是不需要我们调试,修改的,所有的调试和修改都是针对kernel的,k..

qq_41642615的博客 1319

OS161:进程、文件系统和虚拟内存管理的实现

操作系统161 进程、文件系统和虚拟内存管理的实现

[OS161] lock的实现(lock_create(), lock_destroy(), lock_acquire(), lock_release(), lock_do_i_hold())

目录 1.在lock中我们要做什么 2.spinlock和wait channel是什么 2.1spinlock(自旋锁) 2.2wait channel 3.实现(1.semaphore 2.wait channel) 3.1.lock_acquire 3.2.lock_release 3.3.lock_create 3.4lock_destroy 3.5.lock_do_i_hold 1.在lock...

qq_41642615的博客 952

os161 ASST1

os161 ASST1 资源交流 便于方便交流 mutex写的可能不是太对

OS161 ASST1-3 Solution

包括信号量,线程,分页的实现(ASST1~3)来自University of Waterloo。仅供参考……

操作系统实验6:Introduction to OS161

实验目的 1.Be familiar with Subversion (SVN) and GDB (the GNU Debugger) 2.Setup your account to work on OS161 3.Understand the source code structure of OS161 4.Know how to build the OS161 kernel from sour...

weixin_34390996的博客 1113

homebrew-os161:system161和os161的自制程序公式

自制OS161 用于在OS X上安装和交叉编译工具链的方法。 支持的版本: 系统/ 161 2.0.8 OS / 161 2.0.2 Binutils 2.24 + OS161-2.1 GCC 4.8.3 + os161-2.1 GDB 7.8 + os161-2.1 这些软件包是从下载的。 快速开始 安装,运行 $ brew tap benesch/os161 $ brew install os161-toolchain 然后遵循标准的OS / 161升级指南。 详细的安装说明 自制水龙头 如果尚未安装,请从安装Homebrew。 然后,将此存储库添加为以便Homebrew

如此这般,你的网站更容易被搜到

一 head区的组成主要标签介绍A、标题(Title): 网页优化可以说是从Title开始的。在搜索结果中,每个抓取内容的第一行显示的文字就是 该页的 Title,同样在浏览器中打开一个页面,地址栏上方显示的也是该页的Title 。因此,  Title可谓一个页面的核心。对Title的书写要注意以下问题: 1、力争简短精炼,含有关键词,网页的核心部分。 2、前10个字对搜索引擎最重要,因此关键词位...

走向程序员的一条道 172

【GNSS测试技术(一)】GNSS基础原理介绍

GNSS(全球卫星导航系统)是一种基于卫星信号的定位技术,通过使用分布在地球轨道上的卫星,为用户提供全球范围内的定位、导航和授时服务。

新猿异码的博客 5753

基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍)

一、简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB总线控制,可以输入整帧、子采样、取窗口等方式的各种分辨率8位影像数据。 其他介绍比较繁琐,这里就不一一赘述了,我们只需要知道它是通过SCCB总线控制的就行了。 带FIFO与不带FIFO 目前市场上购买的ov7670模块分为两种,一种是不带FIFO芯片、一种是带FIFO芯片的。 FIFO是什么:(First Input First Output)先入先出的意思,

m0_59113542的博客 4万+

如何让网站更容易被搜索引擎搜到

<br />要想让你的网站和搜索引擎相处融洽,并让用户尽可能准确地获得所需信息,在设计页面时掌握一些与搜索引擎有关的基本技巧还是非常必要的。不论是通过商业软件建立的网站内部的搜索引擎还是一些公共的搜索引擎(比如Google),其实它们的基本规则都是一样的。本文介绍如何让你的网站更容易被搜索引擎检索到,你将学会一些基本的控制搜索结果的方法,另外还有确保网站页面能够被搜索引擎检索到并能让用户获得更准确的检索结果的技术。 用Meta标记控制搜索结果 要控制搜索引擎的结果,不论是内部搜索引擎还是外部搜索

haussuden的专栏 2928

实测对比:DECIMER、Img2Mol、MolScribe,哪个化学结构识别工具更靠谱?

化学结构识别(CSR)工具的核心任务是将分子结构图像转换为SMILES(Simplified Molecular Input Line Entry System)表示。这一过程需要克服图像质量差异、绘制风格变化以及特殊基团识别等挑战。三款工具采用不同的技术路线:DECIMER:基于EfficientNetV2+Transformer架构,优势在于处理标准期刊文献中的分子图示Img2Mol。

weixin_32576389的博客 346

网站搭建好之后,怎样让别人在微信、今日头条上搜到我的网站?

随着互联网技术的不断发展,数字化也逐渐深入人们的生活。 对于消费者来说,这意味着他们能够在更多的地方、用更方便的方式来购买自己心仪的产品;而对于企业来说,在宣传营销的道路上又出现了许多机遇和竞争者。 数字化营销的竞争就是信息的竞争,让别人第一时间就能找到你,那么你就已经领先了一大步了。 过去,大家普遍是直接通过百度、搜狗等搜索引擎去查询自己需求的产品,不过在各类App、社交平台“百花齐放”的今天,这一情况出现了改变。 越来越多的人开始选择直接在手机的微信或者今日头条等平台中搜索自己想要的产品,而这也催动企业

LTD_SaaS的博客 614

实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示

本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。

weixin_42613501的博客 482

ESP32使用microPython控制240x240彩色屏幕显示中文

王铭东老师详细讲解了讲了关于240x240屏幕的一些基础东西,我这里在原功能的基础上拓展了中文显示的功能,顺带修改了实际操作过程中程序中遇到的一些问题。

m0_59452630的博客 1万+

如何让网站更容易被搜索到

                                                                 如何让网站更容易被搜索到  要想让你的网站和搜索引擎相处融洽,并让用户尽可能准确地获得所需信息,在设计页面时掌握一些与搜索引擎有关的基本技巧还是非常必要的。不论是通过商业软件建立的网站内部的搜索引擎还是一些公共的搜索引擎(比如Google),其实它们的基本规则都是一

flynetcn的专栏 1974

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

data+scenario+science+insight 649

如何让网站能更容易浏览和被检索

一个优秀的网站首先必须是一个被用户体验良好和对搜索引擎友好的网站,而想要同时被用户及搜索引擎认可,首先要做到网站能更容易的被用户浏览、更利于搜索引擎检索。做到这两点其实并不难。如何让网站能更容易浏览和被检索?其实要想做好这两点重要的就是首先要建立好的网站导航,拥有良好清晰导航功能的网站对于帮助用户迅速找到他们想要的内容来说非常的重要,这也就突出了网站用户体验是否做得良好的...

weixin_33979203的博客 193

万字长文带你由浅入深夯实ARM汇编基础——汇编指令及寻址方式最全梳理(附示例)!

见到汇编就害怕?读完这篇,扫除汇编拦路虎!!(示例丰富,可做手册,随手查阅!)

车载系统攻城狮 1万+

AI大模型:(三)3.2 Spring AI实现Agent

SpringAI实现了流式对话功能,通过与Ollama模型集成完成前后端交互,当前版本存在thinking信息丢失问题。系统支持两种工具注册方式(方法注解和函数式),并内置时间工具类展示外部工具调用能力。记忆功能提供多种存储方案(内存、JDBC、NoSQL等),实现跨对话轮次的上下文保持。MCP协议集成方面,服务端实现计算和业务查询工具,客户端支持12306及自定义业务系统接入。完整演示了流式对话、工具调用与记忆功能的综合应用。该实践构建了具备复杂交互能力的AI系统,同时指出生产环境需关注的安全与优化问题。

haylee的专栏 1008

搜索引擎更容易搜到你的网站

废话不多说,你懂的,   这是复制的地址:要先谢谢这位大哥了 http://blog.jxwmw.cn/u/68/archives/2008/514.html 说了这么多,怎么将你的博客提交给搜索引擎啊?下面提供你们一些搜索引擎的提交地址:   有道搜索:http://tellbot.yodao.com/report?type=web   百度:http://www.baidu...

k11hao的博客 274

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SEO优化让网页更容易被搜到

<br />如何让自己的网页或域名首页更容易被SE收入,提高自己在SE的排名。<br />1。首先要在html网页源码中加入关键词和描述,这样当别人键入关键词时,自己网页被搜索到的可能性也就有所提高。<br />如:<br /><meta name="keywords" content="SEO,搜索引擎优化, 自助建站, 外贸建站" /><br /><meta name="description" content="SEO, 搜索引擎优化, 自助建站, 外贸建站, 让您的网站更易被搜索." /><br /

sqk1988-IT心园 782

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: [翻译]在Visual C++ Express 2005中使用WTL
下一篇: OS161 源代码阅读-2
DanceFire
博客等级 码龄26年 91粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值