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:编译内核信息。

本人站点欢迎友好交流!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打字速度对编程的影响大吗?

知道打字速度对编程的影响大吗?实际上,在编程的世界里,关键在于思考,而非打字速度。要明白,编程与日常聊天中的打字有着本质的区别,如果编程仅仅取决于打字速度,那它岂不就等同于打字员的工作了…

Rust中的数据抓取:代理和scraper的协同工作

一、数据抓取的基本概念 数据抓取,又称网络爬虫或网页爬虫,是一种自动从互联网上提取信息的程序。这些信息可以是文本、图片、音频、视频等,用于数据分析、市场研究或内容聚合。 为什么选择Rust进行数据抓取? 性能:…

Nature正刊!亚利桑那大学博士生陈舒立一作兼通讯最新成果!揭示亚马逊雨林干旱响应的生物地理学机制

2024年6月19日,国际知名学术期刊《Nature》发表了一项美国亚利桑那大学Scott Saleska教授团队的最新成果“Amazon forest biogeography predicts resilience and vulnerability to drought”。通过将森林样地调查数据与遥感观测相结合系统揭示了亚马逊雨林干旱响应的…

动态轮换代理在多账户管理中有何用处?

如果您要处理多个在线帐户,选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么? 为了更好地管理不同平台上的多个账户并优化成本,动态住宅代理IP通常作用在此。 一、什么是轮换代理? 轮换代理充当…

东芝-Soft Limit 报警及其解决办法

灵感来源与生活,在生活中总能有意想不到的惊喜,下面来看看小编今天的惊喜!!! 今天不知道怎么了,有人来找就说是机器人坏了,一直报警,重启关机回原点也没有用。 意外到来,…

Dynamics 365 on-premise 隐藏高级查找导出按钮

提示 着急可以直接看结果代码部分 背景 Dynamics 365 on-premise中有个高级查找的功能,查询的结果支持导出,如下图 业务反馈这个有数据安全风险,要修改显示规则。 一开始想着能用RibbonWorkbench改,就很爽快得答应了业务。结果用RibbonWorkbench改不了。 反复尝试 既…

【EI稳定检索】2024年经济发展与商业文化国际会议(ICEDBC 2024)

2024年经济发展与商业文化国际会议 2024 International Conference on Economic Development and Business Culture 会议简介 2024年经济发展与商业文化国际会议即将在贵阳市盛大开幕。随着全球经济的持续发展,商业文化日益成为推动经济进步的重要力量。为了深入探讨…

力扣144A

文章目录 1. 题目链接2. 题目代码3. 题目总结4. 代码分析 1. 题目链接 Arrival of the General 2. 题目代码 #include<iostream> using namespace std;int heightOfSoldier[110];int main(){int numberOfSoldier;cin >> numberOfSoldier;int maxHeight -1;int mi…

DataOps真能“降本增效”?

在各行各业中&#xff0c;越来越多的公司开始重视收集数据&#xff0c;并寻找创新方法来获得真实可行的商业成果&#xff0c;并且愿意投入大量时间和金钱来实现这一目标。 据IDC称&#xff0c;数据和分析软件及云服务市场规模在 2021 年达到了 900 亿美元&#xff0c;随着企业继…

“华住订房,用友入账”,YonSuite助力企业“降低成本”再进一步

在当今这个数字化、全球化的时代&#xff0c;企业对于商旅管理的需求愈发迫切。如何在保证员工出差体验的同时&#xff0c;实现成本的优化与管控&#xff0c;成为许多企业关注的焦点。YonSuite商旅费控作为一站式商旅解决方案&#xff0c;携手华住商旅&#xff0c;共同为企业提…

33.获取入口点

上一个内容&#xff1a;32.双击列表启动目标游戏 前置知识 25.入口点注入&#xff08;查看pe头&#xff09;、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图&#xff1a; 代码实现&#xff1a;原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

gunicorn超时报错[CRITICAL] WORKER TIMEOUT

一. 问题描述 2024-06-18T08:40:39.858804039Z [2024-06-18 08:40:39 0000] [1] [CRITICAL] WORKER TIMEOUT (pid:332) 2024-06-18T08:40:40.918093090Z [2024-06-18 08:40:40 0000] [1] [ERROR] Worker (pid:332) was sent SIGKILL! Perhaps out of memory?二. 原因分析 从…

2024年一建报名汇总和常见问题答疑!

2024年一级建造师报名通知全国32个地区均已发布&#xff0c;考试100汇总如下&#xff0c;大家务必及时报名&#xff0c;千万不要错过&#xff01; ​ 报名问题 01、时间不多了&#xff0c;今年可以先考部分学科吗&#xff1f;分两年考完&#xff1f; 可以的&#xff0c;一建…

Day1:基础语法

今日目标&#xff1a;理解什么是变量、掌握常用的数据类型、学会数据类型转换 一、JavaScript 介绍 1. JavaScript 基础知识 主要讲解 &#xff1a;JavaScript 是什么、书写位置、注释、结束符、输入和输出语法、字面量。 1.1 JavaScript 是什么 是一种运行在客户端(浏览器…

企业该如何防查盗版?如何防软件后台泄密数据?

随着信息化的发展&#xff0c;企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中&#xff0c;会遇到各种各样不容忽视的风险&#xff0c;例如员工主动故意的数据泄漏&#xff0c;后台应用程序偷偷向外部发信息&#xff0c;木马间谍软件的外联&#xff0c;以…

RISC_CPU模块的调试

代码&#xff1a; cpu.v include "clk_gen.v" include "accum.v" include "adr.v" include "alu.v" include "machine.v" include "counter.v" include "machinectl.v" include "register.v&quo…

备忘录模式(大话设计模式)C/C++版本

备忘录模式 C #include <iostream> #include <string> using namespace std;// Memento类&#xff0c;备忘录&#xff0c;此处为角色状态存储箱 class RoleStateMemento { private:int m_vit; // 生命力int m_atk; // 攻击力int m_def; // 防御力 public:RoleStat…

基于51单片机的篮球计分器设计

一.硬件方案 本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。 电路主要由STC89C52单片机最小系统数码管显示模块数码管驱动模块蜂鸣器模块按键模块&#xff1b; 二.设计功能 &…

为什么有人认为Linux不如macOS?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;首先要明确你说的是哪个Lin…

Zynq学习笔记--了解中断配置方式

目录 1. 简介 2. 工程与代码解析 2.1 Vivado 工程 2.2 Vitis 裸机代码 2.3 关键代码解析 3. 总结 1. 简介 Zynq 中的中断可以分为以下几种类型&#xff1a; 软件中断&#xff08;Software Generated Interrupt, SGI&#xff09;&#xff1a;由软件触发&#xff0c;通常…