深入理解 linux swapper 进程

Linux中的特殊进程:idle进程(0号进程)、init进程(1号进程,被systemd 取代 )、kthreadd进程(2号进程) kthreadd线程是内核空间其他内核线程的直接或间接父进程,PID为2;idle进程是init进程和kthreadd进程(内核线程)的父进程;init进程是Linux中第一个用户空间的进程,PID为1;该进程是Linux中的第一个进程(线程),PID为0;init进程是其他用户空间进程的直接或间接父进程;kthreadd线程负责内核线程的创建工作; 阅读详情
AI摘要

本文概述了Linux中的关键进程,包括调度进程、init进程、页守护进程及其相关特性,如僵死进程和swapper进程的工作机制。

转载博文:

http://blog.youkuaiyun.com/bengda/article/details/7681327

LINUX进程小结

id为0的进程通常是调度进程,常常被称为交换进程(swapper),该进程为内核的一部分,他并不执行任何磁盘上的程序,因此也被称为系统进程。
id为1 init进程,在自举过程结束后由内核调用。
id为2 页守护进程

对于父进程已经终止的所有进程,他们的父进程都改变为init。
在一个进程终止时,内核逐个检查所有活动的进程,以判断他是否是正要终止进程的子进程,如果是,则将该进程id更改为1,这种方法保证了每个进程都有一个父进程。

如果子进程在父进程终止之前终止,父进程如何能做相应检验得到子进程的终止状态呢?对此的回答是:内核为每个子进程保存了一定量的信息,所以当终止进程的父进程调用wait或waitpid时,可以得到这些信息。
僵死进程:一个已经终止,但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程

一个由init进程领养的进程终止时会发生什么?他会不会变为一个僵死进程?
否!因为init被编写为无论何时只要有一个子进程终止,init就会调用一个wait函数取得其终止状态。这样就防止了系统中有很多僵死进程。

 

Swapper 进程:

http://blog.chinaunix.net/uid-26856484-id-3266514.html

进程0 :
所有进程的祖先叫做进程0 ,idle 进程或因为历史的原因叫做swapper 进程。它是在 linux 的初始化阶段从无到有的创建的一个内核线程。这个祖先进程使用静态分配的数据结构。
在多处理器系统中,每个CPU都有一个进程0,主要打开机器电源,计算机的BIOS就启动一个CPU,同时禁用其他CPU。运行的CPU 上的swapper进程初初始化内核数据结构,然后激活其他的并且使用copy_process()函数创建另外的swapper进程,把0 传递给新创建的swapper进程作为他们进程的PID.
进程1 :
由进程0创建的内核线程执行init() 函数,init() 一次完成内核的初始化。init()调用execve()系统调用装入可执行程序init ,结果 ,init 内核线程变成一个普通的进程,且拥有自己的每个进程内核数据结构。在系统关闭之前,init 进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。

 


 

嵌入式学习——2——进程(Process) 1、linux启动的第一个进程是0号进程,是静态创建的2、在0号进程启动后会接连创建两个进程,分别是1号进程和2和进程。3、1号进程最终会去调用可init可执行文件,init进程最终会去创建所有的应用进程。4、2号进程会在内核中负责创建所有的内核线程5、所以说0号进程是1号和2号进程的父进程;1号进程是所有用户态进程的父进程;2号进程是所有内核线程的父进程。 阅读详情

相关推荐

Linux内核进程,线程,进程组,会话组织模型以及进程管理

唤醒睡眠状态任意的线程可以用wake_up_process,它可和唤醒处于深度睡眠状态的线程。结合最开始的图和代码,我们可以得到如下结论:1.kthead衍生的内核线程没有session pid,说人话就是所有的内核线程没有都没有操作控制台,不能通过控制台去操作控制。2.idle任务不会出现在for_each_process的处理循环中。3.每cpu_rq就绪队列中,不会将idle统计到nr_running中。

tugouxp的专栏 3114

微视linux swapper进程

swapper是linux第一个线程,也就是0号线程。很多书里面都有详细介绍。 为什么linux启动之后,swapper线程就开始运行了呢? 我认为主要有两点: 第一点:静态部分。 swapper线程通过静态初始化,设置的地址空间是内核高1G的空间。也就是说其使用的正文段,数据段和linux使用的正文段和数据段是完全一致的。 第二点:动态部分。 堆栈寄存器等寄存器在内核启动阶段通过汇编语句设置。...

shipinsky的博客 1300

深入理解Linux僵尸进程与孤儿进程:C++多进程编程实战与系统资源管理

在操作系统进程管理中,进程生命周期管理是核心基础概念。其原理基于父子进程间的资源继承与状态同步机制,通过fork()系统调用创建子进程,父进程需通过wait()系列函数回收子进程资源。这一机制的技术价值在于保障系统资源的有效释放,避免进程号等有限资源被无效占用。在C++后端开发、系统编程及服务器架构等应用场景中,若处理不当会产生僵尸进程,导致资源泄漏;或形成孤儿进程,由init进程自动接管。本文聚焦于Linux环境下进程状态管理的工程实践,通过C++代码示例演示如何制造、检测与避免僵尸进程,并深入探讨SIG

weixin_34357928的博客 350

Linux 为什么运行 swapper

linux 系统中,当 cpu 上没有要执行的任务时,往往会运行 swapper 进程,即 idle 状态,这时我们可以说 cpu 处于空闲状态。

Mercury_Lc的博客 1627

Linux内核0号进程:idle进程的诞生与启动全解析

在Linux内核中,当CPU没有任务可运行时,调度器需要选择一个进程来兜底,这就是idle进程(swapper)。该进程每个CPU都有一个,pid为0,永远处于可运行状态。要理解其诞生机制,需要从start_kernel到rest_init的启动主线说起。系统在完成核心初始化后,通过rest_init创建pid1和pid2,然后当前执行上下文直接演变为idle进程,整个过程没有fork。随后cpu_startup_entry进入do_idle死循环,通过hlt指令降低功耗。在实际生产环境中,可以通过/pro

weixin_28730131的博客 300

74HC165级联踩坑实录:STM32读取32路开关状态,时序调试与常见问题排查

本文详细介绍了74HC165级联在STM32读取32路开关状态时的时序调试与常见问题排查。从硬件设计的PCB布局优化、电源噪声控制,到软件时序的精确调校和数据采集策略,提供了完整的解决方案。通过逻辑分析仪和示波器的高效使用,解决了信号延迟和干扰问题,最终实现了稳定可靠的32路信号读取。

weixin_34046298的博客 313

linux 的 swapper 进程不能sleep,深入理解perf报告中的swapper进程

本文将要为您介绍的是深入理解perf报告中的swapper进程,教程操作步骤:一、前言1、在perf监控进程的系统调用时,会出现大量swapper进程2、官方描述该进程是当CPU上没有其他任务运行时,就会执行swapper。换句话说swapper意味着CPU啥事也没干,跑去休息去了3、本文来观察一下swapper在cpu上的表现二、环境准备组件版本OSUbuntu 16.04.4 LTSsyste...

weixin_31302227的博客 598

别再为倍福EL6021/EL6022的RS485接线头疼了!手把手教你硬件跳线与软件配置(附Modbus RTU主站例程)

本文详细解析了倍福EL6021/EL6022模块的RS485硬件跳线与软件配置方法,包括Modbus RTU主站编程实战。从端子定义、跳线操作到TwinCAT 3环境设置,提供完整的通信例程和故障排查技巧,帮助工程师快速解决工业现场通信问题。

weixin_30634661的博客 591

深入理解Linux内核个人小结3--进程

进程---程序执行的一个实例 一.  进程的静态特性    1.进程与线程:       Linux2.6内核版本支持多线程,现在大部分多线程应用程序都是使用pthread库编写的。  Linux2.6内核加入了对内核线程组的概念,每个进程描述符多加了一个tgid字段。       Linux通过轻量级进程来实现对多线程的支持,线程之间可以共享一些资源(地址空间、打开的文件等)。线

我是小强的专栏 715

QNX系统中的密码哈希格式——数据安全深度分析

综上所述,QNX系统中的Shadowed密码哈希格式提供了一种有效的数据安全机制,能够保护用户密码的安全性。通过将用户密码的哈希值存储在系统文件中,并结合哈希算法和盐值的使用,可以有效地防止明文密码泄露和密码破解。密码哈希是一种常用的安全技术,用于将用户密码转换为不可逆的哈希值,以保护用户的敏感信息。在QNX操作系统中,存在一种称为Shadowed密码哈希格式的机制,用于存储用户密码的安全散列值。当用户登录系统时,系统会将用户输入的密码与保存的哈希值进行比对,以验证密码的正确性。在上述代码中,首先使用。

UneDatabase的博客 252

42、多媒体与虚拟现实在艺术和影视领域的创新应用

本文探讨了多媒体与虚拟现实在艺术和影视领域的创新应用,涵盖三个典型案例:影视与人类学融合项目通过协作模式模糊作者与观众界限,推动文化文献的发展;交互式数字短片《分手》利用基于对象的广播技术探索个性化影视体验;威尼斯双年展瑞士馆4D项目则通过虚拟现实技术实现文化遗产的数字化展示。这些案例展示了技术在叙事、用户体验及文化保护中的深度应用,并展望了未来技术融合、个性化深化与文化遗产传承的发展趋势。

kappa的博客 114

《深入理解Linux内核》读书笔记-第三章-进程(2) .

进程切换: 为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为被称为进程切换、任务切换或上下文切换。 硬件上下文: 尽管每个进程可以拥有属于自己的地址空间,但所有进程必须共享CPU寄存器。因此,在恢复一个进程的执行之前,内核必须确保每个寄存器装入了挂起进程时的值。 进程恢复执行前必须装入寄存器的一组数据称为硬件上下文。硬件

lengwuqin的专栏 501

YOLOv8改进 | 主干篇 | 利用MobileNetV2替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者⭐⭐⭐⭐。

Snu77的博客 5685

《深入理解Linux内核(第三版)》笔记(一),第二章内存寻址

笔记(一) 对应原书第二章,内存寻址

系统!内核! 953

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 66

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

深入理解Linux内核之主调度器(下)

4.进程上下文切换 前面选择了一个合适进程作为下一个进程,接下来做重要的上下文切换动作,来保存上一个进程的“上下文”恢复下一个进程的“上下文”,主要包括进程地址空间切换和处理器状态切换。 注:这里的上下文实际上是指进程运行时最小寄存器的集合。 如果切换的next进程不是同一个进程,才进行切换: __schedule i f (likely(prev != next)) { ... context_switch //进程上下文切换 } 4.1 进程地

LieBao 377

OceanBase数据迁移(OMS)深度解析:异构数据库迁移方案、核心原理与实战优化指南

OceanBase迁移服务(OMS)提供异构数据库间全量+增量数据迁移与实时同步能力,核心价值在于保障业务连续性、数据一致性和异构兼容性。其分层架构包含服务接入层、流程编排层和组件链路层,支持Oracle/MySQL/DB2等与OceanBase的数据交互。关键技术包括DBCat引擎处理结构转换、并行分片实现全量迁移、以及日志解析保障增量同步。OMS通过类型映射、批量提交和断点续传等优化手段,确保迁移过程高效可靠,典型应用于去O迁移、数据库升级等场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 849

Linux深入理解内存管理36

Linux深入理解内存管理36(基于Linux6.6)---临时页表映射过程介绍

ListQ的博客 991

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深入理解Linux内核-第七章 进程调度 http://blog.youkuaiyun.com/sailor_8318/article/details/2460177

深入理解Linux内核-第七章 进程调度 Sailor_forever分析整理 sailing_9803@163.com 转载请注明 http://blog.youkuaiyun.com/sailor_8318/archive/2008/05/20/2460177.aspx   【摘要】本章首先分析了Linux调度的基本分时策略,然后介绍了RR、FIFO、OTHER等三种调度算法以及与之相关的基本时间

诺尔曼 988

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《深入理解Linux内核》--第七章:进程调度:读书笔记

零、感想 进程调度涉及的 priority、进程的状态(TASK_RUNNING、TASK_INTERRUPT、TASK_UNINTERRUPT、TASK_STOPPED)。Linux系统有个PID为0的进程——swapper进程(只有在CPU不能执行其他进程才执行)。 在多处理器系统中涉及 调度域,比较值得注意的是Intel的超线程技术(包括几个内部寄存器的拷贝,当前线程在访问...

love19820823 113

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深入理解Linux内存映射机制

创建时间:2008-08-31 文章属性:原创 文章提交:wzt (wzt_at_xsec.org) 深入理解Linux内存映射机制 Author: wzt EMail: wzt@xsec.org Site: http://www.xsec.org & http://hi.baidu.com/wzt85 Date: 2008-6-13 一. 绪 论 二. X86的硬件

风之伤 983

Linux内核页表管理机制

本文深入解析Linux内核页表管理机制,重点阐述了ARM64架构下的双页表系统设计。主要内容包括: 页表组织架构: 采用TTBR0/TTBR1双页表机制,用户空间和内核空间分别维护 每个进程独立拥有用户页表(mm->pgd),内核共享全局页表(swapper_pg_dir) 核心优势: 进程切换时仅需切换TTBR0用户页表 保持TTBR1内核页表不变,避免TLB失效 显著提升系统调用性能 关键实现: 硬件通过虚拟地址高位自动选择TTBR 内核启动时静态初始化swapper_pg_dir 进程切换时通过

zqh1630的专栏 305

深入理解Linux CPU热插拔:smpboot流程、同步机制与故障排查

CPU热插拔是现代多核系统动态管理计算资源的核心机制,其本质是通过操作系统内核协调硬件与软件状态,实现CPU核心的在线与离线操作。该技术基于状态机驱动,涉及硬件初始化、固件协议、内核线程创建及状态同步等多个层面,其中smpboot流程是CPU上线的关键环节,负责将离线核心唤醒为可调度实体。在工程实践中,理解cpu_operations抽象层与完成量同步机制至关重要,它们确保了不同架构(如x86/APIC与ARM/PSCI)下启动流程的一致性。然而,在混合架构或虚拟化环境中,固件接口不一致、资源竞争或同步超时

weixin_34049948的博客 445
上一篇: android Thread/Handler 实现
下一篇: 深入理解 bootloader 启动linux atags/boot param 传递
windtakers
博客等级 码龄17年 94粉丝 197原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值