Linux 进程与进程状态

目录

1.进程。

        1.进程的概念

2.并行和并发

3.并行和并发的区别:

4.PCB(程序控制块)

5.进程组与会话。

6.进程状态。


1.进程。

        1.进程的概念

          进程是操作系统进行资源分配和调度的一个独立单位。每个进程都运行在操作系统的控制之下,并且拥有独立的地址空间。

  • 程序:二进制文件,占用的磁盘空间
  • 进程: 启动的程序
  • 所有的数据都在内存中 需
  • 要占用更多的系统资源
  • cpu,物理内存

2.并行和并发

  • 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是 在同一个处理机上运行

并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几 个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应 用程序同时在进行。如:打游戏和听音乐两件事情在同一个时间段内都是在同一台电脑上完成了从开始到结 束的动作。那么,就可以说听音乐和打游戏是并发的。

  • 并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程 互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以并行

3.并行和并发的区别:

  1. 并发,指的是多个事情,在同一时间段内同时发生了。
  2. 并行,指的是多个事情,在同一时间点上同时发生了。
  3. 并发的多个任务之间是互相抢占资源的。
  4. 并行的多个任务之间是不互相抢占资源的、 只有在多CPU或者一个CPU多核的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的

4.PCB(程序控制块)

        每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息.

linux内核的进程控制块是task_struct结构 体。

/user/src/linux-headers-3.16.0-30/include/linux/sched.h

头文件中可以查看struct task_struct结构体定义。

  • 进程id。系统中每个进程有唯一的id,在C语言中用pit_t类型表示,其实就是一个非负整数
  • 进程的状态,有就绪,运行,挂起,停止等状态。
  • 进程切换时需要保存和恢复一些CPU寄存器
  • 描述虚拟地址空间的信息
  • 描述控制终端的信息
  • 当前工作目录(Cueernt Working Directory)
  • umask掩码
  • 文件描述符,包含很多指向file结构体的指针
  • 和信号相关的信息
  • 用户id和组id,stat
  • 会话(Session)和进程组
  • 进程可以适用的资源上线(Resource Limit),umilit -a

补充:umask掩码:

umask(user file creation mask)是Unix和类Unix系统中用于设置文件权限的默认屏蔽字(mask)。当用户创建文件或目录时,umask决定哪些权限应该被屏蔽掉。

umask的值定义了在创建文件或目录时默认应该屏蔽掉哪些权限。umask的值是一个八进制数,它表示应该从默认权限中减去的权限。默认情况下,文件的权限是666(可读可写),目录的权限是777(可读可进可执行)。

  • 读(r):4
  • 写(w):2
  • 执行(x):1

umask是一个重要的系统配置,它帮助控制文件和目录的默认访问权限,以增强系统的安全性。

5.进程组与会话。

        进程组是由一组进程组成的集合,这些进程通常是由单个父进程创建的,它们可以一起接收信号。进程组ID(PGID)是标识进程组的数字。默认情况下,当一个进程创建一个子进程时,子进程会继承父进程的进程组ID。可以通过setpgid()系统调用来创建新的进程组或改变某个进程的进程组。一个进程组通常与一个终端关联,该终端是进程组中某个进程的标准输入、输出和错误输出的关联点。

        会话是一组进程组的集合,它由一个会话首进程(通常是登录shell)创建,并包括该首进程创建的所有子进程。会话ID(SID)是标识会话的数字。每个会话都有一个会话首进程,该进程的PID等于会话ID。会话的创建可以通过setsid()系统调用实现,但调用该调用的进程不能是进程组的组长,因为这会导致同一个组中的进程属于不同的会话。

当会话首进程退出时,会话中的其他进程不会受到影响,但可能会导致孤儿进程组的产生。孤儿进程组是指其父进程不在会话中的进程组。如果孤儿进程组中的某个进程处于停止状态,内核会向该进程组的所有进程发送SIGHUP信号,然后是SIGCONT信号。

6.进程状态。

进程基本的状态有五种,分别为初始态,就绪态,运行态,挂起态和终止态。

其中初始态为进程准备阶段,常常与就绪态结合来看。

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

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

相关文章

心觉:如何重塑高效学习的潜意识(1)两种方法的优缺点

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作180/1000天 你的学习习惯是什么呢 学习的时候是感到轻松吗 很多人感觉现在是知识大爆炸的时代,每天都会产生海量的知…

人工智能助力阿尔茨海默症治疗:微软与上海精神卫生中心的新研究

最近,微软研究院与上海市精神卫生中心合作,基于微软 Azure OpenAI 服务中的多模态大模型,开发了一种名为“忆我”(ReMe)的个性化认知训练框架。这一创新项目旨在通过数字化手段扩展自动化认知训练的范围,为…

Spring MVC 参数校验 总结

1. 简介 Sping MVC提供了参数校验的方便注解。 2.代码 在pom.xml中添加依赖&#xff1a; <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>8.0.0.Final</version&g…

如何提升亚马逊与速卖通的关键词搜索排名?

在电商平台上&#xff0c;一个不可忽视的事实是&#xff0c;大部分消费者&#xff08;超过80%&#xff09;在搜索产品时&#xff0c;主要集中在搜索结果的前两页。如果你的产品未能跻身这些显眼的位置&#xff0c;很可能就会错失大量的潜在客户。因此&#xff0c;提升关键词搜索…

PG duckdb插件 pg_quack部署与使用

一.pg_quack简介 pg_quack 是一个创新的 PostgreSQL扩展&#xff0c;它将 DuckDB-—一个嵌入式列式数据库 管理系统集成到PostgreSQL中。这个开源项目为开发者提供了一种在同一个数据 库环境中利用高性能数据处理和存储的新方式,使得在PostgreSQL在OLAP的性能 上得到了很大的提…

Docker容器常用命令详解

Docker容器常用命令&#xff0c;我们经常使用&#xff0c;又经常忘记&#xff0c;今天我们系统分析一下&#xff1a; 1、查看运行的进程 #列出所有运行的容器 sudo docker ps#列出所有容器&#xff0c;包括运行和停止的 docker ps -a #列出所有容器&#xff0c;并过滤 docker…

【Docker】解决Docker Engine stopped

解决Docker Engine stopped 解决Docker Engine stopped1.检查虚拟设置2 安装wslwindows安装wsl 解决Docker Engine stopped 在安装完docker之后不少用户会遇到Docker Engine stopped。下面就下给出解决方法让docker正常运行起来 1.检查虚拟设置 打开任务管理器查看cpu页面&a…

行业展望:线缆行业发展

线缆行业作为国民经济中最大的配套行业之一&#xff0c;在我国机械工业的细分行业中占据举足轻重的地位&#xff0c;仅次于汽车整车制造和零部件及配件制造业。作为电气化、信息化、智能化社会中重要的基础性配套产业&#xff0c;电线电缆被誉为国民经济的"血管"与&q…

【Python】遇见的问题:为项目选择的 Python 解释器无效

一、问题说明 导入项目文件后&#xff0c;提示“为项目选择的 Python 解释器无效” 二、问题原因 暂时不知道 三、解决办法 第一步&#xff1a;添加本地解释器 第二步&#xff1a;点击确定 位置&#xff1a;当前项目所在目录 基础解释器&#xff1a;python.exe所在目录 第三…

SpringBoot的应用

目录 一、springboot的应用 1、创建springboot项目 2、乱码问题配置 3、springboot日志配置 4、springboot整合mybatis 二、配置文件讲解及测试 1、全局配置文件参数读取 1.1 全局配置文件的位置 1.2 配置文件的读取 1.2.1 导包 1.2.2 编写配置对象Bean 1.2.3 编写配置文件 1.2…

创建单链表

一、完成单链表操作&#xff0c;要求节点构造类型。 1、建立学生结构体&#xff08;学号&#xff0c;姓名&#xff0c;成绩&#xff09; 2、循环调用头插法创建整表 3、遍历单链表 4、任意位置插入一个完整的学生信息 5、任意位置删除一个学生。 6、单链表逆置 7、单链表按照学…

[通信原理]确知信号1:傅里叶分析 × 确知信号

傅里叶分析 对于周期函数可以用直流分量、正弦函数和余弦函数构成的无穷级数来表示&#xff0c;这些函数是正交的&#xff0c;意味着它们之间没有任何相关性。‌ 必须指出&#xff0c;并非任意周期信号都能进行傅里叶级数展开&#xff0c;函数需满足狄利赫里条件才能被展开。…

RAG的文档拆分策略

目录 Langchain支持的文档拆分 智谱AI采用的文档拆分策略 Meta KDD Cup24 Qanything 总结 Langchain支持的文档拆分 名字具体教程分割字符是否添加metadata描述递归式RecursiveCharacterTextSplitter、RecursiveJsonSplitter用户自定义的字符递归拆分文本。这种拆分是试图…

使用 UWA Gears 测试小游戏性能

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台&#xff0c;提供了实时监测和截帧分析功能&#xff0c;帮助您精准定位性能热点&#xff0c;提升应用的整体表现。 随着小游戏的规模和用户量持续增长&#xff0c;玩家对于小游戏的性能要求也越来越高。为了能够给玩…

【大数据】元数据是解锁数据价值的关键

在信息爆炸的数字时代&#xff0c;数据无处不在&#xff0c;它以多种形式存在&#xff0c;从文本文档到数字图片&#xff0c;从交易记录到科学测量。然而&#xff0c;如果没有合适的数据管理和理解&#xff0c;这些数据的价值就会大打折扣。如何提高数据价值呢&#xff1f;这就…

力扣 简单 206.反转链表

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;双指针 在遍历链表时&#xff0c;将当前节点的 next 改为指向前一个节点。由于节点没有引用其前一个节点&#xff0c;因此必须事先存储其前一个节点。在更改引用之前&#xff0c;还需要存储后一个节点。最后返回新的头引…

C# CS1612 尝试修改集合中值类型的情况

在C#中&#xff0c;发现尝试直接修改集合中值类型的中的值发生报错 提示“它不是变量”&#xff0c;通过官方索引的链接可知&#xff0c;尝试修改某一值类型&#xff0c;但是该值类型作为中间表达式的结果生成但不存储在变量中&#xff0c;会发生报错。 正确做法是将其赋值给局…

【软考】传输层协议TCP与UDP

目录 1. TCP1.1 说明1.2 三次握手 2. UDP3. 例题3.1 例题1 1. TCP 1.1 说明 1.TCP(Transmission Control Protocol&#xff0c;传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的…

芝法酱学习笔记(0.3)——SpringBoot下使用mybatis做增删改查和报表

零、前言 书接上回&#xff0c;我们搭建了windows下的开发环境&#xff0c;并给出了一个hello world级别的多模块SpringBoot项目。 毕竟java后端开发&#xff0c;离不开数据库的操作&#xff0c;为方便后面内容的讲解&#xff0c;这里再做一期铺垫&#xff0c;core模块下新增一…

安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 位置13.2 位置24.代码修改5.编译6.彩蛋1.前言 客户需要去掉下拉菜单里面的Dump SysUI 堆图标,不让使用这个功能。 2.问题分析 android的下拉菜单在systemui里面,这里我们只需要定位到对应的添加代…