【操作系统】进程基础知识

目录

1、进程的介绍

2、进程的五个基本特性

3、进程的组成

4、进程的并行和并发执行

5、进程的状态

6、进程的通信

7、线程

1、进程的介绍

        进程(Process)是程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。

        简单来说,进程就是程序的一次执行过程,程序是静态的,它作为系统中的一种资源是永远存在的。而进程是动态的,它是动态的产生,变化和消亡的,拥有其自己的生命周期。举例子理解:同时挂三个 QQ 号,它们就对应三个 QQ 进程,退出一个就会杀死一个对应的进程。但是,就算你把这三个 QQ 全都退出了,QQ 这个程序死亡了吗?显然没有死亡,程序还是存储在存储器中的,除非你把这个程序从存储体中给删除了(这一操作就相当于我们卸载手机里的软件)。

        进程不仅包含正在运行的程序实体,它还包括这个运行的程序中占据的所有系统资源,比如说 CPU、内存、网络资源等。一些人会把进程理解为它就是一个运行的实体,而忽略掉了进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程,这两个进程所占用的资源是相互独立的。

2、进程的五个基本特性

(1)动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。

(2)并发性:指多个进程实体同时存于内存中,能在一段时间内同时运行。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。

(3)独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单元。凡未建立PCB的程序都不能作为一个独立的单元参与运行。

(4)异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度走走停停、何时开始何时暂停何时结束不可预知的性质,就会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。

(5)结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。

3、进程的组成

从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。

进程控制块 PCB:每个进程有且仅有一个进程控制块(Process Control Block,PCB),或称作进程描述符,它是进程存在的唯一标识,是操作系统用来记录和刻画进程状态及环境信息的数据结构,也是操作系统掌握进程的唯一资料结构和管理进程的主要依据。所以 PCB 是提供给操作系统使用的,操作系统需要对各个进程进行管理,所有管理时所需要的信息,都会被放在 PCB 中。创建进程和撤销进程等都是指对 PCB 的操作,当进程被创建时,操作系统为其创建 PCB,当进程结束时,会回收其 PCB。

        进程控制块 PCB 一般包含如下四类信息:

        进程描述信息:用来让操作系统区分各个进程,当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的 “身份证号”— PID(ProcessID,进程 ID)。另外,进程描述信息还包含进程所属的用户 ID(UID)

        进程控制和管理信息:记录进程的运行情况。比如 CPU 的使用时间、磁盘使用情况、网络流量使用情况等。

        资源分配清单:记录给进程分配了哪些资源。比如分配了多少内存、正在使用哪些 I/O 设备、正在使用哪些文件等。

        CPU 相关信息:进程在让出 CPU 时,必须保存该进程在 CPU 中的各种信息,比如各种寄存器的值。用于实现进程切换,确保这个进程再次运行的时候恢复 CPU 现场,从断点处继续执行。这就是所谓的保存现场信息。

数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果,即进程运行过程中的各种数据(比如程序中定义的变量)。

程序段:程序段就是能被进程调度时程序调度到CPU执行的程序代码段(指令序列)。注意,程序可被多个进程共享,即多个进程可以运行同一个程序。例如:同时挂三个 QQ 号,会对应三个 QQ 进程,它们的 PCB、数据段各不相同,但程序段的内容都是相同的(都是运行着相同的 QQ 程序)

4、进程的并行和并发执行

由上面的介绍可知,进程是操作系统中的一个独立执行单位,它包含了程序的代码和数据。具有以下特点:

        独立地址空间:每个进程都有自己独立的地址空间,不同进程之间的数据不共享。

        独立资源:每个进程有自己的资源,如文件句柄和网络连接。

        互相隔离:进程之间互相隔离,一个进程的错误不会影响其他进程。

线程的并行

进程的并行性指的是多个进程在同一时间段内同时执行的能力。例:假设进程1和进程2在某个时间点同时执行任务,它们都能够在同一时间段内完成任务。这种情况下,可以说进程具有并行性。

如下图所示:

线程的并发

进程的并发性指的是多个进程在同一时间段内交替执行的能力。例:假设有两个进程,进程1和进程2,它们同时运行在操作系统中。在某个时间点,进程1执行一段代码,然后暂停;接着,进程2开始执行一段代码,然后暂停;再然后,进程1继续执行,依此类推。虽然进程1和进程2在同一时间段内交替执行,但它们不一定同时完成任务,因此可以说进程具有并发性。

如下图所示:

5、进程的状态

        在计算机运行时,每时每刻都有进程的存在,而操作系统的作用就是要控制这些进程,这就是进程控制(所谓进程控制就是对系统中的所有进程实施有效的管理,实现进程状态转换功能。包括创建进程、阻塞进程、唤醒进程、终止进程等)在进程控制过程中,比如有用户登录系统、作业调度和应用程序的请求等任务出现时,就会创建进程;然后当这个任务执行时需要等待从外部读取数据时,就会阻塞进程(这里不是只有这一种情况会被阻塞,还有其他的情况),然后把CUP的使用权交给其他进程;等被阻塞进程拿到它需要的数据时,就会唤醒这个被阻塞的进程;当这个进程运行CUP的时间片用完或者被优先级更高的进程抢夺了CUP就会进行进程切换;当进程正常结束、发生异常或因为外界干预,就会终止进程。

在这一整个过程中,进程所有的状态如下: 

(一)新建状态:进程正在被创建,创建好后会转到就绪状态。创建进程通常需要先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息,然后由系统为该进程分配运行时所必须的资源,最后把该进程转入就绪状态。

(二)就绪状态:进程获得了除处理机外的一切所需资源,一旦得到处理机,便可立即运行。系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,成为就绪队列。

(三)运行状态:进程占有CUP,正在处理机上运行。在单核处理机环境下,每个时刻最多只有一个进程处于运行状态。

(四)阻塞状态:又称等待状态。进程正在等待某一事件而暂定运行,如等待某资源为可用或等待输入/输出完成。即使处理机空闲,该进程也不能运行。

(五)终止状态:进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行。进程需要结束运行时,系统首先必须置该进程为结束状态,然后再进一步处理资源释放和回收等工作。

 进程每种状态之间的转换关系图:

6、进程的通信

1、共享存储:在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换,如下图所示,在对共享空间进行写/读操作时,需要使用同步互斥工具,对共享空间的写/读进行控制。如下图示

2、消息传递:进程通过系统提供的发送消息和接收消息两个原语进行数据交换。

(1)直接通信方式:发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓存队列上,接收进程从消息缓冲队列中取得消息。

(2)间接通信方式:发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。这种中间实体一般称为信箱,这种通信方式又称信箱通信方式。该通信方式广泛运用于计算机网络中,相应的通信系统称为电子邮件系统。

3、管道通信:管道通信是消息传递的一种特殊方式。所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间的通信的一个共享文件,又称pipe文件。向管道提供输入的发送进程,以字符流形式将大量的数据送入管道;而接收管道输出的接收进程则从管道中接收数据。管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。如下图示

7、线程

        根据前面可知进程就能达到并行的目的,那么为什么还需要线程呢?这是因为线程比进程成本更低。因为创建一个进程需要为其分配各种资源,而线程只需要使用进程事先分配好的即可;进程之间的通信成本也会较高,而线程则是在一个进程的环境下,通信起来会很方便。其实,我们可以把线程看做是一个“轻量级”的进程。 

进程的代价

        空间代价:进程控制块及协调各运行机构所占用的内存空间开销
        时间代价:进行进程间的切换、同步及通信等所付出的时间开销

一个进程中可以有多个线程,同一个进程中的多个线程共享这个进程的资源。

比如,QQ 和 Chrome 浏览器是两个进程,Chrome 进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

线程的特征和进程差不多,进程有的他基本都有,比如:

        线程具有就绪、阻塞、运行三种基本状态,同样具有状态之间的转换关系;

        线程间可以并发执行

        在多 CPU 环境下,各个线程也可以分派到不同的 CPU 上并行执行

线程的优点:

        (1)一个进程中可以同时存在多个线程,这些线程共享该进程的资源。进程间的通信必须请求操作系统服务(因为 CPU 要切换到内核态),开销很大。而同进程下的线程间通信,无需操作系统干预,开销更小。
不过,需要注意的是:从属于不同进程的线程间通信,也必须请求操作系统服务。

        (2)线程间的并发比进程的开销更小,系统并发性提升。
同样,需要注意的是:从属于不同进程的线程间切换,它是会导致进程切换的,所以开销也大。

线程的缺点:

        当进程中的一个线程奔溃时,会导致其所属进程的所有线程奔溃。

比如:对于游戏的用户设计,就不应该使用多线程的方式,否则一个用户挂了,会影响其他同个进程的线程。

这里只对线程做一个简单的介绍,想详细了解的可以自行去搜索线程相关的知识。 

 

 推荐:

【Java基础】IO流(三):字符流的FileReader(文件字符输入流)和 FileWriter(文件字节输出流)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_65277261/article/details/136721417?spm=1001.2014.3001.5501【Java基础】IO流(二)字符集知识-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_65277261/article/details/136721466?spm=1001.2014.3001.5501【java基础】异常处理机制-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_65277261/article/details/136581375?spm=1001.2014.3001.5501

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

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

相关文章

java设计模式(1)---总则

设计模式总则 一、概述 1、什么是设计模式 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 解释下: 分类编目:就是说可以找到一些特征去划分这些设计模式,从而进行分类。 代码设计经验:这句很重…

使用Intellij idea编写Spark应用程序(Scala+SBT)

使用Intellij idea编写Spark应用程序(ScalaSBT) 对Scala代码进行打包编译时,可以采用Maven,也可以采用SBT,相对而言,业界更多使用SBT。 运行环境 Ubuntu 16.04 Spark 2.1.0 Intellij Idea (Version 2017.1) 安装Scala插件 安…

【微服务】StackOverflow的架构学习

目录 架构基础设施网络服务器SQL 服务器Redis推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战StackOverflow 是资源需求量最大的网站之一。我们作为架构师,在进行各种微服务架构的实践的同时,也需要学习借鉴各个成熟实践的精华。 因此本…

【HarmonyOS】ArkUI - 状态管理

在声明式 UI 中,是以状态驱动视图更新,如图1所示: 图1 其中核心的概念就是状态(State)和视图(View): 状态(State):指驱动视图更新的数据&#xf…

第十一届蓝桥杯大赛第二场省赛试题 CC++ 研究生组-子串分值和

solution1&#xff08;通过40%&#xff09; 依次求子串并统计出现过的字母个数 #include<iostream> #include<string> #include<set> using namespace std; int main(){string s, subs;cin >> s;int len s.size(), ans 0;for(int j 1; j < len…

【LabVIEW FPGA入门】FPGA寄存器(Register)

当您需要从多个时钟域或设计的不同部分访问数据&#xff0c;并且需要编写可重复使用的代码时&#xff0c;可使用寄存器项来存储数据。与 FIFO 相比&#xff0c;寄存器项消耗的 FPGA 逻辑资源更少&#xff0c;而且不消耗块存储器&#xff0c;而块存储器是最有限的 FPGA 资源类型…

2024阿里云2核2G服务器租用价格99元和61元一年

阿里云2核2G服务器配置优惠价格61元一年和99元一年&#xff0c;61元是轻量应用服务器2核2G3M带宽、50G高效云盘&#xff1b;99元服务器是ECS云服务器经济型e实例ecs.e-c1m1.large&#xff0c;2核2G、3M固定带宽、40G ESSD entry系统盘&#xff0c;阿里云活动链接 aliyunfuwuqi.…

微光图像增强算法学习记录(一)

微光图像增强&#xff08;LLIE&#xff09;旨在恢复照明并提高微光图像的可见性&#xff0c;本文对阅读的文献进行记录和分享&#xff0c;帮助回顾和大家建立学习资料。 文献一摘要及前沿摘选主要贡献网络结构实验结论 文献二摘要 文献三摘要主要贡献网络架构实验 文献四摘要实…

机器学习K-means算法

K-Means 算法&#xff08;K-Means算法、K-Means 中心值计算、K-Means 距离计算公式、K-Means 算法迭代步骤、K-Means算法实例&#xff09; 问题引入 给你如下两种图片&#xff0c;快读回答2个问题&#xff0c;问 图1 中有几类五谷杂粮&#xff1f;问 图2 中有几类五谷杂粮&…

linux源配置:ubuntu、centos;lspci与lsmod命令区别

1、ubuntu源配置 1&#xff09;先查电脑版本型号: lsb_release -c2&#xff09;再编辑源更新&#xff0c;源要与上面型号对应 参考&#xff1a;https://midoq.github.io/2022/05/30/Ubuntu20-04%E6%9B%B4%E6%8D%A2%E5%9B%BD%E5%86%85%E9%95%9C%E5%83%8F%E6%BA%90/ /etc/apt/…

基于SpringBoot+MyBatis框架的智慧生活商城系统的设计与实现(源码+LW+部署+讲解)

目录 前言 需求分析 可行性分析 技术实现 后端框架&#xff1a;Spring Boot 持久层框架&#xff1a;MyBatis 前端框架&#xff1a;Vue.js 数据库&#xff1a;MySQL 功能介绍 前台功能拓展 商品详情单管理 个人中心 秒杀活动 推荐系统 评论与评分系统 后台功能拓…

分布式之网关介绍

一、网关简介 1、网关背景 由于微服务“各自为政的特性”使微服务的使用非常麻烦。通常公司会有一个“前台小姐姐”作为统一入口&#xff0c;这就是网关 2、网关作用 统一入口&#xff1a;为服务提供一个唯一的入口&#xff0c;网关起到外部和内部隔离的作用&#xff0c; 保…

阿里云幻兽帕鲁4核16G和8核32G服务器优惠价格

2024阿里云幻兽帕鲁专用服务器价格表&#xff1a;4核16G幻兽帕鲁专用服务器26元一个月、149元半年&#xff0c;默认10M公网带宽&#xff0c;8核32G幻兽帕鲁服务器10M带宽价格90元1个月、271元3个月。阿里云提供的Palworld服务器是ECS经济型e实例&#xff0c;CPU采用Intel Xeon …

C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序

1 欧拉图 欧拉图是指通过图(无向图或有向图)中所有边且每边仅通过一次通路, 相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph), 具有欧拉通路而无欧拉回路的图称为半欧拉图。 对欧拉图的一个现代扩展是蜘蛛图,它向欧拉图增加了可以连接的存在点。 这给…

AJAX-综合

文章目录 同步代码和异步代码回调函数地狱解决回调函数地狱Promise-链式调用async函数和awaitasync函数和await-捕获错误 事件循环宏任务与微任务Promise.all静态方法 同步代码和异步代码 同步代码&#xff1a;逐步执行&#xff0c;需原地等待结果后&#xff0c;才继续向下执行…

阿里云效流水线—发布公用jar到Maven私仓

后端项目发布 1.选择流水线 2.新建流水线 3.选择模板 4.选择代码仓库 5.调整构建命令 添加mvn install 重新构建项目 6.添加镜像 在wms-app目录下新建Dockerfile文件(Dockerfile文件名中的D一定要是大写的&#xff09;文件&#xff0c;重新推送项目 #基础镜像 FROM openjd…

【力扣hot100】1. 两数之和 49.字母异位词分组 128. 最长连续序列

目录 1. 两数之和题目描述做题思路参考代码 49.字母异位词分组题目描述做题思路参考代码 128. 最长连续序列题目描述做题思路参考代码 1. 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数…

EPO企业生产运营数智化平台助力制造企业迈向智能制造

随着“中国制造2025”和工业4.0的不断推进&#xff0c;越来越多的制造企业准备迈入智能制造和智慧制造领域&#xff0c;实现数智化管理。企业通过搭建EPO企业生产运营平台&#xff0c;结合自身业务现状和数字化需求&#xff0c;从各个业务场景、部门人员、产品组成等方面进行分…

Django缓存(二)

一、视图缓存 Django的缓存可以设置缓存指定的视图,具体方式使用django.views.decorators.cache.cache_page, 方法有2种方式: 装饰器:以方法以装饰器的方式使用 from django.views.decorators.cache import cache_page@cache_page(60 * 15,cache="default") def…

【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置

目录 树的直径 题目&#xff1a;树的直径 &#xff08;两种解法&#xff09; 做法一&#xff1a; 做法二&#xff1a; 树的重心&#xff1a; 题目&#xff1a; 会议 思路&#xff1a; 题目&#xff1a;医院设置 思路&#xff1a; 树的直径 定义&#xff1a;树中距离最…