[操作系统课设]GeeKOS操作系统的研究与实现

一.GeekOS操作系统概论

        1.1教学操作系统

(1)针对RISC结构MIPS处理器

         操作系统:Nachos、OS/161

(2)针对CISC结构Intel IA-32 (or x86)通用处理

         操作系统:MINIX、GeekOS

    我们用到的是:GeekOS

        1)GeekOS:是一个基于X86架构的PC机上运行的微操作系统内核

        2)是一个用C语言开发的操作系统,可以在LinuxUnix环境下对其进行功能扩充

        3)其针对进程文件系统存储管理等操作系统核心内容分别设计了7个难度逐渐增加的项目供学生选择

        4)GeekOS内核设计简单,却又兼备实用性,它可以运行在真正的X86 PC硬件平台

                GeekOS操作系统源文件geekos-0.3.0.zip可以从http://geekos.sourceforge.net下载。

                或者直接下载本篇文章上面附的压缩包

        1.2 GeekOS的项目(我们要做的项目0~5)

                项目0:项目0要求实现一个内核进程,功能是实现从键盘接收按键,并在屏幕上显示。主要是熟悉GeekOS的编译、运行过程,了解计算机系统的启动原理

                项目1:项目要求熟悉ELF文件格式,并编写代码对ELF文件进行分析,并将分析传送给加载器。主要让学生熟悉可执行链接文件(ELF文件)的结构,并学会加载和运行可执行文件。

                项目2:要求学生实现对用户态进程的支持。在项目2实现之前,GeekOS一直使用内核进程。对用户态进程执行的支持包括用户态进程结构的初始化用户进程空间的初始化用户进程切换用户程序导入等。该项目中,存储分配依然使用分段分配方式。实现项目2后,用户就可以使用GeekOS提供的命令行解释器Shell运行一些命令来执PFAT文件系统内的用户测试程序。

                项目3:要求学生改进GeekOS的调度程序,实现基于4反馈队列的调度算法,并实现信号量,支持进程间通信。

                项目4:要求学生实现分页虚存管理,以替代在项目1和项目2中采用的分段存储管理。实现分页虚存管理后。系统在内存不够的情况下就可以将部分页调到硬盘,以释放内存实现虚拟存储技术。

                项目5:要求实现GOSFS文件系统。由于GeekOS使用了虚拟文件系统,可以加载不同的文件系统,而系统默认加载的是PFAT只读文件系统。在这个项目中,需要实现一个多级目录的、可读写的文件系统。

        1.3GeekOS系统源代码结构

                GeekOS操作系统源文件geekos-0.3.0.zip可以从http://geekos.sourceforge.net下载。

                点开src:

                点开任何一个project:

二. GeekOS实验项目开发环境的搭建        

(1) 下载并安装 VMware虚拟机;(下面是我踩到坑时参考的一些文章)

最新超详细VMware虚拟机安装完整教程 - 付宗乐 - 博客园 (cnblogs.com)

VMware下载安装教程(超详细)-CSDN博客

安装vm虚拟机 Failed to install the hcmon driver 解决方法 - 知乎 (zhihu.com)

VMware安装时出现 “您无权输入许可证密钥,请使用系统管理员账户重试”解决方案_你无权输入许可证密钥,请启用管理员-CSDN博客
        如果还是解决不了的话只能去橙色软件找人帮忙安装了

(2)在 VMware虚拟机上安装 linux;

VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客
(3)在 VMware虚拟机上的 linux 环境下对 GeekOS源文件进行编译和链接,编译成功后生成 fd.img 软盘映射文件和 hd.img 硬盘映射文件;
(4) 下载并安装系统仿真工具 Bochs;  
Bochs x86 PC emulator download | SourceForge.net
(5)配置 Bochs 环境配置文件 Bochsrc.txt;
(6)启动 Boch 环境,在提示中出现 GeekOS的欢迎界面;
(7)GeekOS系统编译和仿真成功。
(8) 开 始 安 装 好 bochs 之 后 , 对 bochsrc.txt 进 行 配 置 , 考 虑 到 bochs 自 带bochsrc-sample.txt 的比较复杂,因此对其进行改写,方便日后阅读。且将该配置文件放在各个项目之下,方便进行修改。Bochs使用配置文件中的信息来寻找使用的磁盘镜像文件,运行环境配置以及其他一些模拟器的配置信息。以project0为例,该项目的配置文件如下:

megs: 8   

//megs用于设置模拟系统的内存,这里使用的是8MB。

boot: a  

  //引导盘镜像文件, boot用来定义模拟机器中踊跃引导启动的驱动器,可以为软盘硬盘或CDROM,这里使用虚拟软盘A来进行引导系统。

floppya: 1_44=fd.img, status=inserted

// floppya和floppyb分别表示第一个软驱和第二个软驱,如果需要从一个软盘上来引导系统则floppya就需要指向一个可引导的磁盘。

log: ./bochs.out    

// log用于记录日志信息。

#Project 1以后的项目还需要ata串口驱动器,需要加上:

ata0-master: type=disk, path=diskc.img, mode=flat, cylinders=40, heads=8, spt=64

//ata0用于启动模拟系统中的ATA通道,对于每个通道必须指明两个IO基地址和一个中断请求号.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二分(二段性)

本文用于记录个人算法竞赛学习,仅供参考 一.二分算法 二分算法一般用于具有二段性的问题,数据不一定具有单调性,所以单调可二分,可二分不一定就要单调。 二.整数二分 1. 模板一:将区间[l, r]划分为[l, mid] 和 [mid…

字符串(KMP)

P3375 【模板】KMP - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; #define ll long long const int N1e6100; int n0,m; char s1[N]; char s2[N];…

36.HarmonyOS鸿蒙系统 App(ArkUI) 创建第一个应用程序hello world

36.HarmonyOS App(ArkUI) 创建第一个应用程序helloworld 线性布局 1.鸿蒙应用程序开发app_hap开发环境搭建 3.DevEco Studio安装鸿蒙手机app本地模拟器 打开DevEco Studio,点击文件-》新建 双击打开index.ets 复制如下代码&#xff1a; import FaultLogger from ohos.fau…

通俗易懂Redis缓存穿透,缓存击穿,缓存雪崩

1.1 缓存穿透 原因&#xff1a;当我们查询一个数据的时候&#xff0c;缓存中没有&#xff0c;就会去查询我们的关系型数据库&#xff0c;而且查询不到的数据是不会放到我们的缓存中&#xff0c;就会导致我们每次的请求都会来到我们的关系型数据库中&#xff0c;从而导致关系型…

使用Flink实现Kafka到MySQL的数据流转换:一个基于Flink的实践指南

使用Flink实现Kafka到MySQL的数据流转换 在现代数据处理架构中&#xff0c;Kafka和MySQL是两种非常流行的技术。Kafka作为一个高吞吐量的分布式消息系统&#xff0c;常用于构建实时数据流管道。而MySQL则是广泛使用的关系型数据库&#xff0c;适用于存储和查询数据。在某些场景…

小米SU7 我劝你再等等

文 | AUTO芯球 作者 | 李逵 我必须承认我一时没忍住 犯错了 我不会被我老婆打吧 感觉有点慌呀 这不前两天 我刚提了台问界M9嘛 但是昨晚看小米汽车发布会 是真的被雷总感染到了 真的没忍住 我又冲了台小米SU7 Pro版 本来我是准备抢创始版的 结果1秒钟时间 点进去就…

yolov5 v7.0打包exe文件,使用C++调用

cd到yolo5文件夹下 pyinstaller -p 当前路径 -i logo图标 detect.py问题汇总 运行detect.exe找不到default.yaml 这个是yolov8里的文件 1 复制权重文件到exe所在目录。 2 根据报错提示的配置文件路径&#xff0c;把default.yaml复制放到相应的路径下。&#xff08;缺少相应…

杨辉三角形(c++实现)

题目 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a; 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, … 给定一个正整数 N&#xff0c;请你输出数列中第一次出现 N 是在第几个数&a…

实现 Element UI el-table 树形数据的懒加载

当面对大量数据时&#xff0c;一次性加载所有数据可能会导致性能问题。为了解决这一问题&#xff0c;我们可以实现树形数据的懒加载。本文将介绍如何在使用 Element UI 的 Vue 应用中为 el-table 组件的树形数据添加懒加载功能。 懒加载的基本概念 懒加载是一种优化网页或应用…

中国31个省农村用电量(2000-2022年)

数据介绍&#xff1a; 农村用电量是一个动态变化的数据&#xff0c;受到多种因素的影响&#xff0c;包括农村经济发展、人口增长、农业生产活动增加以及电力设备的升级改造等。随着农村经济的发展和农民生活水平的提高&#xff0c;农村用电量呈现出逐年增长的趋势。同时&#…

消息中间件区别

ActiveMQ 我们先看ActiveMQ。其实一般早些的项目需要引入消息中间件&#xff0c;都是使用的这个MQ&#xff0c;但是现在用的确实不多了&#xff0c;说白了就是有些过时了。我们去它的官网看一看&#xff0c;你会发现官网已经不活跃了&#xff0c;好久才会更新一次。 它的单机吞…

查找某数据在单链表中出现的次数

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LinkNode {ElemType data;LinkNode* next; }LinkNode, * LinkList; //尾插法建立单链表 void creatLinkList(LinkList& L) {L (LinkNode*)mallo…

设计模式之解释器模式的魅力:让代码读懂你的语言

目录 一、什么是解释器模式 二、解释器模式的应用场景 三、解释器模式的优缺点 3.1. 优点 3.2. 缺点 四、解释器模式示例 4.1. 问题描述 4.2. 问题分析 4.3. 代码实现 4.4. 优化方向 五、总结 一、什么是解释器模式 解释器模式&#xff08;Interpreter pattern&…

kubernetes(K8S)学习(七):K8S之系统核心组件

K8S之系统核心组件 K8s系统核心组件1.1 Master和Node1.2 kubeadm1.3 先把核心组件总体过一遍1.4 Kubernetes源码查看方式1.5 kubectl1.6 API Server1.7 集群安全机制之API Server1.8 Scheduler1.9 kubelet1.10 kube-proxy K8s系统核心组件 1.1 Master和Node 官网 &#xff1a;…

360奇酷刷机 360刷机助手 QGDP360手机QGDP刷机

360奇酷刷机 360刷机助手 QGDP破解版360手机QGDP刷机 360手机刷机资源下载链接&#xff1a;360rom.github.io 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360奇酷刷机&#xff1a;360高通驱动安装 360手机刷机驱动&#xff1b;手机内置&#xff0c;可通过USB文件传输…

搜索与图论——染色法判定二分图

一个图是二分图当且仅当这个图中不含奇数环 由于图中没有奇数环&#xff0c;所以染色过程中一定没有矛盾 所以一个二分图一定可以成功被二染色&#xff0c;反之在二染色的过程中出现矛盾的图中一定有奇数环&#xff0c;也就一定不是二分图 #include<iostream> #includ…

【c++初阶】类与对象(中)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

Transformer论文阅读

Transformer论文阅读 摘要结论1 Introduction &#xff08;导言&#xff09;2 Background3 Model Architecture3.1 Encoder and Decoder StacksEncoderLayer NormDecoder 3.2 Attention3.2.1 Scaled Dot-Product Attention3.2.2 Scaled Dot-Product Attention3.2.3 Application…

4月1日起,未备案App小程序将下架

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 最后2天了、最后2天了。 从2024年4月1日起&#xff0c;工信部要求所有的APP、小程序都要备案&#xff0c;否则下架、关停、限制更新。这是去年8月份出的新规&#xff0c;没想到十个月这么快就过去了。 现在广东省…

深入解析大语言模型显存占用:训练与推理

深入解析大语言模型显存占用&#xff1a;训练与推理 文章脉络 估算模型保存大小 估算模型在训练时占用显存的大小 全量参数训练 PEFT训练 估算模型在推理时占用显存的大小 总结 对于NLP领域的从业者和研究人员来说&#xff0c;有没有遇到过这样一个场景&#xff0c;你的…