【Linux】进程概述

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述


目录

  • 一、进程的基本概念
  • 二、进程的特征
  • 三、进程的基本状态及转换
    • 挂起和激活
  • 四、进程的存储环境

一、进程的基本概念

进程在不同角度下可以有不同的定义:

  • 进程是进程实体的运行过程。
  • 进程是系统进行资源分配和调度的一个单位,是一个任务执行的逻辑单元。

在早期计算机的结构中,进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

在当代计算机结构中,进程与程序显然是截然不同的概念,程序与进程没有必然联系

在进程执行时如果没有数据往来,程序文件被删除甚至都不会影响进程的运行。


进程拥有程序所没有的特征:

二、进程的特征

  • 1.动态性:进程的实质是进程实体的执行过程,它是有生命的,具有各种状态。
  • 2.并发性:指多个进程可以在一段时间间隔内同时进行。
  • 3.独立性:进程独立运行、进程资源独享、独立接受调度,占用独立的物理内存空间。
  • 4.异步性:按各自独立的、不可预知的速度向前推进,进程间可能会相互影响或受到资源共享的制约关系
  • 5.结构性:进程由程序段、数据段和PCB三部分组成。

进程控制块:为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中必须为之配置一个专门的 数据结构,称为进程控制块(PCB)


三、进程的基本状态及转换

由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律,所以进程在其生命周期内可能以下状态:

  • 1.创建态:当一个进程被创建后,就处于创建态。此时,它已经完成了初始化工作,但还未真正运行。
  • 2.就绪态:当一个进程已经准备好运行时,就处于就绪态,此时进程处于就绪队列中。此时,它已经获得了除了CPU以外所有必要的资源,只等待调度器的调度。
  • 3.运行态:当一个进程获得CPU资源后,正在CPU上运行时,就处于运行态。此时,它是系统中实际工作的进程。
  • 4.阻塞态:当一个进程正在等待某个事件(如I/O操作)完成时,就处于阻塞态,根据阻塞原因的不同,会设置多个阻塞队列。此时,它暂停运行,直到等待的事件发生或完成。
  • 5.终止态:当一个进程已经完成其任务并退出时,就处于终止态。此时,它已经释放了所有占用的资源。

进程在运行过程中会经常发生状态的转换,处于就绪状态的进程,在调度程序为之分配了处理机之后便可执行,相应地,其状态就由就绪态转变为执行态
正在执行的进程(当前进程)如果因分配给它的时间片已完而被剥夺处理机暂停执行时,其状态便由执行转为就绪态

如果因发生某事件,致使当前进程的执行受阻(例如进程访问某临界资源,而该资源正被其它进程访问时),使之无法继续执行,则该进程状态将由执行转变为阻塞态


五种状态转换关系如下图:

image.png

挂起和激活

挂起操作:由于系统或用户需要,将某个进程置于静止状态
按照运行状态可以分为以下几种:

  • 执行中的进程:挂起后暂停进行
  • 就绪队列中的进程:暂时不接受进程调度
  • 阻塞状态的进程:变为静止阻塞状态

引入挂起后的进程状态转换图:

image.png


四、进程的存储环境

操作系统中有两种运行模式,具有不同的权限和功能。

  • 内核态:也称为系统态、管态,具有最高的权限,可以执行任何指令并访问系统所有的资源。在内核态下运行的代码一般为操作系统的核心代码、设备驱动程序等。进程的信息就存储在内核层,包括进程控制块(PCB)
  • 用户态:具有较低的权限级别,只能执行有限的指令并访问受限的资源。在用户态下运行的代码是应用程序的代码。用户层包括命令行参数、环境变量、栈、库、堆、全局/静态变量、代码段等

在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

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

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

相关文章

统计学-R语言-8.1

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

最新多功能PHP图床源码 /兰空图床Lsky Pro开源版v2.1/ 单纯的图床程序源码

源码介绍&#xff1a; Lsky Pro 是一个用于在线上传、管理图片的图床程序&#xff0c;中文名&#xff1a;兰空图床&#xff0c;你可以将它作为自己的云上相册&#xff0c;亦可以当作你的写作贴图库。 该程序的最初版本诞生于2017年10月&#xff0c;由ThinkPHP 5框架精心打造而…

【Linux 基础】常用基础指令(上)

文章目录 一、 创建新用户并设置密码二、ls指令ls指令基本概念ls指令的简写操作 三、pwd指令四、cd指令五、touch指令六、rm指令七、mkdir指令八、rmdir 指令 一、 创建新用户并设置密码 ls /home —— 查看存在多少用户 whoami —— 查看当前用户名 adduser 用户名 —— 创建新…

Python高超音速导弹

Python高超音速导弹的全自动化开发研发具有重要性的原因如下&#xff1a; 提高研发效率&#xff1a;全自动化开发可以通过自动化工具和流程&#xff0c;快速完成各种任务&#xff0c;包括代码编写、测试、集成和部署等。这样可以大大提高研发效率&#xff0c;缩短开发周期。 减…

08 BGP 华为官方文档 十一条选路原则

BGP 华为官方文档 十一条选路原则 丢弃下一跳不可达的路由 1&#xff09;比较“协议首选值-pref-val”属性&#xff0c;数值越大越好&#xff0c;默认值是0&#xff0c;只在本设备生效&#xff0c;不在网络中传递 2&#xff09;比较“本地优先级-local_pref”属性&#xff0c;…

Ceph分布式存储自动化运维平台开发实践

文章目录 1. 背景介绍1.1 什么是Ceph&#xff1f;1.1.1 Ceph的核心组件1.1.2 Ceph的优势 1.2 自动化运维的需求目标 2. 平台架构设计和组件版本2.1 平台架构设计2.2 组件版本2.3 模块划分&#xff08;已经脱敏处理&#xff09;2.3.1 当前版本V1.0支持功能2.3.2 前后端代码结构t…

JS-单例设计模式

设计模式&#xff1a;针对特定问题提出的简洁优化的解决方案 构造函数或类仅仅只能实例化一次&#xff0c;得到一个实例对象比如&#xff1a;工具类 在项目中使用工具类实例对象时&#xff0c;每一个实例对象的属性方法与功能作用都是一样的那么在项目中如果每次使用都需要重新…

如何保障主机安全

做好主机安全是非常重要&#xff0c;因为主机安全涉及保护主机的数据存储和处理的保密性、完整性和可用性。主机安全的具体措施包括硬件、固件、系统软件的自身安全以及一系列附加的安全技术和安全管理措施&#xff0c;从而建立一个完整的主机安全保护环境。 主机一旦被黑客入…

利用 “diart“ 和 OpenAI 的 Whisper 简化实时转录

利用 "diart" 和 OpenAI 的 Whisper 简化实时转录 工作原理 Diart 是一个基于人工智能的 Python 库&#xff0c;用于实时记录说话者语言&#xff08;即 "谁在什么时候说话"&#xff09;&#xff0c;它建立在 pyannote.audio 模型之上&#xff0c;专为实时…

Linux CentOS 7 安装mysql的步骤

#wget命令用来从指定的URL下载文件 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server 重启mysql服务 service mysqld restart || systemctl restart mysqld…

RabbitMQ之Window中安装配置与使用

RabbitMQ之Window中安装配置与使用 文章目录 RabbitMQ之Window中安装配置与使用1 安装准备1.1 安装Erlang1.2 ErLnag环境变量配置 2. 安装RabbitMQ2.1 安装2.2 环境变量设置 官网&#xff1a;https://www.rabbitmq.com 下载地址&#xff1a;https://www.rabbitmq.com/download.…

MATLAB中conv和filter函数的区别

文章目录 1.函数简介w conv(u,v)yfilter(b,a,x)讨论情况 2.先说结论3.代码验证 1.函数简介 w conv(u,v) w conv(u,v) 返回向量 u 和 v 的卷积结果&#xff0c;卷积运算是对信号的移位加权求和。 yfilter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数对输入数…

Git推送大量内容导致http 413错误

Git推送大量内容导致服务端HTTP 413错误 问题描述 使用git push 大量变更内容&#xff08;超过60M&#xff09;时报 http 413错误&#xff0c;详细错误信息&#xff1a; Compressing objects: 100% (2907/2907), done. Writing objects: 100% (6760/6760), 64.18 MiB | 1.18…

【日常学习笔记】gtest

https://zhuanlan.zhihu.com/p/369466622 int Factorial(int n) {int result 1;for (int i 1; i < n; i) {result * i;}return result; }TEST(TestSuiteName, TestName) 第一个参数可以表示为一个对某一个函数进行测试&#xff0c;第二个参数表示对这个函数测试时的分的几…

微信小程序 仿微信聊天界面

1. 需求效果图 2. 方案 为实现这样的效果&#xff0c;首先要解决两个问题&#xff1a; 2.1.点击输入框弹出软键盘后&#xff0c;将已有的少许聊天内容弹出&#xff0c;导致看不到的问题 点击输入框弹出软键盘后&#xff0c;将已有的少许聊天内容弹出&#xff0c;导致看不到的问…

银行数据仓库体系实践(8)--主数据模型设计

主数据区域中保留了数据仓库的所有基础数据及历史数据&#xff0c;是数据仓库中最重要的数据区域之一&#xff0c;那主数据区域中主要分为近源模型区和整合&#xff08;主题&#xff09;模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…

前端工程化之:webpack1-5(配置文件)

一、配置文件 webpack 提供的 cli 支持很多的参数&#xff0c;例如 --mode &#xff0c;但更多的时候&#xff0c;我们会使用更加灵活的配置文件来控制 webpack 的行为。 默认情况下&#xff0c; webpack 会读取 webpack.config.js 文件作为配置文件&#xff0c;但也可以通过 C…

《动手学深度学习(PyTorch版)》笔记4.2 4.3

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…

85 总结一下最近遇到的一些 jar发布 相关的知识

前言 呵呵 最近有一些构建服务, 发布服务的一些需求 我们这里的服务 一般来说是 java application, spring boot application 针对发布, 当然最好是 增量发布, 尽量的减少需要传递给 发布服务器 的资源的大小 比如 我的这个 java application, 可能会存在很多依赖, 常规…

探讨Go语言在构建HTTP代理时的优势和挑战

亲爱的读者&#xff0c;让我们一起来探讨一下Go语言在构建HTTP代理时的优势和挑战。 首先&#xff0c;让我们来谈谈Go语言在构建HTTP代理时的优势。Go语言是一种高性能的编程语言&#xff0c;它具有简洁、高效的特点&#xff0c;非常适合构建高效的代理服务器。使用Go语言&…