【操作系统】进程(二)内存管理、通信

JavaEE---进程(二)内存管理、通信

一、内存管理

1.映射访问

2.独立分布

防崩溃

二、通信

1.独立性保障

2.方式

2.1管道

2.1.2特点

2.1.2.1进程条件

2.1.2.2方向

2.1.2.3同步性

2.1.2.4性能

2.2消息队列

2.2.1特点

2.2.1.1方向

2.2.1.2同步性

2.2.1.3性能

2.3共享内存

2.3.1特点

2.3.1.1方向

2.3.1.2同步性

2.3.1.3性能

2.4套接字


前言:

上文【操作系统】进程(一)调度讲解了 进程++PCB的结构组织++ 、++资源分配++ 以及进程在cpu上 通过操作系统的++调度 实现并发执行++ 的效果,本文深入讲解 进程的内存管理 与进程间通信的相关知识


一、内存管理

1.映射访问

操作系统 为每个进程 都创建有:

  • 模局格式一样的虚拟地址空间
  • 独属对应关系的映射表

进程只能操作 直接的虚拟地址空间 经映射表映射着 间接访问 实际的物理内存 ,进程 在++自己的虚拟地址空间内 最大范围地访问 也不可能映射访问出 自己总的物理内存外面++


2.独立分布

每个进程的虚拟地址空间 整体映射出的 对应整体物理内存 都是完全互相隔离****的一块块

防崩溃

进程如果在自己的虚拟地址空间内 越界访问到 ++未申请开辟的虚拟空间++ 而造成进程崩溃时,只会破坏 该进程对应的物理内存,接着操作系统 对其进行资源回收,而其它进程的 虚拟空间和物理内存 都不受影响地 继续运行


二、通信

进程 在操作系统提供的特殊渠道 上 独立置、取信息 来保持隔离地交流

1.独立性保障

  • 写进程 无法直接连续写入修改 读进程内存
  • 读进程 主动地收取数据 拥有 读取进来判断是否修改的权利

两进程 仍然互相保持着独立地 进行数据交流


2.方式

2.1管道

内核 将写进程写入的数据 复制到内核缓冲区 置放,再将其 复制到读进程中 收取(两进程是没有 内核的管道缓冲区映射关系的,无法通过 共享管道缓冲区内存 映射传输,所以只能通过 内核复制传输)

2.1.2特点
2.1.2.1进程条件

需要 有亲缘关系的 父子进程间通信


2.1.2.2方向

一个管道单向通信,得创建两个管道 才能实现双向通信


2.1.2.3同步性

数据是 按顺序先进 后才有出的 无边界的 字节流 ,先进再出 ++已保证 置取同步性++


2.1.2.4性能

两次内核复制 并且有阻塞等待 ,效率较低,++适合少量数据传输++


2.2消息队列

写进程 按照特定格式(类型+数据) 将信息复制置入 操作系统维护的 邮箱队列 中,读进程 根据消息类型 从队列中 复制取出 属于自己的消息

2.2.1特点
2.2.1.1方向

双向通信


2.2.1.2同步性

消息是 按顺序先进 后才有出的 有格式、有边界的 结构化数据块 ,先进后出 ++已保证 置取同步性++


2.2.1.3性能

两次内核复制 并且有阻塞等待 ,效率较低,++适合少量数据传输++


2.3共享内存

操作系统 划出一块物理内存 分别额外映射到 两进程的虚拟地址空间 中,两进程 便能直接映射到 此共享物理内存上 进行置放、收取数据 完成独立隔离地交流

2.3.1特点
2.3.1.1方向

双向通信


2.3.1.2同步性

因为读写两进程 可不按先后顺序地 映射到 操作获取 数据 ,所以需要使用++信号量++ 或++互斥锁++ 来同步进程 对共享资源的访问


2.3.1.3性能

不需要 内核中转复制,进程 直接映射 操作获取数据 ,性能极高,++能频繁交换大量数据++


2.4套接字

能用于 网络上 不同计算机的 进程间通信

相关推荐
sunoo-2292 分钟前
【ARM嵌入式学习笔记第十天】i.MX6ULL eLCDIF控制器驱动RGB LCD全解析(硬件原理+寄存器配置+裸机代码)
arm开发·笔记·学习
沫璃染墨13 分钟前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
专业程序开发源21 分钟前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户0942485680323 分钟前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu25 分钟前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
樱花落木兰35 分钟前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
深念Y40 分钟前
rime-雾凇拼音-配置记录
linux·junit·软件·拼音·kde
HAHAXX842 分钟前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa
\光辉岁月/1 小时前
3.java运算符
java·开发语言