前言

有人说程序员的三大浪漫分别是编译原理、操作系统和计算机网络

在之前完成了一两个小软件和网站后遇见了编译原理,也不知道为什么就傻傻的学,还写了一个从零写编译器的系列学习笔记,不过都是小打小闹,只能算作摸到了一点点入门的门槛。再后来想深入学习的时候,因为暑假在家很多书买来的话再带去学校很麻烦,就索性找了一本操作系统的书,也不懂原理就撸了一个玩具型的操作系统

几句感概

在身边同学都在埋头在各种Web方向,做出各种酷炫的东西,也深深觉得自己Web方向的技术栈太浅浅,之前利用React全家桶+Electron和node做后台的一个聊天软件,以现在来看略显幼稚,另外的Java虽然是我的第二门语言可是到现在也不算上得台面。下学期就大三了,越临近就业就越焦虑,下学期可能会更侧重应用方向吧。

写这个系列的原因

因为跟着书上撸的操作系统属于小的玩具型的操作系统,所以很多涉及到操作系统比较深入的原理都没有进行学习,所以这个系列想作为自己学习操作系统的记录,也就是对原理性的学习和结合实现一个玩具型的操作系统

FragileOS

FragileOS就是之前实现的一个玩具型操作系统,之前叫这个名字是因为它真的很Fragile,代码结构不好,功能不多,原型基本是来自别人的(后面会提到)

代码在github上已经分享出来了:FragileOS

主要界面

正式开始

这个学习笔记可能用到的有四本书:

  • 《x86汇编语言:从实模式到保护模式》
  • 《操作系统:精髓与设计原理》
  • 《OrangeS:一个操作系统的实现》
  • 《30天自制操作系统》

第一本和第三本第四本在之前实现那个玩具型操作系统起了很大的作用,但是第三本只看了一点,第二本则是根据别人的推荐来的。所以战线很长很长,希望能坚持下来

环境准备

  • VirtualBox 6.0

    一个开源的虚拟机,开发的操作系统就运行在这之上

  • GCC 8.1.0
  • NASM 2.07

    汇编器

  • objconv

    反汇编器

希望能够坚持下去吧

转载于:https://www.cnblogs.com/secoding/p/11402948.html

我是如何学习写一个操作系统(一):开篇相关推荐

  1. 我是如何学习写一个操作系统(完结):总结和系列索引

    前言 从一开始的引导程序到现在的文件系统已经有十篇了,算是自己对操作系统的学习的一个笔记,原本是想结合自己之前写的玩具操作系统FragileOS,但是之后就转到了结合Linux 0.11的代码去写这个 ...

  2. 我是如何学习写一个操作系统(五):故事的高潮之进程和线程1

    前言 为什么取这个标题呢?一是进程和线程是作为操作系统里最重要最核心的一部分.二是确实吃冰棍拉冰棍,没话,强行凑标题和之前的标题差不多字数. 前一章写了系统调用的过程,算是一个小插曲,这个部分不管在哪 ...

  3. 我是如何学习写一个操作系统(四):操作系统之系统调用

    前言 最近有点事情,马上要开学了,所以学习的脚步就慢下来了.这一篇主要是来说操作系统的系统调用的,像C语言的printf深入到内部就是一个有关屏幕输出的系统调用 什么是系统调用 之前提过操作系统是对硬 ...

  4. 我是如何学习写一个操作系统(二):操作系统的启动之Bootloader

    前言 今天本来的任务看书和把之前写的FragileOS整理一下,但是到现在还在摸鱼,书也只看一点.后来整理了一下写这个系列的思路,原本的目的是对操作系统原理性的学习和对之前写的一个玩具型操作系统的回顾 ...

  5. 我是如何学习写一个操作系统(九):文件系统

    前言 这个应该是这个系列的尾声了,一个完整的操作系统可能最主要的也就是分成这几大模块:进程管理.内存管理和文件系统.计算机以进程为基本单位进行资源的调度和分配:而与用户的交互,基本单位则是文件 生磁盘 ...

  6. 我是如何学习写一个操作系统(八):内存管理和段页机制

    前言 多进程和内存管理是紧密相连的两个模块,因为运行进程也就是从内存中取指执行,创建进程首先要将程序和数据装入内存.将用户原程序变成可在内存中执行的程序,而这就涉及到了内存管理. 内存的装入 绝对装入 ...

  7. 我是如何学习写一个操作系统(七):进程的同步与信号量

    前言 在多进程的运行环境下,进程是并发执行的,不同进程间存在着不同的相互制约关系.为了协调进程之间的相互制约关系,达到资源共享和进程协作,避免进程之间的冲突,引入了进程同步的概念. 临界资源 多个进程 ...

  8. 我是如何学习写一个操作系统(三):操作系统的启动之保护模式

    前言 上一篇其实已经说完了boot的大致工作,但是Linux在最后进入操作系统之前还有一些操作,比如进入保护模式.在我自己的FragileOS里进入保护模式是在引导程序结束后完成的. 实模式到保护模式 ...

  9. 我是如何学习写一个操作系统(六):进程的调度

    前言 既然引进了多进程,其实也就是在进程之间来回切换,那么就会有进程之间的调度问题.实则是在可运行进程之间分配有限的处理器时间资源的内核子系统. 几个简单的CPU调度算法 First Come, Fi ...

最新文章

  1. 转载:Ununtu下中文乱码解决方案
  2. MyBatis框架学习:<select>节点中的resultType和resultMap属性
  3. pepflashplayer32_25_0_0_127.dll: 0x59952C6D is not a valid instance ID.
  4. glide 显示图片慢_做个看图片的App玩玩_第一篇
  5. 设计模式之_Iterator_02
  6. 中国电信天翼云进入4.0阶段 打造一朵无处不在的分布式云
  7. bzoj千题计划152:bzoj3405: [Usaco2009 Open]Grazing2 移动牛棚
  8. [leetcode] Nim Game
  9. EtherCAT:wireshark抓包分析
  10. 小米mini路由器刷固件
  11. scara工业机器人外观_SCARA工业机器人研究现状
  12. 计算机自我鉴定高中生200字,精编高中生自我鉴定200字左右3篇 高中自我鉴定200字...
  13. 用Python复现机器学习中12种经典降维算法
  14. C#实现多人语音聊天
  15. 十年风雨,一个普通程序员的成长之路(三)铜陵:大雪与加班
  16. 企业微信批量导入用户
  17. 试题 算法提高 陶陶摘苹果
  18. 全铝合金家居零甲醛家具展示
  19. LEFT JOIN条件在on后面和在where后面的区别
  20. 香港金曲奖分析(1983-2017 by SIRMAN)

热门文章

  1. html / css学习笔记-1
  2. Tornado,了解一下
  3. Yii2的MVC新特性
  4. 提示 launch failed
  5. SQL语句大全(2)
  6. 互联网安全前景乐观,安全问题不会成为影响互联网应用的障碍
  7. 电脑高手常用的5个按钮
  8. Java程序优化之享元模式
  9. yarn界面杀死application
  10. Cannot resolve method addSource