學習筆記4: 3-19

(1)算法複雜度: 除O(1)外,時間複雜度隨問題的規模增大而增大; 算法的語句頻度越高,高到多出一個量級,複雜度就變了;算法不同的策略,複雜度有可能是不同的;算法的時間複雜度與選擇的程序設計語言無關。
(2)算法的5個基本特徵:確定性、有窮性、輸入、輸出、可行性
(3)線性結構是一個有序數據元素的集合。
數據結構中線性結構指的是數據元素之間存在着“一對一”的線性關係的數據結構,常用的線性結構有:線性表,棧,隊列,雙隊列,數組,串。非線性結構的邏輯特徵是一個結點元素可能對應多個直接前驅和多個後繼,如樹,表,多維數組等。
(4)計算機由運算器、控制器、存儲器、輸入設備和輸出設備等五個邏輯部件組成。其中運算器、控制器和寄存器等組成CPU。
(5)管道是一種固定大小的緩衝區,管道對於管道兩端的進程而言,就是一個文件,但它不是普通的文件,它不屬於某種文件系統,而是自立門戶,單獨構成一種文件系統,並且只存在於內存中。它類似於通信中半雙工信道的進程通信機制,一個管道可以實現雙向的數據傳輸,而同一個時刻只能最多有一個方向的傳輸,不能兩個方向同時進行。管道的容量大小通常爲內存上的一頁,它的大小並不是受磁盤容量大小的限制。當管道滿時,進程在寫管道會被阻塞,而當管道空時,進程在讀管道會被阻塞、
(6)當一個任務(進程)執行系統調用而陷入內核代碼中執行時,我們就稱進程處於內核運行態(或簡稱爲內核態)。
當進程在執行用戶自己的代碼時,則稱其處於用戶運行態(用戶態)。
內核態: CPU可以訪問內存所有數據, 包括外圍設備, 例如硬盤, 網卡. CPU也可以將自己從一個程序切換到另一個程序。
用戶態: 只能受限的訪問內存, 且不允許訪問外圍設備. 佔用CPU的能力被剝奪, CPU資源可以被其他程序獲取。
(7)內存泄漏也稱作“存儲滲漏”,用動態存儲分配函數動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該內存單元。直到程序結束。內存泄露是程序設計的bug,與線程數無關。
(8)拼接技術:將內存中的所有作業進行移動,使它們全都桕鄰接.這樣,即可把原來分散的多個小分區拼接成一個大分區,這時就可把作業裝入該區。這種通過移動內存中作業的位置,以把原來多個分散的小分區拼接成一個大分區的方法。
對換技術:是指把內存中暫時不能運行的進程或者暫時不用的程序和數據調出到外存上,以便騰出足夠的內存空間,再把已具備運行條件的進程或進程所需要的程序和數據調入內存。
SPOOLing技術:爲了緩和CPU的高速性與I/O設備低速性間的矛盾,引入了脫機輸入、脫機輸出技術。
(9)Linux進程間通信:管道、信號、消息隊列、共享內存、信號量、套接字(socket)
Linux線程間通信:互斥量(mutex),信號量,條件變量
Windows進程間通信:管道、消息隊列、共享內存、信號量 (semaphore) 、套接字(socket)
Windows線程間通信:互斥量(mutex),信號量(semaphore)、臨界區(critical section)、事件(event)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章