首先拿起身边的一只笔。
随便在纸上写上十四个打字:一个超级简单的嵌入式操作系统。
结束了:
![f6e47c55bd3b992b2f098ada97e5a97c.png](https://i-blog.csdnimg.cn/blog_migrate/fb28250db650cad8adc131650d2188d9.png)
好了,正经点。说回正题,如果你决定要自己在你面前的开发板上写一个完全属于自己的操作系统,需要了解哪一些知识?
首先,什么是操作系统?通俗一点来说就是操作系统做了哪些事情。操作系统能够使原本只能顺序执行的程序获得类似并行运行的能力,增加系统的可维护性,同时可以提高系统的稳定性和可靠性。一个较为完整的操作系统主要有一下几大功能:
- 进程管理,又或者叫线程或者任务管理、要解决任务的调度、 优先级和回收等问题 。
- 存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。
- 设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。
- 文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
了解完功能,再来看看使用的工具:编程语言
作为一定要和硬件底层打交道的操作系统,首选几乎确定了是C语言,关键的问题是C语言够了吗?答案是:不够!
任务管理涉及到的一个最核心的问题,任务的切换,C语言完成不了。为什么?因为任务切换涉及到一个关键操作:上下文切换。这个操作必须由汇编语言完成,所以完成一个哪怕最简单的操作系统也必须要通过汇编。
这个操作涉及到一组特殊寄存器的操作,根据不同芯片不同架构各种芯片各不相同。
PS0:记性好的同学应该能想起C51单片机中的4组R0寄存器,SP寄存器以及PC寄存器。