操作系统开发之路(一)

本系列博客作为开发操作系统过程中的学习笔记。在做有关硬件及仿真的实验时,我常常因为对开发环境不够了解以至于出现各类问题。为了更好的将硬件和软件联系在一起,从而能灵巧的实现一个仅通过语音等指令就可以实现比如复制、粘贴、下载文件等基本指令的AI操作系统,我决定先学习一下操作系统原理。

操作系统理论

操作系统是提供给计算机硬件的一组基本的编程指令,它们构成了计算机的大多数其他功能依赖存在的代码编程层。编程代码是操作系统的核心,称为内核(kernel)。

内核这个术语是从UNIX操作系统中演化来的。在UNIX和Linux系统中,连接内核的基本接口称为外壳(shell),用户可以在此执行命令。

内核

  1. 管理与CPU的交互。
  2. 启动、管理和调度程序处理I/O活动,包括设备和联网活动。
  3. 处理基本的计算机安全。
  4. 管理计算机的内存使用。
  5. 管理分配给程序和计算机进程的优先级。

在这里插入图片描述
通过以上指令,可以查看到当前Linux内核名称和版本。

操作系统的硬件组件

CPU

按硬件元素划分,CPU包括了以下几个重要的元素

  1. 设计类型。
  2. 速度。
  3. 缓存。
  4. 地址总线。
  5. 数据总线。
  6. 控制总线。
  7. CPU调度。

按照冯诺依曼的理论体系,计算机应该包括运算器、控制器、存储器、输入和输出设备。随着硬件的发展,在CPU上集成的功能也越来越多。反观操作系统,操作系统是直接和硬件进行对话的。从操作系统上的功能来看,它管理CPU和内存的交互,管理系统资源的使用,管理程序运行的优先级,并联通硬件的驱动程序,起到了辅助运算、控制、存储、输入和输出的作用。

接下来,以Linux操作系统为例,分析一下它的内核。

为了写这篇文章,前前后后查了很多资料和书籍,但是我并没有发现哪本教材非常详尽的记录了操作系统具体包括了哪些内容,有怎样的结构。相反,它们只是论述了操作系统的功能。所以,还是应该以Linux为例,看一下它的源码和实现。

猜你喜欢

转载自blog.csdn.net/qq_44868018/article/details/108102372