兩個進程如何實現(xiàn)共享內(nèi)存的 進程間通信,內(nèi)存映射和共享內(nèi)存的區(qū)別?
進程間通信,內(nèi)存映射和共享內(nèi)存的區(qū)別?內(nèi)存映射文件是使用虛擬內(nèi)存將文件映射到進程的地址空間。之后,進程像處理空間中的地址一樣操作文件,比如C語言中的memcpy。這種方法可以很好地應用于文件或大文件需
進程間通信,內(nèi)存映射和共享內(nèi)存的區(qū)別?
內(nèi)存映射文件是使用虛擬內(nèi)存將文件映射到進程的地址空間。之后,進程像處理空間中的地址一樣操作文件,比如C語言中的memcpy。這種方法可以很好地應用于文件或大文件需要頻繁處理的場合,其IO效率高于普通IO
共享內(nèi)存是內(nèi)存映射文件的特例,它映射的是一塊內(nèi)存而不是磁盤上的文件。共享記憶的主題是過程。默認情況下,操作系統(tǒng)為每個進程分配一個內(nèi)存空間。每個進程只允許訪問操作系統(tǒng)分配給它的內(nèi)存,而不允許訪問其他進程的內(nèi)存。有時需要在不同的進程之間訪問相同的內(nèi)存。我們該怎么辦?操作系統(tǒng)提供了訪問共享內(nèi)存的API。需要共享內(nèi)存的進程可以通過這組定義的api訪問多個進程之間的共享內(nèi)存。每個進程訪問這個內(nèi)存就像訪問硬盤上的文件。NET4.0引入了系統(tǒng)IO. memorymappedfiles封裝了windows共享內(nèi)存API,這使它更易于使用。Net程序員使用內(nèi)存映射文件。