Linux基础——内核

Posted

tags:

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

Linux内核简介

Linux内核(kernel)是芬兰赫尔辛基大学的学生Linus Torvalds于1991年创建的。随着程序员从其他自由软件项目中调整源代码以扩展内核的功能,它很快获得了广泛的应用。由于Linux内核越来越受欢迎,GNU自己的内核GNU Hurd不可用且不完整,而且Berkeley Software Distribution (BSD) OS仍然受到法律问题的阻碍。因此,在开发者社区的帮助下,Linux kernel 0.01于1991年9月17日发布。

Linux内核是一个自由的、开源的、独立的、类unix的操作系统内核,它是一个用C语言写成,符合POSIX标准的类Unix操作系统。是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM或Quota文件系统等等。

Linux内核结构

内核内部结构是十分复杂的,下图简单描述内核各个模块之间的映射:
技术图片

Linux内核作用

**硬件设备管理**
    计算机完成真正工作是硬件,如CPU、硬盘、显示适配器、声卡、网卡等等。内核作用就是控制这些硬件如何工作。几乎每个系统操作最终都映射到一个物理设备上,而设备控制操作都由特定的设备相关的代码来进行,这些代码被称为设备驱动,内核中必须嵌入每个外设的驱动,以使其完成计算机发起的工作。

    **内存管理**
    内存是计算机的主要资源之一, 而内存处理策略对系统性能至关重要。 内核为每一个进程都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能。

**进程管理**
    内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出);
    内核处理不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的;
    内核进程管理调度器, 控制进程如何共享 CPU;
    内核的进程管理实现了多个进程在一个单个或者几个 CPU 之上的抽象。

    **文件系统管理**
    Linux的核心思想:一切皆文件。内核在非结构化的硬件之上建立了结构化的文件系统。
    虚拟文件系统VFS(也成虚拟文件交换)作为内核子系统,为用户空间程序提供了文件和文件系统相关的统一接口。通过VFS,应用程序可以使用相同接口完成不同介质上不同文件系统的数据读写操作。VFS之所以能够衔接各种各样的文件系统,是因为它定义了所有文件系统都支持的、基本的、概念上的接口和数据结构。实际文件系统也将自身的操作在形式上与VFS定义保持一致,而每个文件系统的细节则由各自实现。

    **网络管理**
    Linux网络是由操作系统进行管理的,进入系统的报文是异步事件,报文在某一个进程接手之前必须被收集, 识别, 分发.。内核负责在程序和网络接口之间递送数据报文, 并且根据程序的网络活动来控制程序的执行。此外,内核担负路由和地址解析责任。

以上是关于Linux基础——内核的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核开发基础

Linux内核 eBPF基础:perf基础perf_event_open系统调用内核源码分析

什么是在 C++ 中获取总内核数量的跨平台代码片段? [复制]

《Linux内核 核心知识全解析(完)》

Linux 内核将迎来更多 Rust 代码,谷歌强推!

Linux内核 eBPF基础:perf用户态指令分析