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

文章目录

  • 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.mfbz.cn/a/136677.html

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

相关文章

Vant 移动端UI

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

RK3568平台开发系列讲解(Linux系统篇)Linux 目录结构

🚀返回专栏总目录 文章目录 一、VFS二、分区结构三、挂载 mount四、目录结构沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们从目录管理入手,会更直观的理解 linux 的目录结构。 一、VFS Linux 所有的文件都建立在虚拟文件系统(Virtual File System ,VFS…

事件循环Eventloop

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有…

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

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

【原创课设】java+swing+mysql选课管理系统设计与实现

摘要: 随着学校规模的扩大和课程设置的多样化,传统的手工选课管理方式已经无法满足现代教育的需求。因此,开发一款高效、便捷的选课管理系统变得尤为重要。该系统可以提高选课工作的效率,减少人为错误,同时也能为学生…

linux循环继续fordodone数值处理和脚本的追踪调试

格式 for ((初始值:限制值;步长)) do 程序段 done 注意点:$(()) 数值运算 $()命令 ${}取值 sh [-nvx] *.sh -n 不执行脚本,检查语法错误-常用 -v 执行之前,将…

Windows server 2008 R2 IIS搭建ASP网站教程

一、安装应用程序服务器 提示安装成功 二、添加角色服务asp 三、asp网站配置 放入源码 设置网站首页为index.asp: 设置应用程序池 四、设置网站目录属性 五、access数据库连接配置 Cd c:\Windows\System32\inetsrv appcmd list apppool /xml | appcmd set apppool /…

华为防火墙基本原理工作方法总结(包含源进源出)

两台防火墙在规划接口时一般2台防火墙的业务口相同,心跳口相同,这个上是基础,例如:第一台防火墙业务口用了g1/0/1口,那第二台防火墙业务口也得是这个g1/0/1口。 防火墙只会对tcp首包syn建立会话表,其它丢掉…

【Redis系列】Redis上设置key,value的时候出现NOAUTH Authentication required提示如何解决?

哈喽,大家好,我是小浪。相信大家在初学一门新的知识点的时候都会遇到各种各样的问题,在网上找了一大堆的解决方案,最后还是无功而返,那么今天博主就记录一下在进行Redis的一些操作中遇到的问题~ 当我们好不容易安装好R…

js案例:打地鼠游戏(打灰太狼)

效果预览图 游戏规则 当灰太狼出现的时候鼠标左键点击灰太狼加10分,小灰灰出现的时候鼠标左键点小灰灰击减10分,不点击不减分不加分。 整体思路 1.把获取背景图片中每个地洞的位置,把所有位置放到一个数组中。 2.封装随机数函数,随…

Tomcat学习

一、入门 在webapp里面必须先创建一个文件夹,文件夹里面放的内容,才会被访问到。 创建一个javaweb项目后

【狂神说Java】Nginx详解

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…

推荐系统笔记--基于物品的协同过滤(Item CF)

1--基本原理 Item CF的原理是根据物品的相似度来将新的物品推荐给用户;下图中用户对红色物品的感兴趣度为 [2, 1, 4, 3],红色物品与橙色物品的相似度为 [0.1, 0.4, 0.2, 0.6],因此可以计算出用户对橙色物品的感兴趣度。 Item CF的基本思想是&…

探寻知识的新路径——电大搜题助您开启学习新纪元

江西开放大学和广播电视大学一直以来都是许多自学者和职场人士追寻知识的圣地。然而,对于许多学子来说,学习的过程也常常充满了困惑和挑战。为了帮助这些学习者通过更高效、便捷的方式获取知识,江西开放大学推出了一款创新的学习工具——电大…

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

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

联邦学习的梯度重构

联邦学习中的梯度出现挑战: 暴露原始训练数据的某些属性 利用生成对抗网络生成与私有训练图像类似的图片 尽管许多研究已经证实从梯度中重构原始数据的可能性,这些研究通常基于一个前提假设,即用户上传的梯度是全梯度。 联邦学习系统更倾…

力扣哈希表--总结篇

前言 五天写了八道题,有点懈怠,但还是有收获。 内容 一般哈希表都是用来快速判断一个元素是否出现在集合里。 为了实现高效的查找和访问,map通常会使用哈希表或红黑树等数据结构来存储键值对。什么时候用map,什么时候用数组&a…

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

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

联想小新Pro14默认设置的问题

联想小新Pro14 锐龙版,Win11真的挺多不习惯的,默认配置都不符合一般使用习惯。 1、默认人走过自动开机。人机互动太强了; 2、默认短超时息屏但不锁屏,这体验很容易觉得卡机然后唤起,却又不用密码打开; 3…

Git分支与Git标签的介绍及其场景应用

目录 一、Git分支 1.1 定义 1.2 基本概念 1.3 特点与优势 1.4 Git分支操作命令 1.4.1 查看分支 1.4.2 创建分支 1.4.3 删除分支 1.4.4 切换分支 1.4.5 创建并切换到新建分支 1.5 场景应用 1.5.1 前期准备 1.5.2 具体操作 二、Git标签 2.1 定义 2.2 类型 2.3 标…
最新文章