当前位置: 首页 > news >正文

java ee 之进程

目录

1.进程的概念

2.进程管理

3.进程属性(pcb)

3.1pid

3.2内存指针

3.3文件描述符

3.4进程调度

3.4.1进程状态

3.4.2 进程的优先级

3.4.3进程的上下文

3.4.4进程的记账信息

5.进程间通信


1.进程的概念

一个运行起来的程序,就是进程

.exe是一个可执行文件(程序),双击exe,程序跑起来,就在系统中形成一个进程

2.进程管理

管理分两步:

1.描述一个进程:使用结构体/类,把一个进程有哪些信息表示出来

2.组织这些进程:使用一定的数据结构,把这些结构体/对象,放到一起

3.进程属性(pcb)

3.1pid

每一个进程要有唯一的一个身份标识符

3.2内存指针

 当前这个进程使用的内存是哪一部分

进程要运行,就要消耗一定的硬件资源,运行时使用的内存上的资源

3.3文件描述符

进程每次打开一个文件,就会产生一个'文件描述符'(标识了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符.把这些文件描述符方法一个顺序表这样的结构里,就构成文件描述符表

进程运行要从操作系统申请资源(资源包括不限于内存,硬盘,cpu等)

所以,进程是操作系统进行分配的基本单位

3.4进程调度

cpu 核心数,如果有8个物理核心,那么就有16个逻辑核心

并行:同一时刻,两个核心,同时执行两个进程

并发:一个核心,先执行进程1,执行一会之后,在执行进程2,再执行一会之后,在执行进城....,只要切换速度足够快,看起来,进程123就是'同时'执行

3.4.1进程状态

  • 就绪态:进程已准备好,随时可以上cpu执行
  • 阻塞态:进程暂时无法上cpu执行

3.4.2 进程的优先级

 进程之间的调度不一定是公平的,要有优先级

3.4.3进程的上下文

  • 上下文,就是描述了当前进程执行到哪里这样的"存档记录",进程在离开cpu的时候要把当前运行的中间结果,"存档"等到下次进程回来cpu上,在恢复之前的存档,从上次的结果继续往后执行
  • 上下文具体指就是进程运行过程中,cpu内部的一系列寄存器的值,

寄存器:典型的是保存当前进程执行的中间结果,包括进程运行到哪一条指令

  • 存档:进程离开cpu,要把寄存器的值保存到pcb的上下文字段中
  • 读档:进程下次回来cpu,再把pcb中的值给恢复到寄存器中

3.4.4进程的记账信息

 

  • 统计每个进程,在cpu上执行了多久,可以作为调度的参考依据

4.内存分配--内存管理

操作系统给进程分配的内存,是以"虚拟地址空间"的方式进行分配的,每个进程访问的内存地址,都不是真实的物理内存地址

虚拟地址空间

如果进程1,出现野指针,拿着地址,发现页表上没有这个地址,无法翻译,就无法真正的修改物理内存,就不会对别的进程的内存数据造成干扰

一个进程无法直接干预另一个进程的内存内容-->进程的独立性

5.进程间通信

进程之间进行交互,相互配合

如果进程可以直接访问物理内存,其实没有隔离性,就不需要进程间通信.

进程通信,就是在隔离性的前提下,找一个公共的区域,让两个进程借助这个区域来完成数据交换

进程间通信,在隔离性的前提下,找到一个公共区域,让两个进程借助这个区域来完成数据交换.

操作系统提供的进程间通信具体实现方式,有很多种,管道,消息队列,共享内存,信号...

相关文章:

java ee 之进程

目录 1.进程的概念 2.进程管理 3.进程属性(pcb) 3.1pid 3.2内存指针 3.3文件描述符 3.4进程调度 3.4.1进程状态 3.4.2 进程的优先级 3.4.3进程的上下文 3.4.4进程的记账信息 5.进程间通信 1.进程的概念 一个运行起来的程序,就是进程 .exe是一个可执行文件(程序),双…...

Linux学习记录——십사 进程控制(1)

文章目录1、进程创建1、fork函数2、进程终止1、情况分类2、如何理解进程终止3、进程终止的方式3、进程等待1、进程创建 1、fork函数 fork函数从已存在进程中创建一个新进程&#xff0c;新进程为子进程&#xff0c;原进程为父进程。 #include <unistd.h> pid_t fork(vo…...

使用 create-react-app 脚手架搭建React项目

❀官网 1、安装脚手架&#xff1a;npm install -g create-react-app 2、查看版本&#xff1a;create-react-app -V &#xff01;&#xff01;&#xff01;注意 Node版本必须是14以上&#xff0c;不然会报以下错误。 3、创建react项目&#xff08;项目名不能包含大写字母&…...

inquirerjs

inquirerjs inquirerjs是一个用来实现命令行交互界面的工具集合。它帮助我们实现与用户的交互交流&#xff0c;比如给用户一个提醒&#xff0c;用户给我们一个答案&#xff0c;我们根据用户的答案来做一些事情&#xff0c;典型应用如plop等生成器工具。 npm install inquirer…...

[数据库]内置函数

●&#x1f9d1;个人主页:你帅你先说. ●&#x1f4c3;欢迎点赞&#x1f44d;关注&#x1f4a1;收藏&#x1f496; ●&#x1f4d6;既选择了远方&#xff0c;便只顾风雨兼程。 ●&#x1f91f;欢迎大家有问题随时私信我&#xff01; ●&#x1f9d0;版权&#xff1a;本文由[你帅…...

shell基本知识

为什么学习和使用Shell编程 什么是Shell shell的起源 shell的功能 shell的分类 如何查看当前系统支持的shell&#xff1f; 如何查看当前系统默认shell&#xff1f; 驼峰语句 shell脚本的基本元素 shell脚本编写规范 shell脚本的执行方式 shell脚本的退出状态 &#xf…...

Http长连接和短连接

http1.0以前&#xff0c;默认使用的是短连接&#xff0c;客户端与服务器之间每进行一次http操作&#xff0c;就会建立一次连接&#xff0c;例如&#xff0c;打开一个网页&#xff0c;包括html文件&#xff0c;js&#xff0c;css&#xff0c;每获取一次资源&#xff0c;就需要进…...

[SQL Statements] 基本的SQL知识 之DDL针对表结构和表空间的基本操作

[SQL Statements] 基本的SQL知识 之DDL针对表结构和表空间的基本操作 什么是数据库的表以及表空间 在MySQL中&#xff0c;一个数据库可以包含多个表&#xff0c;每个表是由若干个列&#xff08;column&#xff09;和行&#xff08;row&#xff09;组成的。表是存储数据的基本…...

Git版本控制工具(详解)

Git版本控制工具 Git常见命令速查表 集中式版本控制 cvs和svn都是属于集中式版本控制系统 他们的主要特点是单一的集中管理服务器 保存所有文件的修订版本协同开发人员通过客户端连接到这台服务器 取出最新的文件或者提交更新 优点每个人都可以在一定程度上看到项目中的其他…...

408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统

今天我们来讲一讲指令系统里面的知识点以及做题技巧 1、定义 考点1&#xff1a;指令定义 指令是指示计算机执行某种操作的命令&#xff0c;一台计算机的所有指令的集合构成该机的指令系统&#xff0c;也称为指令集。指令系统是指令集体系结构ISA中最核心的部分&#xff0c;ISA…...

Java语法中的方法引用::是个什么鬼?

1.函数式接口 函数式接口&#xff08;Functional Interface&#xff09;就是一个有且仅有一个抽象方法&#xff08;通俗来说就是只有一个方法要去被实现&#xff0c;因此我们也能通过这个去动态推断参数类型&#xff09;&#xff0c;但是可以拥有多个非抽象方法的接口。函数式接…...

【使用vue init和vue create的区别以及搭建vue项目的教程】

vue init 是vue-cli2.x的初始化方式&#xff0c;可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名 使用方式&#xff1a;vue init webpack 项目名称 例如使用github上面electron-vue的模板使用方式&#xff1a;vue init electron-vue 项目名称教程目…...

二、HTTP协议02

文章目录一、HTTP状态管理Cookie和Session二、HTTP协议之身份认证三、HTTP长连接与短连接四、HTTP中介之代理五、HTTP中介之网关六、HTTP之内容协商七、断点续传和多线程下载一、HTTP状态管理Cookie和Session HTTP的缺陷无状态。Cookie和Session就用来弥补这个缺陷的。 Cooki…...

免费Api接口汇总(亲测可用,可写项目)

免费Api接口汇总&#xff08;亲测可用&#xff09;1. 聚合数据2. 用友API3. 天行数据4. Free Api5. 购物商城6. 网易云音乐API7. 疫情API8. 免费Api合集1. 聚合数据 https://www.juhe.cn/ 2. 用友API http://iwenwiki.com/wapicovid19/ 3. 天行数据 https://www.tianapi.com…...

12.并发编程

1.并发并发&#xff1a;逻辑流在时间时重叠构造并发程序&#xff1a;进程&#xff1a;每个逻辑控制流是一个进程&#xff0c;由内核调度和维护进程有独立的虚拟地址空间&#xff0c;想要通信&#xff0c;控制流必须使用某种显式的进程间通信机制(IPC)I/O多路复用&#xff1a;程…...

C/C++指针与数组(一)

预备知识 1、数据的存储 2、基本内建类型 1&#xff09;类型的大小 C offers a flexible standard with some guaranteed minimum sizes, which it takes from C: A short integer is at least 16 bits wide.An int integer is at least as big as short.A long integer is a…...

Android使用移动智能终端补充设备标识获取OAID

官网http://www.msa-alliance.cn/col.jsp?id120首先到官网注册账号&#xff0c;申请下载相关sdk和授权证书2.把 oaid_sdk_x.x.x.aar 拷贝到项目的 libs 目录&#xff0c;并设置依赖&#xff0c;其中x.x.x 代表版本号3.supplierconfig.json 拷贝到项目 assets 目录下&#xff0…...

极目智能与锐算科技达成战略合作,4D毫米波成像雷达助力智能驾驶落地

近日&#xff0c;智能驾驶方案提供商武汉极目智能技术有限公司&#xff08;以下简称“极目智能”&#xff09;宣布与毫米波成像雷达公司锐算&#xff08;上海&#xff09;科技有限公司&#xff08;以下简称“锐算科技”&#xff09;达成战略合作&#xff0c;双方将合作开发基于…...

OpenCV基础(一)

1.认识图像&#xff08;彩色图中每一个像素点都包含三个颜色通道RGB&#xff0c;数值范围为0~255&#xff0c;0代表黑色&#xff0c;255代表白色&#xff09; import cv2 #opencv 读取的格式为BGRimg cv2.imread(cat.png) #读取图像 cv2.imshow(cat, img) #显示图像img&#x…...

pinia 的使用(笔记)

文章目录1. Pinia 与 Vuex 的区别2. pinia 安装与搭建3. pinia 的使用3.1 基本使用3.2 订阅状态3.3 订阅 actions1. Pinia 与 Vuex 的区别 Pinia 是 Vue 的状态管理库&#xff0c;相当于 Vuex 取消了 mutations&#xff0c;取消了 Module 模块化命名空间现在的 pinia 采用的是…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

6.9-QT模拟计算器

源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...