操作系统Kernel

Posted 杨秉学的小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统Kernel相关的知识,希望对你有一定的参考价值。

什么是操作系统

操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动系统中的所有硬件。


操作系统核心

计算机如果没有软件只是一堆废铁,那么操作系统的功能就是让 CPU 可以开始判断逻辑与运算数值、 让主存储器可以开始加载/读出数据与程序代码、让硬盘可以开始被存取、让网络卡可以开始传输数据、 让所有周边可以开始运转等等。总之,硬件的所有动作都必须要透过这个操作系统来达成就是了。

上述的功能就是操作系统的核心(Kernel)了!你的计算机能不能做到某些事情,都与核心有关!只有核心有提供的功能,你的计算机系统才能帮你完成!举例来说,你的核心并不支持 TCP/IP 的网络协议, 那么无论你购买了什么样的网卡,这个核心都无法提供网络能力的!


核心可以做什么

核心只会进行计算机系统的资源分配

但是单有核心我们使用者也不知道能作啥事的~

因为核心主要在管控硬件与提供相关的能力(例如存取硬盘、网络功能、CPU 资源取得等), 这些管理的动作是非常的重要的,如果使用者能够直接使用到核心的话,万一用户不小心将核心程序停止或破坏, 将会导致整个系统的崩溃!因此核心程序所放置到内存当中的区块是受保护的!并且开机后就一直常驻在内存当中。

所以整部系统只有核心的话,我们就只能看着已经准备好运作(Ready)的计算机系统,但无法操作他!好像有点望梅止渴的那种感觉啦!这个时候就需要软件的帮忙了!

注意:光有kernel不是完整的操作系统,还需要System Call


核心功能:

1.系统呼叫接口(System call interface)为了方便程序开发者可以轻易的透过与核心的沟通,将硬件的资源进一步的利用, 于是需要有这个简易的接口来方便程序开发者

2.程序管理(Process control)总有听过所谓的“多任务环境”吧?一部计算机可能同时间有很多的工作跑到 CPU 等待运算处理, 核心这个时候必须要能够控制这些工作,让 CPU 的资源作有效的分配才行!另外,良好的 CPU 排程机制(就是CPU 先运作那个工作的排列顺序)将会有效的加快整体系统效能呢!

3.内存管理(Memory management)控制整个系统的内存管理,这个内存控制是非常重要的,因为系统所有的程序代码与数据都必须要先存放在内存当中。通常核心会提供虚拟内存的功能,当内存不足时可以提供内存置换(swap)的功能哩。

4.文件系统管理(Filesystem management)文件系统的管理,例如数据的输入输出(I/O)等等的工作啦!还有不同文件格式的支持啦等等, 如果你的核心不认识某个文件系统,那么您将无法使用该文件格式的文件啰!例如:Linux 就不认识 NTFS 文件格式的硬盘;

5.装置的驱动(Device drivers)就如同上面提到的,硬件的管理是核心的主要工作之一,当然啰,装置的驱动程序就是核心需要做的事情啦!好在目前都有所谓的“可加载模块”功能,可以将驱动程序编辑成模块,就不需要重新的编译核心啦!


操作系统与驱动程序

驱动程序可以说是操作系统里面相当重要的一环了!

不过,硬件可是持续在进步当中的! 包括主板、显示适配器、硬盘等等。那么比较晚推出的较新的硬件,例如显示适配器,我们的操作系统当然就不认识啰! 那操作系统该如何驱动这块新的显示适配器?

为了克服这个问题,操作系统通常会提供一个开发接口给硬件开发商,让他们可以根据这个接口设计可以驱动他们硬件的“驱动程序”,如此一来,只要使用者安装驱动程序后,自然就可以在他们的操作系统上面驱动这块显示适配器了。

特点:

操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能;

要使用新硬件功能,必须要安装厂商提供的驱动程序才行;

驱动程序是由厂商提供的,与操作系统开发者无关。


以上是关于操作系统Kernel的主要内容,如果未能解决你的问题,请参考以下文章

2018/12/01 一个64位操作系统的实现 第四章 导入kernel.bin

CentOS系统中kernel、kernel-headers、kernel-devel在ubuntu中相对应的是啥?

Shell、Kernel 和 API 有啥区别

linux kernel (proc文件系统)参数

2018/12/01 一个64位操作系统的实现 第四章 导入kernel.bin

编译内核