首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

硬件是如何通过内核完成操作系统的?

早期想让电脑执行程序就要参考一堆硬件功能函数,并且学习机器语言才能够编写程序。同时每次编写程序时都必须重新改写,因为硬件功能与软件功能不见得都能一致,如果我们能够将所有硬件都能驱动,并且提供一个软件的参考接口来给工程师开发的话,那开发软件不就变得非常简单了吗?这就是操作系统。

操作系统

操作系统内核

操作系统(OS)其实也是一组程序,这组程序的重点在于管理电脑的所以活动及驱动系统中的所有硬件。我们刚刚谈到电脑没有软件就是一堆废铁,那么操作系统的功能就是让CPU可以开始判断逻辑与运算数据,让内存可以开始加载或读出数据与程序代码,让硬盘可以被存取,让网卡可以传输数据,让所有外置设备开一开始运转等。总之,硬件的所有操作都必须通过操作系统来实现。

电脑硬件

上诉的功能就是操作系统的内核来完成的。你的电脑能不能做到一些事情,都与内核有关只有内核提供的功能,你的电脑系统才能帮你完成。举例来说,如果你的内核并不支持TCP/IP的网络协议,那么无论你购买了什么样的网卡,这个内核都无法提供网络功能。

网络协议

但是单有内核我们用户也不知道能做什么事情,因为内核主要是在管理硬件与提供给相关的功能(例如读写硬盘、网络功能、CPU、资源分配),这些管理的操作都非常重要,如果用户能够直接使用内核的话,万一用户不小心将内核程序停止或破坏,将会导致整个系统的坏掉。因此内核程序放置到内存当中的区块是受保护的,并且启动后就一直常驻在内存当中。

CPU

系统调用

既然硬件都是用内核管理的,那么如果我想要开发软件的话,自然就要去参考这个内核的相关功能。如此一来不是从原本的参考硬件函数变成参考内核功能,还是很麻烦,有没有简单的方法?

为了解决这个问题,操作系统通常会提供一套程序编程接口(API)给程序员来开发软件,工程师只要按照API就很容易开发出软件了。举例来说,我们学习java语言只要参考java语言的函数即可,不需要再去考虑其他内核的相关功能,因为内核的系统调用接口会主动地将java语言的相关语法转成内核可以了解的任务函数,那内核自然就能够顺利运行该程序。

API接口

如果我们将整个代电脑系统的相关软件或硬件绘制成图的话,它的关系有点像

电脑系统主要由硬件构成,然后内核程序主要是在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存资源等),因此只有硬件不同(如X86架构与RISC架构的CPU),内核就得要修改才行。而由于内核只会进行电脑系统的资源分配,所有在上面还需要由应用程序的提供,用户才能够使用系统。

操作系统的角色

为了保护内核,并且能让程序员比较容易开发软件,操作系统除了内核程序之外,通常还会提供一套API,那就是系统调用层,程序员只要按照公认的系统调用参数来开发软件,该软件就能够在该内核 上运行。所以你可以发现,软件与内核有很大的关系,与硬件则不大,硬件与内核有比较大的关系,至于与用户有关的就是应用程序。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200212A0OES300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券