原创 C/C++面試問題彙總

1.C/C++中的static關鍵字 1.C語言中的static關鍵字的作用 (a)static作用於變量:分兩種情況:在文件內的全局靜態變量,在函數體內的局部靜態變量 1.static的全局變量:會存入到進程的.data區域,靜態全局變

原创 操作系統——中斷機制(trap, interrupts)

中斷描述符表(Interrupt Descriptor Table,IDT)將每個異常或中斷向量分別與它們的處理過程聯繫起來,IDT也是由8字節長描述符組成的一個數組。 IDT表可以存放在線性地址空間的任何地址,處理器使用IDTR寄存器來

原创 c中枚舉類型enum, struct, union

1.枚舉類型的定義 enum 枚舉類型名{枚舉常量1[=整型常量], 枚舉常量2[=整型常量], ...},這種方式可以替代const enum color { WRITE, BLACK, GRAY}; 默認情況下從0開始編號,之後每次+

原创 操作系統中鎖和信號量的作用與區別

OS中鎖和信號量的作用與區別???

原创 線程同步的方式——Mutex(互斥量)、 Condition variable(條件變量)和Semaphore(信號量)

1.不同的同步方式的實現方法 2.相互之間的對比?區別?

原创 linux的常用命令和awk的基本用法

1.awk awk是Unix/Linux提供的樣式掃描與處理工具,非常擅長處理結構化數據和生成表單, awk程序由三部分組成,分別爲:初始化(處理輸入前做的準備,放在BEGIN塊中),數據處理(處理輸入數據),收尾處理(處理輸入完成後要進

原创 C++的封裝、多態、繼承在C中的對應實現方式

C++的特點:封裝、多態、繼承 1.封裝是面向對象最重要的特徵之一(C++中的類class),封裝就是指隱藏。  封裝的優點:(1)確保用戶代碼不會無意間破壞封裝對象的狀態;(外部程序不能隨便改變對象中的狀態)(2)被封裝的類的具體實現

原创 linux的文件系統和虛擬文件系統(VFS)

http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/ 1.軟鏈接和硬鏈接的區別 我們知道文件都有文件名與數據,數據分兩部分:用戶數據 (user data)

原创 Linux中動態內存的分配與回收(heap, buddy system, stab)

1.malloc 和free的原理(http://m.blog.csdn.net/article/details?id=39496057) 從操作系統角度來看,進程分配內存有兩種方式,分別由兩個系統調用完成:brk和mmap(不考慮共

原创 讀書筆記:Effective C++(二)

條款20:寧以pass-by-reference-to-const替換pass-by-value class Person{ public: Person(); virtual ~Person(); private:

原创 操作系統——虛擬內存管理

面試問題彙總: 1.邏輯地址、線性地址,物理地址,虛擬地址分別是什麼 物理地址,CPU地址總線傳來的地址,物理地址中很大一部分是留給內存條中的內存的 線性地址(Linear Address)也叫虛擬地址(virtual address

原创 RAID磁盤陣列

RAID(獨立硬盤冗餘陣列)Redundant Array of Independent Disks 基本思想:把多個相對便宜的磁盤組合起來,成爲一個測盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。 採用RAID的好處(兩個關

原创 筆記:進程間通信——消息傳遞(管道、FIFO、posix消息隊列)

1.管道pipe #include <unistd.h> int pipe(int fd[2]); 管道的創建, fd[0]:從管道讀;fd[1]:向管道寫 管道是單個進程創建的,它卻很少在單個進程內使用。管道的典型用途是:兩個進程(

原创 錯題解答與彙總

1.多級隊列調度和多級反饋隊列調度的區別 時間片輪轉調度算法:將所有的就緒進程按先來先服務的原則排成一個隊列,每次調度,把CPU分配給隊首進程,並令其執行一個時間片。時間片用完時,由計時器發出時鐘中斷請求,停止該進程,並將其放置到隊列尾。

原创 筆記:進程間通信——同步(互斥鎖、讀寫鎖、條件變量、信號量)以及Linux中的RCU

1.互斥鎖 多個線程的IPC,需要同步,同步有隱式的和顯示的: 比如unix提供的管道和FIFO,由內核負責同步,比如read發生在write之前,那麼read就會被內核阻塞,這中同步是由內核負責的,用戶不會感知。 但如果使用共享區作爲生