跟涛哥一起学嵌入式 14:Linux下的进程江湖

2024-03-21 00:50

本文主要是介绍跟涛哥一起学嵌入式 14:Linux下的进程江湖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有人的地方,就有江湖

 Linux进程也不例外 

有进程的地方,也有江湖

 

那些年,奢望金盆洗手的江湖大佬们

 

按照武侠世界的套路:一旦一个高手决定金盆洗手、隐退江湖,往往下场会很惨、甚至引发整个武林动荡。比如衡山派的刘正风,早已厌倦了江湖,打算去当一个音乐家,整了个金盆洗手大会,结果被嵩山派搞得家破人亡。再比如飞虎镖局老板吕腾空在金盆洗手大会现场,又稀里糊涂接了一个大镖,天魔琴重现江湖,再次把江湖整得血雨腥风。人在江湖漂,哪能不挨刀,出来混,总是要还的,吃干了,抹净了,然后做甩手掌柜,想脱身基本上很难,正所谓:一入江湖深似海,从此便是局中人。

 

不仅仅在武侠世界中,在社会历史长河中,每个人也基本上被历史进程裹胁、随之沉浮,能做到完美脱身的也很少很少。比如胡雪岩、沈万三,比如《大明王朝》中的商人沈一石,再比如《无间道》中的陈永仁,活脱脱一个现实版的余罪:

“三年后又三年,都快10年了,老大”

“今天是你生日啊,臭小子!”

 

在一个没有优雅退出机制的游戏中,既想搏一把,又想完美脱身,是需要极高的智慧和执行力的:既要抵制住不赚最后一个铜板的诱惑,又要在战略执行时果敢迅速,绝不拖泥带水。然而,大部分人却没有这个运气和智慧,总觉得自己能控制所有事情,总想干完这一票就金盆洗手,结果把自己所有的一切、甚至性命都搭了进去。为了所想起了执念,人们就容易变得不理性起来,人性的各种弱点开始暴漏,开始容易陷入各种纷争,比如权力、财富、地位。

 

不仅人类,进程也是如此,一个计算机系统中的所有进程基本上都在为抢占CPU的控制权、为了能跟终端搭上讪、为了能在前台运行而乐此不疲。

 

进入Linux进程的江湖世界

 

在Linux的shell环境下敲入top命令,就可以看到整个Linux系统中的所有进程运行情况:

 

 

比如我的Ubuntu环境,大家可以很清楚地看到:当前系统一共有195个进程,其中1个在running运行中,其余的194个在睡眠中。除此之外,我们还可以看到内存、CPU的使用率,以及进程的运行状态等。如果我们想看这些进程之间的关系,可以在shell环境下敲入pstree命令:

 

通过pstree命令我们可以查看整个进程树以及各个进程之间的关系:父进程、子进程、首进程、控制进程……,如果我们继续对进程进行分析,就会

发现:每个进程并不是孤立存在的,大多数时候,它们跟其它进程通过各种机制一起协同工作、完成某项工作的。一起协同工作的这些进程就构成了一个进程组,有点类似于武侠小说中的各种组合,比如江南奇怪、天罡北斗阵、罗汉阵、玄冥二老、桃谷六仙等。那它们是如何协作工作的呢?很简单,每个进程要都有自己的角色和定位:父进程、子进程、控制进程、首进程、前台进程、后台进程、守护进程、孤儿进程、僵尸进程……,除了进程机制、还有进程间通信、OS 的调度策略等,正如人类一样:有人的地方,就有江湖,有进程的地方,也有江湖。

 

一个Linux进程的金盆洗手

 

人在江湖飘,哪能不挨刀?如果一个进程想金盆洗手,终止运行,会不会引起整个Linux江湖发生混乱?答案是不会。因为Linux系统有各种完善的退出机制、托管机制,清理机制。一个进程如果想终止运行,直接调用exit就可以了,就可以优雅地脱离pstree下的进程树,而基本上不会影响整个Linux其它进程的稳定运行。

 

《Linux系统编程》第04期:打通进程与终端的任督二脉  视频教程发布

 

从本期课程开始,将正式进入多任务并发编程的学习。本期课程的主要内容:如何通过Linux的系统调用接口fork/exec/wait/exit去创建、控制和运行一个进程;进程与终端的关系是怎样的?为什么我们可以使用shell/SSH/xshell/putty/串口等环境运行我们的程序并且可以把运行结果打印到这些软件的界面上?为什么我们可以使用ctrl+C去终止一个进程的执行?各个进程之间是如何相互协作工作的?什么是前台进程?后台进程?守护进程?孤儿进程?僵尸进程?已经购买课程的学员可以

CSDN学院课程学习地址:https://edu.csdn.net/course/detail/20776

:

这篇关于跟涛哥一起学嵌入式 14:Linux下的进程江湖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831275

相关文章

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级