内存操作是io操作吗

CPU 操作内存是 IO 操作吗?

比如一个进程向操作系统申请或者释放一片内存空间,这个算是 IO 操作吗?

为什么jvm不用协程实现 gc 呢? - 陆萌萌的回答 - 知乎

为什么有人会认为 GC 就不是 IO 操作呢?

内存操作是io操作吗


回答:

io指的是网络和磁盘。
如果内存都算io,那世界上就只有io密集型操作,不存在cpu密集型操作了。
因为cpu计算也是算内存里的数据啊。

至于系统调用,协程也是用户态啊,也需要系统调用啊。


回答:

IO 是什么? 进和出。
进那里,出哪里?内存。
gc释放内存,没有和外部空间的交换,所以没有IO。


回答:

硬要说是也是, 不过一般情况下,是否算io操作要看你研究的问题是什么.
比如这个常见面试题: 对一个二维数组求和,哪个写法更快.

matrix = [

[1, 2, 3, 4],

[1, 2, 3, 4],

[1, 2, 3, 4]

]

n, m = len(matrix), len(matrix[0])

su = 0

for i in range(n):

for j in range(m):

su += matrix[i][j]

su = 0

for j in range(m):

for i in range(n):

su += matrix[i][j]

这个问题下, 从内存读取int到cpu是否充分利用了cpu的缓存会对性能造成一定影响,可以认为求和这个过程的主场是在cpu的寄存器上,而内存是拖后腿的, 那么这个时候可以认为操作内存属于io操作.

而对于gc这个过程来说,你的主场就是内存上,这个时候操作内存就不算是io操作了,或者说你把内存看作io也不解决任何问题.


回答:

应该说对内存的操作,一般不认为是IO操作,特别是程序完全在物理内存中执行时数据读写时,不是IO操作。

但程序执行IO操作时,其实可能触发IO操作,因为存在用存储模拟内存,以满足程序运行的可能,这时由操作系统来调度了部分内存数据存储到磁盘空间中,或者从磁盘空间中读取数据到内存,如果真正存在这样的时候,会极大的减慢实际程序的执行,因为需要等待内存数据的就绪。


回答:

应该算的吧 比如Java中的IO类ByteArrayInputStream和ByteArrayInputStream就是内存操作流

以上是 内存操作是io操作吗 的全部内容, 来源链接: utcz.com/p/938298.html

回到顶部