手写简易操作系统(一)--环境配置

本专栏是我新开设的一个学术专栏,旨在全面介绍手写操作系统的相关内容。其中包括实模式向保护模式的过渡、锁机制、信号量操作、内存分配、硬盘驱动、文件系统、简单shell和管道等操作系统核心知识。该专栏旨在为有意开发自己操作系统的研究人员提供指导与帮助。作为作者,我也是首次深入探索操作系统领域,但我将尽力确保文章质量的高水平。

操作系统的编写已经基本完成,参考了一些书籍和网站的资料。接下来的两三个月,我计划将这些内容进行整理。通过整理,一方面巩固自己的学习成果,另一方面尝试在现有代码的基础上进行增量开发,以实现个人对操作系统的独到理解。

总体而言,代码量并不算太大,大约六七千行,主要使用汇编语言和C语言编写。今天我将开始着手配置环境,这是万里长征第一步。

一、配置虚拟机

虚拟机可以使用 VMware 或者 VirtualBox,我只用过这两个。我这里用的是 VMware ,但是很不幸,这个软件的pro版本是收费的,只有社区版本在非商业环境下是免费的。为了免费,所以这里我们安装 VMware Workstation Player。

下载选择 for windows,安装就是一路确定就可以了,这里我们只给一个下载链接

https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-player/workstation-player-evaluation.html.html

image-20240308210917901

二、安装ubuntu2022

2.1、下载ISO镜像

首先需要下载ISO镜像,其下载地址为

https://cn.ubuntu.com/download/desktop

image-20240308211324459

2.2、安装系统

打开之前的VMware,选择创建新的虚拟机

image-20240308211908197

选择光盘映像文件的地址,也就是刚刚的ISO

image-20240308212218534

设置用户名和密码

image-20240308212258795

设置自己的虚拟机的名称和位置,我直接放在了C盘,因为我的C盘很大,哈哈哈

image-20240308212413249

磁盘我们这里给了40个G,看自己的电脑情况

image-20240308212453821

完成了

image-20240308212524548

然后就等待他自己安装,安装完就可以看到下面的登录页面

image-20240308213611681

登录进去就得到了如下的系统

image-20240308213835719

三、安装Bochs

Bochs 主要用于模拟 x86 架构的计算机系统,其实类似的模拟软件还有QEMU,这里我们选择了Bochs,原因是我在学习这部分的时候使用了Bochs,如果你对QEMU比较熟悉的话当然可以用自己熟悉的那个,

Bochs 的下载地址

https://sourceforge.net/projects/bochs/

image-20240308213449286

下载好的是一个rpm包,所以我们需要先安装解压工具7-zip

sudo apt-get install p7zip-full

然后到下载目录解压rpm包

cd ~/Downloads
7z e bochs-2.7-1.x86_64.rpm
cpio -idm < bochs-2.7-1.x86_64.cpio 

将解压缩出来的文件放入家目录,并给他取个名字 bochs

mv ~/Downloads/usr ~/bochs

然后我们这部分就做好了

四、安装VSCODE

这部分是我们的编辑器,这个就看大家需求了,用Vim,甚至gedit只要是能敲字母的都可以

Vscode的官网

https://code.visualstudio.com/

image-20240308215943511

记得下载deb格式,然后安装,这里需要管理员权限

sudo dpkg -i code_1.87.1-1709685762_amd64.deb 

五、安装搜狗输入法

安装输入法是为了我们方便在代码上做注释

搜狗输入法的官方下载地址 https://shurufa.sogou.com/linux

这里有官方的安装指南 https://shurufa.sogou.com/linux/guide

我们就不在介绍了

六、安装编译器

我们选择的C语言编译器是gcc,选择的汇编编译器是nasm

# 安装gcc
sudo apt-get install gcc
# 安装一些套件
sudo apt install build-essential
# 安装nasm
sudo apt-get install nasm

结束语

好了第一节已经结束了,我们前期需要的准备工作也就做完了,下个博客才有代码编写,希望可以早点更出下个博客

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

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

相关文章

昏暗场景增强-低照度增强-弱光增强(附代码)

引言 随着现代科技的发展&#xff0c;图像采集设备已经渗透到生活的方方面面&#xff0c;然而在昏暗场景、低照度或弱光条件下&#xff0c;图像的质量往往受到严重影响&#xff0c;表现为亮度不足、对比度低下、色彩失真以及细节丢失等问题。这类图像对于人眼识别和计算机视觉…

【NR技术】 3GPP支持无人机的关键技术以及场景

1 背景 人们对使用蜂窝连接来支持无人机系统(UAS)的兴趣浓厚&#xff0c;3GPP生态系统为UAS的运行提供了极好的好处。无处不在的覆盖范围、高可靠性和QoS、强大的安全性和无缝移动性是支持UAS指挥和控制功能的关键因素。与此同时&#xff0c;监管机构正在调查安全和性能标准以及…

C++进阶之路---继承(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、继承与友元 友元关系不能继承&#xff0c;也就是说基类友元不能访问子类私有和保护成员。 class Student; class Per…

leetcode 热题 100_除自身以外数组的乘积

题解一&#xff1a; 前缀 / 后缀数组&#xff1a;某元素除自身以外的乘积&#xff0c;也就是其全部前缀元素乘积 * 全部后缀元素乘积&#xff0c;因此我们可以构造前缀数组和后缀数组&#xff0c;分别存储前i个元素的成绩和后i个元素的乘积&#xff0c;再将i-1前缀乘积 * i1后缀…

SpringBoot整合Redis实现分布式锁

SpringBoot整合Redis实现分布式锁 分布式系统为什么要使用分布式锁&#xff1f; 首先&#xff0c;分布式系统是由多个独立节点组成的&#xff0c;这些节点可能运行在不同的物理或虚拟机器上&#xff0c;它们通过网络进行通信和协作。在这样的环境中&#xff0c;多个节点可能同…

Java数组常用操作

创建数组 int[] a {1,2,3};int[] a new int[]{1,2,3};int[] a new int[3];ArrayList<Integer> arr new ArrayList<>(); 添加元素 arr.add(99); //将99加入到数组末尾arr.add(3,99); //将99加入到指定索引3处访问元素 int c1 c[1]; int arr1 arr.get(1); …

方阵的特征值与特征向量

目录 特征值 & 特征向量 相关性质 特征值 & 特征向量 相关性质

BlackHole

BlackHole 文章目录 BlackHole一、关于 BlackHole功能描述 二、安装、卸载安装方式一&#xff1a;下载安装器方式二&#xff1a;使用 Homebrew 安装 卸载方式一&#xff1a;使用卸载器方式二&#xff1a;手动卸载 三、用户使用指南1、Logic Pro X2、GarageBand3、Reaper4、录制…

MRI基础--k空间

k空间定义 k空间是表示 MR 图像中空间频率的数字数组。 k空间物理意义 k 空间的单元通常显示在主轴 kx 和 ky 的矩形网格上。 k 空间的 kx 和 ky 轴对应于图像的水平 (x) 和垂直 (y) 轴。然而,k 轴表示 x 和 y 方向上的空间频率而不是位置。 k 空间中的各个点 (kx,ky) 与图像…

聊一聊日常开发中如何优雅的避免那无处不在的空指针异常

在Java编程语言中&#xff0c;NullPointerException&#xff08;简称NPE&#xff09;是一种常见的运行时异常&#xff0c;当程序试图访问或操作一个还未初始化&#xff08;即值为null&#xff09;的对象引用时&#xff0c;Java虚拟机就会抛出NullPointerException。如果我们在日…

【技术】基于Github Pages搭建个人博客静态网页

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 文章目录 一、技术基础二、新建特殊仓库三、上传网页文件四、Github Pages设置 个人网页作为仅服务个人的网页&#xff0c;一…

【打工日常】使用docker部署IT运维管理平台CAT

​一、CAT介绍 CAT是一个专为 IT 运维从业者打造的一站式解决方案平台&#xff0c;包含资产管理、工单、工作流、仓储等功能模块。 本项目是celaraze/chemex重构版&#xff0c;原项目chemex名称弃用&#xff1b;CAT采用全新架构设计&#xff0c;大量提升使用体验的细节&#xf…

Trie巧妙解决前后缀问题,3045. 统计前后缀下标对 II

目录 一、题目 1、题目描述 2、接口描述 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 ​Python3 c 一、题目 1、题目描述 给你一个下标从 0 开始的字符串数组 words 。 定义一个 布尔 函数 isPrefixAndSuffix &#xff0c;它接受两个字符串参数 str…

JavaWeb笔记 --- 二、Maven

二、Maven Maven概述 所有的IDE创建的Maven项目都可以使用 Maven简介 Maven模型 Maven常用命令 Maven生命周期 Maven坐标 依赖管理 dpendencies&#xff1a;依赖 依赖范围

java-ssm-jsp-大学生互动交流网站设计与实现

java-ssm-jsp-大学生互动交流网站设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

STM32基础--构建自己的固件库

CMSIS 标准及库层次关系 因为基于 Cortex 系列芯片采用的内核都是相同的&#xff0c;区别主要为核外的片上外设的差异&#xff0c;这些差异却导致软件在同内核&#xff0c;不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件的兼容性问题&#xff0…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:DatePicker)

日期选择器组件&#xff0c;用于根据指定日期范围创建日期滑动选择器。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 DatePicker(options?: DatePickerOptions) 根据指定范…

java及特性的简单介绍

简介&#xff1a; 印度尼西亚有一个盛产咖啡的岛屿java&#xff0c;中文名翻译为爪哇&#xff0c;给这种新语言起码java 寓意端上一杯热咖啡。 特性&#xff1a; 1.面向对象 2.与平台无关 3.稳定安全 4.多线程 面向对象 1.面向对象语言关注的是对象&#xff0c;而不关注过程 2…

Redis缓存穿透-缓存雪崩-缓存击穿

什么叫缓存穿透? 模拟一个场景: 前端用户发送请求获取数据,后端首先会在缓存Redis中查询,如果能查到数据,则直接返回.如果缓存中查不到数据,则要去数据库查询,如果数据库有,将数据保存到Redis缓存中并且返回用户数据.如果数据库没有则返回null; 这个缓存穿透的问题就是这个…

linux安装todesk

xunilToDesk远程桌面软件-免费安全流畅的远程连接电脑手机ToDesk远程控制软件是一款稳定流畅的远程控制电脑手机连接软件,可远程桌面办公,远程协助运维.采用端对端加密,让每一次远程访问都安全可靠。https://www.todesk.com/linux.htmlToDesk远程控制软件是一款稳定流畅的远程控…