1、基礎知識linux
一、linux操做系統,熟悉經常使用的指令。shell
二、vim編譯器的使用,Makefile的編寫。編程
三、用戶以及權限方面相關的知識。
vim
四、linux下環境變量的概念。數組
2、進程概念相關ide
一、進程的概念,瞭解PCB的概念,以及task_struct結構體。函數
二、進程的建立,fork()與vfork()的區別和聯繫。post
三、進程的等待,waitpid()與wait(),阻塞等待與非阻塞等待。spa
四、進程的程序替換,execl(),execlp(),execle(),execv(),execvp(),execvlp()。操作系統
5、進程的終止,退出碼的概念,低八位(異常信號量),次低八位(正常退出碼)
3、進程間通訊(symtem-V)
一、內核緩衝區與用戶緩衝區的概念。
二、文件描述符與文件指針的概念。
三、命名管道與匿名管道(實現父子進程匿名管道的通訊和兩個進程間命名管道通訊)
匿名管道(pipe)的特色(以文件流的模式,生命週期和進程相關聯,只能支持有血緣關係的進程間單向通訊),命名管道(環形buff)(fifo,mkfifo,mkmod)的特色(可使不一樣進程間進行通訊)。
四、消息隊列(實現兩個進程client和server的相互發消息)
msgget(),ftok(),msgctl(),msgrcv(),msgsnd(),消息隊列的特色(基於消息面向數據包的通訊方式,生命週期和內核關聯,雙向通訊)。
五、信號量(實現一個父子進程的通訊)
首先了解臨界資源和臨界區的概念,信號量是原子操做下實現的,system-v版本下的信號量沒有傳輸數據只用於控制,senbuf結構體,semun聯合,
semset(),semctl(),semop()的操做。
六、共享內存(實現兩個進程client和server的相互發消息)
特色(最高效的通訊方式,須要本身維護同步與互斥)。shmget(),shmctl(),shmat(),shmdt()。
4、線程的概念(posix標準)
一、線程與進程的區別與聯繫。
二、線程的建立,pthread_create()。
線程的等待,pthread_join()阻塞方式等待。
線程的返回,線程內部return,使用pthread_exit()退出某個線程,使用 pthread_cancel()取消某個線程。
線程的分離,pthread_decth() 分離後的線程會本身管理本身的資源進程,不用 阻塞式等待。
三、線程的同步與互斥
1>互斥量:線程的互斥。
pthread_mutex_lock(),pthread_mutex_unlock(),pthread_mutex_destory()
2>生產者消費者模型,死鎖的概念,死鎖產生的4個必要條件,使用條件變量和
互斥量實現一個生產者消費者模型。
3>posix版本信號量sem,單位爲信號量區別於system_v版本下信號量集。 sem_init(),sem_wait(),sem_post()(環形數組buff下實現多生產者多消費者 模型)。
4>讀寫鎖,讀寫優先的問題。
5、linux信號
一、kill-l普通訊號1-31,實時信號34-64。
二、信號的產生方式,鍵盤,軟硬件,kill(),alarm(),abort(),raise()等。
三、信號的處理方式,忽略,執行默認動做,執行自定義動做。
四、信號未決和信號遞達。task_struct中pending,block,handler表。
五、信號集sigset_t,信號處理函數 sigemptyset(),sigaddset(),sigpromask(),
sigpending()。(屏蔽2號信號輸出當前pending集,解除屏)
六、信號的捕捉,signal(),sigaction()。(模擬sleep)
七、信號的處理流程,用戶態與內核態切換的場景。
6、做業控制與守護進程
一、進程組,shell下的做業控制,會話的概念。
二、控制終端(tty,pts,pty),init下的7個啓動模式,用戶登陸的流程,做業控制,fg命令,bg%命令。
三、守護進程的概念,crond系統進程的編寫,setsid(),守護進程的建立。
閱讀書籍,深刻理解計算機系統,unix高級環境編程