Linux源码学习笔记01-Linux内核源码结构

Linux内核特性

是一个类Unix操作系统,但不是简化的Unix;不仅继承了Unix的特征,还有其他特性。

  • Linux内核的组织形式:整体式的结构,方便每个领域的开发人员参与开发;
  • Linux进程调度方式简单高效:采用动态优先级的调度方式,软中断保证内核进程的高效执行;
  • Linux支持内核线程(守护进程):内核线程在后台运行,不需要中端和Shell;
  • Linux内核支持多种平台的虚拟内存管理:和硬件平台紧密相关,为了保证通用性,统一接口,移植简单;
  • Linux内核另一个独具的特色是虚拟文件系统(VFS,Virtual File System):不仅可以为逻辑文件系统提供标准的文件接口,还可以为硬件设备提供了统一的标准接口。(硬件是特殊的文件);
  • Linux的模块机制是的内核保持独立而且容易扩充:有利于研发增加新设备和业务;
  • 增加系统调用主要是满足特殊的需求:允许设计自己的系统调用,加入到内核模块中;
  • Linux内核网络模块面向对象的设计思想:能够使得内核支持多种协议,多种网卡驱动程序等等。

为什么要学Linux内核

  1. 提升软件水平,研发出高水平软件;
  2. 开发自己的操作系统;
  3. 有助于计算机科学领域研究;
  4. Linux系统性能优化。

Linux操作系统结构

Linux内核在系统中的位置

  • 应用程序:运行在操作系统上的一个进程;
  • 系统调用接口(System call interface):由诺干指令构成的过程,实现特定的服务。但是与一般的过程不同:运行在内核态,一般过程运行在用户态;
  • Linux Kernel:实际就是抽象的资源操作到具体硬件操作的接口;
  • 硬件:内核赖以生存的条件。

Linux内核子系统之间关系

Linux内核五大主要子系统关系图:

  • 进程调度:控制进程对CPU的访问操作。Linux使用优先级调度算法来选择进程;
  • 内存管理(MM):允许多个进程共享主存区域;
  • 虚拟文件系统(VFS):设备驱动程序,逻辑文件系统(ext2、ext3、ext4…);
  • 网络管理:提供对各种网络标准协议的存取和网络硬件支持;
  • 进程间通信:支持进程之间各种通信机制。

Linux内核源码组织

Linux内核源码结构(5.6.18)

  • arch:不同平台体系结构的相关代码;
  • block:设备驱动;
  • certs:与认证和签名相关的代码;
  • crypto:内核常用的压缩算法,加密算法源代码;
  • Documentation:描述模块功能和协议规范的代码;
  • drivers:驱动程序(USB总线驱动程序。PCI总线,显卡,网卡);
  • fs:虚拟文件系统VFS代码;
  • include:内核源码依赖的绝大部分头文件;
  • init:内核初始化代码,直接关联到内存的各个组件入口;
  • ipc:进程间通信的实现,比如:信号量,构想内存等等;
  • kernel:内核核心代码,包括进程管理,IRQ等等;
  • lib:C标准库的子集
  • LICenSES:Linux内核根据Licenses/perferred/GPL-2.0中提供GNU通用公共许可版本
  • mm:内存管理的相关实现操作;
  • net:网络协议代码,比如TCP、Wifi、IPv6等等;
  • samples:内核实例代码;
  • scripts:编译和配置内核所需要的脚本;
  • security:内核安全模型相关代码;
  • sound:声卡驱动源码;
  • tools:与内核交互;
  • usr:用户打包盒压缩内核实现的源码;
  • virt:kvm虚拟化目录相关支持实现。

Linux内核目录下文件

  • .clang-format:开发团队合作时要注意的代码格式化;
  • COPYING:许可和授权信息;
  • CREDITS:贡献者列表;
  • Kbuild:内核设定脚本;
  • Kconfig:开发人员配置内核的时候用到的参数
  • MAINTAINERS:目前维护开发人员列表;
  • Makefile:编译内核主要文件;
  • README:编译内核信息。

本人站点欢迎友好交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用智能插件(Fitten Code: Faster and Better AI Assistant)再次修改vue3 <script setup>留言板

<template><div><button class"openForm" click"openForm" v-if"!formVisible">编辑</button><button click"closeForm" v-if"formVisible">取消编辑</button><hr /><formv-i…

【权威发布】2024年环境科学、旅游与产业经济国际会议(ICESTIE 2024)

2024年环境科学、旅游与产业经济国际会议 2024 International Conference on Environmental Science, Tourism and Industrial Economics 会议简介 2024年环境科学、旅游与产业经济国际会议旨在汇聚全球该领域的专家学者&#xff0c;共同探讨环境科学与旅游产业的融合发展&…

SDK编译IO Domain电压选择

开源鸿蒙硬件方案领跑者 触觉智能 本文适用于在Purple Pi OH开发板进行分区镜像烧录。触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;是华为Laval官方社区主荐的一款鸿蒙开发主板。 该主板主要针对学生党&#xff0c;极客&#xff0c;工程师&#xff0c;极大降低了开源鸿蒙…

【iOS】#include、#import、@class、@import

文章目录 #include#importclassimport总结 #include #include是c\c中的预处理器指令&#xff0c;用于包含头文件的内容 但是使用#include可能会出现重复包含文件的问题&#xff0c;因此需要使用&#xff08;#ifndef/#define/#endif&#xff09;。 #import //导入系统头文件…

使用opencv合并两个图像

本节的目的 linear blending&#xff08;线性混合&#xff09;使用**addWeighted()**来添加两个图像 原理 (其实我也没太懂&#xff0c;留个坑&#xff0c;感觉本科的时候线代没学好。不对&#xff0c;我本科就没学线代。) 源码分析 源码链接 #include "opencv2/imgc…

西米支付:【风控升级】同一商户集中交易,将会限制正常用卡

支付公司风控策略再升级&#xff01;近日&#xff0c;有某支付公司代理透漏&#xff0c;客户反馈机器突然不能刷卡了&#xff0c;换卡也无法交易&#xff0c;交易均提示06-超出商户限额&#xff0c;然而该款机器刷卡限额为单日30万&#xff0c;单月300万&#xff0c;客户并未触…

Win11 设置本地管理员账户的几种方法总结

从设置界面创建 Win11 设置本地管理员账户我们可以在设置界面来进行设置&#xff0c;下面是具体的操作步骤&#xff1a; 首先我们需要打开设置界面&#xff0c;然后点击“账户”选项&#xff0c;进入之后点击“其他用户”。 然后在用户界面中我们找到“其他用户”模块下的添加…

AMD vs NVIDIA:渲染领域的显卡之争

在数字创意与设计的世界里&#xff0c;显卡作为图形处理的核心&#xff0c;其性能与兼容性直接关系到创作者的工作效率与作品质量。AMD与NVIDIA&#xff0c;作为两大显卡巨头&#xff0c;各自在渲染领域拥有独特的技术与优势。那么&#xff0c;针对渲染而言&#xff0c;哪种显卡…

四川古力未来科技有限公司抖音小店解锁电商新机遇

在数字化浪潮席卷全球的今天&#xff0c;电商行业正以前所未有的速度蓬勃发展。四川古力未来科技有限公司紧跟时代步伐&#xff0c;积极拥抱变革&#xff0c;在抖音平台上开设小店&#xff0c;为品牌发展注入了新的活力。那么&#xff0c;四川古力未来科技有限公司抖音小店究竟…

C#和python端通信之使用共享内存

一、前言 本篇主要实验通过使用共享内存实现C#端代码和python端代码之间的通信&#xff0c;主要目的是相较于直接传输较大的数据&#xff08;例如图像数据&#xff09;&#xff0c;该方式更节省时间。 二、代码 C#端&#xff1a; 创建了一个大小为1的共享内存&#xff0c;名为…

Js-w3school(2024(1)

10.访问 HTML 元素 使用“不整洁的” HTML 样式的后果&#xff0c;也许是导致 JavaScript 错误。请在 HTML 中使用相同的命名约定&#xff08;就像 JavaScript 那样&#xff09; 11. 请使用正确的文档类型 请始终在文档的首行声明文档类型&#xff1a; 如果您一贯坚持小写标…

神经网络学习-池化层

池化层方法 池化一般是用来对卷积层进行降维 空洞卷积&#xff0c;通过在卷积核的元素之间插入“空洞”&#xff08;即零&#xff09;&#xff0c;可以在不增加参数量和计算量的情况下扩大卷积核的感受野。这对于捕捉图像中的多尺度信息特别有用。 池化的默认步长是池化核的大…

vscode插件开发之 - 消息通信

在开发vscode插件过程中&#xff0c;有一个典型场景是webview与extension.ts进行通信&#xff0c;例如&#xff0c;webview上的某些信息发送改变时&#xff0c;需要发送消息传递给extension.ts. 如果使用react框架构建vscode插件的webview&#xff0c;如何实现webview与extensi…

工厂ESOP系统促进工厂快速响应和工艺改进

在当今追求可持续发展和创新的时代&#xff0c;新能源产业正以惊人的速度崛起。新能源工厂作为这一领域的核心生产环节&#xff0c;面临着不断提高效率、优化工艺和快速应用新技术的巨大挑战。为了应对这些挑战&#xff0c;越来越多的新能源工厂开始引入 ESOP 系统&#xff08;…

为什么企业需要数据挖掘平台?哪个比较好呢?

什么是数据挖掘&#xff1f; 数据挖掘就是从大量的数据中去发现有用的信息&#xff0c;然后根据这些信息来辅助决策。听起来是不是跟传统的数据分析很像呢&#xff1f;实际上&#xff0c;数据挖掘就是智能化的数据分析&#xff0c;它们的目标都是一样的。但是&#xff0c…

【SPIE独立出版 | 往届均已完成EI检索】2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024)

2024云计算、性能计算与深度学习国际学术会议(CCPCDL 2024) 2024 International conference on Cloud Computing, Performance Computing and Deep Learning *CCPCDL往届均已完成EI检索&#xff0c;最快会后4个半月完成&#xff01; 一、重要信息 大会官网&#xff1a;www…

盘点海外大带宽服务器:哪家值得选?

针对外贸业务遭遇大流量访问时的巨大带宽需求&#xff0c;我们可能有很多人会选择寻找一些海外大带宽服务器提供商来提升网站的访问效率。所以&#xff0c;本文整理了五个海外大带宽服务器的产品商家&#xff0c;如果有需要可以选择参考。 亚马逊 AWS(Amazon Web Services) 亚马…

《深入理解Spark RDD缓存机制》(第4天)

文章目录 前言一、小试牛刀&#xff1a;解剖RDD缓存机制&#xff1f;1. 什么是Spark RDD缓存策略1.1 为什幺RDD要做缓存1.2 缓存相关API&#xff1a;1.3 缓存案例解析:1.4 图解缓存效果: 2. 什么是checkpoint缓存2.1 为什么要做checkpoint缓存2.2 checkpoint相关API:2.3 checkp…

七彩影视双端新版本源码 支持PC+WAP+APP三端 对接苹果CMS后台

下载地址&#xff1a;七彩影视双端新版本源码 支持PCWAPAPP三端 对接苹果CMS后台 适合做影视类&#xff0c;高端大气

强化学习——基本概念

何为强化学习 机器学习的一大分支 强化学习&#xff08;Reinforcement Learning&#xff09;是机器学习的一种&#xff0c;它通过与环境不断地交互&#xff0c;借助环境的反馈来调整自己的行为&#xff0c;使得累计回报最大。强化学习要解决的是决策问题——求取当前状态下最…