关于进程的几个问题

news2024/9/22 15:51:02

作者:~小明学编程 

文章专栏:JavaEE

格言:热爱编程的,终将被编程所厚爱。
在这里插入图片描述

今天给大家分享几个关于进程的小问题

1.什么是进程?

2.进程是怎么管理的?

3.进程里面的PCB里都有啥?

4.进程的调度是怎么进行的?

5.什么是进程的独立性?

6.进程之间如何通信?

目录

什么是进程

进程是如何管理的

PCB里面都有些啥

PID

文件描述符表

内存指针

什么是进程的调度

进程的优先级

进程的状态

进程的上下文

进程的记账信息

进程的独立性

进程之间如何通信


下面我们就来谈谈我对这些问题的理解:

什么是进程

所谓的进程就是一个跑起来的程序,一个exe的可执行文件我们点开它就相当于开了一个进程然后进行执行。

 在我们的任务管理器中可以查看我们的进程,这里的腾讯视频,微信都属于一个进程。

进程是如何管理的

我们操作系统是通过描述+组织的方式对进程进行管理的。

所谓的描述就是描述一个进程中含有哪些属性。通过类/结构体来进行描述。这里的结构体我们也成为PCB,即(process control block)——代码控制块,在linux中每个进程都用task_struct数据结构来进行定义,每一个进程都有一个PCB。

所谓的组织就是通过一些数据结构将这些进程给组织起来,比如我们的Linux是通过双向链表的方式将若干个进程给组织到一起的,然后进行一系列增删查改的操作。

PCB里面都有些啥

前面我们说到描述一个进程是通过类似结构体的模型进行描述的,这个结构体叫做PCB,那么具体的PCB里面都有些啥呢?

PID

相当于我们每个人的身份证,是用来标识我们进程的身份的,我们每个进程都有一个PID。

文件描述符表

文件描述表是用来记录我们打开了哪些文件的,一般情况我们操作系统会默认打开三个文件分别是:标准输入,标准输出,标准错误。其底层是一个数组。

内存指针

内存指针主要是用来记录.exe文件加载到内存对应的二进制指令和重要的数据在内存的哪个位置

pcb里面还有进程的优先级,进程的状态,进程的上下文,进程的记账信息这七个。

什么是进程的调度

我们前面说到我们的进程会有很多个但是我们的cpu的内核数量是有限的,我们cpu的核数一般就双核,四核,八核 等等,不会太多,但是我们的进程数量却是上百了,就算我们啥也不打开光打开电脑就有几十个进程了,远远多于我们的cpu内核数量,那我们我们怎么能让这么多的进程一起工作呢?

这就需要我们的进程调度了,就拿我们单核的cpu举例,虽然我们的进程有很多,我们可以让他们排队来执行,让a进程执行一会,然后再去让b进程执行一会。

进程的优先级

既然大家排队那么肯定就有插队的人,哪些人排在前面哪些人排在后面,每个进程都有相应的优先级。优先级高的优先执行。只有高优先级的进程不运行时,才调度低优先级进程运行

进程的状态

就绪状态: 即线程可以随时到CPU上面去执行。
阻塞状态:进程暂时不能到CPU上面去执行。

进程的上下文

当一个进程被调出CPU的时候,CPU会将当前的数据写回内存当中。当这个进程重新到CPU执行的时候,会将内存中的数据读到CPU的寄存器当中,类似于我们的存档和读档。

进程的记账信息

前面说到进程的优先级优先级低的排在后面,那就有可能一直等,前面一直有大哥,那么这个进程一直就执行不到,这个时候我们的操作系统会记录时间,有的进程长时间没有被执行就会通过调度让其反插队,然后执行它。

进程的独立性

我们知道我们一个cpu(单核)可以通过进程的调度来执行多个进程,这个时候万一我们的其中一个进程发生了故障该怎么办,是不是我们其它所有的进程都要跟着一起故障呢?

当然不是,我们的内存是分割成多个区域的我们每个区域相当于放一个进程,一个进程坏了不影响其它的进程。

进程之间如何通信

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备隔离性。

但是我们不同的进程之间可能需要一定的交互,也就是进程之间的通信,一般的处理方式有下面几种:

1. 管道
2. 共享内存
3. 文件
4. 网络
5. 信号量
6. 信号
像linux是利用共享内存来处理的,我们划分一块公共的区域,然后需要交互我们就到公共的区域进行交流。

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

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

相关文章

解释器模式

文章目录解释器模式1.解释器模式的本质2.何时选用解释器模式3.优缺点4.解释器模式的结构5.实现计算器加减操作解释器模式 当想解析一个文件或者其他内容时,可以根据规律自己定义一种文法,并定义一个解释器,然后解析这种文法,以达到…

MATLAB-自定义函数拟合(fittype-高斯拟合)

在回归拟合分析时,一般情况下,MATLAB会直接提供常用的类型,用fittype创建拟合模型,至于MATLAB具体提供了哪些模型,参见帮助“List of library models for curve and surface fitting”,如果库中没有自己想要的拟合表达式形式,可以自己进行定义,具体介绍如下: 1. fitty…

嵌入式:ARM间接寻址、变址寻址与多寄存器寻址

文章目录寄存器间接寻址基址加偏址寻址(变址寻址)偏移地址传送数据类型块拷贝寻址(多寄存器寻址)块拷贝寻址示例寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如…

尚医通 (三十七) --------- 定时任务与统计

目录一、就医提醒1. 搭建定时任务模块 service-task2. 添加就医提醒处理二、预约统计1. ECharts2. 获取医院每天平台预约数据接口3. 添加 feign 方法4. 搭建 service-statistics5. 前端展示一、就医提醒 我们通过定时任务,每天 8 点执行,提醒就诊。 1.…

[附源码]Python计算机毕业设计Django校园招聘系统设计

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Android Accessibility知识分享

工具 工欲善其事,必先利其器。下面我们介绍一下工具来发现我们的accessibility问题。感谢这篇文章的分享:https://www.kodeco.com/240-android-accessibility-tutorial-getting-started Lint:这个工具是google提供的,在android …

python--面向对象以及其三大特性(封装、继承、多态)

文章目录前言一、面向过程二、 面向对象三、面向对象的三大特性一、封装二、继承私有属性和私有方法三、多态四、高级特性单例模式前言 这一节主要学习面向对象以及面向对象的三大特性:封装、继承、多态;还有高级特性:类方法、静态方法、pro…

【OpenFeign】【源码+图解】【二】注册OpenFeign接口的实例

【OpenFeign】【源码图解】【一】HelloWorld及其工作原理 目录3. 注册OpenFeign接口的实例3. 注册OpenFeign接口的实例 从HelloWorld中我们看到需要显示加入**EnableFeignClients注解才能开启openFeign的功能,因此它就成为我们分析openFeign**的入口,先…

Chrony时间同步服务

目录 一、时间同步 1.概念 2.时间同步在运维工作中的作用 3.时间同步完成方法 (1)NTP时间服务(centos 6 ) (2)Chrony时间服务 二、Chrony时间服务 1.Chrony介绍 2.Chrony的优点 三、Chrony安装 …

逻辑回归(Logistic Regression)原理及过程

目录 一:逻辑回归简介 二:逻辑回归原理 三:逻辑回归 损失函数 四:逻辑回归 梯度下降算法 五:逻辑回归 过程 一:逻辑回归简介 Logistic模型是1938年Verhulst-Pearl在修正非密度方程时提出来的&#xf…

算法刷题打卡第49天:排序数组---计数排序

排序数组 难度:中等 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]计数排…

我与世界杯的故事——达利奇:铜牌闪耀着金光

目录 克罗地亚球队的历史 奇迹出现 心得总结 克罗地亚球队的历史 克罗地亚球队拥有悠久的历史: 1998年首次亮相法国世界杯,克罗地亚就以季军的战绩惊艳众人。 2018年的俄罗斯世界杯,虽然格子军团在决赛中不敌强大的法国,遗憾地…

<Linux进程通信之共享内存>——《Linux》

目录 一、system V共享机制 1.共享内存示意图 2.共享内存数据结构 3.共享内存函数 3.1shmget函数 3.2 shmat函数 3.3 shmdt函数 3.4 shmctl函数 3.5 实例代码: 3.6 结果演示: 4. 创建共享内存 5. 基于共享内存与管道进行访问控制的共享内存读…

(P4)Python plt显示图像

Python plt显示图片 本地可以显示,服务器操作不太行。 plt.plot(x,y) plt.imshow(image) plt.show() # 显示图像(曲线/图片都需要这一行) plt.savefig(xx.png) # 保存图片 fig.savefig(xx.png) 功能相同 # 保存图片在本地执行失败&#xff…

Elasticsearch学习笔记

Elasticsearch学习笔记 ----第1章 Elasticsearch概述-01-开篇02-技术选型03-教学大纲-第2章 Elasticsearch入门-04-入门-环境准备05-入门-RESTful & JSON06-入门-Postman客户端工具07-入门-倒排索引08-入门-HTTP-索引-创建09-入门-HTTP-索引-查询 & 删除10-入门-HTTP-…

Linux 调试之 TRACE_EVENT(一)

文章目录前言一、TRACE_EVENT简介二、TRACE_EVENT() 结构2.1 TRACE_EVENT简介2.2 trace_sched_switch示例2.2.1 Name2.2.2 Prototype2.2.3 Arguments2.2.4 Structure2.2.5 Assignment2.2.6 Print2.3 Format file2.3.1 tracing/events/2.3.2 perf2.3.3 bpftrace2.3.4 bcc2.3.5 S…

逻辑回归 鸢尾花分类预测

目录 一:加载数据 二:数据集划分 三:选择算法 四:网格模型 超参数最优解 五:鸢尾花分类预测 六:预测与实际比对 七:完整源码分享 一:加载数据 from sklearn.datasets import…

Jenkins启动项目时报错问题

问题 在工作中使用jenkins进行项目部署启动时遇到问题,项目构建成功但是发布时一直显示时间增加,但是项目本身并没有问题,使用传统方法部署项目也能正常启动。报错如下图所示: 解决方法 是由于jenkins文件中打印日志的问题&am…

PayPal,Stripe,Square轮询支付系统

轮询展示 展示我们轮询的页面 轮询套餐 根据不同的用户和需求,可以选择不同的套餐 普通版 1500元 1年 1个用户 支持Paypal/Stripe 不限制A站个数 不限制B站个数 不限制提交模式 订单管理 物流管理 风控管理 必要的网站数据处理 24小时远程协助 开始…

springcloud服务消费与熔断

今天与大家分享服务消费与熔断,就是说当我们服务消费者转发到服务生产者时,如果有那一步出现了问题或者error,可以进行服务熔断(服务降级),为了补救系统问题,不让用户使用时看见error报错信息&a…