1 什么是内核

内核是操作系统的核心。内核是操作系统执行的第一道程序,被率先加载到内存中开始系统行为。内核始终保持在主内存中直到系统被关闭。内核将用户输入的命令转换成计算机硬件能理解的机器语言。

内核是系统应用软件和硬件的桥梁。内核直接与硬件联系,并告之它由应用软件发起的请求。操作系统不能脱离内核工作,内核是系统正常运行最重要的程序。

内核的主要职责是:进程管理、磁盘管理、任务调度、内存管理等,具体如下:

  • 文件管理

为了更有效地搜索和使用文件,内核使用文件系统(file system)来组织文件,并通过文件系统保持对文件数据存储、文件状态、访问设置的监视。

  • 进程管理

在多进程环境下,内核决定哪一道进程被CPU优先运行,以及分配的运行时间片长度是多少,称为进程调度。当进程不再被需要的时候,将被内核自动销毁。

  • 内存管理
    内核检测内存空间——生成或销毁内存,以确保应用程序被正确执行。

内核分为单核(Monolithic Kernel)和微核(Microkernel)两种。对于单核,所有操作系统服务运行在单核的主线程中,单核提供了对系统硬件的广泛访问。对于微核,其提供的是硬件抽象,意味着操作系统必须在系统调用(system calls)和原语(primitives)的帮助下工作。

在这里插入图片描述

2 什么是操作系统?

操作系统(operating system)是用来管理计算机系统资源的软件,内核是用户和系统硬件的桥梁。操作系统提供的接口允许用户直接看到其输入命令的响应结果,例如Window的命令行cmd和Linux的Shell终端。没有操作系统,系统就不可能运行,部分嵌入式系统看似没有操作系统,但仍然对硬件作了一层简单封装,也可理解为Tiny OS。操作系统的主要职责是创建应用软件可以运行的环境。

在这里插入图片描述
操作系统同样是运行在计算机系统中的持久化程序,直至系统关闭。它是计算机系统运行的第一道程序,一旦操作系统被加载到内存,计算机就做好了执行用户程序的准备。

在操作系统中,内核是最重要的程序。除了内核的职责外,操作系统额外负责安全性与隐私、中断与挂起等服务,具体如下:

  • 安全性

为了保护用户数据安全,操作系统对计算机进行了密码保护,保护程序不被非法途径泄露。

  • 工作分析

操作系统跟踪资源的使用情况,这些分析数据可以用来监视、反映资源对特定用户或用户群体的利用率,便于系统调整。

  • 与用户和其他软件合作

操作系统也向用户分配解释器、汇编、编译器和其他系统级软件,便于用户和其他应用调用接口。

  • 控制系统性能

为控制系统性能,操作系统时刻监视其运行状态,最主要是测量应用发起服务接口请求,和系统返回响应之间的时间。在操作系统的帮助下,通过提供解决问题的关键性信息可以提供系统性能。

  • 错误自检

操作系统密切监测系统漏洞来防止运行崩溃。

  • 设备管理

操作系统保持对所有接入计算机的硬件设备的监视和跟踪,决定了每个外设是否可以访问计算机资源以及访问的允许时长是多少。

3 操作系统和内核的区别?

在这里插入图片描述

序号内核操作系统
1系统级软件,操作系统的一部分系统级软件
2应用软件和硬件的接口用户和硬件的接口
3运行操作系统必须具有内核运行计算机系统必须有操作系统
4分为单核和微核两种分为分布式OS、实时OS、单核OS、微核OS、多处理OS
5是操作系统执行的第一道程序是计算机系统执行的第一道程序
6主要负责进程管理、磁盘管理、任务调度、内存管理等核心任务主要负责安全性与隐私、中断与挂起等其他任务

4 Linux内核

20世纪80年代,受限于Unix 版权,赫尔辛基大学Andrew S. Tanenbaum教授仿UNIX开发了MINIX操作系统,并开放全部源代码给大学教学和研究工作。Linus Torvalds在该学校读书时也使用了MINIX系统,但由于无法忍受MINIX带来的不便,决定自行开发操作系统,并于1991年9月发布了第一版Linux操作系统内核

Linux内核发布时,市面上已有许多GNU组件,唯独缺少底层内核。由于Linus本人是GNU计划的忠实拥护者,因此他将内核开源到GNU计划中完善GNU生态。基于Linux内核,并使用GNU各种工具和应用程序打造的操作系统称为GNU/Linux。将Linux内核与其他应用工具打包形成的操作系统称为Linux发行版,其中包含开源的GNU/Linux,也有商业闭源的操作系统。


🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐