Linux 学习之路 - 进程篇 - PCB介绍1-标识符

目录

一、基础的命令

<1> ps axj 命令

<2> top 命令

<3> proc 目录

二、进程的标识符

<1>范围

<2>如何获取标识符

<3>bash进程

三、创建进程


一、基础的命令

前面介绍了那么多,但是我们没有观察到进程相关状态,所以下面我们介绍几个命令,帮助查看进程

<1> ps axj 命令

这个命令就能查看当前所有进程相关信息,其中ps命令通常就是用于查看当前运行的程序。其他的选项暂时不做介绍。

下面我演示一个进程供大家参考

这里先在test.c文件里一段循环代码(如果我们不用循环,进程会很快的开始并销毁,我们没法观察到)

运行该程序,并打开另一个终端,观察这个程序是否为终端

此时我们就会发现,这里面有两个进程,一个是./tt.c 另一个是 grep 命令,grep命令也是进程是因为我们在筛选这个过程本身也就是一个程序,程序运行就是一个进程。这里我们就可以发现,几乎任何的独立的指令就是一个程序,一运行就是一个程序。

<2> top 命令

top命令也能查看一些进程的信息,只不过相对上一个命令,这个命令观察到的进程信息相对限,这个命令主要由于检测系统的运行情况,跟windows操作系统的任务管理器类似,具有监管的功能。

<3> proc 目录

在 /proc 目录下,我们也可以查看进程的信息,不过这里涉及文件系统的相关知识,这里大家简单了解一下就好

这些数字代表就是具体的进程,我们可以进入其中查看对应的数据

这里我们可以看见两个显眼的数据,一个是exe,对应的是磁盘里的对应路径的可执行程序,另外一个cwd就表示当前的工作目录,这也就是我们在我们能在创建文件时,系统默认就能创建在当前目录下的原因。(其他的数据暂不做了解)这里我们是能够修改这个路径的,使用chdir 接口就能完成该操作

只要在chdir 中输入新的文件路径,就修改当前的工作路径。

二、进程的标识符

<1>范围

在操作系统中常常要运行大量的进程,为了方便管理,操作系统给每一个进程都分配了一个标识符,通过标识符唯一确定这个进程。

在64位机器下,这个进程标识符的范围将达到2的22次方。这里的“1”号进程其实就是init进程,也就是系统进程。

<2>如何获取标识符

在了解完标识符的大小后,下面就是怎么获取的问题,在进程被创建时,系统就会自动个这个进分配进程号,我们可以通过getpid这个函数来获取一个进程的标识符(pid)

这里的pid_t其实就个进程都有一是个整数,只不过系统做了重命名。getpid可以获得当前进程的pid , getppid可以获得父进程的pid,这两个函数是系统调用的函数。每一个父进程,每一个进程都会在自己的PCB里加入自己父进程的ppid。

<3>bash进程

我们先用getpid和getppid获得父子进程的进程号,然后运行一个简单的程序。

运行该程序

我们可以发现,每次运行程序,程序的pid都不同,但是ppid都是一样,说明我们运行的程序都是由同一个父进程创建的,我们再用ps命令查看该pid对应的进程

这里我们可以看见,创建子进程的是一个bash命令,这里bash其实就是命令行解释器,这也是一个进程。

三、创建进程

创建进程我们可以使用fork命令,这里我们打开man手册,可以查看对应的信息

我们可以看见,这里的fork就是创建一个子进程,这里我们可以写一段演示代码,来了解fork函数的特性。

退出运行代码

当前ppid为815其实就是bash进程(这里我是在不同的时间段写的,所以bash的进程号会和上文的进程号不同,这个可以通过ps命令自行查看,这里我就不演示了)。这里我们可以看到会有三个输出,说明在fork创建之后,下面的语句执行了两次,分别是父进程和子进程分别执行了一次,而且他们的代码时共享的。这里的特性大家先记着,后面我将为大家一 一 介绍其中原理。

感谢各位读者的阅读,希望我的文章对各位有些帮助,如果文中有不当之处还望各位大佬指正,谢谢!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之责任链模式讲解

概念&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。 责任链模式只有两个角色&#xff…

JUC:ThreadPoolExecutor线程池的使用方法

文章目录 ThreadPoolExecutor线程池状态构造方法Executors 工厂方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor 提交任务方法关闭任务方法 ThreadPoolExecutor 线程池状态 线程池用高三位表示状态&#xff0c;第一位为符号位。 TERMINATED > TIDYING …

若依ts版本(vue3+element plus+ts)

1、项目简介 本项目参考若依前后端分离版&#xff0c;前端由[若依vue3]改写为ts版本[ruoyi-web-vue3-ts]&#xff0c;后端对[若依V3.8.7]进行了修改[后端版本分支vue3.ts.3.8.7]&#xff0c;具体文档参见[若依官方文档]。本项目对部分代码做了优化&#xff0c;增加了activiti7…

【随笔】Git 高级篇 -- 提交的技巧(上) rebase commit --amend(十八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

本地电脑渲染不行怎么解决?自助式渲染助你渲染无忧

有时候&#xff0c;即使购买了昂贵的新电脑&#xff0c;我们也可能会遇到渲染速度缓慢、画质不佳或渲染失败等问题。这些问题可能由多种因素引起。针对该问题&#xff0c;为大家推荐了自助式的渲染&#xff0c;解决你本地电脑渲染不佳问题。 电脑渲染不行原因 新电脑渲染效果不…

电影特效渲染为什么费时间?「瑞云渲染」

影视特效渲染过程通常耗时且资源密集&#xff0c;因为它涉及处理复杂的视觉元素和光影效果。瑞云渲染通过云技术提供解决方案&#xff0c;加快渲染速度并降低成本。简而言之&#xff0c;电影特效渲染之所以费时&#xff0c;是因为其对计算机资源的高需求。 电影特效渲染费时间原…

vs2017离线安装(配合QT5.9.2使用)

以vs2017_Professional版本为例&#xff1a; 一、下载安装包vs2017_Professional.exe&#xff08;在线安装包即可&#xff09; 二、创建在目录&#xff1a;C:\vs2017_Professional_Package&#xff0c;把vs2017_Professional.exe放在该目录下。 ID&#xff1a; Microsoft.Vis…

HCIP-Datacom(H12-821)题库补充(4月7日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整题库请扫描上方二维码访问&#xff0c;持续更新中。 在PIM-DM中&#xff0c;路由器会为被裁剪的下游接口启动一个剪枝定时器&#xff0c;定时器超时后接口就会恢复转发。默认情况下该定时器是多少秒&#xff1f; A&#x…

CASA模型教程

原文链接&#xff1a;CASA&#xff08;Carnegie-Ames-Stanford Approach&#xff09;模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600635&idx6&sna655a8de570edcaa435d6e917b66d9b3&chksmfa82081ccdf5810a33a778e8771bb116bde9e5a1f795da…

共生共舞的期货黄金和现货黄金

期货黄金&#xff0c;作为一种在金融市场上备受关注的投资工具&#xff0c;其价值与价格走势深受现货黄金市场的直接影响和联动。期货黄金交易&#xff0c;本质上是投资者对未来某一特定时间内黄金价格的预期进行押注&#xff0c;而这背后的逻辑支撑和价格基准正是现货黄金市场…

Mysql底层原理十一:Mvcc

为什么要mvcc&#xff1f; 提高并发度&#xff0c;如果读和写都是通过加锁的方式&#xff0c;并发肯定上不来&#xff0c;通过mvcc来实现写通过加锁&#xff0c;读通过mvcc readView机制 3.9.1 Undo版本链 再重复一遍&#xff0c;页面中的记录存放在用户表空间的数据页中&a…

OpenHarmony实战:物联网解决方案之芯海cst85芯片移植案例

本文介绍基于芯海cst85芯片的cst85_wblink开发板移植OpenHarmony LiteOS-M轻量系统的移植案例。 开发了Wi-Fi连接样例和XTS测试样例&#xff0c;同时实现了wifi_lite, lwip, startup, utils, xts, hdf等部件基于OpenHarmony LiteOS-M内核的适配。 移植架构上采用Board和Soc分…

【随笔】Git 高级篇 -- 相对引用2 HEAD~n(十三)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

原生小程序开发性能优化指南

性能优化指南 1.骨架屏 业务可以在数据加载完成之前用骨架屏幕来占位&#xff0c;提升体验。 2.包大小优化 减小包中静态资源&#xff0c;例如图片文件&#xff0c;可将图片进行压缩降低文件体积。无用文件、函数、样式剔除。除了部分用于容错的图片必须放在代码包&#xf…

烧坏两块单片机,不知道原因?

没有看你的原理图&#xff0c;以下是造成烧毁芯片的几个环节&#xff1a; 1. 最大的可能性是你的单片机电机控制输出与电机驱动电路没有隔离。 我的经验&#xff0c;使用STM32控制电机&#xff0c;无论是直流电机脉宽调制&#xff0c;还是步进电机控制&#xff0c;控制电路与…

耐压40V、输出电压1.23-37V可调,适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。

一、应用领域 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。 二、功能介绍 D1509是一款输入耐压40V、输出电压1.23-37V可调、输出电流最大2.0A的高效率、高精度DC-DC芯片&#xff0c;其输出电压有固定3.3V、5.0V和12.0V的版本&#xff0c;可以为客户省去…

前端自动化测试-Jest

前端自动化测试 Jest官网&#xff1a;https://jestjs.io 安装方式 npm install --save-dev jest yarn add --dev jest cnpm add --save-dev jest 使用方法 所有以 .test.js 结尾的都是测试文件 基础用法示例 num.js&#xff1a; export function getSum (a, b) {return a b…

go语言实现无头单向链表

什么是无头单向链表 无头单向链表是一种线性数据结构&#xff0c;它的每个元素都是一个节点&#xff0c;每个节点都有一个指向下一个节点的指针。"无头"意味着这个链表没有一个特殊的头节点&#xff0c;链表的第一个节点就是链表的头。 优点&#xff1a; 动态大小&…

2024.4.7周报

摘要 在本周阅读的文献中&#xff0c;提出了基于Transformer的GAN模型&#xff0c;GAN的生成器和鉴别器&#xff0c;都是基于Transformer的编码器架构构建的&#xff0c;通过处理图像的方式处理时间序列数据作为该模型的输入。该模型能够生成各种长度的多维时间序列数据&#…

【完全背包求方案数问题】AcWing1023.买书(赋练习题目)

【题目链接】活动 - AcWing 输入样例1&#xff1a; 20输出样例1&#xff1a; 2输入样例2&#xff1a; 15输出样例2&#xff1a; 0输入样例3&#xff1a; 0输出样例3&#xff1a; 1 【代码】 //1023.买书——完全背包问题#include<bits/stdc.h>using namespace st…