Linux进程——进程的概念(PCB的理解)

前言:在了解完冯诺依曼体系结构和操作系统之后,我们进入了Linux的下一篇章Linux进程,但在学习Linux进程之前,一定要阅读理解上一篇内容,理解“先描述,再组织”才能更好的理解进程的含义。

Linux进程学习基础


在这里插入图片描述


本篇主要内容:

  • 进程的概念
  • 通过系统调用获取进程标示符

在这里插入图片描述

Linux进程

  • 1. 进程的概念
    • 1.1 描述进程-PCB
    • 1.2 CPU对于进程列表的处理
  • 2. 通过系统调用获取进程标示符
    • 2.1 查看进程信息
    • 2.2 终止进程
    • 2.3 系统调用函数:getpid
    • 2.4 父进程和子进程
  • 3. 总结


1. 进程的概念

在学习进程之前,大家对进程肯定初步的了解,那么今天我们来深入了解一下

基本概念:

  • 课本概念:程序的一个执行实例,正在执行的程序等
  • 内核观点:担当分配系统资源(CPU时间,内存)的实体。

1.1 描述进程-PCB

在上一篇中,我们提到了:
管理的本质不是管理个体,而是管理个体的数据!

而操作系统管理进程也是如此,管理的进程对应的数据

在这里插入图片描述
而在操作系统对进程上,依然采用的是“先描述,再组织”的方法

在这里插入图片描述

操作系统将可执行程序的各种数据加载,拷贝出来,再用结构体把数据存进去,由于可能同时会存在多个进程,所以操作系统使用链表或其他数据结构将它们链接在一起!

而这个又操作系统产生控制进程的结构就是PCB

PCB:

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

1.2 CPU对于进程列表的处理

在CPU对进程列表进行处理时,PCB中的数据有时不会被CPU立刻处理,因此他会进入进程队列,排队等待处理
在这里插入图片描述
操作系统内由于进程的控制十分复杂,一个PCB可能链接到多个数据结构上。

在这里插入图片描述

因此: 进程=可执行程序 + 内核数据结构(PCB)


2. 通过系统调用获取进程标示符

2.1 查看进程信息

每一个进程都有自己对应的标识符当我们想查看进程的信息:

指令:ps ajx

在这里插入图片描述
这样做的话我们查看的是所有进程,这里我们就要用到之前的学过的指令了。

现在我们来写一个程序来观察他的进程状态 在这里插入图片描述
写死循环方便我们更好观察,运行程序我们再打开一个窗口,搜索程序的进程:

指令:ps ajx | grep mytest

在这里插入图片描述

此时,为什么会出现两个进程呢?

  • 因为在grep指令发挥作用时,也会形成一个mytest文件

我们直接查看进程并不能知道每个数据表达的意思,所以我们可以加上:

指令:ps ajx | head -1

在这里插入图片描述
来查看每一行的信息

指令:ps ajx | head -1 && ps ajx | grep 可执行程序
在这里插入图片描述


2.2 终止进程

在我们刚接触Linux时,通常按CTRL+c可以结束进程,现在在学习Linux进程时,还有一种方法可以杀死进程:

指令:kill -9 进程id

注意:这里的-9是信号参数,后面会提到,现在直接使用即可

在这里插入图片描述
使用指令能直接杀死进程

以上说明我们所有运行的指令,软件,自己写的可执行程序都是进程!


2.3 系统调用函数:getpid

每次查看进程使用如果都要使用ps查看这样的话很浪费时间且繁琐,因此我们可以使用即将学习到的第一个系统调用函数:

函数:getpid

我们先来简单了解一下 getpid

在这里插入图片描述
在这里插入图片描述
用系统调用函数查看PID


2.4 父进程和子进程

在使用ps指令查看进程信息时,除了PID我们可以看见左边还有一个PPID,当我们不断地启动结束进程时,PID每一次的数据都不一样,但是PPID却不会改变。而这PPID就是父进程

在这里插入图片描述
我们依然可以用函数来查看父进程:

函数:getppid

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因此我们可以知道这两个函数:
在这里插入图片描述

当我们不断地启动结束进程时,PID每一次的数据都不一样,但是PPID却不会改变,让我们来查看一下父进程信息

在这里插入图片描述
如果我们直接杀死父进程bash,那么我们的shell会直接挂掉


3. 总结

本篇主要学习的是进程的概念,CPU如何对PCB进行处理,以及初步学习如何查看父进程与子进程,希望大家能理解好PCB,下篇我们将深入了解进程的创建!

谢谢大家支持本篇到这里就结束了

在这里插入图片描述

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

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

相关文章

Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)

一、集群环境说明 1、用VMware安装3台Centos7.9虚拟机 2、虚拟机配置:2C,2G内存,50G存储 3、集群架构 从表格中,可以看出,Hadoop集群,主要有2部分,一个是HDFS服务,一个是YARN服务 …

记一次内网渗透

环境搭建: 排错: 在搭建过程中发现报错,删除这部分内容就成功解决。 信息收集 端口扫描 使用namp -sn 探测存活IP 接着去查看服务 web服务 然后发现80端口。访问 发现有管理员接口,并泄露了默认用户名和密码。 弱口令登录 …

linux dhcp服务器

虚拟机设置为dhcp后,启动会自动分配ip的原理 在vSphere环境中,当虚拟机设置为DHCP(动态主机配置协议)时,分配IP地址的功能通常由DHCP服务器承担。DHCP服务器负责在网络上为设备(包括虚拟机)提供…

vue中配置 测试、准生产、生产环境

在package.json,scripts中配置 "dev": "vue-cli-service serve --open --mode dev",在项目根目录下配置 新建 .env.dev 和.env.development文件 //类似于title NODE_ENV "serve" //各环境API数据接口请求地址 VUE_APP_BASE_API "http:…

软件测试笔记_习题_面经

软件测试------按测试阶段划分有几个阶段? 单元测试、集成测试、系统测试、验收测试 软件测试------按是否查看源代码划分有几种测试方法? 黑盒、白盒、灰盒 软件测试------按是否运行划分有几种测试方法? 静态测试、动态测试 软件测试------按是否自动化划分有几种测试方…

「PHP系列」PHP Exception(异常处理)

文章目录 一、PHP异常处理简介二、PHP异常是什么,怎么发生三、PHP异常处理机制四、Try、throw 和 catch1. try 块2. throw 语句3. catch 块 五、相关链接 一、PHP异常处理简介 PHP异常处理是一种机制,用于在程序执行期间捕获和处理错误或异常情况。当程…

在远程服务器上安装anaconda以及配置pytorch虚拟环境

目录 第一步:官网或者清华源下载Anaconda。 第二步:创建虚拟环境。 第三步:在服务器终端输入nvidia-smi查看服务器信息。 第四步:在pytorch官网找到对应版本cuda的命令。 第一步:官网或者清华源下载Anaconda。 官网…

智慧安防边缘计算硬件AI智能分析网关V4算法启停的操作步骤

TSINGSEE青犀视频智能分析网关V4内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结果,并能进行语音告警播放。硬件管理平台支持RTSP、GB28181协议、以及厂家私有协议接入,可兼容市面上常…

矿山自动驾驶技术点分析

自动驾驶多用于乘用车领域,目前矿山自动驾驶量产落地前景广阔,由于矿山工作环境差,污染严重,而且通常矿区面积大,工作任务单一,场景固定,是一个适合进行自动驾驶落地的场景。 矿山自动驾驶俗称智…

02 - 步骤 Kafka consumer

简介 Kafka consumer 步骤,用于连接和消费 Apache Kafka 中的数据,它可以作为数据管道的一部分,将 Kafka 中的数据提取到 Kettle 中进行进一步处理、转换和加载,或者将其直接传输到目标系统中。 使用 场景 我需要订阅一个Kafka的数据&…

Python中的并发编程:利用asyncio实现高效I/O操作

摘要 在现代软件开发中,处理高并发请求和优化I/O密集型任务的性能至关重要。Python的asyncio库为开发者提供了一套简洁而强大的异步I/O编程工具,使得编写高性能的并发应用程序成为可能。本文将深入介绍asyncio的基本概念、核心组件及其在实际项目中的应用,通过示例代码展示如…

MyBatis(环境配置+基本CRUD)

文章目录 1.基本介绍1.为什么需要MyBatis?2.MyBatis介绍3.MyBatis工作示意图4.MyBatis的优势 2.快速入门文件目录1.需求分析2.数据库表设计3.父子模块环境配置1.创建maven父项目2.删除父项目的src目录3.pom.xml文件文件解释 4.创建子模块1.新建一个Module2.创建一个…

MySQL Binlog 闪回与分析

文章目录 前言1. 修改 event 实现闪回1.1 binlog 结构1.2 闪回案例1.3 方法总结 2. 解析文本闪回2.1 mysqlbinlog2.2 闪回案例2.3 方法总结 3. 在线订阅闪回3.1 mysql-replication3.2 binlog2sql3.3 方法总结 4. Binlog 分析方法4.1 分析场景4.2 辅助定位事务4.3 方法总结 5. 平…

代码随想录训练营Day 31|Python|Leetcode|435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 解题思路: 本题重点在于求重叠区间,将所有区间按照左边界从小到大排序。从第二个区…

【C/C++笔试练习】OSI分层模型、源端口和目的端口、网段地址、SNMP、状态码、tcp报文、域名解析、HTTP协议、计算机网络、美国节日、分解因数

文章目录 C/C笔试练习选择部分(1)OSI分层模型(2)源端口和目的端口(3)网段地址(4)SNMP(5)状态码(6)tcp报文(7)域…

美国站群服务器上常见的操作系统选择指南

美国站群服务器上常见的操作系统选择指南 美国站群服务器的选择操作系统对于服务器的性能和功能至关重要。本文将为您介绍在美国站群服务器上常见的操作系统选择指南,以帮助您做出明智的决策。 在选择美国站群服务器时,选择合适的操作系统是至关重要的…

鸿蒙OpenHarmony【标准系统 烧录】(基于RK3568开发板)

烧录 烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 RK3568的镜像烧录通过Windows环境进行烧录&…

Agent AI智能体的未来

Agent AI智能体的未来 随着Agent AI智能体的智能化水平不断提高,它们在未来社会中的角色、发展路径以及可能带来的挑战也引起了广泛关注。快来分享一下你的看法吧~ 提醒:在发布作品前,请把不需要的内容删掉。 方向一:技术进步与…

三丰云搭建QQ-bot的服务器---注册账号

网址:https://www.sanfengyun.com >> 三丰云免费云服务器 本人使用的是qq官方提供的bot,因为要用于群聊,所以使用的是企业bot开发 群聊场景:仅支持企业主体【个人主体暂不支持】频道场景:企业主体与个人主体均可…

【软测学习笔记】Linux入门Day01

🌟博主主页:我是一只海绵派大星 📚专栏分类:软件测试笔记 📚参考教程:黑马教程❤️感谢大家点赞👍收藏⭐评论✍️ 目录 1、操作系统 2、Linux发展历程 3、命令行程序 4、cd 切换文件夹…