Linux进程详解一

server/2024/9/20 9:21:46/ 标签: linux, 笔记

文章目录

  • 进程
    • 进程PCB
    • task_struct
    • 查看进程
      • 方法一
      • 方法二

进程

教材观点

  • 加载到内存中的程序
  • 正在运行的程序

进程 = 内核PCB对象 + 可执行程序
内核数据结构 + 可执行程序 = 进程

  • 在计算机中可以同时打开多个程序,此时一定将多个.exe文件加载到了内存中

  • 操作系统需要管理多个加载到内存中的程序

  • 操作系统将加载到内存中的程序先进行描述,再进行组织管理、

    几乎所有的独立的指令也是程序,所有在执行指令的时候也要变成进程。

进程PCB

  • 一个进程就是操作系统对一个加载到内存中的程序的描述。
  • 每个进程都有一个描述这个进程所对应的一个结构体变量。这种数据结构结构体变量在操作系统层面中称为PCB(process ctrl block - 进程控制块)。
struct 
{//状态//优先级//内存指针字段//...包含进程几乎所有的属性字段struct PCB *next;  //指向下一个进程的PCB
}
  • 一个可执行程序加载到内存中,操作系统会先给这个进程创建一个PCB,这个pcb会有描述这个可执行程序的所有属性,以及指向这个进程代码块在内存中的位置的指针,再将这个进程的PCB链接到整个系统中的进程管理链表中。
  • 加载到内存中的可执行程序的代码块加上描述其的PCB才是一个进程
  • 先描述再组织

进程排队,是让进程的pcb去排队。
进程调度,是对进程的pcb进行调度。
所有对进程的控制和操作,都只和进程的PCB有关,和进程的可执行程序没有关系。

可以将pcb放入任何数据结构(容器)中,对pcb进行管理。
例如放入链表中,对pcb管理也就是对链表的结点进行管理。

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
课本上称之为PCB,Linux操作系统下的PCB是:task_struct

task_struct

Linux操作系统下的PCB是:task_struct
  • task_struct是Linux内核的一种数据结构,它会被装载到RAM内存里面ing其包含进程的信息。

内容分类

  • 标示符:描述本进程的唯一标示符,用来区别其他进程。
  • 状态:任务状态、退出代码、退出信号等。
  • 优先级:相对于其他进程的优先级。
  • 程序计数器:程序中即将被执行的下一条指令的地址。
  • 内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
  • 上下文数据:进程执行时处理器的寄存器中的数据。
  • I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件猎豹。
  • 记账信息:可能包括处理器时间综合,使用的时钟数综合,时间限制,记账号等。

查看进程

方法一

Linux会将进程信息以文件的方式,显示在系统中的某一个目录中
- `ls /proc`

Linux会将进程的相关信息,在/proc目录下,以一个目录的形式存放,这个进程的所有属性都存放在这个目录下面。

一个进程启动之后,将可执行程序删除,进程仍在执行。在运行一个程序的时候,本质是将程序从磁盘拷贝到了内存中。在程序执行期间,运行中的程序已经与磁盘中的程序没有了关联。

exe -> 指向可执行程序在磁盘中的具体位置
cwd -> 指向当前进程所对应的当前工作目录

  • int chdir(const char *path);
    • 更改当前进程的工作目录
    • 返回0成功,-1失败

方法二

  • ps axj
while :; do ps axj | head -1 && ps axj | grep myprogress | grep -v grep; sleep 1; done
死循环,先获取系统所有进程,然后打印所有进程中的第一行标题,再获取所有进程,然后筛选出带有myprogress关键字的进程打印,再将获取的所有带有myprogress关键字的进程中带有grep关键字的去除,每一秒循环一次。

用户要获取到进程的标示符,也就是pcb中的信息的时候,必须要调用系统调用,因为pcb在操作系统的内核中,用户不可以越过操作系统直接获取数据。

man2号手册

  • pid_t getpid(void) :获取进程标示符pid
  • pid_t getppid(void):获取当前进程的父进程标示符ppid

每一次启动一个程序,都会获得一个新的标示符id。
我们在命令行中启动的所有的程序,产生的进程都是bash的子进程。

一般在Linux中,所有普通进程都有其对应的父进程。


http://www.ppmy.cn/server/10355.html

相关文章

java版微信小程序商城 免 费 搭 建 java版直播商城平台规划及常见的营销模式有哪些?电商源码/小程序/三级分销

涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

【设计模式】9、facade 外观模式

文章目录 九、外观模式9.1 player9.1.1 player_test.go9.1.2 player.go 9.2 login_register9.2.1 account_test.go9.2.2 account.go 九、外观模式 https://refactoringguru.cn/design-patterns/facade 如果有一个复杂的系统, 内部有很多子系统, 可以用 facade 封装一层, 只暴…

mininet+odl安装

安装环境 ubuntu-18.04.2-desktop-amd64 Java version: 1.8.0_362 Apache Maven 3.6.0 opendaylight: distribution-karaf-0.6.0-Carbon(csdn中应该是已有资源,不让上传) opendaylight的官网下载链接一直打开失败,我使用的是别人的Carbon版本。 在安…

快递查询API接口如何对接

快递查询API接口又叫物流查询API接口,指的是输入快递单号和快递代号查询实时物流信息,支持国内外1500物流快递公司的物流跟踪服务,包括顺丰、圆通、申通、中通、韵达等主流快递公司。那么快递查询API接口该如何对接呢? 首先我们找…

day05 51单片机-外部中断、定时器

1 外部中断——按键控制LED亮灭 1.1 需求描述 本案例通过检测SW3触发的外部中断实现P00对应LED的亮灭。 1.2 硬件设计 1.2.1 中断简介 单片机中断是一种重要的计算机编程概念,用于处理在程序执行过程中突然发生的事件或条件。这些事件可以是外部硬件触发的,如按下按钮、…

nohup的作用

在Linux系统中,nohup 是一个命令行工具,其全称是 “no hang up”(不挂断)。其主要作用是允许用户在一个终端会话中启动一个命令或程序,使得该命令或程序能够忽略挂断(SIGHUP)信号,并…

【后端】python2和python3的语法差异

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为何要了解不同版本的语法差异二、python2和python3的语法差异三、总结 前言 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使…

谷歌广告B2C实战特训营,500+谷歌账户经验,实战演示从0-1搭建广告账户

结合数据优化搜索、购物(PMax)、再营销、展示、视频广告类型,提升ROI稳定增长 课程背景: 不同的电商产品(如大件家具、假发、服饰等)适合的广告类型、组合策略、预算配置大不相同。 为了让大家最快掌握不同产品的投放策略找到最适合自己的打法&#x…

真实世界的密码学(一)

原文:annas-archive.org/md5/655c944001312f47533514408a1a919a 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 序言 当你拿起这本书时,你可能会想,为什么又一本关于密码学的书?甚至,为什么我要读这本…

❤️新版Linux零基础快速入门到精通——第三部分❤️

❤️新版Linux零基础快速入门到精通——第三部分❤️ 非科班的我!Ta!还是来了~~~3. Linux权限管控3.1 认知root用户3.1.1 Switch User——su3.1.2 sudo命令3.1.3 为普通用户配置sudo认证 3.2 用户和用户组3.2.1 用户、用户组3.2.2 用户组管理3.2.3 用户管…

华为OD机试真题-模拟目录管理-2024年OD统一考试(C卷D卷)

题目描述: 实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。 支持命令: 1)创建目录命令:mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作。此命令无输出。 2)进入目录命令:cd 目录名称, 如cd …

【VTKExamples::Meshes】第十七期 InterpolateFieldDataDemo

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例InterpolateFieldDataDemo,并解析接口vtkMultiBlockDataSet & vtkCompositeDataGeometryFilter & vtkPointInterpolator,希望对各位小伙伴有所帮助! 感谢各位小…

部署zabbix代理服务器

一、准备环境 1.1 关闭防火墙 二、代理服务器 2.1 设置zabbix下载源 2.2 编辑resolv配置文件,加入本机IP 2.3 安装zabbix数据库 2.4 开机自启服务,mysql重定义 2.5 添加数据库用户以及zabbix数据库信息 2.6 导入数据库 2.7 编辑zabbix配置文件 vim /etc/…

2024中国内燃机展-北京汽车发动机零部件展

2024第二十三届中国国际内燃机与零部件展览会 由中国内燃机工业协会主办、中国机床专用技术设备有限公司、汽车工艺装备成套开发集团协办的2024中国国际内燃机及动力装备博览会(简称“动博会”)将于2024年10月11日-13日在亦创国际会展中心隆重举办。本届…

三相电子式电表ADL400储能防逆流含CE/MID认证

安科瑞薛瑶瑶18701709087/17343930412 ADL400 导轨式多功能电能表,是主要针对电力系统,工矿企业,公用设施的电能统计、 管理需求而设计的一款智能仪表,产品具有精度高、体积小、安装方便等优点。集成 常见 电 力参数测量及电能…

计算机网络学习day02|HTTP协议

目录 一、HTTP报文格式长什么样?是如何分割的? 请求行 状态行 头部字段 常用头字段 小结 二、HTTP提供了哪些方法?GET和POST的区别是什么? 1.HTTP有哪些方法 2.GET/HEAD 3.PSOT/PUT 小结 三、URI和URL URI 的格式 U…

【web开发02】后端开发Maven

后端开发Maven 1 Maven是什么?1.1 Maven基础概念1.1.2 仓库1.1.3 坐标 2 配置maven环境3 创建maven项目4 导入maven项目4 依赖管理4.1 依赖配置4.2 依赖传递4.2.1 排除依赖 4.3 依赖范围4.4 生命周期4.4.1 运行生命周期 1 Maven是什么? Maven本质是项目…

阿里云mysql8.0 this is incompatible withsql mode=only full group by

阿里云RDS中mysql5.6升级为8.0后,出现如下问题: ### Error querying database. Cause:java.sql.SQLSyntaxErrorException: Expression #1 of SELECT listis not in GROUP BY clause and contains nonaggregatedcolumn temp.product_id which is not fun…

如何在 Vim 中剪切、复制和粘贴

目录 ⛳️推荐 如何在 Vim 编辑器中复制文本 如何在 Vim 编辑器中剪切文本 如何在 Vim 编辑器中粘贴文本 如何通过选择文本来剪切和复制文本 通过选择文本复制 在 Vim 中选择文本来剪切文本 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&#…

数据库操作

黑马程序员JavaWeb开发教程 文章目录 一、数据库操作-DML1、添加数据(insert)2、修改数据(update)3、删除数据(delete) 二、 数据库操作-DQL1、基本查询(1)语法 2、条件查询&#xf…