一、基礎知識
1、linux作業系統,熟悉常用的指令。
2、vim編譯器的使用,makefile的編寫。
3、使用者以及許可權方面相關的知識。
4、linux下環境變數的概念。
二、程序概念相關
1、程序的概念,了解pcb的概念,以及task_struct結構體。
2、程序的建立,fork()與vfork()的區別和聯絡。
3、程序的等待,waitpid()與wait(),阻塞等待與非阻塞等待。
4、程序的程式替換,execl(),execlp(),execle(),execv(),execvp(),execvlp()。
5、程序的終止,退出碼的概念,低八位(異常訊號量),次低八位(正常退出碼)
三、程序間通訊(symtem-v)
1、核心緩衝區與使用者緩衝區的概念。
2、檔案描述符與檔案指標的概念。
3、命名管道與匿名管道(實現父子程序匿名管道的通訊和兩個程序間命名管道通訊)
匿名管道(pipe)的特點(以檔案流的模式,生命週期和程序相關聯,只能支援有血緣關係的程序間單向通訊),命名管道(環形buff)(fifo,mkfifo,mkmod)的特點(可以使不同程序間進行通訊)。
4、訊息佇列(實現兩個程序client和server的相互發訊息)
msgget(),ftok(),msgctl(),msgrcv(),msgsnd(),訊息佇列的特點(基於訊息面向資料報的通訊方式,生命週期和核心關聯,雙向通訊)。
5、訊號量(實現乙個父子程序的通訊)
首先了解臨界資源和臨界區的概念,訊號量是原子操作下實現的,system-v版本下的訊號量沒有傳輸資料只用於控制,senbuf結構體,semun聯合,
semset(),semctl(),semop()的操作。
6、共享記憶體(實現兩個程序client和server的相互發訊息)
特點(最高效的通訊方式,需要自己維護同步與互斥)。shmget(),shmctl(),shmat(),shmdt()。
四、執行緒的概念(posix標準)
1、執行緒與程序的區別與聯絡。
2、執行緒的建立,pthread_create()。
執行緒的等待,pthread_join()阻塞方式等待。
執行緒的返回,執行緒內部return,使用pthread_exit()退出某個執行緒,使用 pthread_cancel()取消某個執行緒。
執行緒的分離,pthread_decth() 分離後的執行緒會自己管理自己的資源程序,不用 阻塞式等待。
3、執行緒的同步與互斥
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>讀寫鎖,讀寫優先的問題。
五、linux訊號
1、kill-l普通訊號1-31,實時訊號34-64。
2、訊號的產生方式,鍵盤,軟硬體,kill(),alarm(),abort(),raise()等。
3、訊號的處理方式,忽略,執行預設動作,執行自定義動作。
4、訊號未決和訊號遞達。task_struct中pending,block,handler表。
5、訊號集sigset_t,訊號處理函式 sigemptyset(),sigaddset(),sigpromask(),
sigpending()。(遮蔽2號訊號輸出當前pending集,解除屏)
6、訊號的捕捉,signal(),sigaction()。(模擬sleep)
7、訊號的處理流程,使用者態與核心態切換的場景。
六、作業控制與守護程序
1、程序組,shell下的作業控制,會話的概念。
2、控制終端(tty,pts,pty),init下的7個啟動模式,使用者登入的流程,作業控制,fg命令,bg%命令。
3、守護程序的概念,crond系統程序的編寫,setsid(),守護程序的建立。
閱讀書籍,深入理解計算機系統,unix高階環境程式設計
本文出自 「痕跡」 部落格,請務必保留此出處
Linux學習過程筆記 系統程式設計
0.系統程式設計所學到的命令是應用在notepad 中的,之前那學的linux命令列是在控制終端裡除錯用的。1.製作最小linux映象太麻煩以後學習。3.用u盤除錯程式。1.在root home 新建linuxsystemcode 新建功能名資料夾。2.連好超級終端,新建.c檔案,用notepad ...
linux 系統程式設計學習經驗
簡單寫一下總結 1 書籍的選擇 個人推薦一下三本 unix環境高階程式設計 linux系統程式設計 unix linux程式設計實踐教程 新手入門建議從 linux系統程式設計 入手 優點是簡單易懂,沒有 unix環境高階程式設計 中關於unix的各種版本的細節,主幹清晰,而且書裡寫了linux系統...
linux系統程式設計學習筆記
關閉檔案 linux命令列引數解析 int creat const char filename,mode t mode mode指定新建檔案的訪問許可權 return 檔案描述符fd open const char pathname,o create,mode t mode 第二個引數flags為o...