零基础学Linux内核:1、Linux源码组织架构

news2024/11/29 4:46:28

文章目录

  • 前言
  • 一、Linux内核的特征
  • 二、Linux操作系统结构
    • 1.Linux在系统中的位置
    • 2.Linux内核的主要子系统
    • 3、Linux系统主要数据结构
  • 三、linux内核源码组织
    • 1、下载Linux源码
    • 2、Linux版本号
    • 3、linux源码架构目录讲解


前言

这里将是我们从零开始学习Linux的第一节,这节课我们将了解Linux源码的各个文件夹的组成与含义。


一、Linux内核的特征

1、开源:Linux内核是开源的,用户和开发者可以自由地查看、学习、修改和分发内核代码,促进了协作和创新。

2、可移植性:Linux内核被设计为高度可移植的,可以在各种不同的硬件平台上运行,包括个人计算机、服务器、嵌入式设备、移动设备等。

3、多任务和多用户支持:Linux内核支持多任务和多用户操作。它可以同时运行多个程序,并为每个程序提供独立的执行环境。

4、强大的网络支持:Linux内核具有强大的网络支持,包括TCP/IP协议栈、网络设备驱动程序和网络协议的实现。

5、模块化设计:Linux内核采用了模块化的设计,允许核心功能和设备驱动程序以模块的形式加载和卸载,提高了系统的灵活性和可维护性。

6、良好的性能和可靠性:Linux内核经过长时间的发展和优化,具有良好的性能和可靠性。

7、支持广泛的硬件和软件生态系统:Linux内核支持广泛的硬件设备和软件应用。它具有丰富的设备驱动程序和接口,可以与各种硬件设备和外部设备进行通信。同时,Linux拥有庞大的开源软件生态系统,提供了各种应用程序、开发工具和库,满足了不同用户和开发者的需求。

二、Linux操作系统结构

1.Linux在系统中的位置

在这里插入图片描述

2.Linux内核的主要子系统

Linux内核可以根据功能和任务划分为以下几个主要的子系统:

1、进程管理子系统:负责管理进程的创建、调度、终止和通信等任务。

2、文件系统子系统:提供文件和目录的管理、访问和操作功能,包括各种文件系统的实现。

3、网络子系统:处理网络协议栈、网络设备驱动程序和网络通信等网络相关任务。

4、内存管理子系统:管理系统内存的分配、释放和映射,包括虚拟内存管理和页面置换等功能。

5、设备驱动程序子系统:提供与硬件设备的交互和控制,包括各种设备驱动程序的实现。

每个子系统都有特定的责任和功能,通过协同工作,实现了Linux内核的全面功能和可靠性。

Linux内核还包含其他子系统,如电源管理子系统、安全子系统、时钟和定时器子系统等,这些子系统也在特定领域提供了重要的功能和服务。

3、Linux系统主要数据结构

在Linux内核中,有以下这些使用频率较高的数据结构:

task_struct: 代表一个进程数据结构指针,形成一个task数据
mm_struct:代码进程的虚拟内存
inode:代表虚拟文件系统中的文件、目录等对应的索引节点

还有很多相关的数据结构,我们后面慢慢讲

三、linux内核源码组织

1、下载Linux源码

想要更快的了解Linux架构,那么首先需要下载一版Linux源码,关于如何下载Linux源码:可以查看我之前写的文章:
		https://blog.csdn.net/qq_43257914/article/details/134344756?spm=1001.2014.3001.5501

2、Linux版本号

在这里插入图片描述

linux内核版本有两种:稳定版、开发版
linux内核版本号由3组数字组成
1、第一组:内核主版本
2、第二组:偶数表示稳定版本、奇数表示开发中版本
3、第三组:错误修补此数
举个例子:linux-4.5.1
4:主版本号
5:此版本号,表示开发中版本(因其为奇数)
1:修订版本号,表示修改次数

3、linux源码架构目录讲解

arch: 			不同平台体系相关代码
block:		 	块设备驱动
certs: 			与认证和签名相关代码
crypto: 		内核常用加密、压缩算法等代码
Documentation:	描述模块功能和协议规范代码
Driver:		驱动程序(USB总结、PCI总结、显卡驱动等)
firmware目录:	主要是一些二进制固件
fs:				虚拟文件系统代码
include:		内核源码依赖绝大部分头文件
init:			内核初始化代码,联系到内存各组件入口
ipc:			进程间通信实现,比如共享内存、信号量、匿名管道等
kernel:			内核核心代码,包括进程间通信、IRQ、时间等
lib:			C标准的子集 
mm:			内存管理相关实现
net:			网络协议代码,比如 TCP、IPv6、WiFi、以太网等
samples:		内核示例代码 
scripts:		编译和配置内核所需脚本:per/bash 等
security:		内核安全模型相关代码:如 selinux
sound:			声卡驱动源码
tools:			与内核交互
usr:			用户打包和压缩内核的实现源码
virt:			/kvm 虚拟化目录相关支持实现

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

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

相关文章

python 基于opencv和face_recognition的人脸识别

python 基于opencv和face_recognition的人脸识别 代码如下: 使用一个photos存放你需要识别的照片,注意一个人一张就行 然后通过下面代码注册用户,之后启动程序,就会调用摄像头进行识别了。 AddPhoto(“发哥”, “./photos/fag…

京东APP在哪里找到如何申请价格保护查看购买商品价格保护情况的记录信息?

京东价格保护是一项优质售后服务,用户在京东购买商品后,如果该商品在保护期内降价,用户可以申请价格保护,京东将补差价或返还京豆。这项服务旨在保障用户权益,让用户在购买商品时更加安心。用户在购买商品后&#xff0…

python-opencv 人脸68点特征点检测

python-opencv 人脸68点特征点检测 不是很难,主要还是掉包,来看一下代码啊: # coding: utf-8 # 导包 import numpy as np import dlib import cv2class face_emotion(object):def __init__(self):# 人脸检测器对象,通过它拿到人…

2024年天津天狮学院专升本食品质量与安全专业《分析化学》考纲

2024年天津天狮学院食品质量与安全专业高职升本入学考试《分析化学》考试大纲 一、考试性质 《分析化学》专业课程考试是天津天狮学院食品质量与安全专业高职升本入学考试 的必考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《…

JSP 条件动作标签之if标签详解

好 上文 JSP JSTL引入依赖并演示基础使用我们导入了 JSTL的JAR 并 演示了 IF标签的基础使用 本文 我们来说说 平时开发的常用标签 这里 我们需要先强调一下 常用标签 操作的全部都是域对象 首先 我们来看 条件动作标签 条件动作标签的特点是 依赖于某些域对象值 控制页面输出…

【机器学习 | 聚类】关于聚类最全评价方法大全,确定不收藏?

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

队列实现栈VS栈实现队列

目录 【1】用队列实现栈 思路分析 ​ 易错总结 Queue.c&Queue.h手撕队列 声明栈MyStack 创建&初始化栈myStackCreate 压栈myStackPush 出栈&返回栈顶元素myStackPop 返回栈顶元素myStackTop 判断栈空否myStackEmpty 释放空间myStackFree MyStack总代码…

【LeetCode:828. 统计子串中的唯一字符 | 贡献法 乘法原理】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

YOLOv5小目标检测层

目录 一、原理 二、yaml配置文件 一、原理 小目标检测层,就是增加一个检测头,增加一层锚框,用来检测输入图像中像素较小的目标 二、yaml配置文件 # YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters nc: 3 # number of classes depth_multiple: 0.33 # model…

Matplotlib网格子图_Python数据分析与可视化

Matplotlib网格子图 plt.subplot()绘制子图调整子图之间的间隔plt.subplots创建网格 plt.subplot()绘制子图 若干彼此对齐的行列子图是常见的可视化任务,matplotlib拥有一些可以轻松创建它们的简便方法。最底层且最常用的方法是plt.subplot()。 这个函数在一个网格…

RocketMq 队列(MessageQueue)

RocketMq是阿里出品(基于MetaQ)的开源中间件,已捐赠给Apache基金会并成为Apache的顶级项目。基于java语言实现,十万级数据吞吐量,ms级处理速度,分布式架构,功能强大,扩展性强。 官方…

C++二分查找:统计点对的数目

本题其它解法 C双指针算法:统计点对的数目 本周推荐阅读 C二分算法:得到子序列的最少操作次数 本文涉及的基础知识点 二分查找算法合集 题目 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成…

赢麻了!义乌一个村有5000个网红,有人年收租就300万!

#义乌一村电商年成交额超300亿# ,在中国,电商行业的发展可谓是日新月异,而位于浙江省义乌市的江北下朱村,正是这股潮流的一个典型代表。这个村子,处处弥漫着“直播”的气息,仿佛每个人都在为这个新兴行业助力。 江北下…

openEuler Linux 部署 FineBi

openEuler Linux 部署 FineBi 部署环境 环境版本openEuler Linux22.03MySQL8.0.35JDK1.8FineBi6.0 环境准备 升级系统内核和软件 yum -y updatereboot安装常用工具软件 yum -y install vim tar net-tools 安装MySQL8 将 MySQL Yum 存储库添加到系统的存储库列表中 sudo…

【anaconda】numpy.dot 向量点乘小技巧

假设向量A[1,1], 向量B[2,3]。如果想知道他们的内积就可以输入如下代码: 当然,如果是两个列向量相乘,肯定是不对的 但是如果没有维度也一样可以求得内积,而且结果不会套在列表里

自驾游汽车托运是交智商税吗?

自驾游汽车托运是交智商税吗? 亲爱的小伙伴们 你们有没有遇到过这样的困扰: 自驾游时,车辆的运输问题让你头疼不已? 是选择自己驾驶还是托运呢? 今天,我就来给大家种草一下汽车托运的好处, 让你的自驾游之旅更加轻松愉快! 1️.…

适用于 Mac 和 Windows 的顶级U 盘数据恢复软件

由于意外删除或设备故障而丢失 USB 驱动器中的数据始终是一件令人压力很大的事情,检索该信息的最佳选择是使用优质数据恢复软件。为了让事情变得更容易,我们已经为您完成了所有研究并测试了工具,并且我们列出了最好的 USB 记忆棒恢复软件&…

计算机编程基础教程,中文编程工具下载,编程构件组合按钮

计算机编程基础教程,中文编程工具下载,编程构件组合按钮 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件&#xff0c…

Java中的泛型是什么?如何使用泛型类和泛型方法?

Java 中的泛型是一种编程机制,允许你编写可以与多种数据类型一起工作的代码,同时提供编译时类型检查以确保类型的安全性。泛型的主要目的是提高代码的可重用性、类型安全性和程序的整体性能。 泛型类(Generic Class): 在泛型类中…

均匀球形分布的随机三维单位向量

生成具有均匀球形分布的随机三维单位向量[参考] import numpy as np import matplotlib.pyplot as plt def random_three_vector():"""Generates a random 3D unit vector (direction) with a uniform spherical distributionAlgo from http://stackoverflow.c…