Linux基础之进程的基本概念

目录

一、进程的基本概念

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.hqwc.cn/news/690250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年618值得安利的数码好物有哪些?年度值得入手的数码清单分享

随着2024年618购物节的到来,各类数码好物纷至沓来,为消费者提供了丰富多样的选择,在这个充满诱惑的购物狂欢中,哪些数码产品值得我们重点关注和入手呢?接下来就让我们一起探索这份年度值得入手的数码清单,分…

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

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

flstudio21中文版2024最新下载安装图文使用教程

FL Studio 21.2.3.4004中文版 中文别名水果编曲软件,是一款全能的音乐制作软件,包括编曲、录音、剪辑和混音等诸多功能,让你的电脑编程一个全能的录音室,它为您提供了一个集成的开发环境,使用起来非常简单有效&#xf…

课程设计 大学生竞赛系统

课程设计 大学生竞赛系统 wx:help-assignment 学生用户: wx:help-assignment 首页:推荐一些竞赛,热门活动等; 广场:用户可以通过广场来发表动态,同时也可以查看别人发布的动态,并且可以 关注…

图鸟模板-官网:基于Vue 3的前端开发新篇章

一、引言 随着前端技术的飞速发展,企业对于官网的需求也从简单的展示型网站向功能丰富、交互体验良好的方向转变。在这样的背景下,图鸟模板-官网以其基于Vue 3的纯前端开发特性,以及支持微信小程序、支付宝小程序、APP和H5的跨平台能力&…

小程序如何进行评分评价

小程序以其便捷、快速、无需安装的特点,成为了众多企业、品牌与消费者之间的重要连接桥梁。而评价评分机制,作为小程序中不可或缺的一环,对于提升用户体验、建立用户信任、促进商家与用户的互动等方面,都具有至关重要的意义。本文…

1756jsp农产品销售管理系统Myeclipse开发mysql数据库C2C模式java编程计算机网页项目沙箱支付

一、源码特点 java 农产品销售管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0…

【nodejs 命令行交互神器 - inquirer.js】

需求 大家在开发时,有时需要从命令行读取用户的输入,或者让用户选择。在nodejs中,这个怎么实现? 原生实现 ❌ process.stdin.setEncoding(utf8);process.stdin.on(readable, () > {let chunk;// 使用循环确保我们读取所有的可用输入wh…

品鉴中的挑战与探索:如何勇敢尝试不同类型的云仓酒庄雷盛红酒

品鉴云仓酒庄雷盛红酒不仅是一种感官的享受,更是一种挑战与探索的过程。不同类型的云仓酒庄雷盛红酒具有各自与众不同的风味和特点,通过勇敢尝试不同类型的红酒,我们可以拓展自己的品鉴视野,发现更多未知的美妙滋味。 首先&#x…

基于Nios软件实现流水灯+串口输出

基于NIOS-II软核实现流水灯串口输出 引言: ​ 在现代电子设计领域,FPGA(现场可编程门阵列)因其灵活性和并行处理能力而成为实现复杂数字系统的首选平台。Nios II,作为Altera(现为Intel旗下)提供…

模拟集成电路(3)----单级放大器(共源极)

模拟集成电路(3)----单级放大器(共源极) 放大是模拟电路的基本功能 大多数自然模拟信号太小而无法处理需要足够的信噪比 理想的放大器 线性:无限的幅度和频率范围 输入阻抗无限大 输出阻抗无限小 共源放大器 共源放大器就是将源极接A…

[初阶数据结构】单链表

前言 📚作者简介:爱编程的小马,正在学习C/C,Linux及MySQL。 📚本文收录于初阶数据结构系列,本专栏主要是针对时间、空间复杂度,顺序表和链表、栈和队列、二叉树以及各类排序算法,持…