当前位置: 首页 > news >正文

想自学写个操作系统,有哪些推荐看的书籍?

前言

哈喽,我是子牙,一个很卷的硬核男人。喜欢研究底层,聚焦做那些大家想学没地方学的课程:手写操作系统、手写虚拟机、手写编程语言…

今天我们将站在一个自学者的角度来聊聊如何实现自己的操作系统。并为大家推荐几本能够帮助你巩固知识,修炼内功的书籍,这些书籍涵盖了操作系统的核心概念、设计原理和实践技巧。如果你能够啃得下来,对于你的技术提升绝对是一个质的飞跃。

同时我也为大家整理好了这些电子书的下载地址,以及开发操作系统的环境搭建打包文件,都一同贴在了文章末尾,希望能够帮助到梦想实现自己操作系统的技术人。(声明:分享只为学习交流,请勿用于商业用途)

我的学习心得

在此之前我想先聊下自己的学习经历与心得。当初为什么学底层?因为我深知自己短板,学历不行,所以就必须要在技术上碾压别人,才能在圈子内立足。

但是底层学起来确实难,而且有时候遇到问题,网上根本找不到答案。现在如此,就更别提十年前的互联网环境了,连分享技术的博客都很少。

在自己的不断的自学摸索过程中,走了很多弯路,费时又费力!所以最后还是选择了报班学习,我的老师就是红手指的首席科学家唐老师,前瑞星杀毒的技术专家,虚拟化领域的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通过扩展元素符...&#xff0c;好比 rest 参数的逆运算&#xff0c;将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5[...document.querySelectorAll(div)] // [<div>, …...

【算法】动态规划

一、基础知识 动态规划的基本思想&#xff1a;将待求解问题分解成若干个子问题&#xff0c;如果各个子问题不是独立的&#xff0c;不同的子问题的个数只是多项式量级&#xff0c;为避免大量的重复计算&#xff0c;用一个表记录所有已解决的子问题的答案&#xff0c;而在需要的…...

HNOI2014 世界树

洛谷P3233 [HNOI2014]世界树 题目大意 有一棵 n n n个点的树&#xff0c;每个点有一个编号&#xff0c;有 q q q次操作。对于每次操作&#xff0c;给出 m m m个点并称为议事点&#xff0c;树上各个点由离这个点最近的议事点管理&#xff08;如果有多个议事点离这个点最近&…...

在MyBatis XML文件中处理特殊符号的方法,如“>”、“<”、“>=”、“<=”这些符号XML会报错如何处理

前言 在MyBatis的XML映射文件中&#xff0c;我们经常需要使用特殊符号&#xff0c;比如"大于"、"小于"、"大于等于"、"小于等于"等比较操作符。然而&#xff0c;这些符号在XML中具有特殊的含义&#xff0c;因此需要进行特殊处理&…...

第三章--第一篇:什么是对话系统?

对话系统是一种人机交互的技术,旨在使计算机能够与人类进行自然而流畅的对话。它是人工智能领域的重要研究方向,具有重要的实际应用价值和广泛的普适性。 首先,对话系统的重要性在于它可以提供高效便捷的人机交互方式。传统的人机界面,如图形用户界面(GUI)和命令行界面(…...

项目基础搭建

一、项目创建 1.下载并安装nodejs 下载完成后&#xff0c;查看node版本 winR 快捷键&#xff0c;cmd确定&#xff0c;进入后台黑框 node -v查看npm安装路径 npm root -g安装cnpm镜像 npm install -g cnpm --registryhttps://registry.npm.taobao.org&#xff1a;查看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&#xff0c;出现正在配置您的系统&#xff0c;这可能需要一些时间&#xff0c;然后就出现卡住半个小时第二行的条都没有动的问题&#xff0c;这里提供vs2015以及以前版本的卸载方式 问题产生原因:他需要下载一些东西&#xff0c;然后由于你懂的网络原因…...

JavaScript如何声明和定义函数

JavaScript是一门非常有趣的编程语言&#xff0c;它可以让我们创建各种各样的函数来解决各种各样的问题。在JavaScript中&#xff0c;函数的声明和定义非常重要&#xff0c;因为它们决定了函数的行为和执行过程。 首先&#xff0c;让我们来看看JavaScript中函数的声明。在Java…...

OpenClaw定时任务管理:千问3.5-27B实现智能闹钟与提醒

OpenClaw定时任务管理&#xff1a;千问3.5-27B实现智能闹钟与提醒 1. 为什么需要智能化的定时任务 上个月我差点错过一个重要会议——虽然设置了手机提醒&#xff0c;但当天临时调整的议程让原定时间完全失效。这种"静态闹钟失效"的痛点&#xff0c;促使我尝试用Op…...

mutt-wizard疑难排解终极指南:常见错误与解决方案完全清单

mutt-wizard疑难排解终极指南&#xff1a;常见错误与解决方案完全清单 【免费下载链接】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函数中定义一个对象&#xff1a; const auto aps sp<AudioPolicyService>::make();2.执行构造函数并mCreateAudioPolicyManager(createAudioPolicyManager)进行初始化fra…...

需求用例的写法

一、为什么写需求用例 流程图为需求用例提供了关键路径&#xff0c;而需求用例则是对业务场景的全面还原。本文将从以下四个方面阐述用例的信息&#xff1a; 用例的定义用例的粒度用例的例子用例的关键点解释 我写需求文档有几大准则&#xff0c;是需要时刻铭记和实践的&…...

AccelStepper:Arduino步进电机精准控制与多轴协同解决方案

AccelStepper&#xff1a;Arduino步进电机精准控制与多轴协同解决方案 【免费下载链接】AccelStepper Fork of AccelStepper 项目地址: https://gitcode.com/gh_mirrors/acc/AccelStepper 在自动化控制领域&#xff0c;步进电机的精准驱动是实现精密运动的核心。AccelSt…...

sguard_limit终极指南:轻松限制腾讯游戏ACE-Guard系统资源占用,提升游戏性能

sguard_limit终极指南&#xff1a;轻松限制腾讯游戏ACE-Guard系统资源占用&#xff0c;提升游戏性能 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源&#xff0c;支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是…...

Scikit-learn怎么实现协同过滤推荐_利用NearestNeighbors找相似用户

NearestNeighbors 不能直接做协同过滤&#xff0c;它仅是最近邻搜索工具&#xff1b;需手动构建用户向量、标准化、选择余弦距离&#xff0c;并基于相似用户加权聚合推荐&#xff0c;无现成User-Based CF实现。NearestNeighbors 能直接做协同过滤吗&#xff1f;不能。它只是找最…...

Windows Defender Remover终极指南:彻底释放系统性能的3种方法

Windows Defender Remover终极指南&#xff1a;彻底释放系统性能的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数据分析报告&#xff1a;5个高级搜索聚合技巧 【免费下载链接】tweepy Twitter for Python! 项目地址: https://gitcode.com/gh_mirrors/tw/tweepy Tweepy是Python中最流行的Twitter API客户端库&#xff0c;让开发者能够轻松访问Twitter…...

突破硬件限制的游戏自由:Sunshine串流方案让低配设备玩转3A大作

突破硬件限制的游戏自由&#xff1a;Sunshine串流方案让低配设备玩转3A大作 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c…...