【Linux】进程的认识

news2024/11/18 1:50:08

在这里插入图片描述

查看进程指令proc/ps/top

注意哦, 我们经常使用的指令, 像ls, touch…这些指令在启动之后本质上也是进程

proc 是内存文件系统, 存放着当前系统的实时进程信息. 每一个进程在系统中, 都会存在一个唯一的标识符(pid -> process id), 就如同学生在学校里有一个专门的学号一样.

在这里插入图片描述

大多数进程信息同样可以使用topps这些用户级工具来获取

ps命令 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
ps的选项
在这里插入图片描述
在这里插入图片描述
**head -1 **只输出第一行
在这里插入图片描述

grep -v命令

在这里插入图片描述

kill进程终止

在这里插入图片描述

kill -9是杀死进程的终极武器。一般情况下慎用,以防产生什么系统故障或者影响软件的再运行环境。
在这里插入图片描述

获取子ID(getpid)

在这里插入图片描述

从运行结果可以看出,我们的子类进程的ip只要一结束重写运行ip就会变,但是父类ip不会变,父类不变说明命令行所有指令都是bash的子进程
在这里插入图片描述

在这里插入图片描述

创建子进程(系统调用创建进程 fork)

fork()如果成功了返回值为子进程的id并且0返回给子进程,如果失败了返回-1给父类,没有子进程创建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题1:为什么fork要给子进程返回0,给父进程返回子类的id呢?

他们赋值不同是为了区分不同的执行流,执行不同的代码,一般而言fork之后的代码都是父子共享。
这是因为后期父类会对子类进行修改,所以我们需要提前保存子类的id,而子类可以通过getpid函数来得到父类的id,所以只需要赋值0标记创建成功即可

问题2:一个函数是如何做到返回两次的?

在我们fork后,同一个程序会执行两次,这是因为新建的子类和父类的代码时共用的且不可被修改。除非我们做一下判断返回值的选项来分别输出
在这里插入图片描述
在这里插入图片描述
那么我们为什么要创建子进程呢?
这是因为我们不想让父和子做同样的事情,需要想办法分开输入,所以我们就从frok()的返回值下手

那么是如何做到返回两次的呢?这是因为fork是一个函数,它内部对马上要进行的子进程进行了一些包裹,最后我们return的时候会返回两次,这是因为return语句是父和子共享的,所以就会出现两个结果,输出两次
在这里插入图片描述

问题3:一个变量怎么会有不同的内容?

当fork了一个子进程后,如果子进程没有新的成员或者函数方法,并且也没有对父类进行修改,则这是它和父类是共用的同一空间和代码区。
当他重写了父类的方法或者自己新建了函数、变量,则这是系统会为他新建一块空间,这是我们叫
写时拷贝
当fork执行成功后,如果父子进程被创建好,谁先运行是由调度器来决定的。

进程的状态

运行状态(R)

这是我们的程序一个重复执行while,所以一直为运行状态

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

阻塞状态(S)(D)

S 浅度睡眠

因为cpu的运行速度非常快,又因为操作系统中的进程特别多,所以操作系统会将其设置为阻塞状态

在这里插入图片描述

D 深度睡眠

如果其要输出的内容太多时,由于输入磁盘的较慢,所以会影响后边的进程,所以操作系统会将其设置为深度睡眠。
这是操作系统不可以手动进行kill终止程序,只能让其自己转移到运行状态。

停止状态(T,t)

T

kill -19 为停止程序
kill -18 为继续让程序运行
这里需要注意的是,当我们把进程停止后又恢复正常的运行时,这时的进程是出于后台运行的,需要我们手动 kill -9 杀死进程

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

僵尸进程(Z)

子进程先结束的情况
当我们子进程结束后,在父进程没有收回子进程的时候,子进程会进入僵尸状态,如果一直没有收回就会导致内存泄漏
在这里插入图片描述
在这里插入图片描述

孤儿进程

父进程先结束的情况
如果此时父进程先结束,那么他的进程会被他的父类给回收,此时我们的子进程就会变成孤儿,称为孤儿进程,并且会直接被操作系统收到膝下,作为他的父类。
什么是孤儿进程?

当父进程在子进程之前结束,那么这时的子进程就变味了孤儿进程,当子进程变为孤儿后,会被bash收下,并且成为他的父进程,此时的子进程就会转到后台运行,我们可以看到S后边没有+了
在这里插入图片描述

进程优先级

优先级是对于资源的访问,到底是谁先访问,谁后访问。
因为资源是有限的,进程是多个的,注定了,进程之间是竞争关系的!
因此操作系统为了公平竞争,规定了可以修改进程的优先级。如果一个进程长时间得不到CPU资源,该进程代码长时间得不到推进(进程饥饿)

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

调整优先级

我们可以通过top命令里头的r命令来调整
top修改优先级必须在root用户下才可以,当我们输入r之后,我们需要输入修改进程的pid,接的就是输入对进程要更改多少,其nice的取值范围为[-20,10],priority的值范围为[60,99],其默认优先级为 80

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Mac笔记本安装maven

Mac笔记本安装maven 一、通过brew安装maven 如果你的mac笔记本安装了homebrew可以使用如下命令安装 brew install maven安装完成后可以使用命令brew list maven来查看maven的安装位置 $ brew list maven /usr/local/Cellar/maven/3.6.3_1/bin/mvn /usr/local/Cellar/mave…

从零开始学Docker(三):DockerFile镜像定制

宿主机环境:RockyLinux 9 前言,定制docker镜像的方式有两种: 手动修改容器内容,然后docker commit提交容器为新的镜像通过在dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依…

leetcode 面试题 0106.字符串压缩

⭐️ 题目描述 🌟 leetcode链接:面试题 0106.字符串压缩 思路: 开辟一个新的空间(空间要大一点,因为可能压缩后的字符串比原字符串大),然后遍历原字符串统计当前字符的个数,再写入到…

使用vmd渲染并保存指定分辨率的图片

准备TCL脚本文件 # 设置渲染分辨率为1920x1080,600dpi render TachyonInternal out.tga width 1920 height 1080 dpi 600# 启用抗锯齿选项 display antialias on运行TCL 输入: source render.tcl使用Photoshop打开输出的out.tga文件并保存常用图片格式

【蓝桥杯备考资料】如何进入国赛?

目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类(填空题)三部排序(填空题)错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…

RK3568平台开发系列讲解(应用篇)输入设备应用编程

🚀返回专栏总目录 文章目录 一、输入设备介绍二、input 子系统三、读取输入设备四、按键应用编程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解输入设备应用编程。 一、输入设备介绍 输入设备是指可以接收用户输入的设备,例如键盘、鼠标、触摸屏等…

41. linux通过yum安装postgresql

文章目录 1.下载安装包2.关闭内置PostgreSQL模块:3.安装postgresql服务:4.初始化postgresql数据库:5.设置开机自启动:6.启动postgresql数据库7.查看postgresql进程8.通过netstat命令或者lsof 监听默认端口54329.使用find命令查找了一下postgresql.conf的配置位置10.修改postgre…

保姆级秋招教程之简历篇

大家好,我是千寻哥,个人简历在程序员求职过程中扮演着至关重要的角色。 今天我将详细给大家介绍一下写简历的必备要素和布局,同时强调应避免的“坑”! 希望能通过这些技巧,能帮助程序员打造一份出色的简历,…

Python - print

文章目录 1. end‘’2. 未完待续~ 1. end‘’ 如果没有end‘’,每次print语句都会自动换行,而有了这个语句,数据就不会自动换行,而是在输出的数据后面加上空格(空格数取决于引号里面的空格数)示例&#xf…

Vulnhub: hacksudo: search靶机

kali:192.168.111.111 靶机:192.168.111.170 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.170 80端口目录爆破 feroxbuster -k -d 1 --url http://192.168.111.170 -w /opt/zidian/SecLists-2022.2/Discovery/Web…

计网 第三章错题整理 (3.4以后)

3.4 ③ 发送窗口不能大于接收窗口 否则窗口大小大于序号范围一般的时候 超时重传接收方没法辨别是新帧还是旧帧 本题有歧义 因为编号个数可以自定义的话,信道利用率都可达到百分之百 数据帧长度为128B的话 发送同样一个比特序列,需要更多的比特数 所以要…

7、单元测试--测试RestFul 接口

单元测试–测试RestFul 接口 – 测试用例类使用SpringBootTest(webEnvironment WebEnvironment.RANDOM_PORT)修饰。 – 测试用例类会接收容器依赖注入TestRestTemplate这个实例变量。 – 测试方法可通过TestRestTemplate来调用RESTful接口的方法。 测试用例应该定义在和被测…

【多模态】22、UniDetector | 检测开放世界中的一切!(CVPR2023)

文章目录 一、背景二、方法2.1 UniDetector 框架结构2.2 Heterogeneous Label Space Training2.3 open-world inference 三、效果3.1 数据集3.2 Object Detection in the Open World3.3 Object Detection in the Closed World3.4 Object Detection in the Wild3.5 Comparison w…

msf 渗透基础篇(基本命令)

一 Metasploit 目录结构 以 kali 为例,几个关键路径,熟悉一下,为了更方便的查找。 1、msf 的安装路径: ┌──(root㉿kali)-[/usr/share/metasploit-framework] └─# ls app documentation metasploit-framework.gemspec…

力扣 746. 使用最小花费爬楼梯

题目来源&#xff1a;https://leetcode.cn/problems/min-cost-climbing-stairs/description/ C题解1&#xff1a;动态规划。虽然我的本意是跳到第i个台阶的花费&#xff0c;但代码写着写着就歪了。。 class Solution { public:int minCostClimbingStairs(vector<int>&am…

李群李代数

0.知识回顾 描述旋转本身的矩阵叫做旋转矩阵&#xff0c;旋转矩阵是一个行列式为1的正交矩阵 &#xff0c;反之&#xff0c;行列式为1的正交矩阵也是一个旋转矩阵。将n维旋转矩阵的集合定义如下&#xff1a; S O ( n ) { R ∈ R n ∗ n ∣ R R T I &#xff0c; d e t ( R …

事件标志组

Q: 什么是事件标志组&#xff1f; A: 事件标志位&#xff1a;表明某个事件是否发生&#xff0c;联想&#xff1a;全局变量 flag。通常按位表示&#xff0c;每一个位表示一个事件&#xff08;高8位不算&#xff09; 事件标志组是一组事件标志位的集合&#xff0c; 可以简单的理…

Android应用开发(24)启用广色域(wideColorGamut)

Android应用开发学习笔记——目录索引 参考android官网&#xff1a; 使用广色域内容增强图形效果 | Android 开发者 | Android Developers ColorSpace | Android Developers Wide Color Photos Are Coming to Android: Things You Need to Know to be Prepared 广色域…

redis主从复制 哨兵模式

目录 1.主从 1.主从概念 2.作用 3.主从流程 2.哨兵 1.哨兵核心 2.原理 3.作用 4.结构 3.案例 主从搭建 哨兵搭建 1.主从 1.主从概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者…

Psim 2022电力仿真--锁相环控制程序

目录 目录 1.原理 2.代码实现 3.仿真实现 4.仿真结果 5.讨论 1.原理 三相锁相环是一种用于控制交流&#xff08;AC&#xff09;信号的相位、频率和波形的电路&#xff0c;其原理和应用也广泛用于电源领域。使用三相锁相环可以使交流电源输出的电压稳定、精准地与输入信号…