4.2、Linux进程(1)

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

基本概念

描述进程-PCB

task_struct-PCB的一种

task_struct内容分类

查看进程

通过系统调用获取进程标识符


前言

进入进程前,我建议读一读这两篇文章,他们都是进程的前导知识。

操作系统上icon-default.png?t=N7T8https://blog.csdn.net/m0_74824254/article/details/134385952?spm=1001.2014.3001.5501操作系统下icon-default.png?t=N7T8https://blog.csdn.net/m0_74824254/article/details/134506893?spm=1001.2014.3001.5501他们都是我所写,是具有连贯性的,建议能够读后再向下看。

那么操作系统是如何管理进程的呢?  很简单,先描述进程,再将他们组织起来。

基本概念

教材给出的概念:加载到内存的程序/正在运行的程序,叫做进程。

教材接着给我们说,进程是可以排队的。


接下来是我个人的理解:

首先,我们要明白,程序是二进制文件,文件是存储在磁盘上的,而磁盘属于外设。

程序要运行首先就要从磁盘加载到内存中,接着才能由CPU执行。

而有几个事实就是:

  1. 我们可以同时启动多个程序,也就是说需要将多个程序加载到内存中。
  2. 操作系统要不要管理这些加载进内存的程序呢?要的。
  3. 操作系统要如何管理加载到内存的程序呢? 先描述,再组织。

我们用结构体来描述这些程序的属性:

通过上面两张图,我们很好地回答了三个问题。

那么什么是进程呢?这里给出的定义是:

  • 进程 = 内存控制块 + 可执行程序的代码和数据
  • 或者内核数据结构 + 可执行程序的代码和数据

未来对进程的所有控制和操作,都只与进程的PCB有关,与其可执行程序无关 

task_struct-PCB的一种

PCB是操作系统学科的叫法,在我们Linux下,进程控制块叫做task_struct

task_struct内容分类

  • 标识符:描述本进程的唯一标识符,用来区别其他进程,Linux叫做PID
  • 状态:任务状态,退出代码等。
  • 优先级:哪个进程先运行,相较于其他进程的优先级。
  • 程序计数器:程序中即将被执行的下一条代码的地址
  • 记账信息:包括处理器时间总和,使用的时钟数总和,时间限制等。

我们谈一谈程序计数器,在Visual Stutio X86下,我们有一个程序寄存器eip,教材中叫做pc指针,存放着这个地址,就像我们C语言中的循环,判断,以及跳转函数,本质就是修改pc指针。

另外,pc指针指向哪个进程的代码,就代表哪个进程被调度运行。 

查看进程

ps axj 查看进程

通过系统调用获取进程标识符

<unsitd.h>是sleep函数的头文件,<sys/types.h>是getpid函数的头文件,getpid函数是系统函数,不在C标准库中。

 ps axj | head -1 && ps axj | grep myprocess | grep -v grep 以此来查看我们的进程标识符

使其循环查看

while :; do ps ajx | head -1 && ps ajx | grep myprocess | grep -v grep ; sleep 1; done

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

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

相关文章

Joern安装与使用

环境准备 Joern需要在Linux环境中运行&#xff0c;所以在Windows系统中需要借助WSL或虚拟机安装。 JDK安装 Joern的运行需要JAVA环境的支持&#xff0c;本次采用的是JDK17&#xff0c;其他版本建议看一下Joern官方文档。 apt install openjdk-17-jre-headless 配置JAVA环境变…

shell脚本之条件语句

条件语句 linux测试 test 测试 测试表达式是否成立&#xff08;用echo $? 检测是否正确&#xff09; 语法&#xff1a;test [选项] [文件名] 选项作用-e测试文件是否存在-r查看文件有无读的权限-d测试是否为目录-f测试是否为文件-w测试当前用户有无写的权限-x测试是否有执…

EANet:用于医学图像分割的迭代边缘注意力网络

EANet: Iterative edge attention network for medical image segmentation EANet&#xff1a;用于医学图像分割的迭代边缘注意力网络背景贡献实验方法Dynamic scale-aware context module&#xff08;动态规模感知上下文模块&#xff09;Edge attention preservation module&a…

【Java】java | CacheManager | redisCacheManager

一、说明 1、查询增加缓存&#xff0c;使用Cacheable注解 2、项目中已经用到了ehcache&#xff0c;现在需求是两个都用 二、备份配置 1、redisConfig增加代码 Bean("redisCacheManage")Primarypublic CacheManager redisCacheManager(RedisConnectionFactory fact…

Matlab通信仿真系列——图形处理函数

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、plot函数 (1)绘制一…

SystemV

一、共享内存 1、直接原理 进程间通信的本质是&#xff1a;先让不同的进程&#xff0c;看到同一份资源&#xff01;&#xff01; 我们要把这句话奉若圭臬一般 到了共享内存了支持双向通信能读也能写&#xff0c;但是一般都是一个读一个写 要想通信先看到同一个份资源&#xff0…

Lifecyle的原理

1、Lifecycle是典型的观察者模式&#xff0c;被观察者的继承关系如上图所示。 2、LifeCycleRegistry是Lifecycle的子类。 3、观察者通过LifeCycle对象的addObserver注册监听生命周期的变化&#xff0c;通过removeObserver移除监听生命周期的变化。 4、Activity或Fragment的生命…

HDFS的Shell操作

文章目录 一、HDFS的Shell介绍二、了解HDFS常用Shell命令&#xff08;一&#xff09;三种Shell命令方式&#xff08;二&#xff09;FileSystem Shell文档&#xff08;三&#xff09;常用HDFS的Shell命令 三、HDFS常用命令操作实战&#xff08;一&#xff09;创建目录&#xff0…

深度学习之基于Pytorch的昆虫分类识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介系统架构技术亮点 二、功能三、系统四. 总结 一项目简介 # 深度学习基于 Pytorch 的昆虫分类识别系统介绍 深度学习在图像分类领域取得了显著的成就&#…

windows上 adb devices有设备 wsl上没有

终于解决了&#xff01;&#xff01;&#xff01;&#xff01; TAT&#xff0c;尝试了很多种办法。 比如WSL中的adb和Windows中的adb版本必须一致&#xff0c;一致也没用&#xff0c;比如使用 ln 建立链接也没用。 这个解决办法的前提是windows中的abd是好用的。 ●在windows…

计算机显示msvcp140.dll丢失的解决方法,实测有效的5个方法分享

在日常的电脑操作中&#xff0c;常常遭遇某些错误讯息&#xff0c;如“缺少xxx.dll文件”&#xff0c;这些dll文件即为动态链接库文件&#xff0c;内含诸多可执行的程序码及数据。当启动某款应用时&#xff0c;系统将会自动调用与其相关的dll文件&#xff0c;其中msvcp140.dll便…

pycharm 控制台中文乱码处理

今天使用pycharm&#xff0c;发现控制台输出又中文乱码了&#xff0c;看网上很多资料说把编码改为UTF-8&#xff0c;设置为并未生效&#xff0c;特此在此记录下本地设置。 1. 修改文件编码&#xff1a;Setting -> Editor ->File Encodings,修改配置如下&#xff1a; 2. …

深入了解Java 8 新特性:Stream流的实践应用(一)

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概一万多字&#xff0c;预计阅读时间长需要10分钟&#xff08;不要害怕字数过多&#xff0c;其中有一大部分是示例代码&#xff0c;读起…

Kotlin 核心语法,为什么选择Kotlin ?

Kotlin 是一个基于 JVM 的新的编程语言&#xff0c;由 JetBrains 开发。与Java相比&#xff0c;Kotlin的语法更简洁、更具表达性&#xff0c;而且提供了更多的特性。 Kotlin是使用Java开发者的思维被创建的&#xff0c;Intellij作为它主要的开发IDE。对于 Android开发者&#…

用百度AI大模型给头像换风格

心血来潮想尝试尝试AI小应用&#xff0c;给图片加个风格&#xff08;例如微信头像&#xff09;&#xff0c;于是有了这篇简短的教程 目录 1. 领取免费资源2. 在应用列表创建应用3. 在线API调试4. 效果对比 1. 领取免费资源 网站&#xff1a;百度智能云 百度给提供了很多AIGC的…

手搓js轮播图_JavaScript进阶

手搓js轮播图 逻辑解析html结构图片切换方法圆点导航切换效果左右箭头点击切换圆点导航点击切换自动播放&#xff0c;介入暂停 完整代码 逻辑解析 css的样式我就不再进行讲述&#xff0c;如果有需求可以评论区告诉我&#xff0c;我再出一篇文章进行详细讲解 js轮播图最主要的核…

执行npm的时候报权限问题的解决方案

我们在执行npm操作的过程中&#xff0c;会出现以下权限问题&#xff0c;解决方案: 管理员身份 运行cmd 切换目录到要执行命令的文件下 再进行npm操作即可

openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值

文章目录 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值129.1 操作步骤129.2 示例 openGauss学习笔记-129 openGauss 数据库管理-参数设置-查看参数值 openGauss安装后&#xff0c;有一套默认的运行参数&#xff0c;为了使openGauss与业务的配合度更高&…

轿车5+1汽车变速器变速箱同步器操纵机构机械结构设计CAD汽车工程

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;汽车变速器 获取完整论文报告说明书工程源文件 变速器工程图 操纵机构3D图 一、机械式变速器的概述及其方案的确定 1.1 变速器的功用和要求 变速器的功用是根据汽车在不同的行驶条件下提出的要求&#xff0c;改变发动机…