知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
Linux系統程式設計學習心得
1樓

    這次的嵌入式Linux開發實務課程,進入到Linux系統程式設計課程階段,由Joseph老師主講,目的是要讓大家瞭解Linux system call,讓大家運用這些system call以實現Linux程式,Joseph老師上課內容相當豐富,每次講解system call function 時,都會配合Linux系統基本指令,以印證Linux system call在程式設計理的必要性。尤其在Linux系統中,每一種硬體的驅動,其實都是一個個的c語言的檔案系統的開檔籍關檔動作;讓我印象深刻的是Joseph老師用了很簡單的ioctl()system call示範光碟機的開關動動作,原來僅僅幾行程式就可以控制,讓我對驅動程式的轉寫有了更進一步的認識;在Linux驅動程式裡,有一個很重要的觀念,就是blocking模式及non-blocking 模式,驅動程式裡呼叫 open Linux 預設會以blocking mode的方式開啟block 是指當 process 為了等待某件事的發生而進入 sleep 狀態的情形 read 是其中一種當沒資料讀取時process 就會被 blockwrite 是一樣在寫入資料時寫入對象還無法處理資料時一樣會 block對某些程式來說如果 read 系統呼叫被 block 的話有時就會有設計上的問題,而 non-blocking 模式後不管是 read 還是 write 就不會被 block但會傳回 errno 錯誤碼這時就必須自已再做讀寫的動作,而且Joseph老師示範幾個程式是什麼時候用blocking modenon-blocking 模式最好;從中讓我瞭解system callLinux嵌入式使用者透過system callkernel聯繫的一重要的界面,我要好好的熟讀這些system call相信未來對我的程式撰寫一定有很大的幫助;除此之外當課程上講到ThreadsIPCSocket Programming時,Joseph老師為了讓學員可以充分瞭解,不時旁徵博引,將一些很難懂的觀念透過實作與艾鍗學院精心設計的程式碼搭配,將我在看書時一直模模糊糊的觀念都一一的搞懂了。

    Joseph老師上課內容相當豐富,不時旁徵博引,讓我有一種意猶未盡的感覺,很感謝Joseph老師讓我真正地進入Linux程式撰寫的領域。

艾鍗學員 Steven Wu