想自学写个操作系统,有哪些推荐看的书籍?
前言
哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…
今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你巩固知识,修炼内功的书籍,这些书籍涵盖了操作系统的核心概念、设计原理和实践技巧。如果你能够啃得下来,对于你的技术提升绝对是一个质的飞跃。
同时我也为大家整理好了这些电子书的下载地址,以及开发操作系统的环境搭建打包文件,都一同贴在了文章末尾,希望能够帮助到梦想实现自己操作系统的技术人。(声明:分享只为学习交流,请勿用于商业用途)
我的学习心得
在此之前我想先聊下自己的学习经历与心得。当初为什么学底层?因为我深知自己短板,学历不行,所以就必须要在技术上碾压别人,才能在圈子内立足。
但是底层学起来确实难,而且有时候遇到问题,网上根本找不到答案。现在如此,就更别提十年前的互联网环境了,连分享技术的博客都很少。
在自己的不断的自学摸索过程中,走了很多弯路,费时又费力!所以最后还是选择了报班学习,我的老师就是红手指的首席科学家唐老师,前瑞星杀毒的技术专家,虚拟化领域的TOP级人物。感兴趣的话也可以在网上搜一下。
我想要告诉大家的是:自学是一条孤独的勇者之路!注定长满了荆棘,如果你选择了这条路,就请不要放弃!不然中途而废,最后可能也只能在和朋友聊天的时候吹吹牛逼:当初我有想自己写个操作系统,这个想法是不是很大胆?

现如今我在行业技术圈内也算稍有成就,也走上了我的老师分享技术的道路,如果你也有和当初我一样的困境,也欢迎找我来学习。闲话就聊到这里,下面放干货,如果对你有帮助,也请记得多多点赞支持下
推荐书籍
《操作系统真象还原》(郑钢著)
这本书通过使用高级别硬件设计语言,深入讲解了操作系统的实现原理和内部机制。它涵盖了操作系统的各个组成部分,包括进程管理、内存管理和文件系统等。它将帮助您更好地理解操作系统的底层工作原理。

《操作系统概念》(Abraham Silberschatz, Peter Baer Galvin, Greg Gagne著)
这本书是操作系统学习的经典教材。它介绍了操作系统的基本概念、进程管理、内存管理、文件系统和网络等核心主题。它为初学者提供了全面的操作系统知识基础。

《深入理解计算机系统》(Randal E. Bryant, David R. O'Hallaron著)
-这本书关注计算机系统的各个层次,包括硬件、汇编语言和操作系统。它以清晰的语言和丰富的示例讲解了计算机系统的工作原理,对于理解和实践手写操作系统非常有帮助。

《操作系统:精髓与设计原理》(Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau著)
这本书深入探讨了操作系统的核心概念和设计原理。它以清晰的语言和丰富的案例说明,帮助读者理解操作系统的核心思想,并应用这些原理来设计和实现自己的操作系统。

《深入理解Linux内核》(DANIEL P BOVET & MARCO CESATI 著)
这本书详细解析了Linux内核的设计和实现。它探讨了内核的各个关键组成部分,如进程管理、内存管理、文件系统和设备驱动等。通过深入剖析Linux内核的源代码和内部机制,读者将对操作系统设计和实现有更深入的了解,并能够应用这些知识来手写操作系统。

操作系统搭建环境及使用手册
说下我的环境,也是我推荐的环境
- 开发环境操作系统:Ubuntu16
- 开发环境虚拟机:VMware最新版
- 开发工具:clion(汇编、C语言,这一款足矣)
- 运行虚拟机1:bochs2.7(用来单步调试汇编)
- 运行虚拟机2:qemu(用来单步调试C语言)
- 运行虚拟机3:VMware、vbox(打包成对应虚拟机的镜像即可运行)
如果你是Windows,推荐用这个环境。如果你是Mac,还是推荐你用这个环境。开发操作系统,用这个环境就对了

知道很多小伙伴,比较心急,就想直接上手写内核;还有的小伙伴,Linux玩得不熟,但也有一颗写操作系统的心……
综上,我把我的环境打包成了镜像,你下载过去,解压后就能直接运行起来,实现操作系统开发自由,小伙伴可以把“666”发在评论区

分享地址
以上就是针对自学的小伙伴们如何手写操作系统,整理的书籍资料以及操作系统开发环境。
最后也希望大家都能实现自己的技术梦,我们下期再见
相关文章:
想自学写个操作系统,有哪些推荐看的书籍?
前言 哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言… 今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你…...
深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7
深入理解Java虚拟机:JVM高级特性与最佳实践-总结-7 类文件结构概述无关性的基石 虚拟机类加载机制概述类加载的时机 类文件结构 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步 概述 我们写的程…...
ES6中flat与flatMap使用
1、方法介绍 数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。 [1, 2, [3, 4]].flat() // [1, 2, 3, 4]上面代码中,原数组的成员里面有一个数…...
苹果手机、电脑如何进行屏幕录制?苹果录屏功能在哪?
随着人们生活水平的提高,不少小伙伴都会选择苹果手机、苹果电脑作为主要的设备。因为使用苹果电脑进行办公,不仅仅能够提升效率,对于文件的安全性也是有一些保障的。那么,在使用苹果电脑的时候,如果需要有录屏的需求该…...
什么是研发 Lead Time?我悟了!
嗨,朋友!你听说过「新型工伤」吗? 我好像「赛博确诊」了😣 那天朋友约我吃饭,我下意识回复了句「好的,那我提一个日程」……还有上次跟一位准妈妈聊天,我好奇宝宝的预产期,结果脱口…...
android 窗口焦点介绍
背景 我们经常会遇到一种Application does not hava focused window的ANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在key事件的派发,因为key事件是需要找到一个焦点窗口然后再派发,而触摸事件只需要找到当前显示…...
研发工程师玩转Kubernetes——构建、推送自定义镜像
这几节我们都是使用microk8s学习kubernetes,于是镜像库我们也是使用它的插件——registry。 开启镜像库插件 microk8s enable registry模拟开发环境 我们使用Python作为开发语言来进行本系列的演练。 安装Python sudo apt install python3.11安装Pip3 pip3用于…...
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集 XSS(Stored)-low level源代码姿势基于Message板块基于Name板块 XSS(Stored)-medium level源代码姿势双写绕过大小写绕过Xss标签绕过 XSS(Stored)-high level源代码姿势:Xss标签绕过 XSS(S…...
VP记录:Codeforces Round 873 (Div. 2) A~D1
传送门:CF 前题提要:因为本场比赛的D题让我十分难受.刚开始以为 r − l 1 r-l1 r−l1与 r − l r-l r−l应该没什么不同.但是做的时候发现假设是 r − l 1 r-l1 r−l1的话我们可以使用线段树来维护,但是 r − l r-l r−l就让线段树维护的难度大大增加,这导致我十分烦躁,所以…...
【C++】函数提高
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行。动静不失其时,其道光明。 目录 1、缘起 2、函数默认参数 3、函数占位参数 4、总结 1、缘起 以前学习过了函数的基本用法和功能,现在是时候学习函数…...
【可持续能源:让我们迈向绿色、可持续未来的道路】
作为未来的主要能源来源,可持续能源技术确实有潜力改变我们的世界。随着全球对传统化石燃料的依赖程度逐渐降低,可再生能源已成为许多国家推进能源转型的首选。 从太阳能和风能到地热能和潮汐能,可持续能源技术已经在许多方面取得了重大突破…...
ES6中数组新增了哪些扩展?
一、扩展运算符的应用 ES6通过扩展元素符...,好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, …...
【算法】动态规划
一、基础知识 动态规划的基本思想:将待求解问题分解成若干个子问题,如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,为避免大量的重复计算,用一个表记录所有已解决的子问题的答案,而在需要的…...
HNOI2014 世界树
洛谷P3233 [HNOI2014]世界树 题目大意 有一棵 n n n个点的树,每个点有一个编号,有 q q q次操作。对于每次操作,给出 m m m个点并称为议事点,树上各个点由离这个点最近的议事点管理(如果有多个议事点离这个点最近&…...
在MyBatis XML文件中处理特殊符号的方法,如“>”、“<”、“>=”、“<=”这些符号XML会报错如何处理
前言 在MyBatis的XML映射文件中,我们经常需要使用特殊符号,比如"大于"、"小于"、"大于等于"、"小于等于"等比较操作符。然而,这些符号在XML中具有特殊的含义,因此需要进行特殊处理&…...
第三章--第一篇:什么是对话系统?
对话系统是一种人机交互的技术,旨在使计算机能够与人类进行自然而流畅的对话。它是人工智能领域的重要研究方向,具有重要的实际应用价值和广泛的普适性。 首先,对话系统的重要性在于它可以提供高效便捷的人机交互方式。传统的人机界面,如图形用户界面(GUI)和命令行界面(…...
项目基础搭建
一、项目创建 1.下载并安装nodejs 下载完成后,查看node版本 winR 快捷键,cmd确定,进入后台黑框 node -v查看npm安装路径 npm root -g安装cnpm镜像 npm install -g cnpm --registryhttps://registry.npm.taobao.org:查看npm版…...
PFCdocumentation_FISH Rules and Usage
目录 FISH Scripting FISH Rules and Usage Lines Data Types Reserved Names for Functions and Variables Scope of Variables Functions: Structure, Evaluation, and Calling Scheme Arithmetic: Expressions and Type Conversions Redefining FISH Functions Ex…...
如何完美卸载VS2015(2023年5月份实测有效)
使用控制面板卸载VS2015,出现正在配置您的系统,这可能需要一些时间,然后就出现卡住半个小时第二行的条都没有动的问题,这里提供vs2015以及以前版本的卸载方式 问题产生原因:他需要下载一些东西,然后由于你懂的网络原因…...
JavaScript如何声明和定义函数
JavaScript是一门非常有趣的编程语言,它可以让我们创建各种各样的函数来解决各种各样的问题。在JavaScript中,函数的声明和定义非常重要,因为它们决定了函数的行为和执行过程。 首先,让我们来看看JavaScript中函数的声明。在Java…...
OpenClaw定时任务管理:千问3.5-27B实现智能闹钟与提醒
OpenClaw定时任务管理:千问3.5-27B实现智能闹钟与提醒 1. 为什么需要智能化的定时任务 上个月我差点错过一个重要会议——虽然设置了手机提醒,但当天临时调整的议程让原定时间完全失效。这种"静态闹钟失效"的痛点,促使我尝试用Op…...
mutt-wizard疑难排解终极指南:常见错误与解决方案完全清单
mutt-wizard疑难排解终极指南:常见错误与解决方案完全清单 【免费下载链接】mutt-wizard A system for automatically configuring mutt and isync with a simple interface and safe passwords 项目地址: https://gitcode.com/gh_mirrors/mu/mutt-wizard mu…...
audio policy config xml解析过程
一、获取xml文件1.启动audioserviceframeworks/av/media/audioserver/main_audioserver.cpp //main函数中定义一个对象: const auto aps sp<AudioPolicyService>::make();2.执行构造函数并mCreateAudioPolicyManager(createAudioPolicyManager)进行初始化fra…...
需求用例的写法
一、为什么写需求用例 流程图为需求用例提供了关键路径,而需求用例则是对业务场景的全面还原。本文将从以下四个方面阐述用例的信息: 用例的定义用例的粒度用例的例子用例的关键点解释 我写需求文档有几大准则,是需要时刻铭记和实践的&…...
AccelStepper:Arduino步进电机精准控制与多轴协同解决方案
AccelStepper:Arduino步进电机精准控制与多轴协同解决方案 【免费下载链接】AccelStepper Fork of AccelStepper 项目地址: https://gitcode.com/gh_mirrors/acc/AccelStepper 在自动化控制领域,步进电机的精准驱动是实现精密运动的核心。AccelSt…...
sguard_limit终极指南:轻松限制腾讯游戏ACE-Guard系统资源占用,提升游戏性能
sguard_limit终极指南:轻松限制腾讯游戏ACE-Guard系统资源占用,提升游戏性能 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是…...
Scikit-learn怎么实现协同过滤推荐_利用NearestNeighbors找相似用户
NearestNeighbors 不能直接做协同过滤,它仅是最近邻搜索工具;需手动构建用户向量、标准化、选择余弦距离,并基于相似用户加权聚合推荐,无现成User-Based CF实现。NearestNeighbors 能直接做协同过滤吗?不能。它只是找最…...
Windows Defender Remover终极指南:彻底释放系统性能的3种方法
Windows Defender Remover终极指南:彻底释放系统性能的3种方法 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mir…...
如何用Tweepy构建强大的Twitter数据分析报告:5个高级搜索聚合技巧
如何用Tweepy构建强大的Twitter数据分析报告:5个高级搜索聚合技巧 【免费下载链接】tweepy Twitter for Python! 项目地址: https://gitcode.com/gh_mirrors/tw/tweepy Tweepy是Python中最流行的Twitter API客户端库,让开发者能够轻松访问Twitter…...
突破硬件限制的游戏自由:Sunshine串流方案让低配设备玩转3A大作
突破硬件限制的游戏自由:Sunshine串流方案让低配设备玩转3A大作 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,…...
