编写操作系统需要的知识(接上一篇)

鉴于操作系统v是与硬件设备紧密相连的软件程序,所以操作系统自然会涉及到软件和硬件两个方面

1.硬件方面 

首先,我们要根据硬件电路处理器与外围设备的电路组成,通俗一点说,就是处理器设备是怎么连接的。当掌握电路组成后,进而知道处理器如何控制外围设备,以及采用何种方式与它们通信。对于ARM这类片上系统而言,它们与外围设备的连接的方法非常灵活,所以这部分内容必须要掌握;而通用的PC平台的操作系统,对硬件电路的掌握要求比较宽松。

其次,既然清楚了硬件电路的连接,下一步就是阅读这些硬件特性,通信方式,芯片内部的寄存器功能,以及控制寄存器的方法。不管何种硬件平台,硬件硬件设备的芯片手册都同等重要,不了解这部分内容也就无法与硬件通信。一般情况下,操作系统开发人员会更关注处理器如何与这些硬件设备通信,如何控制他们的寄存器状态,而硬件工程师则会更关注芯片的工作环境,温度,工作电压,额定功率等硬件特性指标。

所以在硬件方面,掌握硬件电路、处理器和外围设备的芯片手册即可。其中,处理器芯片手册会介绍如何初始化处理器、如何切换处理器工作模式等一系列操作处理器的信息与方法,这些知识为操作系统运行提供技术指导。硬件芯片手册会对设备上的所有寄存器功能进行描述,我们根据这些寄存器功能方可编写出驱动程序。

2.软件方面

至于软件方面,只要熟练运用汇编语言和C语言就足够编写操作系统了。汇编语言主要用于控制和配置处理器,例如引导启动处理器、配置处理器运行状态、进程切换、中断和异常处理程序、设备I/O端口操作等必须操作寄存器的工作,或者是对性能要求极为苛刻的场景,这些工作C语言几乎无法实现。C语言是编写操作系统的主要开发语言,它以简单、高效、使用灵活等特性深受底层开发人员的喜爱。而且,它在内嵌汇编语言以及与汇编语言的相互调用方面都表现得非常自然,只要遵循C语言的标准方法就能实现这些功能。除了熟练使用开发语言之外,操作系统作为所有资源的管理者,一些灵活高效的算法也是必不可少的。从基础的链表结构,到树状结构,再到图状结构,操作系统会根据不同的应用场景有选择地使用它们。此外,一些灵活的编程技巧也必不可少。像内核异常处理程序的错误对照表,其原理是在程序容易出错的地方提前写出错误处理函数,并将出错地址和处理地址记录在错误对照表内。当错误发生时处理器会自动捕获错误地址,操作系统会从错误对照表里检索出对应的处理地址,并加以执行。这个过程必须借助链接脚本巧妙设计地址空间,才能组建错误处理对照表。

综上所述,编写一个操作系统必备的知识并不多,只需掌握汇编语言和C语言,能够看懂硬件电路图和硬件芯片手册即可。如果期望操作系统运行得又快又稳,那么还需要在兼顾空间开销和性能损耗的同时适当使用高效算法。所以,编写一个操作系统不难,难的是通过巧妙的方法让它运行得更高效、更人性化。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客云曦

你的鼓励就是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值