内存操作是io操作吗
CPU
操作内存是 IO
操作吗?
比如一个进程向操作系统申请或者释放一片内存空间,这个算是 IO
操作吗?
为什么jvm不用协程实现 gc 呢? - 陆萌萌的回答 - 知乎
为什么有人会认为 GC
就不是 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