回顧linux系統編程學習過程

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高級環境編程

相關文章
相關標籤/搜索