清华大学uCore-操作系统内核实现

2023-10-31

本系列文章是学堂在线清华大学操作系统慕课,课程实验-实现uCore内核的讲义总结及个人攻略,如果有对课程感兴趣的朋友建议看原课程。

前置知识(即提前要掌握的知识):

  • C语言和汇编语言
  • 数据结构和算法
  • 计算机组成原理

实验内容:
Lab1. uCore-OS启动、中断与设备管理: 0200~1800行
Lab2. uCore-物理内存管理: 1800~2500行
Lab3. uCore-虚拟内存管理: 2500~3200行
Lab4. uCore-内核线程管理: 3200~3600行
Lab5. uCore-用户进程管理: 3600~4300行
Lab6. uCore-进程调度: 4300~5100行
Lab7. uCore-同步互斥: 5100~6400行
Lab8. uCore-文件系统: 6400~9999行

效果

好的方面:

  • 理论和实验能够较好地结合起来,不再感到OS课是一个只要死记硬背的课程
  • 理解了一个OS的全局设计实现,而不是一个个分离的知识点
  • 掌握了许多OS原理上没有涉及或涉及不够的东西,比如中断/系统调用的实现,X86的段页机制,进程上下文如何切换的,内核态和用户态的具体区别是什么
  • 这是大学期间碰到的最复杂的软件,学习了分析和设计大型系统软件的方法

实验所用电子书:uCore实验指导书

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清华大学uCore-操作系统内核实现 的相关文章

  • 如何设置Java线程的CPU核心亲和力?

    我搜索了以前关于类似主题的帖子 但找不到合适的答案 因此提出这个问题 非常感谢您帮助回答 我知道在 Linux 中通过任务集命令设置进程与特定 CPU 核心的关联性 但我想设置 Java 线程与特定 cpu 核心的亲和力 以便属于同一进程的
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • C++:Linux平台上的线程同步场景

    我正在为 Linux 平台实现多线程 C 程序 其中我需要类似于 WaitForMultipleObjects 的功能 在搜索解决方案时 我发现有一些文章描述了如何在 Linux 中实现 WaitForMultipleObjects 功能
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • 在 Ubuntu 中与未编译的着色器链接

    我需要加载 glsl 来绘制一些东西 我的环境是Ubuntu 13 04 因此它不存在GLuint InitShader GLuint GLuint 这是我的对象创建 预链接步骤和链接的配置 不幸的是 它仍然出现错误 该错误与未编译的着色器
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • 如何在文件夹中的 xml 文件中 grep 一个单词

    我知道我可以使用 grep 在这样的文件夹中的所有文件中查找单词 grep rn core 但我当前的目录有很多子目录 我只想搜索当前目录及其所有子目录中存在的所有 xml 文件 我怎样才能做到这一点 我试过这个 grep rn core
  • 如何将 elf 解释器(ld-linux.so.2/ld-2.17.so)构建为静态库?

    如果我的问题不准确 我深表歉意 因为我没有太多 Linux 相关经验 我目前正在构建一个 Linux 从头开始 主要遵循 linuxfromscratch org 版本的指南 7 3 我遇到了以下问题 当我构建可执行文件时 获取一个称为 E
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • Ubuntu 16.04/Django - Gunicorn - Worker 无法启动

    我正在 Digital Ocean Ubuntu 16 04 VPS 上部署 Django 项目 我使用的是Django的一键安装 然后替换为我的项目 问题是服务器返回502 Error EDIT 没有realestate scanner
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include

随机推荐

  • Element UI el-input 只能输入大于0的正整数

    当输入值以0开头或者不为0 9的整数时 则用 替换掉 g表示全局匹配 则所有匹配项都会被替换掉 效果为不能输入以0开头或不为正整数的值
  • Oracle 基本 SQL 语句查询手册(1):增删改查

    关于SQL语法学习 这里有一份图文并茂的教程 点击此处 针对文字内容进行简化 通过注释 解释语句含义 本文的重点在于Oralce中写法 当然了 大部分写法都是通用的 查询手册 没有配图 各位看官见谅 创建临时表 用于测试 练习基本语句的写法
  • 什么是护网(HVV)?需要什么技术?(内附护网超全资料包)

    一 什么是护网行动 护网行动是以公安部牵头的 用以评估企事业单位的网络安全的活动 具体实践中 公安部会组织攻防两方 进攻方会在一个月内对防守方发动网络攻击 检测出防守方 企事业单位 存在的安全漏洞 通过与进攻方的对抗 企事业单位网络 系统以
  • ping 命令数字波动大的解决方法

    win10ping值不稳定怎么办 我们可以通过ping来判断网络是否流畅 一般来说在ping界面 只要 时间 后面的数值在10以内那么网速就是稳定的 最近在win10系统中有用户反应网速慢的心想 在使用ping进行ping一些网站的时候果然
  • easyUI前端框架tree(树)后台实现(树形菜单一)——java

    转载请标明出处 https blog csdn net men ma article details 106847165 本文出自 不怕报错 就怕不报错的小猿猿 的博客 easyUI前端框架tree 树 后台实现 树形菜单一 java 利用
  • 引领语言智能革命的巨型语言模型 ChatGPT PK Google Bard , Anthropic

    ChatGPT是由OpenAI公司训练的一个大型语言模型 它可以生成人类可读的文本 这是一个基于Transformer架构的预训练模型 可以进行语言生成和语言理解任务 OpenAI公司在2020年推出了ChatGPT 它是世界上最大的语言模
  • 多级代理下Nginx透传真实IP

    文章目录 多级代理下Nginx透传真实IP Nginx RealIP获取真实IP 多级代理下Nginx透传真实IP 1 基于代理 七层负载均衡 情况下 透传客户端的真实IP 环境 10 0 0 5 proxy node1 一级代理10 0
  • ERROR: Failed building wheel for dlib python 3.10 无法下载 pip/conda install dlib库的解决办法

    如果您在Python 3 10版本中无法使用pip安装dlib库 可能是由于以下原因之一 您的Python版本不支持dlib库 请确保您的Python版本与dlib库的版本兼容 您的pip版本不支持dlib库 请确保您的pip版本与dlib
  • plc模拟量与通信控制应用实践_第三版电气控制与PLC应用模块三教材答案

    很高兴这期为你分享干货 让你在困难中找到解决的线索 模块三答案 任务一 思考与练习 1 PLC 主要应用在哪些场合 答 1 开关量逻辑控制 2 模拟量过程控制 3 运动控制 4 现场数据采集处理 5 通讯联网 多级控制 2 PLC 的基本结
  • 文件打包发布

    本文基于VS Qt和VTK环境开发软件 生成可执行文件 通过软件ProcessExplorer查找发布软件所需要的库和通过软件VNISEdit打包该可执行文件 1 添加QT所需要的环境 2 添加VTK所需要的环境 3 文件打包发布 1 添加
  • windows上同时安装两个版本的mysql数据库

    在实际开发中 一些低版本数据库 不支持一些特殊的sql语句 因此高版本数据库数据导入低版本的时候就会出问题 因此 在一些特殊情况下 低版本数据库不能动 高版本mysql数据又无法导入低版本mysql 我们不得不在同一台机器上安装两个版本my
  • 关于使用get请求传递base64的注意事项

    关于使用get请求传递base64的注意事项 我们知道 get请求和post请求是有区别的 1 GET请求是用来请求获取数据 POST一般作为发送数据到后台时使用 并不返回数据 2 GET请求也可传参到后台 但是其参数在浏览器的地址栏的ur
  • Lambdda表达式( Java 8 )

    在Java的语言世界里面 除了基本的数据类型 一切都是对象 例如 String字符串 每个对象实例 数组这些都是对象 在Java中方法是不能完全独立存在的 不能将方法作为参数或者返回值给实例 注意 方法 Method 函数 Function
  • SAP 下载SMW0模板文件并附加数据导入到Excel示例

    1 效果 下载模板后 导入内表数据到Excel 2 代码 关键代码DATA excel TYPE ole2 object Excel object worksheet TYPE ole2 object workbooks TYPE ole2
  • js获取地址栏参数function封装

    获取地址栏参数 function GetQueryString name var reg new RegExp name var r window location search substr 1 match reg if r null r
  • 《每日一题》NO.14:名词解释 后端设计篇

    芯司机 每日一题 会每天更新一道IC面试笔试题 其中有些题目已经被很多企业参考采用了哦 聪明的你快来挑战一下吧 今天是第14题 各大IC公司的笔试题经常会从名词解释开始 所以我们给大家精心准备了50个名词解释题 每天更新10个 务求将名词解
  • 2021-3-26 米斯特安全团队视频笔记二(含PHP)

    DOS命令 常用Dos命令 1 通配符 号 代替0或多个字符 号 代替一个字符 2 查看命令 3 操作命令 信息搜集 whois 备案 PHP 变量 命名格式 美元字符开头 字母 下划线 不能跟数字 特殊符号 name key 常量 通过d
  • HTML <u> 标签

    实例 使用 u 标签为文本添加下划线 p 如果文本不是超链接 就不要 u 对其使用下划线 u p 定义和用法 u 标签可定义下划线文本 浏览器支持 元素 Chrome IE Firefox Safari Opera u Yes Yes Ye
  • maven jetty 插件的使用

    jetty插件的安装 首先打开项目的pom xml文件 然后找到build节点 在其中添加plugins节点 然后再添加如下的插件
  • 清华大学uCore-操作系统内核实现

    本系列文章是学堂在线清华大学操作系统慕课 课程实验 实现uCore内核的讲义总结及个人攻略 如果有对课程感兴趣的朋友建议看原课程 前置知识 即提前要掌握的知识 C语言和汇编语言 数据结构和算法 计算机组成原理 实验内容 Lab1 uCore