Linux进程——进程的概念

news2024/9/22 17:30:32

文章目录

    • 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.coloradmin.cn/o/1921525.html

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

相关文章

公有云API常见的认证方式

公有云API常见的认证方式 Token认证 &#xff08;百度云、腾讯云&#xff09; AK/SK认证 (阿里云、天翼云、腾讯云) RSA非对称加密方式 &#xff08;信核云灾备&#xff09; Token认证 AK/SK认证 RSA认证 种方式使用一对密钥&#xff0c;即公钥和私钥。公钥可以公开&#x…

Java数据结构-链表与LinkedList

链表 链表的概念 链表是一种物理存储结构上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的。 通俗来说&#xff0c;相比较于顺序表&#xff08;物理上连续&#xff0c;逻辑上也连续&#xff09;&#xff0c;链表物理上不一定连续。 链表是…

【C++航海王:追寻罗杰的编程之路】一篇文章带你认识哈希

目录 1 -> unordered系列关联式容器 1.1 -> unordered_map 1.1.1 -> unordered_map的文档介绍 1.1.2 -> unordered_map的接口说明 1.2 -> unordered_set 2 -> 底层结构 2.1 -> 哈希概念 2.2 -> 哈希冲突 2.3 -> 哈希函数 2.4 -> 哈希冲…

Mysql进阶(一)——存储引擎

MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念&#xff0c;为通过认证安全接入的…

【启明智显分享】ESP32-S3 4.3寸触摸串口屏HMI应用方案:WIFI/蓝牙无线通信助力烘干设备实现远程遥控

技术不断进步&#xff0c;人们对烘干设备的美观度、功能多样性提出更高要求&#xff0c;传统的数码管显示、按键式控制已经无法满足客户的需求。用智能屏替代传统的数码管可以很好的解决这个问题&#xff0c;为用户带来更好的人机交互体验。 基于此&#xff0c;启明智显提出将乐…

在Nginx里给你的站点或者目录加个用户认证

在HTTP中&#xff0c;基本认证&#xff08;Basic access authentication&#xff09;是一种用来允许网页浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。 常见的用户认证截图 ngx_http_auth_basic_module模块实现让访问着&#xff0c;只有…

免费分享:2018-2023中国地区地震数据集(附下载方法)

地震波是地震引起的振动以波的形式从震源向各个方向传播并释放的能量。震级是表示地震本身大小的尺度&#xff0c;地震烈度是指某一地区的地面和各类建筑物遭受到一次地震影响的强烈程度。 数据简介 2018-2023中国地区地震数据集主要变量包括time&#xff08;时间&#xff09…

爬虫管理解决方案:让数据收集变得高效且合规

一、为何数据收集的效率与合规性同等重要&#xff1f; 随着大数据技术的飞速发展&#xff0c;数据收集已成为企业决策与市场洞察的核心驱动力。然而&#xff0c;在信息海洋中精准捕捞的同时&#xff0c;如何确保这一过程既高效又不触碰法律的红线&#xff0c;是每个数据实践者…

程序员标准简历模板

链接: https://pan.baidu.com/s/1yMXGSSNba15b9hMXjA39aA?pwdb4ev 提取码: b4ev 3年工作经验简历 链接: https://pan.baidu.com/s/1OO7n1lRL6AkhejxYC9IyDA?pwdfmvv 提取码: fmvv 优秀学员简历 链接: https://pan.baidu.com/s/106Vkw_ulOInI47_5mDySSg?pwduudc 提取码: uu

红酒的未来展望:探索行业的发展趋势

在时间的洪流中&#xff0c;红酒以其不同的魅力&#xff0c;一直占据着人们心中不可或缺的地位。随着时代的变迁&#xff0c;红酒行业也在不断地发展和演变。今天&#xff0c;就让我们一起走进红酒的未来&#xff0c;探索这个古老而又充满活力的行业将如何继续书写其辉煌的篇章…

使用node-cmd重启electron

说明&#xff1a;在electron中&#xff0c;想要手动重启客户端服务&#xff0c;分为两种情况 第一种&#xff1a;是使用electron自带的api进行窗口的重新启动&#xff0c;app.relaunch() 第二种&#xff1a;重启电脑运行的客户端服务 安装 npm install node-cmd -S使用 使用说…

【JavaScript 算法】动态规划:最优子结构与重叠子问题

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、最优子结构1.1 最优子结构的例子1.2 如何识别最优子结构 二、重叠子问题2.1 重叠子问题的例子2.2 解决重叠子问题的方法2.3 如何识别重叠子问题 三、经典动态规划问题及其 JavaScript 实现3.1 斐波那契数列3.2 背包问题…

Java I/O模式 (一)

第一章 Java的I/O演进之路 1.1 I/O模型基本说明 1/0模型&#xff1a;就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收&#xff0c;很大程度上决定了程序通信的性能&#xff0c;Java 共支持3种网络编程的/10 模型&#xff1a;BIO、NIO、AIO 实际通信需求下&am…

调整网络安全策略以适应不断升级的威胁形势

关键网络安全统计数据和趋势 当今数字时代网络安全的重要性

【大语言模型应用形态 AI Agent 发展趋势深度分析 2024】

文末有福利&#xff01; 一、智能体&#xff08;AI Agent&#xff09; 1. 智能体正成为大模型重要研发方向 随着技术飞速发展&#xff0c;智能体&#xff08;AI Agent&#xff09;正成为一股革命性力量&#xff0c;正在重新定义人与数字系统互动的方式。AI Agent是一种高效、…

使用DeepWalk 和Word2Vec实现单词Embedding

0、准备“边”数据集Wiki_edgelist import pandas as pddf pd.read_csv(./data/wiki/Wiki_edgelist.txt, sep , headerNone, names["source", "target"]) df.head() 1、读入 起点-终点 边数据&#xff0c;构建图 # 1、读入 起点-终点 边数据&#xff0c…

如何评估独立站的外链质量?

要评估独立站的外链质量时&#xff0c;首先要看的不是别的&#xff0c;而是内容&#xff0c;跟你网站相关的文章内容才是最重要的&#xff0c;其他的一切其实都不重要。什么网站的DA&#xff0c;评级&#xff0c;网站的主要内容跟你的文章内容是否相关其实都不重要&#xff0c;…

git提交大文件服务500

错误如图 需保证git服务端能接收大文件 修改项目下.git文件中的config文件&#xff0c;加入 [http] postBuffer 524288000

逆变-TI视频课笔记

目录 1、全桥逆变 1.1、全桥逆变SPWM仿真 2、半桥逆变 2.1、本课小结 3、多重逆变&#xff08;间接的“交-直-交-直”变流&#xff09; 3.1、多电平逆变的目的 3.2、单逆变桥 3 电平控制时序 3.3、大功率设备的功率因数 3.4、本课小结 视频链接&#xff1a;文字…

怎样在 C 语言中实现堆排序?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&…