【问题标题】:What are the different types of memories which can come under shared memory? [closed]有哪些不同类型的内存可以归入共享内存? [关闭]
【发布时间】:2012-10-14 15:36:38
【问题描述】:

例如,在多线程程序中,全局变量、易失变量、外部变量可以归入临界区,因为它们可以同时被多个线程访问。 shmget() 也分配共享内存。 我想知道所有其他内存类型在用户空间和内核空间中可能是关键部分。

【问题讨论】:

  • 如果代码,关键部分关注部分,而不是数据。
  • 这个问题没有多大意义。甚至 的关键部分是多么的离题,这有点类似于问“什么类型的蔬菜是牛?”。除了“...... WTF?”之外,这个问题没有真正的答案。

标签: c multithreading operating-system


【解决方案1】:

【讨论】:

  • 像管道(unix)和全局变量是共享内存,其他的东西可以归于共享内存吗?
  • 全局变量不是共享内存。它们被严格限制在一个过程中。此外,从技术上讲,管道也不是共享内存,而是管道和共享内存是进程间通信 (IPC) 的两种不同方式。
【解决方案2】:

共享内存通常包含在临界区中。原因是共享内存可以同时被多个线程访问。为了确保某个共享内存一次只能由一个线程访问,使用了临界区。

不确定共享内存是否进一步分类。

【讨论】:

  • 像管道(unix)和全局变量是共享内存,其他的东西可以归于共享内存吗?
  • 据我所知,在线程堆栈之外分配的任何东西都属于共享内存,实际上可以被多个线程访问。只有线程堆栈内存对任何线程都是私有的,所有其他内存位置都属于共享内存。
【解决方案3】:

当您谈论不同的概念时,共享内存可能会有所不同,即使用公共数据的两个进程,例如队列,您需要在修改/添加/删除时“照顾”关键部分。 至于线程,除了栈和代码段之外,所有的东西都是共享的,所以理论上主进程到达的每一条数据,都是这些线程之间的共享内存。

【讨论】:

  • 像管道(unix)和全局变量是共享内存,其他的东西可以归于共享内存吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 2011-07-23
  • 1970-01-01
  • 2021-11-26
  • 2020-08-22
  • 2019-01-04
  • 2021-11-05
相关资源
最近更新 更多