分享

一文了解Linux内核

 九州君子好人 2020-01-18

什么是操作系统OS

操作系统(简称为OS)是一种软件平台,可创建一个环境,用户可以在该环境中在计算设备上运行不同的应用程序。 操作系统充当软件程序和系统硬件组件之间的桥梁。 它被移动设备,标签,台式机,Web服务器,视频游戏机等不同的设备所利用。市场上有各种操作系统可用,例如Windows,Linux,Unix和Mac OSX。

操作系统的的组成

  • Bootloader:它负责设备的启动过程。

  • Shell:Shell是一种编程语言,它可以控制其他文件,进程以及所有其他程序。

  • Kernel:它是操作系统的主要组件,管理内存,CPU和其他相关组件。

  • Desktop Environment:这是用户通常与之交互的环境。

  • Graphical server(图形服务器):它是操作系统的子系统,用于在屏幕上显示图形

  • Applications: 这些是执行不同用户任务(例如word,excel等)的程序集。

  • Daemons : 后台服务提供商。

什么是内核kernel

内核是操作系统的关键组件。 它借助进程间通信和系统调用,在硬件级别上充当应用程序和数据处理之间的桥梁。

每当将操作系统加载到内存中时,首先,将加载内核并将其保留在那里,直到操作系统关闭。 内核负责处理低级任务,例如任务管理,内存管理,风险管理等。

内核的任务

  • 用于应用程序执行的流程管理。

  • 内存和I / O(输入/输出)管理。

  • 系统调用控制(内核的核心行为)。

  • 借助设备驱动程序进行设备管理。

  • 内核空间,用户空间是什么?

内核空间

内核处于提升的系统状态,其中包括受保护的内存空间以及对设备硬件的完全访问权限。 此系统状态和内存空间统称为内核空间。 在内核空间内,对硬件和系统服务的核心访问进行管理,并作为服务提供给系统的其余部分。

用户空间

用户空间或用户域是在操作系统内核环境之外运行的代码,用户空间定义为操作系统用来与内核连接的各种应用程序或程序或库。

用户的应用程序是在用户空间中执行的,它们可以通过内核系统调用访问计算机可用资源的一部分。 通过使用内核提供的核心服务,可以创建用户级别的应用程序,例如游戏或办公软件。

内核的操作

内核是任何操作系统的心脏,因为它控制系统中的所有其他程序。 当设备启动时,内核会经历一个初始化的过程,例如检查内存。 它负责内存分配部分,并创建了一个运行应用程序的环境,而没有任何干扰。

内核充当服务提供者,因此程序可以请求内核完成多项任务,例如请求使用磁盘,网卡或其他硬件,并且内核为CPU设置中断以启用多任务处理。 它不让错误的程序进入其他程序的操作功能,从而保护了计算环境。 它通过不允许存储空间来阻止未经授权的程序进入入口,并限制它们消耗的CPU时间。

内核的分类

通常有三类内核:

  • Monolithic kernel: 它包含许多设备驱动程序,可在设备的硬件和软件之间创建通信接口。

它是操作系统广泛使用的内核。 在单片架构中,内核由可以动态加载和卸载的各种模块组成。 这种体系结构将扩展OS的功能,并允许轻松扩展内核。

使用单片式体系结构,内核的维护变得容易,因为当需要修复特定模块中的错误时,它允许相关模块进行加载和卸载。 因此,它消除了繁琐的工作,即降低并重新编译整个内核以进行很小的更改。 在单片内核中,卸载不再使用的模块更加容易。

  • Micro kernel: 它只能执行基本功能。

微内核已经发展成为单片内核的替代产品,以解决单片内核无法做到的内核代码不断增长的问题。 这种体系结构允许某些基本服务(例如协议栈,设备驱动程序管理,文件系统等)在用户空间中运行。 这样可以以最少的代码增强OS的功能,提高安全性并确保稳定性。

它通过使系统的其余部分正常运行而不会造成任何中断,从而限制了对受影响区域的损坏。 在微内核体系结构中,所有基本OS服务都可以通过进程间通信(IPC)提供给程序。 微内核允许设备驱动程序和硬件之间的直接交互。

  • Hybrid kernel: 它结合了单片内核和微内核的各个方面。

混合内核可以决定要在用户模式和主管模式下运行什么。 通常,在混合内核环境中,设备驱动程序,文件系统I / O之类的内容将在用户模式下运行,而服务器调用和IPC则保持在管理者模式下。 它提供了两个世界的最佳体验。

Linux操作系统

Linux是Linus Torvalds在1991年开发的开源平台。 它在各种设备中用作操作系统,例如在计算机,服务器,移动设备,大型机和其他嵌入式设备中。 由于它是开源软件,因此用户可以根据需要自定义此操作系统。 它支持几乎所有主要的计算机平台,例如ARM,x86,SPARK等。Linux的最常见用法是用于Server,但也用于台式机,电子书阅读器,智能手机等。

Linux内核

内核是任何基于Linux的操作系统的核心组件。 它代表了台式机和服务器的Linux发行版的核心方面。 它具有整体架构,并且操作系统完全在内核空间中运行。 整体内核不仅包围中央处理器,IPC和内存,而且具有系统服务器调用,设备驱动程序和文件系统管理。 Linux内核充当设备软件和硬件之间的一层。

内核可以是单片,微内核或混合内核(例如OS X和Windows 7)。 Linux内核是类似于UNIX系统的单片计算机操作系统内核。 Linux操作系统系列(通常称为Linux发行版)基于此内核。与微内核不同,单块内核不仅包含中央处理单元,内存和IPC,还具有设备驱动程序,系统服务器调用和文件系统管理。他们最擅长与硬件通信并同时执行多项任务。由于这个原因,此处的过程反应速度很快。

但是,很少的挫折是所需的巨大安装和内存占用空间以及安全性不足,因为一切都以管理员模式运行。相反,随着用户服务和内核的分离,微内核对应用程序调用的反应可能会很慢。因此,与整体内核相比,它们的尺寸更小。微内核很容易扩展,但是编写微内核需要更多代码。 Linux内核是用C和Assembly编程语言编写的。

内核源码结构

在Linux系统中查看内核源码,如图所示

  • arch 特定体系结构的代码

  • block 块设备I/O层

  • crypo 加密API

  • Documentation 内核源码文档

  • drivers 设备驱动程序

  • firmware 使用某些驱动程序而需要的设备固件

  • fs VFS和各种文件系统

  • include 内核头文件

  • init 内核引导和初始化

  • ipc 进程间通信代码

  • kernel 像调度程序这样的核心子系统

  • lib 同样内核函数

  • mm 内存管理子系统和VM

  • net 网络子系统

  • samples 示例,示范代码

  • scripts 编译内核所用的脚本

  • security Linux 安全模块

  • sound 语音子系统

  • usr 早期用户空间代码(所谓的initramfs)

  • tools 在Linux开发中有用的工具

  • virt 虚拟化基础结构

Linux内核与硬件的关系

内核可以通过所谓的中断来管理系统的硬件。 当硬件要与系统接口时,会发出一个中断,中断处理器,从而对内核执行相同的操作。 为了提供同步,内核可以禁用中断,无论是单个中断还是全部中断。 但是,在Linux中,中断处理程序不是在进程上下文中运行,而是在不与任何进程相关联的中断上下文中运行,这种特殊的中断上下文仅是为了让中断处理程序快速响应单个中断然后最终退出而存在 。

是什么使Linux内核与其他经典Unix内核不同?

Linux内核和经典 Unix内核之间存在显着差异,如下所示:

  • Linux支持内核模块的动态加载

  • Linux内核是抢占式的

  • Linux具有对称的多处理器支持

  • Linux具有开放软件特性,因此是免费的

  • Linux忽略了内核开发人员称为“设计不良”的某些标准Unix功能

  • Linux提供了带有设备类,可热插拔事件和用户空间设备文件系统的面向对象的设备模型

  • Linux内核无法区分线程和正常进程

Linux内核架构

内核仅仅是资源管理器。 被管理的资源可以是进程,内存或硬件设备。 它管理和仲裁多个竞争用户之间对资源的访问。 Linux内核存在于用户空间下方的内核空间中,该空间是执行用户应用程序的位置。 为了使用户空间与内核空间进行通信,已合并了一个GNU C库,该库为系统调用接口提供了一个论坛,以连接到内核空间并允许转换回用户空间。

Linux内核可以分为三个主要级别:

系统调用界面:这是最高层,并承担诸如读取和写入之类的基本操作。

内核代码:它位于系统调用接口下方,这是Linux支持的所有处理器体系结构的共同点,有时也定义为与体系结构无关的内核代码。

依赖于体系结构的代码:它在独立于体系结构的代码下,形成通常称为板级支持程序包(BSP)的程序-该程序包包含一个称为引导加载程序的小程序,它将操作系统和设备驱动程序放入内存。

Linux内核的体系结构主要包括:系统调用接口,进程管理,虚拟文件系统,内存管理,体系结构和设备驱动程序,这些称为Linux内核的主要子系统。

  • 系统调用界面(System call interface)

简单来说,系统调用就是用户程序和硬件设备之间的桥梁。用户程序在需要的时候,通过系统调用来使用硬件设备。系统调用是一种编程过程,用于承担从用户空间到内核的函数调用,其中程序从操作系统内核请求服务。 该接口可能取决于体系结构。它包括各种硬件服务,例如与硬件设备连接以及在内核的各个组成部分之间创建通信接口。 系统调用在操作系统和进程之间创建有效的接口。

  • 进程管理 (Process management)

执行进程,内核负责创建和删除不同的进程,并监视它们与外部世界的连接。例如输入和输出。 它通过信号,进程间通信原语或管道来处理不同方法之间的通信。 除了所有这些之外,它还有一个调度程序,用于控制共享CPU的进程。

  • 内存管理(Memory management)

内存是操作系统的重要组成部分,内存在所谓的页面中进行管理以提高效率。Linux包括管理可用内存的方法以及用于物理和虚拟映射的硬件机制,还提供交换空间。内存管理不仅仅管理4KB缓冲区,还远远不止于此。 Linux还提供了4kb缓冲区以外的抽象(称为slab分配器)。 Slab分配器使用4kb缓冲区作为基础,然后通过监视诸如页面已满,为空和部分使用之类的内容从内部分配结构。 这使方案可以动态增长,并可以支持系统的更重要需求。

  • 虚拟文件系统(Virtual file system)

虚拟文件系统(VFS)是内核的重要组成部分,它为文件系统提供了标准的接口抽象。 它提供了系统调用接口和内核支持的文件系统之间的切换层。 VFS在内核支持的文件系统和SCI(系统调用接口)之间创建一个交换层。除了上述内容之外,Linux还支持各种类型的文件系统,这些文件系统需要以不同的方式组织数据以物理格式存储。 例如,可以使用常用的FAT文件系统,Linux标准ext3文件系统或其他几种格式来格式化磁盘。

大数据开发高薪必备资源(免费获取) /

Oracle高级技术总监多年精心创作一套完整课程体系【大数据学习必看】,全面助力大数据开发零基础+入门+提升+项目=高薪!

如何学习大数据开发?

「大数据零基础入门」

「大数据架构系统组件」

「大数据全套系统工具安装包」

Java必备工具

大数据必备工具

「大数据行业必备知资讯」

「大数据精品实战案例」

「大数据就业指导方案」

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多