Linux进程的认识与了解[上]

news2024/11/17 19:46:19

文章目录

  • 1.何为进程?
    • 1.1对进程的认识
    • 1.2基本概念
  • 2.OS如何管理大量进程?
    • 2.1图解
    • 2.2进程的形成
  • 3.何为PCB?
    • 3.1对PCB的认识
    • 3.2task_ struct内容分类
    • 3.2对进程表的认识
  • 4.查看进程
    • 4.1基础指令
    • 4.2获取某进程的PID(process id)
    • 4.3杀死进程
    • 4.4获取当前进程的父进程的ppid(parent process id)

1.何为进程?

1.1对进程的认识

  1. 一个软件,本质就是启动了一个进程
  2. Linux一条命令运行的时候,如./test就是在系统层面创建了一个进程
  3. Linux可以同时加载多个程序,Linux可能同时存在大量的进程在系统中的(软件在OS,硬件在内存)
  4. Linux系统要管理进程 如何管理大量的进程------先描述,在组织
  5. 每个进程都有自己的内存空间、代码、数据和执行状态。
  6. 进程可以独立运行,相互之间不会干扰。
  7. 操作系统可以同时运行多个进程,通过分配时间片轮流执行它们,从而实现多任务处理。
  8. 进程可以与其他进程进行通信和协作,共享资源和数据。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.2基本概念

  1. 程序的一个执行实例,正在执行的程序
  2. 担当分配系统资源(CPU时间,内存)的实体

2.OS如何管理大量进程?

2.1图解

在这里插入图片描述

  1. PCB:进程的属性信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。这类数据结构被称为PCB(process control block)。
  2. 对进程的管理,变成了对进程PCB结构体链表的管理
  3. 进程 = 代码+数据 ➕PCB结构体
  4. 当一个程序加载到内存后 os会对当前进程建立一个PCB用来存放进程的属性信息
  5. 描述进程:PCB结构体描述进程的属性
  6. 组织进程:使用数据结构将各进程的PCB结构体组织起来,形成进程表

所有运行在系统里的进程都以task_struct链表(双链表)的形式存在内核里。

2.2进程的形成

  1. 将存储在磁盘中的可执行文件的代码和数据拷贝的内存中
  2. 创建一个PCB结构体并初始化其属性
  3. 将创建好的PCB加入到操作系统的进程队列

3.何为PCB?

3.1对PCB的认识

PCB[Process Control Block]:进程的属性信息被放在进程控制块(进程属性的集合 一种数据结构)

不同的操作系统PCB的名称不同 在Linux中描述进程的结构体叫做task_struct(task_struct是PCB的一种)
task_struct是Linux内核的一种数据结构 它会被装载到RAM(内存)里并且包含着进程的属性信息
Linux内核使用双向链表组织和维护所有进程的PCB,用于管理和调度进程

在这里插入图片描述

3.2task_ struct内容分类

  1. 标示符: 描述本进程的唯一标示符,用来区别其他进程
  2. 状态: 任务状态,退出代码,退出信号等。
  3. 优先级: 相对于其他进程的优先级。
  4. 程序计数器: 程序中即将被执行的下一条指令的地址
  5. 内存指针: 包括程序代码和进程相关数据的指针,和其他进程共享的内存块的指针
  6. 上下文数据: 进程执行时处理器的寄存器中的数据
  7. I/O状态信息:显示的I/O请求 分配给进程的I/O设备 被进程使用的文件列表。
  8. 记账信息:处理器时间总和,使用的时钟数总和,时间限制,记账号
  9. 其他信息

3.2对进程表的认识

进程表:进程表是操作系统中的数据结构,用于组织记录系统中所有进程的PCB。每个进程都有一个对应的进程表项(PCB),包含进程的标识符、状态、优先级、资源使用情况等信息。进程表可以用于管理和调度进程,操作系统可以根据进程表中的信息对进程进行分配资源、切换上下文等操作。

4.查看进程

4.1基础指令

top: 相当于win下的任务管理器 查看系统所有进程
./test : 从执行这条指令到结束(加载运行调度退出) 这就是一个进程的开始与结束
pwd/touch等指令也是一个进程
ps : 只显示当前终端进程信息
ps axj: 显示系统中所有进程信息

ps axj | grep 'test'ps axj | head -1 && ps axj | grep 'test':

  1. 显示系统中所有进程信息
  2. head -1: 只取第一行(进程信息的标题行
  3. 包含’test’的信息

ls /proc: 内存级的文件系统

在这里插入图片描述
在这里插入图片描述

  1. 系统中进程的属性数据都保存在/proc下以PID为名的目录
  2. /proc目录下的文件是动态的,每创建进程就会新增一个PID目录,进程结束该PID目录也会被删除
  3. 假定一个进程的PID为xxx 那么通过ls /proc/xxx 可显示PID为xxx的进程的所有属性信息
  4. ls /proc/xxx: 会显示cwd: current work directory当前进程的工作目录 exe: 其实就是我们的test
  5. 每个进程都会有一个属性 保存当前所在的工作路径

4.2获取某进程的PID(process id)

pid_t id = getpid();//程序只有被运行才会被调用 即变成进程 编译期间不调用
printf("pid: %d\n", id);

在这里插入图片描述
在这里插入图片描述

4.3杀死进程

kill -9 xxx 相当于windows下

在这里插入图片描述

4.4获取当前进程的父进程的ppid(parent process id)

pid_t id = getpid();
printf("pid: %d\n", getppid());

在这里插入图片描述
一般进程的ppid是bash: bash是shell的一种 一般进程的父进程都是bash 当在一个界面开两个终端 每一个终端都有一个bash 杀死A的bash不影响B的bash

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

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

相关文章

王道数据结构课后代码题p40 9.给定一个带表头结点的单链表,写出算法 : 按递增次序输出单链表中各结点的数据元素并释放结点 (c语言代码实现)

本题代码如下(有注释) void delete_min(linklist* head) {while ((*head)->next ! NULL)//循环到只剩下头节点{lnode* pre *head;//pre为元素最小结点的前驱结点指针lnode* p (*head)->next;//p为工作指针lnode* q;//指向被删除的结点while (p-…

STM32 寄存器配置笔记——GPIO配置输出

一、概述 本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。 二、配置流程 1)GPIO外设时钟 通过查找STM32F10xxx中文参考手册得知&#xf…

【MySQL系列】 第二章 · SQL(中)

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

Accelerate 0.24.0文档 一:极速入门

文章目录 一、概述1.1 PyTorch DDP1.2 Accelerate 分布式训练简介1.2.1 实例化Accelerator类1.2.2 将所有训练相关 PyTorch 对象传递给 prepare()方法1.2.3 启用 accelerator.backward(loss) 1.3 Accelerate 分布式评估1.4 accelerate launch 二、Accelerate 进阶2.1 notebook_…

Xshell远程登录 Linux小键盘数字输入变成字母解决办法

Xshell的设置问题,依次查看:文件-->属性-->终端-->VT模式-->初始数字键盘模式更改为:设置普通(s)

OpenGL_Learn09(摄像机)

1. 摄像机环绕观察 texture两个文件以及shader就是之前的版本 #include <glad/glad.h> #include <GLFW/glfw3.h>#include <iostream> #include "stb_image.h" #include <cmath> #include "shader.h"#include <glm/glm.hpp>…

指标体系:洞察变化的原因

一、指标概述 指标体系是指根据运营目标&#xff0c;整理出可以正确和准确反映业务运营特点的多个指标&#xff0c;并根据指标间的联系形成有机组合。 指标体系业务意义极强&#xff0c;所有指标体系都是为特定的业务经营目的而设计的。指标体系的设计应服从于这种目的&#x…

3DMAX如何渲染室内效果图?

这可能不是最好的教程,但对于3dmax初学者来说,它具有一定的学习价值和启示意义。 任何在建筑或室内设计领域工作并需要室内或外部空间“艺术家渲染”的人都会熟悉行业巨头Autodesk发布的3ds Max。 3ds Max是此类工作的默认标准,不是因为它在其他3D程序中无法完成,而是因为它…

计算机网络课后作业2023秋

计算机网络第三版吴功宜版 课后作业 第一章作业三、计算与问答3.73.8 第二章作业三、计算与问答3.23.53.6 第三章作业三、计算与问答3.13.53.73.8 第四章作业三、计算与问答3.13.2 第五章作业三、计算与问答3.13.33.4 第一章作业 三、计算与问答 3.7 3.8 第二章作业 三、计…

Vant 移动端UI 组件自动引入

Vue项目中安装Vant # Vue 3 项目&#xff0c;安装最新版 Vant npm i vant 组件按需引入配置 Vant按需引入- - -安装&#xff1a;unplugin-vue-components 插件 unplugin-vue-components 插件可以在Vue文件中自动引入组件&#xff08;包括项目自身的组件和各种组件库中的组件&…

Leetcode—50.Pow(x,n)【中等】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—50.Pow(x,n) 实现代码 double recurPow(double x, long long n) {if(n 1) {return x;}double res recurPow(x, n / 2);if(n % 2 1) {return x * res * res;} else {return res * res;} }double myPow(double x, int…

链表OJ题【环形链表】(3)

目录 环形问题的思考 ❓Q1 ❓Q2 &#x1f642;Q2 ❓Q3 ❓Q4 8.环形链表 9.环形链表Ⅱ 今天接着链表的经典问题环形问题。大家一定要自己动手多写写。&#x1f642; 快慢指针&#xff08;保持相对距离/保持相对速度&#xff09;野指针考虑为NULL的情况带环链表&#x…

推荐系统笔记--Swing模型的原理

1--Swing模型的引入 在 Item CF 召回中&#xff0c;物品的相似度是基于其受众的交集来衡量的&#xff0c;但当受众的交集局限在一个小圈子时&#xff0c;就会误将两个不相似的物品定义为相似&#xff1b; Swing 模型引入用户的重合度来判断两个用户是否属于一个小圈子&#xff…

基于鲸鱼算法优化概率神经网络PNN的分类预测 - 附代码

基于鲸鱼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鲸鱼算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鲸鱼优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

Java终端模式小尝试

Java终端模式小尝试 1、IDE中终端1.1 拉去代码 jediterm1.2 IDE调用系统终端 2、待续~~ 1、IDE中终端 终端_Intellij IDEA、Terminal emulator | pycharm Documentation JetBrains jediterm WindTerm&#xff1a;新一代开源免费的终端工具&#xff0c;GitHub星标6.6k&#xff…

基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码

基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蜉蝣算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蜉蝣优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

智能一体化管网水位监测仪怎么样?

城市排水管网是城市正常运行的关键环节&#xff0c;这是地上和地下通道的连接点&#xff0c;一旦出现问题便会影响城市生命线建设的工程进展。在复杂的地下管道内想要了解水位数据&#xff0c;对于政府部门来讲是一个管理难题。如果可以采取智能产品在其中发挥作用&#xff0c;…

如何使用PHPStudy本地快速搭建网站并实现远程访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

【Devchat 插件】创建一个GUI应用程序,使用Python进行加密和解密

VSCode 插件 DevChat——国内开源的 AI 编程&#xff01; 写在最前面DevChat是什么&#xff1f;什么是以提示为中心的软件开发 &#xff08;PCSD&#xff09;&#xff1f;为什么选择DevChat&#xff1f;功能概述情境构建添加到上下文生成提交消息提示扩展 KOL粉丝专属福利介绍D…

【 第十二章】软件设计师 之 面向对象设计与结构化分析设计

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 备考资料导航 软考好处&#xff1a;软考的…