原创 3--共享內存的實踐到內核--撤銷共享內存的映射和控制

shmdt(shared_memory) == -1這句代碼是撤銷共享內存,另一句shmctl(shmid, IPC_RMID, 0) == -1是刪除共享內存。我們還是按照原來的分析方法這裏不再重複如何進入sys_ipc()的,我們把進

原创 11-socket的實踐到內核--UDP的socket數據的發送

我們接着上一節數據的接收來自看UDP的數據是如何發送的,上一節中我們貼出有關發送的代碼,在那裏只是爲了讓大家有一個印象case SYS_SEND:        err = sys_send(a0, (void __user *)a1,

原创 2--信號量的實踐到內核--進入內核分析信號量的操作

我們接着看信號量的操作,在semaphore_p()函數中調用了semop(sem_id, &sem_b, 1) 函數,在sys_ipc()系統調用中則會到達 case SEMOP:        return sys_semtimedo

原创 1--共享內存的實踐到內核--共享內存的創建

今天我們繼續linux從實踐到內核的學習,我們開始看一下應用實踐程序,他是關於共享內存的,程序來自於linux程序設計書中例子,利用他的例子是爲了讓大家知道什麼是共享內存以及他有什麼好處,相信朋友們跟我看我這個練習並走進內核就會清楚了,我

原创 1--socket的實踐到內核--socket實踐練習

這節我們開始學習網絡方面的實踐並追蹤進入內核,因爲網絡範圍很廣我們只講socket方面的知識,由socket編程進入內核,我是無名小卒,寫這些文章是爲了引領朋友們如何滲透內核的工作原理,起到導航的作用,可能前面講的不是非常的透徹,那是假定

原创 14-socket的實踐到內核--socket的關閉

我們在socket的第一節中看到了調用close(sockfd);來關閉socket.我們已經探討過了從內核的task_struct到socket的鉤子函數過程,如果你讀到這裏沒有看到或者沒有明白,請看前邊章節中的read和write的分

原创 10-socket的實踐到內核--UDP的socket數據的接收

我們在本章的第一節中的練習代碼中曾經看到socket是通過write(sockfd, &ch, 1);read(sockfd, &ch, 1);來發送和接受數據的,熟悉文件系統的朋友可以知道這二個函數在系統調用中的過程,當然還有另外一對數

原创 8-socket的實踐到內核--接受socket的連接

今天分析服務器端的socket接收客戶的連接函數accept(),我們從應用程序界面 accept(server_sockfd, (struct sockaddr *)&client_address, client_len);還是以前的分

原创 5-socket的實踐到內核--追蹤Unix的socket

昨天我們追蹤到了unix_create()這個函數處,今天我們繼續從此處進行,老習慣先貼代碼再做分析,可能有的朋友會說爲什麼不把分析放在代碼中間,其實這是我的經驗,因爲我在閱讀趙炯的內核書時,儘管他對每一行都進行了註釋,可是我看完一遍以後

原创 9-socket的實踐到內核--client調用connect

有些事情非常的有意思,開始這節之前我想談一下“吹牛的人”,某企業爲了獲取高額利潤請來一位所謂的高人,而此人更是大吹其專業,一邊挺起自信的啤酒肚一邊海吹自己開公司時如何自主研發的業績,談吐之間不乏高昂的旋律,不時擺出一副官人的態勢,第一次其

原创 1--信號量的實踐到內核--信號量的實驗

前邊幾節中我們談到了關於進程間通訊的消息隊列和共享內存,今天我們研究一下信號量,這裏所說的信號量是“用戶空間進程通訊的信號量”與內核進程的信號量是不同的,還是與以前的學習方法一樣,我們先來看一個例子,在這個例子中通過semget創建一個信

原创 4--消息隊列(報文隊列)實踐到內核--消息隊列的控制

前邊三節,我們講了消息隊列的創建、發送信息和接收消息,今天繼續沿着應用程序路線看內核中的對消息隊列的控制,首先是我們看一下應用程序中的界面函數msgctl(msgid,IPC_RMID,0);通過sys_ipc()系統調用中看到這樣一句s

原创 4-socket的實踐到內核--追蹤socket的創建

我們說過socket篇幅比較大,內容相對較多所以分的章節細一些,敬請閱讀的朋友們注意,這節我們繼續前面的socket創建的追蹤,上一節我們最後追蹤到_sock_create(),並且它的前面不是很重要只是對一些參數的檢驗,我們接着這個函數

原创 2--共享內存的實踐到內核--共享內存的映射

今天繼續我們的內核研究,即然我們選擇了2.6.26內核做爲研究對象的版本,所以請朋友們還是手中有這個源代碼比較好,有的地方可能需要朋友們自己去研讀,特別是有一定基礎的朋友可以更寬泛一些的閱讀,如果你是新手就請跟着我的步驟進行,必竟主線我們

原创 7-socket的實踐到內核--socket的監聽

這節我們看一下服務器端的socket監聽,還是從應用程序界面看起listen(server_sockfd, 5);中間的過程我們不說了,只說到達了函數sys_listen()處,不知道這個過程的朋友參考前面幾節內容。這個函數在/net/s