操作系统中的共享内存段

2024-01-02

共享内存属于哪里?这意味着它由每个单独的进程拥有,如堆栈和堆。所以,其他程序不能 能够访问其他程序的堆栈。或者它是由任意数量的进程使用的公共内存段。这 下图以图解方式显示了我的问题。

图1:

    -----------------       -----------------       -----------------    
    |    stack      |       |    stack      |       |    stack      |
    |               |       |               |       |               |
    |  Shared m/y   |   --->|  Shared m/y   |<---   |  Shared m/y   |
    |               |   |   |               |   |   |               |
    |     heap      |   |   |    Heap       |   |   |    Heap       |
    |               |   |   |               |   |   |               |
    |  Data segment |   |   | Data segment  |   |   | Data segment  |
    |               |   |   |               |   |   |               |
    |      text     |___|   |      text     |   |___|   text        | 
    -----------------       -----------------       -----------------
        Process 1                Process 2               Process 3

(OR)

图2:

                -----------------------------------------
                |                                        |
                |                                        |
                |          Shared Memory                 |<--
        ------->|                                        |  |
        |       |                                        |  |
        |       -----------------------------------------   |
        |                           ^                       |
        |                           |                       |  
    -----------------       -----------------       ----------------- 
    |    stack      |       |    stack      |       |    stack      |
    |               |       |               |       |               |
    |     heap      |       |    Heap       |       |    Heap       |
    |               |       |               |       |               |
    |  Data segment |       | Data segment  |       | Data segment  |
    |               |       |               |       |               |
    |      text     |       |      text     |       |   text        | 
    -----------------       -----------------       -----------------
       Process 1               Process 2                Process 3

在图 1 中,每个进程在进程的地址空间内都有一段共享内存。进程 1 和进程 3 访问进程 2 的共享内存。在图 2 中,共享内存 是所有进程都会访问的一段内存。因此,在上述两种情况下,进程使用共享内存 部分。


正确的思考方式是这样的:

  • 系统有一定数量的物理内存可供操作系统使用(计算机中的物理 RAM 芯片)
  • 每个进程都有一个虚拟地址空间,它不直接对应于物理内存。
  • 操作系统可以将其可用的物理内存的任何部分映射到进程的虚拟地址空间中。

基本上,操作系统可以说:“将此物理内存块放入地址 0x12345678 的虚拟地址空间中”。进程虚拟地址空间中的每个数据最终都驻留在物理内存中的某个位置。堆栈、堆、共享内存……在这方面都是一样的。共享内存的唯一区别是多个进程将同一块物理内存映射到它们的地址空间。

秀色可餐:

事实上,事情有点复杂,但这个描述给出了基本的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统中的共享内存段 的相关文章

  • 如何序列化 android.graphics.Path 对象

    我正在尝试将 Android graphics Path 对象存储在内部设备内存中 有谁知道如何序列化 android graphics Path 对象 另外 还有其他方法来存储 Path 对象吗 谢谢 我这样做的方法是从原始 Path 类
  • 在 unix bash 脚本中可以嵌套 Here Document 吗?

    是否可以在另一个heredoc中编写一个heredoc ssh T q yxz server1 lt lt END TEXT ssh T q abc server2 lt lt SUB TEXT SUB TEXT END TEXT Yes
  • 在Unix下,判断执行该程序的用户是否是root?

    我正在编写一个 rake 脚本 并希望检测 如果可能的话 使用 Ruby 而不是 bash 执行 rake 脚本的用户是否具有 root 权限 如果它不是 root 那么我想终止脚本 Use uid http www ruby doc or
  • 为什么连接终止

    我正在尝试使用随机森林分类模型H2OR 内部的库 训练集有 7000 万行和 25 个数字特征 总文件大小为 5 6 GB 验证文件的大小为 1 GB 我的系统有 16 GB RAM 和 8 核 CPU 系统成功读取 H2O 对象中的两个文
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • 如何查找页面上R图形的字节大小?

    我想监控 R 在各个页面上生成的图形的基本质量 例如每个页面的字节大小 我现在只能对平均页面进行质量保证 请参阅下面的章节 我认为这项任务必须有一些比一般措施更内置的东西 生成 4 页的代码Rplots pdf我想知道此处输出中每个页面的字
  • 反序列化 XML 文件而不将其全部加载到内存中 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 假设您的应用程序使用 XmlSerializer 序列化对象 当应用程序的另一部分 例如外部服务或另一个组件 处理该 XML 文件时 会返回一个
  • 内存错误:numpy.genfromtxt()

    我有一个 50 000x5 000 矩阵 浮点 文件 使用时x np genfromtxt readFrom dtype float 要将文件加载到内存中 我收到以下错误消息 文件 C Python27 lib site packages
  • VBA Excel 大数据操作需要很长时间

    我有两个Excel文件 第一个 Excel 文件包含 人员姓名 和 出席总天数 列 前任 PersonName TotalDays xyz abcd 另一个 Excel 文件包含人员姓名 日期和状态 出席 缺席 PersonName Dat
  • JVM 最大堆大小可以是动态的吗?

    JVM Xmx 参数允许将 JVM 的最大堆大小设置为某个值 但是 有没有办法让这个价值动态化呢 换句话说 我想告诉 JVM 看 如果你需要它 就继续从系统中获取 RAM 直到系统退出 提问原因分为两部分 首先 所讨论的应用程序可以根据用户
  • 为什么我们需要不同的指针数据类型?

    基本上指针是一个用于存储内存地址的变量 它总是十六进制 内存地址 那么为什么我们需要不同的数据类型来存储地址 例如 int a 我们可以用这个 a 来存储浮点地址吗 并非所有指针 必须具有 相同的大小 如果您有一个需要对齐到 10 MB 的
  • 限制 Java 进程的总内存消耗(在 Cloud Foundry 中)

    与这两个问题相关 如何设置JVM的最大内存使用量 https stackoverflow com questions 1493913 how to set the maximum memory usage for jvm 什么会导致 jav
  • Forth 中 S" ..." 的生命周期是多少?

    我一直在尝试阅读此内容 但找不到任何提及 根据标准 创建的字符串S 无法修改 并且通过简单的实验Gforth http en wikipedia org wiki Gforth很明显 字符串的空间不是来自字典或填充区域 hex here 7
  • 操作系统和元操作系统有什么区别

    最近听到这个词元操作系统当我学习ros时 你能帮我区分一下吗操作系统 and 元操作系统 ROS 是什么和不是什么最好的解释是这张纸 http www robotics stanford edu ang papers icraoss09 R
  • lua-socket:unix 域套接字?

    我使用的是 lua socket 3 0rc1 3 Ubuntu Trusty 附带的 和 lua 5 1 我正在尝试监听 unix 域套接字 我能找到的唯一示例代码是this http lua users org lists lua l
  • Bison/Flex 中哪里可以释放内存?

    我使用 Bison 和 Flex 的时间或多或少有 1 个月 所以如果我没有看到明显的东西 但我不认为是 我很抱歉 我在使用 Flex Bison 释放内存时遇到问题 我的代码如下所示 parser l DATE yylval str st
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • 如何在线程创建和退出时调用函数?

    include
  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 如何处理文件中的特殊字符(ഀ)

    我有一个文件 当我打开它时 它看起来像这样 Notepad A B C D E 31 HB 39 Ph 49 32 FB 38 Ph 59 当我尝试从 WinScp 打开它时 它看起来如下所示 A B C D E 31 HB 39 Ph 4

随机推荐

  • 为 IQueryable 生成表达式 [重复]

    这个问题在这里已经有答案了 我正在使用 LINQ gt WCF 数据服务 gt EF 它支持 LINQ 的子集 但有一些注意事项 一旦学习了各种事情的技巧和解决方法 我就没有遇到任何麻烦 但我想制作一个可重用的表达式生成器来仅比较Date的
  • Git 合并在我的文件中留下了 HEAD 标记

    我尝试使用 Git 在命令行中合并文件 这时出现一条错误消息 告诉我合并已中止 我以为事情就这样结束了 但后来我意识到我的文件中有 gitmarks 就像这样 start expression validchar 0 9a zA Z int
  • 如何使倒计时器在页面刷新时不重置

    我正在为我的项目创建一个在线考试页面 我有一个倒计时器 但它会在页面刷新时重置 怎样才能让它不重置呢 通过从数据库获取时间来设置计时器 我正在使用 php mysql 请帮我 这是我的代码
  • ODBC 和 OleDB 有什么区别?

    我在这里找到了这个问题 OLEDB 与 ODBC https stackoverflow com questions 271504 oledb v s odbc 这给了我更多信息 但并没有真正回答我要问的问题 所以我将从那里开始 我正在使用
  • React 和 Material-UI:使用 TypeScript 在 createStyles() 中未定义主题

    我正在学习 React with TypeScript 并使用 Material UI 框架作为前端 我尝试让媒体查询正常工作 但出现错误 未捕获的类型错误 无法读取未定义的属性 up 在样式 webpack internal app co
  • SQL 查找查询结果的大小

    所以基本上我正在执行 SQL 选择查询 但我想知道我要撤回多少数据 多少千字节 实际上 显示客户统计数据 http blog sqlauthority com 2009 10 01 sql server sql server managem
  • 为什么 ActionDispatch::Routing::RouteSet 需要这么长时间

    我在 Rails 4 2 1 之上使用 Grape 为我们的应用程序提供 API 但是当我今天检查 Newrelic 的性能时我发现RackApp Proc call and Grape API Root call占用了大量的时间 见截图
  • 在 Mathematica 中使用 MapAt 中的 All

    我经常有一个成对的列表 例如 data 0 0 0 1 12 4 2 14 6 3 25 1 我想做点什么 例如Rescale 到所有第二个元素而不触及第一个元素 我知道的最巧妙的方法是 Transpose MapAt Rescale Tr
  • Sharepoint 2007 和

    问候 我试图让我的 Sharepoint 2007 网站在 IE 中浏览时以标准模式呈现 由于 DOCTYPE html 使我可能担心的每个浏览器都能做到这一点 所以我决定使用它 我到处读到 标准模式可能会导致某些 OOTB 功能和样式 弹
  • 将多个组件绑定到支持 bean 中的一个实例(Primefaces 树)

    我希望能够在我的页面上的 2 个位置拥有 Primefaces 树 原因是我想让具有相同数据的两棵树具有完全相同的状态 相同的节点展开等 我尝试将两个实例绑定到支持 bean 中的相同值 但这会导致仅渲染其中一个实例 我做错了吗 这应该以不
  • Erlang JSON 库:序列化性能?

    Erlang 有许多可用的 JSON 库 但我不清楚哪些具有最佳性能特征 其次是易用性 特别是对于 erlang to json 序列化 我的用例需要 JSON 解析和序列化 但 Erlang 代码可能会产生比接收输入至少多两个数量级的 J
  • spring form taglib禁用属性真的必须解析为字符串吗?

    我最近一直在研究 spring 表单标签库 并遇到了一个相当令人不安的现象
  • 使用 .net MySql 连接器未关闭 MySql 连接

    MySql 连接将进入睡眠模式而不是在 mysql 中关闭 我正在使用 MySql Data 6 5 4 版本与 mysql 进行通信 我不确定下面的代码中我做错了什么 try using var conn new MySqlConnect
  • 如何拦截 cypress 的服务器端 api 调用

    我使用 Nuxt js 作为前端框架 使用 Laravel 作为 API 服务器 并使用 Cypress 编写一些 e2e 测试 我试图通过使用减少 asyncData api 调用cy 拦截 https docs cypress io a
  • POSTMAN:无法完成OAuth2.0登录

    我想请求一个令牌 以便我的 Postman 可以登录我的 Gmail 帐户 然后我可以调用 Google Cloud API 我正在尝试输入我的 Gmail 电子邮件地址及其密码 如您从这张图片中看到的 最终目标是获得这样的 API htt
  • 无法让多页jquery mobile与谷歌地图一起使用

    我有 jQuery Mobile 与谷歌地图一起使用 这样我就可以显示一个独立的页面 其中包含一张占据全屏的地图 但是 我不知道如何制作一个简单的两页示例 其中有一个按钮可以将我带到地图 我很困惑为什么所有示例的正文标签中都有 javasc
  • 为什么我的解决方案无法找到二叉树的最小深度?

    我不明白我的寻找二叉树最小深度的解决方案为什么不起作用 我究竟做错了什么 如果您好奇 这里有一个问题的链接 https leetcode com problems minimum depth of binary tree submissio
  • 如何将我的本地主机指向公共IP地址[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚设置了一个WAMP 2 2 localhost在我的电脑上 我的一切都运行正常 我可以执行 PHP MYSQL 等 现在我想知道如何将我的本地主
  • 有哪些库可帮助创建手机 2D Java 游戏?

    我想开始为手机开发 2D Java 游戏 在 J2ME 上 因此我想知道是否存在任何库或 引擎 来帮助完成各种图形任务 用像素字体绘制文本 为具有多个帧的精灵绘制位图 如动画 GIF 使用代码 线条 贝塞尔曲线 洪水填充和绘制图形渐变填充
  • 操作系统中的共享内存段

    共享内存属于哪里 这意味着它由每个单独的进程拥有 如堆栈和堆 所以 其他程序不能 能够访问其他程序的堆栈 或者它是由任意数量的进程使用的公共内存段 这 下图以图解方式显示了我的问题 图1 stack stack stack Shared m