回顧linux系統程式設計學習過程

2021-07-12 04:28:33 字數 2187 閱讀 3087

一、基礎知識

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...