linux内核整体架构

这篇具有很好参考价值的文章主要介绍了linux内核整体架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

操作系统概念

操作系统属于软件范畴,负责管理系统的硬件资源。OS具备的功能:1.为应用程序提供执行环境。2.为多用户和应用程序管理计算机的硬件资源。3.虚拟化功能。4.支持并发。

宏内核与微内核架构

宏内核:所有的内核代码都编译成二进制文件并运行在一个大内核地址空间中,整体架构如下:
linux内核整体架构
微内核:把操作系统分成多个独立的功能模块,每个功能模块之间的访问需要通过“消息”来完成,因此效率没有宏内核架构高:
linux内核整体架构
宏内核的优点:设计简洁,性能好

微内核的优点:模块化的特点更具实时性

工程实践中,linux不断融入微内核的精华到内核中,例如模块化设计思想,动态加载内核模块等,因此linux内核支持模块化开发,许多功能都可以编译为一个模块,并且支持动态的加载和卸载(例如许多设备的驱动程序),这一点上宏内核架构就做不到,宏内核类似于静态编译的结果而不支持动态取舍。
linux内核整体架构
OS允许CPU运行在用户态和内核态,而 linux 使用ring0和ring3两种模式实现内核态和用户态。

linux内核为内核态和用户态的切换提供机制:系统调用(本质是中断,中断是进入内核态的唯一方法)

用户程序可能大部分运行在用户态,但可能需要使用系统资源(例如磁盘),此时需要通过系统调用的方法进入内核空间。

体系结构Arch抽象层:

linux内核支持多种架构,例如ARM,X86等,目前已经支持几十种体系结构,而Arch抽象层抹去了不同架构之间的硬件差异,做了一层统一的抽象。在linux内核5.6.18版本的源码中,直接把不同架构做一个分目录操作,以提供对各个架构的支持。
linux内核整体架构

内核在操作系统中的位置

linux内核整体架构

  • 用户进程:用户应用程序是运行在 Linux 操作系统最高层的一个庞大的软件集合。当一个用户程序在操作系统之上运行时,它成为操作系统中的一个进程。
  • 系统调用接口:在应用程序中, 可通过系统调用来调用操作系统内核中特定的过程, 以实现特定的服务。系统调用本身也是由若干条指令构成的过程。但它与一般的过程不同,主要区别是:系统调用是运行在内核态(或叫系统态),而一般过程是运行在用户态。在 Linux 中,系统调用是内核代码的一部分。
  • Linux内核:内核是操作系统的灵魂,它负责管理磁盘上的文件、内存,负
    责启动并运行程序,负责从网络上接收和发送数据包等。简言之,内核实际是抽象的资源操作到具体硬件操作细节之间的接口。
  • 硬件

Linux内核抽象结构

linux内核有五大主要子系统,他们之间的关系如下:
linux内核整体架构
(1)进程调度(SCHED)控制着进程对 CPU 的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际是仅等待 CPU 资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程。

(2)内存管理(MM)允许多个进程安全地共享主内存区域。Linux 的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操 作系统只将当前使用的程序块保留在内存中,其余的程序块则保留在磁盘上。必要时,操作系统负责在磁盘和内存之间交换程序块。
内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。
  (3)虚拟文件系统(Virtul File System,VFS)隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,VFS 还支持多达数十种不同的文件系统,这也是 Linux 较有特色的一部分

虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统指 Linux 所支持的文件系统,如 ext2,fat 等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

(4)网络接口(NET)提供了对各种网络标准协议的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序。

(5)进程间通信(IPC) 支持进程间各种通信机制。

Linux内核源码组织

为了深入地了解Linux的实现机制,还必须阅读Linux的内核源代码,下面是对有关源代码的介绍。内核源代码的版本多,对不同的内核版本,系统调用一般是相同的。新版本也许可以增加一个新的系统调用,在大多数情况下,设备文件将仍然相同,而另一方面,版本之间的内部接口有所变化。
linux内核整体架构文章来源地址https://www.toymoban.com/news/detail-488010.html

  • arch目录:不同平台体系相关代码;
  • block目录:块驱动设备
  • certs目录:与认证和签名相关代码
  • crypto目录:内核常用加密、压缩算法等代码;
  • Documentation目录:描述模块功能与协议规范代码;
  • Drivers目录:驱动程序(USB总线、PCI总线、显卡驱动等等);
  • firmware目录:主要是一些二进制固件;
  • fs目录:虚拟文件系统代码;
  • include目录:内核源码依赖绝大部分头文件;
  • init目录:内核初始化代码,联系到内存各组件入口;
  • ipc目录:进程间通信,比如共享内存、信号量匿名管道等等;
  • kernel目录:内核核心代码,包括进程管理、IRQ、时间等等;
  • lib目录:C标准库的子集;
  • mm目录:内存管理相关实现;
  • net目录:网络协议代码,比如TCP、IPv6、WiFi、以太网实现等等;
  • samples目录:内核实列代码;
  • scripts目录:编译和配置内核所需脚本;Perl/bash
  • security目录:内核安全模型相关代码;如selinux
  • sound目录:声卡驱动源码;
  • tools目录:与内核交互;
  • usr目录:用户打包和压缩内核的实现源码;
  • virt目录:/kvm虚拟化目录相关支持实现。
  • COPYING:许可和授权信息。Linux内核在GPLv2许可证下授权。该许可证授予任何人有权免费去使用、修改、分发和共享源代码和编译代码。然而,没有人可以出售源代码。
  • CREDITS : 贡献者列表
  • Kbuild : 这是一个设置一些内核设定的脚本。打个比方,这个脚本设定一个 ARCH变量,这是开发者想要生成的内核支持的处理器类型。
  • Kconfig: 这个脚本会在开发人员配置内核的时候用到
  • MAINTAINERS : 这是一个目前维护者列表,他们的电子邮件地址,主页,和他们负责开发和维护的内核的特定部分或文件。当一个开发者在内核中发现一个问题,并希望能够报告给能够处理这个问题的维护者时,这是是很有用的。
  • Makefile :这个脚本是编译内核的主要文件。这个文件将编译参数和编译所需的文件和必要的信息传给编译器。
  • README : 这个文档提供给开发者想要知道的如何编译内核的信息。
  • REPORTING-BUGS : 这个文档提供如何报告问题的信息。

到了这里,关于linux内核整体架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux内核整体架构

    操作系统属于软件范畴,负责管理系统的硬件资源。OS具备的功能:1.为应用程序提供执行环境。2.为多用户和应用程序管理计算机的硬件资源。3.虚拟化功能。4.支持并发。 宏内核:所有的内核代码都编译成二进制文件并运行在一个大内核地址空间中,整体架构如下: 微内核:

    2024年02月09日
    浏览(43)
  • 【项目分析】仿linux0.11的操作系统内核

    系列综述: 💞目的:本系列是个人整理为了 秋招面试 的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于 《操作系统 真象还原》及各大佬博客 进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验

    2024年02月09日
    浏览(31)
  • 操作系统权限提升(十八)之Linux提权-内核提权

    内核提权是利用Linux内核的漏洞进行提权的,内核漏洞进行提权一般包括三个环节: 1、对目标系统进行信息收集,获取到系统内核信息及版本信息; 2、根据内核版本获取其对应的漏洞以及EXP 3、使用找到的EXP对目标系统发起攻击,完成提权操作 查看Linux操作系统的内核版本

    2024年01月16日
    浏览(38)
  • Linux Kernel内核整体架构(图文详解)

    本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。 注:本文和其它的“Linux内核分析”文章都基于如下约定: a) 内核版

    2024年02月11日
    浏览(35)
  • 【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念(内核&任务&中断)、与硬件的关系&实现

    上一课: 【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验 下一课: 【小黑嵌入式系统第十一课】μC/OS-III程序设计基础(一)——任务设计、任务管理(创建基本状态内部任务)、任务调度、系统函数 一. 凡从事嵌入式系统开发工作的人,必须对嵌入

    2024年02月05日
    浏览(37)
  • 【Linux】操作系统&&进程概念

    冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构 。数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成( 运算器、控制器、存储器、输入设备、输出设备 ),这

    2024年01月16日
    浏览(38)
  • 【Linux】操作系统的基本概念 {冯诺依曼体系结构,操作系统的基本概念,系统调用及用户操作接口,shell程序}

    现代计算机设计大都遵守冯·诺依曼体系结构: 截至目前,我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘, 鼠标,扫描仪, 磁盘,网卡等 存储器: 内存(提高数据读写速度,降低硬件成本) 中央处理器(CPU):含有运算器(算数运算,逻辑运算)和控

    2024年02月11日
    浏览(38)
  • Linux:冯诺依曼系统和操作系统的概念

    本篇主要总结的是操作系统的基本认知和一些概念 那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先介绍它? 截止目前来说,常见的计算机都是遵循着冯诺依曼体系组成的,可以说有了冯诺依曼体系才能让计算机变得这么普及,才有了现在的互联

    2024年02月07日
    浏览(31)
  • 【Linux】操作系统与进程的概念

    目录 冯诺依曼体系 注意 为什么CPU不直接访问输入或输出设备? 跨主机间数据的传递 操作系统 管理 进程 描述进程 进程的查看和终止  bash 通过系统调用创建子进程 fork的辨析 🥖冯·诺依曼结构也称普林斯顿结构,是一种 将程序指令存储器和数据存储器合并在一起的存储器

    2024年01月18日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包