Time of Update: 2018-12-03
1、 sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,後者則直接在命令列上輸出。這也導致sprintf 比printf 有用得多。 sprintf 是個變參函數,定義如下: int sprintf( char *buffer, const char *format [, argument] ... ); 除了前兩個參數類型固定外,後面可以接任意多個參數。而它的精華,顯然就在第二個參數:格式化字串上。 格式化數字字串 sprintf
Time of Update: 2018-12-03
open系列是 POSIX 定義的,是UNIX系統裡的system call,只能用在 POSIX 的作業系統上。使用open系列函數需要"#include <fcntl.h>".基於檔案描述符的輸入輸出函數: open:開啟一個檔案,並指定訪問該檔案的方式,調用成功後返回一個檔案描述符。 creat:開啟一個檔案,如果該檔案不存在,則建立它,調用成功後返回一個檔案描述符。 close:關閉檔案,進程對檔案所加的鎖全都被釋放。
Time of Update: 2018-12-03
控制台程式是為了相容DOS程式而設立的,這種程式的執行就好像在一個DOC視窗中執行一樣,沒有自己的介面。INTEL的CPU有三種工作模式,實模式,保護模式,音效模擬模式。實模式是16位的,在這種模式下可工作純DOC。保護模式是32位的,WINDOWS就工作在這種模式下,為了使在32位保護模式下工作的WINDOWS可相容16實模式下的DOC程式,又設立了音效模擬模式,就是控制台程式。控制台程式運行單個程式方便簡潔明了!Win32 Application
Time of Update: 2018-12-03
write-through:CPU向cache寫入資料時,同時向memory也寫一份,使cache和memory的資料保持一致。優點是簡單,缺點是每次都要訪問memory,速度比較慢。post write:CPU更新cache資料時,把更新的資料寫入到一個更新緩衝器,在合適的時候才對memory進行更新。這樣可以提高cache訪問速度,但是,在資料連續被更新兩次以上的時候,緩衝區將不夠使用,被迫同時更新memory。write
Time of Update: 2018-12-03
一個進程當前使用的頁的集合叫做它的工作集(working set)。如果整個工作集都在記憶體中,在進入下一個運行階段之前進程的運行不會引起很多頁面故障。如果記憶體太小無法容納整個工作集,進程運行將引起大量的頁面故障並且速度十分緩慢。一個每隔幾條指令就發生一次頁面故障的程式被稱為是在顛簸。
Time of Update: 2018-12-03
著作權聲明:轉載時請以超連結形式標明文章原始出處和作者資訊及本聲明http://bigwhite.blogbus.com/logs/1347304.html在最近的項目中,我們涉及到了“記憶體對齊”技術。對於大部分程式員來說,“記憶體對齊”對他們來說都應該是“透明的”。“記憶體對齊”應該是編譯器的“管轄範圍”。編譯器為程式中的每個“資料單元”安排在適當的位置上。但是C語言的一個特點就是太靈活,太強大,它允許你幹預“記憶體對齊”。如果你想瞭解更加底層的秘密,“記憶體對齊”對你就不應該再透明了。一
Time of Update: 2018-12-03
C程式用mpicc編譯C++程式用mpicxx編譯,可以加參數用g++太煩了,要加很多參數mpiexec執行如:mpicxx -Wall -march=pentium4 -mmmx ft.cpp -o ft -lpthread mpiexec啟動應用程式的標準命令寫作:mpiexec -n 32 app,該命令為app程式啟動32個進程。 mpiexec -n 1-host node1 master: -n 32-host node2 slave
Time of Update: 2018-12-03
: set number顯示行號: set indent 自動縮排 1.*關於退出:*:wq! ----強制儲存退出:wq ---- 儲存退出: x ----- 作用和:wq 一樣ZZ ---- 作用和:wq一樣,(注意Z是大寫的,並且不是在{function onclick(){tagshow(event)}}">命令模式):q ---- 退出:q! --- 強制退出========================================================2
Time of Update: 2018-12-03
Linux記憶體管理機制 Linux的記憶體管理主要由兩個部分組成,一個部分負責實體記憶體的申請與釋放,實體記憶體的申請與釋放最小單位與Windows一樣,都是以"頁"為單位,在IA32中頁的大小是4 KB;另外一個部分負責處理虛擬記憶體,虛擬記憶體的操作主要包括虛擬位址空間與實際儲存空間的映射,實體記憶體頁與硬碟頁之間的置換等,下面各節分別介紹這幾個方面的內容。進程的記憶體布局 一個32位Linux進程的地址空間為4 GB,與Windows類似,這個4
Time of Update: 2018-12-03
在單個結點運行mpdboot,均成功,但mpdtrace命令只能顯示當前的一個結點。運行mpdboot -n 4 -f mp.dhosts會失敗,資訊如下:[root@c0104 ~]# mpdboot -n 4 -f mpd.hostsmpdboot_c0104 (handle_mpd_output 406): failed to handshake with mpd on c0108; recvd output={}[root@c0104 ~]# mpdboot -n 2 -f
Time of Update: 2018-12-03
# virt-clone -o VM_S -n VM_D -f /var/lib/libvirt/images/VM_D-o原虛擬機器,-n複製的虛擬機器,-f存放位置複製前關閉被複製的VM_S以及虛擬系統管理器,複製成功後需更改VM_D的主機名稱、IP地址(複製後,IP地址為動態擷取),以避免管理混亂。[root@localhost ~]# virt-clone -o WebXen -n DBserver -f /var/lib/libvirt/images/DBserverCloning
Time of Update: 2018-12-03
1. 首先註冊一個hypercall調用號。xen/include/public/xen.h #define __HYPERVISOR_kexec_op 37+#define __HYPERVISOR_print 382.更新系統調用表/xen/arch/x86/x86_32/entry.SENTRY(hypercall_table) .long do_kexec_op+ .long
Time of Update: 2018-12-03
轉自:http://zhangyu8374.javaeye.com/blog/86305 OpenMP和MPI是並行編程的兩個手段,對比如下:OpenMP:線程級(並行粒度);共用儲存;隱式(資料分配方式);可擴充性差;MPI:進程級;分布式儲存;顯式;可擴充性好。OpenMP採用共用儲存,意味著它只適應於SMP,DSM機器,不適合於叢集。MPI雖適合於各種機器,但它的編程模型複雜:需要分析及劃分應用程式問題,並將問題映射到分布式進程集合;需要解決通訊延遲大和負載不平衡兩個主要問題;調試MPI程
Time of Update: 2018-12-03
//xen/arch/x86/mm.c void __init init_frametable(void) { unsigned long nr_pages, page_step, i, mfn; frame_table = (struct page_info *)FRAMETABLE_VIRT_START; nr_pages = PFN_UP(max_page * sizeof(*frame_table)); printk("#################
Time of Update: 2018-12-03
網上說用一個叫Ghostscript的postscript解譯器,打了半天,折騰什麼的,居然沒成功,備受打擊……裝個軟體沒這麼難吧! 把*.ps檔案拷到linux系統下,雙擊就能開啟了,linux系統就是好,什麼都不用做。不過,linux下可以將其轉換成pdf格式的:檔案--列印--輸出到檔案,設定好選項,列印,OK! 註冊什麼的最討厭了……
Time of Update: 2018-12-03
1、_mm_prefetchvoid_mm_prefetch(char *p, int i)The argument "*p" gives the address of the byte (andcorresponding cache line) to be prefetched. The value "i" gives aconstant (_MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2, or _MM_HINT_NTA) thatspecifies the
Time of Update: 2018-12-03
1、第一種方法#include "stdio.h"#include "stdlib.h"#include "unistd.h"#include "pthread.h"#include <sys/syscall.h>#define gettid() syscall(__NR_gettid)const int M = 3;pthread_t hThread[M];int threadId[M];void *hello(void *ptr) {int id = *(int *)(ptr)
Time of Update: 2018-12-03
1、Win 7使用者 在windows 7中安裝matlab 7.1,成功後,不能正常使用,會出現如下錯誤:error starting desktop 網上有人說,是主題的問題,把windows 7的主題改成XP的,這樣是可以的。 但我個人覺得,windows 7中XP的主題太難看了,效果也不好。這裡推薦另一種解決方案:
Time of Update: 2018-12-03
記憶體牆,指的是記憶體效能嚴重限制CPU效能發揮的現象。 在過去的20多年中,處理器的效能以每年大約55%速度快速提升,而記憶體效能的提升速度則只有每年10%左右。長期累積下來,不均衡的發展速度造成了當前記憶體的存取速度嚴重滯後於處理器的計算速度,記憶體瓶頸導致高效能處理器難以發揮出應有的功效,這對日益增長的高效能運算(High Performance Computing,HPC)形成了極大的制約。這種嚴重阻礙處理器效能發揮的記憶體瓶頸命名為"記憶體牆"(Memory Wall)。
Time of Update: 2018-12-03
Generally speaking, memory bus bandwidth has not seen the same improvement as CPU performance (an observation sometimes referred to as the memory wall), and with multi-coreand many-core systems, the available bandwidth is shared between all