copy-on-write

    1熱度

    1回答

    在帶分頁內存的系統中,使用Copy On Write技術時,進程使用fork()調用創建一個新進程。 創建完成後,新進程會嘗試在內存中寫入內容。 CPU會產生哪個錯誤 - 頁面錯誤或其他什麼? 據我所知,使用寫入複製時,這意味着通用數據不會被複制,但是當我們使用fork()時,當一個新進程嘗試寫入某個頁面時,那些頁面停止共享,並用fork創建的進程獲取頁面的副本,以便可以寫入該頁面。 所以,我有點

    0熱度

    1回答

    在高級Java集合API中,我們有CopyOnWriteArrayList和ConcurrentHashMap。但這些數據結構的基本原則卻不同。即ConcurrentHashMap只鎖定正在進行寫入操作的Map的一部分。這是如何防止同步問題而不影響性能的。 CopyOnWriteArrayList另一方面通過複製原始List來防止併發性問題。爲什麼這些實現如此不同? Java是否正在測試以查看哪一

    4熱度

    2回答

    我有幾個數據結構,我分配堆很少修改,但需要快速讀取訪問。一個例子是一個分配在堆上的結構,它被很多線程以只讀方式非常頻繁地訪問。這個結構需要重新編寫,爲了避免鎖定爭用,我想知道是否可以安全地使用auto_ptr來基本上允許已經獲得引用的線程繼續處理,直到完成爲止,但是允許編寫者複製結構,重寫它,並快速交換結構的新auto_ptr實例的指針。 我在Java中從CopyOnWriteArrayList得

    3熱度

    1回答

    在Perl中,我生成了一次龐大的只讀數據結構,然後生成了fork()。 這是爲了在分叉時利用RSS頁面上的COW。它工作得很好,但是當一個子進程退出時,它會在臨死前爲它分配所有的RAM。 有沒有辦法避免這種無用的分配? 以下是顯示問題的示例Perl代碼。 #! /usr/bin/perl my $a = []; # Allocate 100 MiB for my $i (1 .. 10000

    8熱度

    2回答

    對於一般容器(如在Qt的容器中找到的那樣)的C++ 11移動語義和右值引用取代的寫入實現上的共享內存/拷貝? 一個人失敗了,另一個人成功了?或者它們是互補的而不是替代品?

    2熱度

    2回答

    已知Qt類在傳遞值時使用copy-on-wite。所以直到需要時才複製。當只需要對對象的只讀訪問時,我曾多次看到通過const引用傳遞Qt類。爲什麼人們通過const QString&而不是簡單QString,如果在這兩種情況下都沒有複製完成?

    1熱度

    1回答

    我正在閱讀一些操作系統的概念,並偶然發現了這一點。 從我的理解,當你把一個快照, 寫時複製將記錄文件系統(元數據)的當前狀態。 這會導致系統輕微停頓(幾乎是瞬間的)。 如果文件系統在未修改的文件上收到讀取請求,我們正在讀取快照元數據,並將其重定向到原始副本。 當文件系統收到寫請求時會發生什麼?它是否更新原始文件系統和複製的文件系統?

    2熱度

    2回答

    以上(標題)是我最關心的問題。而且案件是 public class MyClass{ CopyOnWriteArrayList<Stuff> min; ... public List<Stuff> get(){ return min; } } 是從get()得到的結果清單的責任?它是否會影響min發生的情況,還是它自己的副本?舉例來說,如果我

    1熱度

    3回答

    已經很徹底地解釋過,只有在PHP中引用時,如果它們是技術原因這樣做,因爲基本上Copy-On-Write使性能相當。從我所瞭解的情況來看,如果它永遠不會改變,它永遠不會複製對象。 但是如果函數確實改變了變量,但是你的代碼再也不會使用它/不使用任何被改變的部分呢?如果原始文件被更改,則代碼無關緊要。是的,PHP優化器可能會考慮到這種情況,但我沒有理由相信它。 傳遞一個單引用肯定會比複製一個巨大的數組

    9熱度

    2回答

    我只是讀a Wikipedia article on Copy-on-write(好奇,如果有支持它的任何文件系統),並通過以下通道驚訝: COW也被用來在內核之外,在圖書館,應用程序和系統代碼中。由C++標準庫提供的字符串類,例如,是專爲允許寫入時複製的實現: std::string x("Hello"); std::string y = x; // x and y use the same