linux五大模块概述-----只描述了进程(linux内存管理,进程调度模块,进程间通信,文件系统模块,网络模块)

一文让你读懂Linux五大模块内核源码,内核整体架构设计(超详细) 一、前言 本文是“Linux内核源码分析”系列的专业,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。 二、 Linux内核的核心功能 如下图所示,Linux内核只是Linux操作系统一部分。对下,它管理系统的所有硬件设备;对上,它通过系统调用,向Library Routine(例如C库)或者其它应用程序提供接口。 ​ 因此,其核心功能就是:管理硬件设备,供应用程序使 阅读详情

首先描述进程调度策略:
policy

实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。
SHCED_RR和SCHED_FIFO的不同:
当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。
SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。
知道了调度策略,那我们就不得不认识一下调度策略的实际执行者,调度器(scheduler)。
linux调度器
linux中也引入了模块化的思路,方便用户进行扩展,具体描述可参照:

从2.6.23内核开始,调度器采用了模块化设计的思想,从而把进程调度的软件分成了两个层次,一个是core scheduler layer,另外一个是specific scheduler layer:

schedule层次结构
从功能层面上看,进程调度仍然分成两个部分,第一个部分是通过负载均衡模块将各个runnable task根据负载情况平均分配到各个CPU runqueue上去。第二部分的功能是在各个CPU的Main scheduler和Tick scheduler的驱动下进行单个CPU上的调度。调度器处理的task各不相同,有RT task,有normal task,有Deal line task,但是无论哪一种task,它们都有共同的逻辑,这部分被抽象成Core scheduler layer,同时各种特定类型的调度器定义自己的sched_class,并以链表的形式加入到系统中。这样的模块化设计可以方便用户根据自己的场景定义specific scheduler,而不需要改动Core scheduler layer的逻辑。
详细请参考:http://www.wowotech.net/process_management/scheduler-history.html

我们了解了进程的调度策略,也就了解了单个进程的是如何占用CPU等资源的。接下来我们接着了解,那么多进程,他们之间的联系,进程间的相互关系—进程间通信(interprocess communication)。那么进程间通信是如何做到的呢?
进程线程同步互斥

另外需要了解futex。
Futex是一种用户态和内核态混合的同步机制。首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不用再执行系统调用了。当通过访问futex变量告诉进程有竞争发生,则还是得执行系统调用去完成相应的处理(wait
或者 wake
up)。简单的说,futex就是通过在用户态的检查,(motivation)如果了解到没有竞争就不用陷入内核了,大大提高了low-contention时候的效率。
为什么要有futex, 经研究发现,很多同步是无竞争的,即某个进程进入互斥区,到再从某个互斥区出来这段时间,常常是没有进程也要进这个互斥区或者请求同一同步变量的。但是在这种情况下,这个进程也要陷入内核去看看有没有人和它竞争,退出的时侯还要陷入内核去看看有没有进程等待在同一同步变量上。这些不必要的系统调用(或者说内核陷入)造成了大量的性能开销。为了解决这个问题,Futex就应运而生。

参考链接:https://blog.youkuaiyun.com/d_guco/article/details/86429885

以上问了解了进程调度的策略和进程调度器,并且在进程间通信的时候,我们也描述了进程在linux中的实际表示,进程控制块(PCB,在linux中就是struct task_struct)。
那么进程调度器是不是就是简单的按照上面的描述进程操作呢?当然不是,因为linux为了让调度器兼容更多的调度更多的实体,对调度的描述,封装了了调度实体 struct sched_entry以及进行了分类管理struct sched_class。下面就简单介绍下调度类和调度实体。并且我们将调度策略与调度类联系起来。

知道了进程调度策略,进程间的通信机制,那么进程到底是一种怎样的存在呢?进程的运行内存空间是如何分配的呢?
下面这张图我们简单了解下linux中的进程:
进程管理

linux内核图解详细介绍各模块关系 linux内核各模块关系图,linux内核图解详细介绍各模块关系 立即下载

相关推荐

KEGG两类报错--①No gene can be mapped--②URL ‘https://rest.kegg.jp/link/hsa/pathway‘…

版本问题,重新安装一下clusterProfiler包。网络问题,可以等待之后再试一下(试过不是)(以上可以排除基因不存在的错误因素)

weixin_57699783的博客 2万+

Linux模块有哪些

以上仅列举了一部分常见的 Linux 模块,实际上还有很多其他类型的模块。需要注意的是,在使用模块时,需要先加载模块到内核中,然后才能使用模块提供的功能。在 Linux 系统中,模块(module)是一种动态加载的可执行二进制文件,可以在运行时插入到内核中,以扩展操作系统的功能或者添加设备驱动程序等。

嵌入式之斋 857

SwinIR实战:从环境搭建到模型训练的全流程解析

本文提供了SwinIR超分辨率模型从零开始的全流程实战指南。详细解析了基于PyTorch和Anaconda的环境搭建、数据准备与配置文件修改、训练启动与常见错误排查(如张量尺寸不匹配),以及模型评估方法,帮助读者高效部署并训练SwinIR模型。

weixin_28224217的博客 319

linux系统介绍

从九十年代初诞生至今,各种各样的linux发行版本让我们充分领略了它的魅力,也极大地享受到了它给学习工作带来的方便。一个优秀的操作系统离不开一个优秀的内核。在世界各地的成千上万的自由软件爱好者的共同努力下,linux的内核不断地完善,功能越来越丰富,因而粉丝团也正以指数级的速度增长,那么,现在就让我们来分析一下其“灵魂”——内核。 一.内核体系结构 Linux内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程 间通信模块和网络接口模块。 进程调度模块用

qq_61141142的博客 1100

CTransformers: 高效的Python语言模型绑定库

CTransformers是一个为C/C++实现的Transformer模型提供Python绑定的开源库。它基于GGML库构建,旨在为开发者提供一种高效且易用的方式来在Python中使用各种流行的语言模型。支持多种流行的语言模型,如GPT-2、LLaMA、Falcon等提供统一的简单API接口支持GPU加速(CUDA和Metal)与Hugging Face Transformers和LangChain集成支持流式输出和嵌入计算。

helloaiworld的博客 1268

用Bus Hound和MIDIOX抓包分析USB MIDI数据流:从硬件接口到软件解析的完整实战

本文详细介绍了如何使用Bus Hound和MIDIOX工具抓包分析USB MIDI数据流,从硬件接口到软件解析的完整实战过程。通过解析MIDI协议、捕获Note On/Off事件、控制变更消息等实例,帮助开发者深入理解音乐数字接口的底层通信机制,并提供了常见问题的解决方案和调试技巧。

weixin_42692935的博客 406

linux 优先级反转,linux进程、线程及调度算法(四)

作者: 雪山肥鱼时间:20210523 21:08目的:进程调度中的负载均衡负载均衡linux中,每个核都会跑相同的调度算法RTFIFORRNormalCFS(New) 红黑树,左右滚,自动奖罚nice值奖励与惩罚(Legacy)RT 进程(task_struct): N 个优先级最高的RT 分布到 N 个核上,每个核乐于工作核心空的时候,pull_rt_task( ) <<&lt...

weixin_39564853的博客 439

PCB模块化设计24——DCDC电源模块PCB布局布线设计规范

PCB模块化设计24——DCDC电源模块PCB布局布线设计规范

qq_31444421的博客 2万+

Linux进程详解(二)完结

原创架构师之路2019-08-13 22:08 接Linux进程详解(一) 4. 进程运行 程序运行时大部分进程状态为运行或睡眠。调度算法解决可以跑的运行状态(就绪和运行),剩下的不可以跑的进程就是睡眠和等待。睡眠实现对应的代码就是调用了schdule函数,唤醒则是对应的是schdule返回。一个进程等资源就会去睡,linux所有的睡眠,对应的task_struct就会挂在队列wait_queue上,当资源来了后,就会唤醒等待队列上的进程。 5. 进程死亡 fork执行后,就会变成2个进程返...

weixin_39355187的博客 511

详解MegatronLM序列模型并行训练(Sequence Parallel)

MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。

分享机器学习、深度学习、分布式计算、MLSys相关领域知识 1万+

【图像拼接】论文精读:As-Rigid-As-Possible Shape Manipulation(ARAP)

文章目录前言1.摘要2.算法的总体流程总结 前言 图像变形算法 1.摘要 论文提出了一个二维图形互动系统。图形是建立在三角形网格上的,用户只需移动几个网格顶点(限制顶点),系统通过最小化每个三角形的误差计算网格剩余顶点(自由顶点)的位置。 算法分两步: 适当旋转每个三角形。 调整大小。 关键是使用二次度量误差将最小化问题转换成线性方程组,然后再解这个方程组。 刚性形状变形是很难的,论文的研究使其变得简单。 2.算法的总体流程 总的流程分三步: 将图形用三角形网格覆盖 选择三个点(限制顶点) 操纵限

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 15万+

Linux 内核文件系统模块结构体关系图

Linux虚拟文件系统结构体关系图

Sanjiye的博客 1366

基于DO-178C/331的飞控软件研发环境的研究

本研究提出了一套基于DO-178C/331标准的飞控系统软件开发和验证框架。通过优化模型库的设计、代码生成配置和测试验证流程,显著提升了飞控系统软件的开发效率和安全性。未来的研究可以进一步扩展模型库的功能,以适应更复杂的飞控系统需求。

qq_41854911的博客 561

Linux内核组件(五大模块)分别是什么用途?

vfork是 创建一个子进程,并和父进程的内存数据share一起用)来创建新的进程,当然,那是在用户空间的函数,它会调用内核中的clone()系统调用,由clone()函数继续调用do_fork()完成进程的创建。由于不同的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。每个LInux进程总是按照如下的调度类型被调度:先进先出的实时进程、时间片轮转的实时进程、普通的分时进程。它是这样一种行为,为了控制进程的执行,内核挂起当前在CPU上运行的进程,并恢复以前挂起的某个进程的执行。

m0_74282605的博客 1145

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux内核的五大模块

一、进程调度模块   Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。 【进程创建】:   在Linux环境编程时,一般采用fork()/vfork()函数(fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中;vfork是 创建一个子进程,并和父进程的内存数据shar...

青萍之末的博客 9845

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux 内核五大模块

Linux内核的五大模块 1.进程调度模块 2.内存管理模块 3.文件系统模块 4.进程间通信模块 5.网络接口模块 进程调度模块 用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU, 同时保证内核能及时地执行硬件操作。 反转楼梯最后期限调度算法(RSDL),吸取了队列理论,公平调度。又被称为完美公平调度算法(CFS) 内存管理模块 用于确保所有进程能够安全地共...

华瑞科技 1437

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linux 内核模块太大,Linux内核的五大模块

一、进程调度模块Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。【进程创建】:在Linux环境编程时,一般采用fork()/vfork()函数(fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中;vfork是 创建一个子进程,并和父进程的内存数据share一起用)来创建...

weixin_42120563的博客 174

Linux内核系统模块组成

Linux内核系统模块组成     1、进程调度模块 Linux 以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。 2、内存管理模块 Linux的内存管理模块采用先进的虚拟存储机制,实现对多进程的存储管理。它提供了十分可靠的存储保护措施,对进程赋予不同的权限,用户不

joqian的专栏 1755

【Linux内核及内核编程】Linux内核的组成

作为全球应用最广泛的开源操作系统内核,Linux内核不仅支撑着Android系统、云计算平台和超级计算机,更是理解现代操作系统原理的最佳实践样本。

byte轻骑兵的技术小窝 2458

文件系统认知,Linux内核框图

一、什么是文件系统 文件系统是操作系统用于明确存储设备组织文件的方法,就是一个用于管理系统的方法。 这个方法就是文件管理系统,简称文件系统。可以理解为是在硬件上跑着很多个不同的程序 二、文件系统的种类有哪些 FAT VFAT NTFS EXT1/2/3/4 HFS BRTFS … 树莓派查看文件系统命令:df -T vfat:与boot代码相关的系统(bootloader,dernel) ext4:根目录 tmpfs:内存文件系统 三、 什么是分区 windows: 随意(面向普通用户PC

weixin_46691155的博客 537

linux内核体系结构

linux内核体系结构

qq_36100288的博客 2401

理解Linux内核

如图,Linux内核主要包括5个模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。进程管理: 进程管理负责进程对CPU的访问,如任务的创建、调度和终止等。内存管理: 主要作用是控制和管理多个进程,使之能够安全的共享主内存区域。文件系统: Linux中虚拟文件系统(VFS)是linux基于各种逻辑文件系统抽象出的一种内存中的文件系统,隐藏了各种硬件设备细节,为用户提供统一的操作接口,使用户访问各种逻辑文件系统和设备时,不用区分具体的逻辑文件系统。网络功能: 网络接口提供了对各种网络

打不倒的程序猿 1376

Linux 内存管理模块

摘要:Linux内核包含五大核心子系统:进程调度(控制CPU资源访问)、内存管理(虚拟/物理内存映射)、虚拟文件系统(统一文件接口)、网络接口(分层网络通信)和进程间通信(多种IPC机制)。其中内存管理是核心,通过MMU实现虚拟地址转换,采用延迟分配策略(首次访问触发缺页中断才分配物理内存),并利用LRU算法和kswapd线程进行内存回收。这种架构实现了地址隔离、内存保护和虚拟内存扩展,使进程能使用超过物理RAM的地址空间,同时通过内存池复用和交换机制优化性能。

qq_51942551的博客 1034

Linux内核源码阅读笔记

内存管理利用虚拟文件系统支持交换,交换进程由swapd定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因,当一个进程存取的内存被换出时,内存管理向文件系统发出请求,同时挂起当前正在运行的进程。内存管理模块负责管理系统,用于确保所有进程能够安全的共享计算机的内存,内存管理模块还支持虚拟内存,使得linux系统能够支持进程使用比实际内存空间更大的内存地址空间。Linux内核由五个模块组成,进程调度模块,内存管理模块,进程间通信模块,虚拟文件系统模块,网络接口模块。分配和释放内存空间的过程。

qq_40804558的博客 579
上一篇: 谈论bringup我们到底在谈论什么?
下一篇: Linux 下UVC&V4L2技术简介(三)
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值