Linux內核學習(二)

 

 

如何區分用戶態和內核態呢?

從邏輯地址上來看的話,以32位地址舉例,用戶態位於3GB空間當中,而內核空間在3GB-4GB(並且是共享的).

 

 

 

進程的數據結構示例圖,可以看到包含進程描述信息,內存管理,終端控制信息,文件描述符,文件系統以及信號相關的內容,

 

系統調用的執行過程:

1.用戶程序中有一個系統調用

2.保護現場,然後陷入內核當中,接下來在內核中尋找查詢系統調用表,找到對應的服務程序。

3.接下來服務程序執行完畢後恢復現場。

 

與正常的系統調用不一樣?

fork()之後會有兩個返回,對於父進程的返回過程與正常的系統調用類似,而對於fork()之後的子進程呢?

fork出來的子進程在哪裏執行呢?fork()出來的子進程是從哪一行代碼開始執行的?

可以看到幾乎fork()就是一堆複製拷貝的操作而已,還有修改下一些基本的結構。(leetcode那些鏈表的複製就是實際應用了)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章