Linux基础之进程

news2024/11/18 12:39:03

目录

一、进程的基本概念

1.1 什么是进程

1.2 PCB的概念

1.3 进程的查看

1.3.1 查看进程方式一

1.3.2 查看进程的方式二

1.4 父进程与子进程


一、进程的基本概念

1.1 什么是进程

进程是什么?

课本概念:程序的一个执行实例,正在执行的程序等。
内核观点:担当分配系统资源( CPU 时间,内存)的实体。

这个概念比较的官方,等会我可以给大家讲一讲我是怎么去理解进程这个概念的。

1.2 PCB的概念

在说PCB这个概念之前,我们首先来认识一下,一个程序是如何被我们的CPU所执行的。

       想必大家都有听说过一句话,叫做 “程序被加载到内存上了”。这是什么意思呢,为什么程序要被加载到内存上呢?根据我们的冯诺依曼结构,一个程序原本是被保存在磁盘上的,当要执行这个程序时,其就会被操作系统拷贝到内存上,程序在被拷贝过来之前,操作系统就已经在其上运行了,一个操作系统上一定会存在很多的“进程”,那操作系统要不要管理这些进程呢,肯定是要的,那怎么去管理呢,"先描述,在组织"(上节所说),那又因为操作系统是由c写的,那我们用什么去描述这个进程呢?用一个包含进程各种属性的结构体。

而这个结构体我们就叫做PCB,process control block(进程控制块)

Tips:在Linux中,PCB又可以叫做 struct_task。

这里用一张图给大家描述一下这个过程。

那么这些结构体里面会有些什么内容呢,我们可以大概猜测一下:

struct PCB
{
   //标识符
   //状态
   //优先级
   //内存指针,指向代码
   //上下文数据
   struct PCB* next;  
}

 这些内容我们之后会逐渐学习到,这里先不过多赘述。
       再有了PCB之后,那么操作系统对我们进程的管理,就变成了对我们PCB链表的管理(增删查改)。
       那这里我们可以就可以这样去理解我们的进程。

进程=可执行程序 + 内核数据结构(PCB)

1.3 进程的查看

       首先我们的进程有其自己的标识符,叫做 PID,我们可以通过这个可以去查看我们想要查看的进程。

这里主要介绍两种查看方式。

1.3.1 查看进程方式一

通过指令进行查看。

指令:ps ajx


那我们要是想要查看我们想看的进程该怎么做呢?
这里我们先写一个死循环的代码。

然后让其跑起来,这里要是只想看我们运行代码的进程,可以加个过滤指令:

ps ajx | grep mybin 

然后再将我们的标签头部也给加上:

ps ajx | head -1 && ps ajx | grep mybin

然后把我们的指令跑起来,重新创建一个ssh渠道去观测。

       可以很清楚的看到我们的mybin程序的PID是19387,那为什么还有一个带mybin的进程呢,那是因为我们再查询的时候,grep带了mybin,他也是一个进程所以一起展示出来了。那在当我们停止程序时,再查询,还能不能看到我们的mybin进程呢。

很明显没有了。

1.3.2 查看进程的方式二

我们通过刚刚那种方式来查看进程的PID太不方便了,那我们能不能让程序自己显示其PID呢?
答案是可以的,我们可以通过unistd库中的一个函数进行查看。

getpid() 

我们可以通过man指令看一下这个函数。

话不多说,就让我们来使用一下这个函数吧,修改一下刚刚的代码。

我们同时开一个窗口用指令来看看ID是否一致。

很明显,两边的id是一致的。

那我们开始正式的介绍第二种查看进程的方式。
       在Linux中有一个动态文件夹叫/proc,这里面会动态地存储进程的信息,我们可以用指令去查看里头的信息。

ls /proc


在 ls /proc 后加上具体的PID值就可以详细的去查看我们进程的信息了。 

1.4 父进程与子进程

       在刚刚的演示当中,我们可以看到PID的左边还有一个叫PPID的值,这个值代表parent PID
即该进程的父进程的PID。
       在unistd.h这个库中也有能查看父进程PID的函数:

查看父进程的PID:getppid()

这里修改代码,给大家演示一下。

试验如下:

通过我们几次的试验,你会发现,我们的PID一直在变化,而我们父进程的PID却没有变化,
这是为什么呢?

       这是因为在我们Linux中,父进程一般是我们的命令行解释器即我们的bash,其PID是不会变化的。

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

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

相关文章

基于StatefulSet控制器在Kubernetes上部署MySQL一主多从

一、前提--StatefuSet特性 1.1 有状态的节点控制器 -- StatefulSet 及其网络状态 容器的解决方案是针对无状态应用场景的最佳实践,但对于有状态应用来说,就并非如此了。Kubernetes 用 StatefulSet 解决了有状态应用编排的问题,本文我们就来…

设计模式-创建型-原型模式-prototype

工作经验类 public class WorkExperience implements Cloneable {private String workDate;private String company;public void setWorkDate(String workDate) {this.workDate workDate;}public void setCompany(String company) {this.company company;}Overridepublic Ob…

【35分钟掌握金融风控策略21】贷前额度策略

目录 贷前策略审批流程和统一额度管理 贷前策略审批流程 统一额度管理 预授信策略 贷前策略审批流程和统一额度管理 贷前包含了多个风控场景,这些风控场景的策略在执行时是否存在先后顺序呢?在贷前,除上述主要的风控场景,还有…

2024年4月12日饿了么春招实习试题【第三题】-题目+题解+在线评测,2024.4.12,饿了么机试【Kruskal 算法, 最小生成树】

2024年4月12日饿了么春招实习试题【第三题】-题目题解在线评测,2024.4.12,饿了么机试 🏩题目一描述:样例1样例2解题思路一:[Kruskal 算法](https://baike.baidu.com/item/%E5%85%8B%E9%B2%81%E6%96%AF%E5%8D%A1%E5%B0%…

【第19章】spring-mvc之全局异常处理

文章目录 前言一、全局异常处理1. 前端2. 后端 二、常见错误页1.增加界面2.web.xml3.异常处理4.效果 总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基…

决策树的学习(Decision Tree)

1.对于决策树的概念: **本质上:**决策树就是模拟树的结构基于 if-else的多层判断 2.目的: 对实例进行分类的树形结构,通过多层判断,将所提供的数据归纳为一种分类规则。 3.优点: 1.计算量小,…

vs2019 STL库里 判断函数类型的模板 is_function_v 与 is_const_v

(1)源代码如下: 经简单代码测试后,得出 vs2019 的 c 编译器 和 其 STL 库的观点与设计:is_const_v 用来判断类型 T 内是否含有 const 修饰符,含有 const 则返回真。但若 T 是含有 const 的引用类型&#xf…

loongarch64 electron打包deb改成符合统信测试通过的deb

需要做软件适配统信系统的自主认证。 我之前是在 麒麟 龙芯 loongarch64 电脑上使用 electron 打包的 deb包:麒麟龙芯loongarch64 electron 打包deb包_electron麒麟系统打包的-CSDN博客 安装在统信电脑 处理器:Loongson-3A60000-HV 2.5GHz 可以使用&…

阿里云和AWS负载均衡服务对比分析

在云计算时代,负载均衡作为一种关键的网络基础设施,承担着在多个服务器之间分发网络流量的重要任务。作为全球两大主要的云服务提供商,阿里云和Amazon Web Services(AWS)都提供了强大的负载均衡解决方案。本文将从性能、功能、可用性和成本等方面对两者进行对比分析。我们九河云…

用python写算法——栈笔记

栈 栈的定义相关算法题 栈的定义 1.它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面&#xff0…

CLI举例:通过URL分类控制用户访问的网站

华为CLI举例:通过URL分类控制用户访问的网站 配置基于URL分类的URL过滤功能,可以实现对用户访问的某一类网站的控制。既可以是FW自带的预定义分类,也可以是管理员配置的自定义分类。 组网需求 如图1所示,FW作为企业网关部署在网络…

(Java)心得:LeetCode——5.最长回文子串

一、原题 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

ws注入js逆向调用函数

这里需要选择一个文件夹 随便 紫色为修改保存 记得ctrls保存 注入代码如下 (function() {var ws new WebSocket("ws://127.0.0.1:8080")ws.onmessage function(evt) {console.log("收到消息:" evt.data);if (evt.data "exit") {…

2024第十六届“中国电机工程学会杯”数学建模A题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

Edge视频增强功能

edge://flags/#edge-video-super-resolution 搜索Video查找 Microsoft Video Super Resolution 设置为Enabled

模型 空船效应

1 空船效应的应用 1.1 空船效应帮助客户服务人员面对挑战性客户 赵敏是一家大型电信公司的客户服务经理。在一次服务中,一位客户因为网络连接问题而非常愤怒,他通过电话对赵敏大声抱怨,并要求立即解决问题。一般在这种情况下,客…

Linux日常管理和服务器配置(二)

一、在系统中配置FTP服务器: 准备工作: a.下载ftp命令 sudo apt install vsftpd 可以先用命令更新一下库 sudo apt-get update 接着输入 systemctl status vsftpd 检查ftp运行状态 然后进入vsftpd.conf文件中修改write为 vim /etc/vsftpdf.conf …

【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机)

作品展示 背景需求: 奕娃幼儿园小中大班益智区超级对对碰 - 小红书#幼儿园益智区 #幼儿园益智区素材 #幼儿园区域材料 #幼儿园环创https://www.xiaohongshu.com/discovery/item/6279bb4d000000002103be71?app_platformandroid&ignoreEngagetrue&app_ve…

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案,通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计,大大降低了工程的设计复杂度,缩短了开发周期,加快了产品的面市速度…

QT 客户端软件开发

QT 是一种功能强大且灵活的跨平台应用程序开发框架,但也存在一些技术难点,需要开发者仔细考虑和克服。以下是一些常见的 QT 软件开发的技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 跨平台兼容性…