操作系统
目录
- 个人经历
- 为什么要学操作系统
个人经历
如果我说是个人兴趣,不知道有没有相信
我最开始接触的是修电脑活动,简单的就是用一个装机大白菜为每一个开不了机的电脑重装系统。然后我接触单片机,通过单片机控制一切。然后是arduino、树莓派到linux。逐渐的好奇操作系统是一些什么代码。
- 硬件
如果做一个硬件玩具:
- 了解每个元器件的输入输出,我们可以组合这些元器件画出电路图。例如,每个学电子的学生都一定画过流水灯电路图。(当然必要时需要仿真)
- 电路图打印到铜板上,然后用酸去腐蚀铜板就做成有电路图的电路板。简单的理解就是用铜丝布线。
- 然后再在电路板上,将元器件焊上。就可以得到一个你想要的玩具了,相应的输入就有对应的输出。例如,开关打开,流水灯就开始亮。
- 单片机软件
如果硬件玩具只能有一种功能,打开开关然后灯亮,就太没有意思了。所以我开始捣鼓单片机开发板。
- 单片机是什么
冯诺依曼结构即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)
。
简单的说,我们构建了一个电路板,他有很多输入(指令很多)以及输出。这样,硬件玩具就提供了许多硬件功能可以有软件去控制使用。再简单的说,单片机就是一个低能力的PC。
先当与一个CPU+闪存+输入+输出=单片机
- 怎么使用
我们先在闪存里存好一个固定的程序,CPU会从闪存代码起始地方(51单片机会从0地址)开始执行指令并且是一个while循环。指令会有相应的输出来达到想要的效果。
总结一下:我们硬件相当于一个可以任意操作的平台,我们想要输出什么效果,需要按照硬件接口写一个相应的程序,并且将程序烧录到单片机的闪存。单片机上电重启后运行闪存代码输出相应的效果。
- 操作系统软件
单片机的所有任务都是先烧录再运行,也就是说功能写死后就会一直执行直到闪存被重新烧录新的程序。这个就好比一台洗衣机的单片机只有一个程序就是按相应的按钮然后执行,洗衣机即使可以当作烘干几,但是程序写死了改不了了。
- 为什么需要操作系统
计算机裸机可以跑一个的程序,可是如果我想跑很多程序呢?如果我想同时跑很多程序呢并且不会产生资源抢占冲突?如果我多个程序同时运行如何保证每一个程序都完整的运行?如果我想开发一个程序可以在不同厂商的计算机运行?
计算机就是为了解决上述等等问题的,充分利用计算机硬件资源,让一个小小的冯诺依曼架构的计算机就可以同时做许多许多事情。
- 一个简单的类比
无操作系统 | 有操作系统 |
---|---|
无 | 多个程序软件 |
程序软件 | 操作系统软件 |
硬件裸机 | 硬件裸机 |
(1)我在家的一天:烧水、做饭、洗衣服、看电视剧、工作
(2)这每一项任务我都可以单独做做完一个在做下一个,先烧水、洗衣服、工作、做饭、看电视剧
(3)然后我请了一个管家来安排我一天,它规定我:先洗衣服,在等待完成的同时工作,然后烧水和做饭一起,最后是看电视剧。从此我可以并行处理很多任务。
这个管家就是我的操作系统,他其实也是一个程序。在裸机上跑一个管理任务的程序,来提高资源利用率和硬件资源能力。当然操作系统的能力远不止这些。
大家可以看一看:
https://blog.csdn.net/tennysonsky/article/details/79537604
为什么手写操作系统
广告:我前一篇文章是电脑的发展历史,有兴趣的大家可以阅读一下。
- 为什么要学操作系统
操作系统就是一个管理软件:向下管理资源,向上为其他程序提供服务。
首先,我们知道操作系统是所有软件的基础,所有上层软件都要依赖于操作系统提供的各种机制,才能运行。所以不论你做前端、后端、运维、测试还是嵌入式开发,你开发的程序一定是建立在操作系统之上的。你只有了解操作系统,你才能明白我要开发的软件的输出是什么,以及输出出错有可能因为什么。
这也是我学习的思路,自底向上,硬件、操作系统最后软件开发。这样一个宏观认识会给自己构建一个知识体系树,明白我到底在学什么,我学的东西到底有什么用。
- 为什么要手写操作系统
操作系统这门课是计算机专业学生必修课,很可惜的是老师们大多都是照本宣科,我们除了记住了一些概念其他的都不了解。理论只有和实践结合才能学的深刻变成自己的知识。
当我第一次接触到手写一个简单的操作系统时就很兴奋,有一种解密的感觉。一点一点的去理解进程管理、内存管理和IO管理等等这种课本知识。
戛然而止
下期预告:课本中的操作系统,以及这个系列笔记的安排。