1.一般總線被設計成傳送定長的字節塊即字。html
2.主存是一個臨時存儲設備,用來存放程序和程序處理的數據。java
3.加載:從主存複製到寄存器;linux
存儲:從寄存器複製到主存。git
併發:指一個同時具備多個活動的系統web
並行:指的是用併發使一個系統運行的更快編程
Linux下編程:
1.vi hello.c
2.編譯gcc hello.c
3.運行./a.out
4.查看運行完程序的返回值echo $?
緩存
od -tc -tx1 hello.c
用文本查看ASCII碼gcc -E hello.c -o hello.i
hello.c——>hello.i預處理安全
gcc -S hello.i -o hello.s
hello.i——>hello.s編譯服務器
gcc -c hello.s -o hello.o
彙編碼——>機器碼併發
ar rcs libhello.a hello.o gcc main.c -L -lhello
動態連接:
特色:在生成可執行文件的時候(連接階段),把全部須要的函數的二進制代碼都包含到可執行文件中去。所以,連接器須要知道參與連接的目標文件須要哪些函數,同時也要知道每一個目標文件都能提供什麼函數,這樣連接器才能知道是否是每一個目標文件所須要的函數都能正確地連接。若是某個目標文件須要的函數在參與連接的目標文件中找不到的話,連接器就報錯了。目標文件中有兩個重要的接口來提供這些信息:一個是符號表,另一個是重定位表。
優勢:在程序發佈的時候就不須要的依賴庫,也就是再也不須要帶着庫一塊發佈,程序能夠獨立執行
缺點:
程序體積會相對大一些。
若是靜態庫有更新的話,全部可執行文件都得從新連接才能用上新的靜態庫。
動態連接:
特色: 在編譯的時候不直接拷貝可執行代碼,而是經過記錄一系列符號和參數,在程序運行或加載時將這些信息傳遞給操做系統,操做系統負責將須要的動態庫加載到內存中,而後程序在運行到指定的代碼時,去共享執行內存中已經加載的動態庫可執行代碼,最終達到運行時鏈接的目的。
優勢: 多個程序能夠共享同一段代碼,而不須要在磁盤上存儲多個拷貝。
缺點: 因爲是運行時加載,可能會影響程序的前期執行性能
1.條件斷點:b fxx(函數名)
2.條件斷點:b 12 if i=5000
4.臨時斷點:tb 行號
還能夠經過p 變量
在調試過程當中來查看變量的值
p k=4
,來假設正確調試後面的代碼
PS🅱️設斷點
r:運行
stop(s):進入函數的下一步
next(n);不進入函數的下一步
無
暫無
本週主要學習了一下linux下的代碼編譯和調試以及靜態連接和動態連接的相關內容。上學期學java時雖然初步學習了一些linux下的命令,可是因爲當時主要是在Windows環境下寫代碼,不少命令幾乎都得從新熟悉,最初是感受很不方便也不習慣,可是因爲虛擬機出現了些問題,我在實驗樓裏學習事後感受手感好了不少。確實命令這些東西仍是須要實踐與理論相結合着來學,否則總感受記不住,之後要多多實踐。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 200小時 | |
第一週 | 5/5 | 1/1 | 15 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:22小時
實際學習時間:15小時
改進狀況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)