Linux进程——进程的概念

文章目录

    • PCB
    • 进程排队
    • 进程标识符pid
    • 终止进程
    • 获取进程id
    • 父进程与子进程

我们在上一节内容中有简单谈到进程的感性理解,他在课本上的概念是,程序的一个执行实例或正在执行的程序

但在本质上,他其实就是一个被分配了系统资源(CPU,内存)的实体

PCB

上一节内容中,我们说到,管理是管理的数据,需要先描述再组织

那在内存中,操作系统对多个进程应当如何管理呢

这时候就有聪明的同学回答了,先描述再组织

我们还是使用结构体来进行描述,对于一个进程来说可能会有进程ID、代码存储地址、进程状态、进程优先级,如果是用链表的形式存储还会有指向下一个结构体的指针

struct data
{// id// 代码地址// 状态// 优先级struct data* next;
};

那么这样一个结构体,我们给她起一个名字,叫做PCB,进程控制块

当然在不同的操作系统中,管理所用的PCB名称也不一定相同,在Linux中,这个PCB具体叫做struct task_struct,进程控制块

那么操作系统对进程的管理就变成了对链表的增删查改

进程排队

当进程在链表中,就会等待CPU去找PCB来进行处理,那么CPU是如何知道要处理哪些数据的

因为CPU不可能同时处理非常多的进程,就需要让这些进程排队,我们称之为进程队列,也使用指针进行链接

那么在内存中,一个PCB进程控制块就有可能同时处于多个链表(队列)

进程标识符pid

我们要区分不同的进程,就得使用唯一标识符,pid

我们可以使用ps ajx命令来查看

QQ_1720772801665.png

当然这样是查看所有的进程,我们可以使用grep命令来进行筛选

这里先简单写一个死循环程序让他一直运行

QQ_1720773063499.png

运行起来是这样的

image.png

image.png

使用head -1是为了打出来表头,这里出来两个,第一个是本身的进程,第二个是grep命令的进程

终止进程

我们比较常用的终止进程的方法是ctrl+c来结束进程,但是这种方法只能在运行程序的地方,并且只能在前台来结束当前进程,对于后台程序我们是没办法让他结束的

第二个方法是一个指令kill -9 pid我们将pid直接替换为进程id即可

例如上面的进程可以直接使用kill -9 20990就能杀掉这个进程了

-9表示信号参数,我们这里先直接使用

获取进程id

当我们在程序中想要自动获取进程的id的时候,就不能使用ps命令了,在c语言中有一个函数是getpid,可以获取本进程的pid,下面是使用的示例

#include<iostream>
#include<unistd.h>
#include<sys/types.h>
using namepsace std;
int main()
{pid_t id = getpid();while(1){cout<<"我是一个进程"<<endl;cout<<"我的pid是:"<<id<<endl;sleep(1);}return 0;
}

QQ_1720773984208.png

父进程与子进程

我们在上面使用ps命令查看进程id的时候,坐标还有一个ppid,着就表示父进程,我们也可以使用getppid来查看父进程id

但其实我们每一次运行这个程序的时候,子进程的id可能会不同,但父进程的id都相同

一般情况下,在命令行中,父进程其实就是命令行解释器bash

那么关于如何创建子进程,为什么只有父进程id,本进程id,看不到子进程id呢,我们将在下一篇文章中继续学习

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

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

相关文章

EtherCAT总线耦合器:在欧姆龙SysmacStudio软件里的配置步骤

EtherCAT总线适配器&#xff1a;在欧姆龙SysmacStudio软件里的配置步骤 EtherCAT总线适配器XD7000作为网络接口&#xff0c;连接主控制器&#xff08;如PLC&#xff09;和其他EtherCAT设备&#xff0c;实现实时、高效的数据交换。通过EtherCAT总线耦合器&#xff0c;用户能够将…

类和对象(初)

目录 一、面向过程和面向对象初步认识 二、类的引入 命名规则 三、类的定义 四、访问限定符 五、类的作用域 六、类的实例化 七.类对象模型 一、面向过程和面向对象初步认识 1.C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;…

鸿蒙语言基础类库:【@ohos.data.storage (轻量级存储)】

轻量级存储 轻量级存储为应用提供key-value键值型的文件数据处理能力&#xff0c;支持应用对数据进行轻量级存储及查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型。 说明&#xff1a; 开发前请熟悉鸿蒙开发…

第一个基于FISCOBCOS的前后端项目(发行转账)(已开源)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分&#xff0c;1是区块链平台webase搭建&#xff08;此项目使用节点前置webase-front即可&#xff09;&#xff0c;2是…

游戏AI的创造思路-技术基础-行为树

行为树源自于游戏&#xff0c;但又不单单局限在游戏中&#xff0c;现代的行为树为游戏提供了一套快速简洁的控制NPC/AI的方法。所以本篇来讲讲行为树这个老祖宗~~~~ 目录 1. 行为树的定义 2. 发展历史 2.1. 起源与早期发展 2.2. 关键节点与重要进展 2.3. 当前现状与未来 …

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训&#xff0c;拓展对多模态AI应用领域的视野&#xff0c;帮助团队聚焦AI赋能创新突破&#xff0c;提升对AI服务的技术认知与理解&#xff0c;更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓&#xff0c;工学博士&#xff0…

python零基础爬虫教程,(实战案例手把手教你Python爬虫教程!)

前言 女朋友看了都能学会的爬虫教学 自己断断续续学习练习了两三年python爬虫&#xff0c;从网上看了无数教程&#xff0c;跟大神们学习了各种神奇的操作&#xff0c;现在虽然没成为大神&#xff0c;但是想通过这篇教程来分享自己学习的爬虫实战案例。 通过本教程&#xff0c;你…

Linux程序替换

前言 上一期对进程的创建、终止、以及等待做了详细的介绍&#xff0c;对于进程控制的内容基本介绍的差不多了&#xff0c;本期来介绍进程控制的最后一个内容即进程的程序替换&#xff01; 本期内容介绍 • 什么是进程的程序替换 • 单进程的程序替换 • 程序替换的基本原理 •…

在 IVS 2024 加密盛会上开拓创新:CESS 引领去中心化云存储和 CD²N 之发展

作为基于区块链的去中心化云存储网络和 CDN 基础设施网络&#xff0c;CESS 在日本年度加密创业大会 IVS 2024 上成为焦点&#xff01;此次活动在历史悠久的京都举办&#xff0c;围绕“跨越边界”这一主题&#xff0c;吸引了超过15,000 名参会者&#xff0c;其中包括 3,000 创始…

SpringCloudAlibaba基础五 Nacos配置中心

一 Nacos配置中心介绍 官方文档&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config Nacos 提供用于存储配置和其他元数据的 key/value 存储&#xff0c;为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos C…

2024 福州市延安中学“拿云杯”复赛试题

回忆版&#xff08;持续更新&#xff09; 目录 答案 答案

风光摄影:相机设置和镜头选择

写在前面 博文内容为《斯科特凯尔比的风光摄影手册》读书笔记整理涉及在风景拍摄中一些相机设置&#xff0c;镜头选择的建议对小白来讲很实用&#xff0c;避免拍摄一些过曝或者过暗的风景照片理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好…

【matlab】周期性信号分析

目录 信号预处理 周期性特征提取方法 频谱分析 傅里叶变换 快速傅里叶变换&#xff08;FFT&#xff09; 周期图法 Welch法 自相关分析 时频分析 基于模型的方法 时间序列分解 应用实例 提取信号的周期性特征是一个在信号处理领域广泛应用的技术&#xff0c;特别是在…

每日一练:奇怪的TTL字段(python实现图片操作实战)

打开图片&#xff0c;只有四种数字&#xff1a;127&#xff0c;191&#xff0c;63&#xff0c;255 最大数字为255&#xff0c;想到进制转换 将其均转换为二进制&#xff1a; 发现只有前2位不一样 想着把每个数的前俩位提取出来&#xff0c;组成新的二进制&#xff0c;然后每…

做3D渲染,选择什么显卡好?

对于设计行业的小伙伴来说&#xff0c;电脑配置的优劣是个尤为关键的要素&#xff0c;特别是显卡&#xff0c;对于很多人而言&#xff0c;如何选择一张最适合的 3D 渲染显卡确实一大难关&#xff01; 在目前市场上&#xff0c;主流的显卡分别是 AMD 显卡和 NVIDIA 显卡&#x…

Java基础面试题大全

Java基础 语法基础 aab 和 ab 操作隐式的将操作的结果类型强制转换成持有结果的类型&#xff0c;而不会 比如对byte&#xff0c;short&#xff0c;int类型的操作&#xff0c;会先将他们提升到int类型&#xff0c;然后在执行操作。所以比如我定义了两个byte类型的a和b&#x…

KEIL 5项目中源文件图标带有雪花(四叶草)消除办法

今天在使用KEIL 5写STM32程序的时候&#xff0c;出现了一个错误&#xff1a; Error: L6218E: Undefined symbol test_for_diaodu (referred from main.o). 具体表现为&#xff0c;不管我把自己写的一个my.c里的什么函数或者变量名&#xff0c;即使在main.c中声明、引用了&#…

PCL从理解到应用【04】Octree 原理分析 | 案例分析 | 代码实现

前言 Octree 作为一种高效的空间分割数据结构&#xff0c;具有重要的应用价值。 本文将深入分析 Octree 的原理&#xff0c;通过多个实际案例帮助读者全面理解其功能和应用&#xff0c;包括最近邻搜索、半径搜索、盒子搜索以及点云压缩&#xff08;体素化&#xff09;。 特性…

搞懂负载均衡,零基础也可以!

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是鱼皮。 周末在家写代码&#xff0c;无意中跟朋友提了下 LB&#xff0c;还说 LB 好的呱呱叫。 朋友笑了笑&#xff0c;问我 LB 是谁&#xff1f; 我解释…

加密软件|让数据传输更安全

加密软件在当今数字化时代扮演着至关重要的角色&#xff0c;它们通过先进的加密算法和技术&#xff0c;确保数据在存储、传输和分享过程中的安全性&#xff0c;从而保护个人隐私和企业机密。一、加密软件的基本作用数据加密&#xff1a;加密软件通过应用复杂的加密算法&#xf…