linux进程(上)

news2025/1/16 20:19:03

目录

进程的概念

进程的状态

进程状态的理解

特殊的进程 


本期我们将进行linux进程的学习。

进程的概念

我们或多或少都听说过进程的概念,但是在操作系统中,进程到底是什么呢?

进程就是程序的一次执行过程。

一个程序要被执行,就会先被操作系统从硬盘上加载到内存中,然后操作系统就会为这个程序创建与之对应的进程。进程可以理解为是一种软件资源,操作系统对于资源的管理都是先描述组织,所以在进程创建的时候,操作系统会为进程创建对应的结构体我们称之为PCB(进程控制块)方便对进程进行管理(我们把进程控制块PCB也封装在了进程里),因为进程要对程序进行管理,所以进程中也会有程序的代码和数据,自此,我们把进程控制块和程序的代码数据整体称为进程。进程控制块是进程存在的唯一标识。

操作系统对进程的操作本质上就是对进程控制块PCB的操作。

pcb称为进程控制块,在linux中进程控制块PCB就是一个task_struct(PCB和task_struct的关系就像是类和对象的关系)结构体,这个结构体中包含了什么呢? 

1.进程id编号:表示当前进程的id。

2.优先级:因为CPU当面对很多进程时,根据进程的优先级按顺序执行进程。

3.程序计数器:存放下一条要执行的指令的地址。

4.内存指针:进程中包含了程序的代码和数据,内存指针就指向了这个代码和数据。

5.上下文数据:因为CPU可能会先后处理多个进程,所以一个进程可能在一次处理中没有被执行完,所以PCB中就会通过上下文数据,记录当前进程的执行状态以及下一次要执行时要执行这个进程的哪些内容。(上下文数据是保存在CPU的寄存器中的),上下文数据用于进程的切换。

总的来说:

进程=进程控制块(PCB)+程序的代码和数据,进程里面就包含了程序。

进程的状态

R(运行状态):此时的进程要么在运行,要么在运行队列中。

S(浅度睡眠状态,可中断睡眠状态):进程要完成某个任务,但是此时相应的条件不具备,此时进程就进入了S状态。睡眠状态除了被唤醒条件唤醒外,还可以被操作系统唤醒。

D(深度睡眠状态,不可中断睡眠状态):处于当前状态下的进程,只有当满足唤醒条件时,才可以被唤醒。操作系统是不会唤醒D状态的进程的。一般情况下,操作系统中的D状态的进程是很少的,当进程处于D状态时,操作系统是无法杀死的,只能通过重启服务器。

T(暂停状态):处于该状态下的进程,只能被相应的信号唤醒。

X(死亡状态):处于当前状态下的进程,操作系统会完成当前进程的资源的清理工作,资源就包括PCB和程序的代码和数据。

Z(僵尸状态):死亡状态的前一个状态,处于当前状态下的进程,会保存相应的退出信息在PCB里,最终交给父进程,父进程接收之后最终交给操作系统处理。如果处理了就变成了X状态,父进程如果没有接收子进程的退出信息,那么子进程就一直是Z状态。

进程状态的理解

我们先来看一下进程状态转换图:

 解析:一般情况下,我们把R态的进程称作运行态就绪态,把S,D,T态的进程称作阻塞态(等待态)。阻塞状态下的进程都处于等待队列中,运行态的进程都处于运行队列中,也可能正在运行,运行队列中的进程一旦被CPU调度就会被运行。 

特殊的进程 

僵尸进程:子进程在退出时,将退出状态信息封装在了PCB里,但是父进程没有接收子进程PCB里的退出信息,所以子进程此时就变成了僵尸进程。

孤儿进程:父进程先于子进程退出,此时父进程无法再对子进程进行处理,此时的子进程就成为了孤儿进程,但是孤儿进程不会成为僵尸进程,因为子进程的父进程退出之后,1号进程(操作系统)就成为了子进程的父进程,会去接收子进程的退出信息,所以子进程不会成为僵尸进程。

本期内容到此结束^_^

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

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

相关文章

NLP自然语言处理的发展:从初创到人工智能的里程碑

自然语言处理(Natural Language Processing,NLP)人工智能领域中备受关注的重要分支之一。它使得计算机能够理解、解释和使用人类语言。随着技术的不断发展,NLP经历了从初创时期到深度学习时代的巨大演变,推动了互联网产…

AWS云用户创建

问题 需要给工友创建AWS云的用户,这里假设使用分配给自己AWS开发者IAM账号,给别人创建aws IAM账号。 登录系统 打开页面:https://xxx.signin.aws.amazon.com/console,使用分配的开发者账号登录。如下图: 创建用户…

有手就行!阿里云上3分钟搞定幻兽帕鲁联机服务器搭建

幻兽帕鲁最近在社区呈现了爆火的趋势,在线人数已突破百万级别,官方服务器也开始出现不稳定,卡人闪退的情况。对于有一定财力的小伙伴,搭建一个私人服务器是一个最稳定而舒服的解决方案。 本文萝卜哥将讲解一下如何快速搭建 palwo…

【技能---ubuntu上的github常用命令及其将自己的文件夹上传流程】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言GitHub 作用github常用命令ubuntu上传自己的文件夹到github上1.创建远程仓库2. 生成token3. 上传本地代码 总结 前言 随着自己的代码越来越多,需要…

在线小学数学作业练习册出题网站源码,支持打印转成PDF

源码介绍 小学数学出题网页版源码,加减乘除混合运算,支持自定义数字、小数、混合运算,支持加减乘除运算混合多选(一道题中同时随机出现加减乘除运算符)支持自定义出题数量,支持一键打印成pdf,支…

k8s-配置管理

一、ConfigMap 1.1 创建ConfigMap 1.2 在环境种使用ConfigMap ConfigMap最为常见的使用方式就是在环境变量和Volume中引用。 1.3 在Volume中引用ConfigMap 在Volume中引用ConfigMap,就是通过文件的方式直接将ConfigMap的每条数据填入Volume,每条数据是…

统计学-R语言-8.1

文章目录 前言方差分析方差分析的原理什么是方差分析误差分解 单因子方差分析数学模型效应检验 练习 前言 本片开始介绍有关方差分析的知识。 方差分析 方差分析的基本原理是在20世纪20年代由英国统计学家Ronald A.Fisher在进行实验设计时为解释实验数据而首先引入的。方差分…

Mysql大数据量分页优化

前言 之前有看过到mysql大数据量分页情况下性能会很差,但是没有探究过它的原因,今天讲一讲mysql大数据量下偏移量很大,性能很差的问题,并附上解决方式。 原因 将原因前我们先做一个试验,我做试验使用的是mysql5.7.2…

Blender教程(基础)-物体的移动、旋转与缩放-04

一、新建一个立方体 ShiftA新建一个立方体用来演示。 二、物体的移动 xyz轴移动 点击下图图左侧的移动选项后,选中要移动的物体,会出现三个箭头的方向,这分别代表沿着x、y、z轴移动。xyz平面移动 这个小正方体代表沿着某一个面移动&#…

范仲淹大直男逆袭,先天下之忧而忧

人在最艰苦时,最能体现英雄本色。 天底下最苦的是读书。读书要眼到、手到、心到,专心致志,灵活运用。 范仲淹读书很用功,每天煮一锅粥。等到第二天,粥凝固了,范仲淹把隔夜粥划为四块,早上吃两块…

【c语言】详解操作符(上)

1. 操作符的分类 2. 原码、反码、补码 整数的2进制表示方法有三种,即原码、反码、补码 有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位其余都是数值位。 符号位都是用0表示“正”,用…

【Web】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 Linux 目录: (一)云服务器的购买与使用

P2246 SAC#1 - Hello World(升级版)

网址如下: P2246 SAC#1 - Hello World(升级版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 刚开始是用递归做的,虽然用了哈希表优化,但是超时,只得了50 后面想到了一个新的算法,时间复杂度…

Steam游戏免费玩 gamebox 一起来玩幻兽帕鲁吧

steam大作免费畅玩 幻兽帕鲁也有资源 UI设计精美 还有补票链接,点击一下,就能跳转至Steam商店 可以自定义安装位置 下载链接 gamebox:https://rssm666.lanzn.com/b039g6dqj

数据结构排序小结

排序类型小结 💦 插入排序直接插入排序希尔排序 💦 选择排序直接选择排序堆排序 💦 交换排序冒泡排序快速排序🐾霍尔版本补坑位版本前后指针版本非递归版本 💦 归并排序递归版本非递归版本 💦 性能测试 &am…

Ps:根据 HSB 调色(以可选颜色命令为例)

在数字色彩中,RGB 和 HSV(又称 HSB)是两种常用的颜色表示方式(颜色模型)。 在 RGB 颜色模式下,Photoshop 的红(Red)、绿(Green)、蓝(Blue&#xf…

韦东山嵌入式Liunx入门笔记一

文章目录 一、嵌入式Linux二、Ubuntu系统2-1 安装软件2-2 Linux文件(1) 文件架构(2)文件属性(3)文件命令(4) 解压、压缩文件(5) 网络命令 2-3 vi编辑器2-4 Ubuntu下包管理 三、配置网卡四、安装后续学习使用的软件4-1 MobaXterm4-2 FileZilla4-3 Source Insight4.04-4 下载BSP4…

sqli-labs-master 下载、搭建

sqli-labs-master sqli-labs-master 是一个帮助用户学习和测试 SQL 注入漏洞的开源项目。它提供了一系列的环境,用户可以在这些环境中进行实验,学习如何检测、利用和防御 SQL 注入攻击。 sqli-labs 下载地址: github.com/Audi-1/sqli-labs 搭…

刘知远团队大模型技术与交叉应用L5-BMSystem

为什么需要BMTrain? PLM越来越大。为了使训练更高效和廉价。我们有必要 1.分析GPU的显存去哪了? 2.理解GPU间的合作模式是如何的? 显存都去了哪里? CPU vs GPU CPU适合复杂逻辑运算。GPU适合大量重复的数值运算。 显存成分 1.前…

【Java】SpringMVC参数接收(二):JSON、URI、文件

1、获取JSON参数 RequestMapping("/hello") RestController public class HelloSpring {RequestMapping("/t10")public String t10(RequestBody UserInfo userInfo){return userInfo.toString();} } 2、获取URI中的参数 (1)获取单…