天天看點

linux知識點:01

1.核心分為:程序管理系統 、 記憶體管理系統 、 I/O管理系統 和檔案管理系統 四個子系統。

2.使用者态切換到核心态的 3 種方式:a. 系統調用 b. 異常c. 外圍裝置的中斷 。整除除以0 ,肯定會中斷,是以會進入核心.

3.malloc與free是标準庫函數,new/delete是運算符;new、delete傳回的是所配置設定類型變量(對象)的指針,malloc、free傳回的是void指針。

4.clone是fork的更新版本,不僅可以建立程序或者線程,還可以指定建立新的命名空間、有選擇的繼承父程序的記憶體、甚至可以将建立出來的程序變成父程序的兄弟程序等等。

5.fork() 函數複制時将父程序的是以資源都通過複制資料結構進行了複制,然後傳遞給子程序,是以 fork() 函數不帶參數; clone() 函數則是将部分父程序的資源的資料結構進行複制,複制哪些資源是可選擇的,這個可以通過參數設定,是以 clone() 函數帶參數,沒有複制的資源可以通過指針共享給子程序 。

6.僵屍程序:一個子程序在其父程序還沒有調用wait()或waitpid()的情況下退出。這個子程序就是僵屍程序。

7.孤兒程序:一個父程序退出,而它的一個或多個子程序還在運作,那麼那些子程序将成為孤兒程序。

8.孤兒程序将被init程序(程序号為1)所收養,并由init程序對它們完成狀态收集工作。僵屍程序将會導緻資源浪費,而孤兒則不會。

9.在Linux的檔案系統中,儲存在磁盤分區中的檔案不管是什麼類型都給它配置設定一個編号,稱為索引節點号inode 。

10.軟連接配接,其實就是建立立一個檔案,這個檔案就是專門用來指向别的檔案的(和windows下的快捷方式類似)。軟連結産生的是一個新的檔案,但這個檔案的作用就是專門指向某個檔案的,删了這個軟連接配接檔案,那就等于不需要這個連接配接,和原來的存在的實體原檔案沒有任何關系。

11.硬連結就是一個檔案的一個或多個檔案名。說白點,所謂連結無非是把檔案名和計算機檔案系統使用的節點号連結起來。是以我們可以用多個檔案名與同一個檔案進行連結,這些檔案名可以在同一目錄或不同目錄。一個檔案有幾個檔案名(用ln指令實作多個檔案名),我們就說該檔案的連結數為幾。由定義可知,此連結數可以是1, 這表明該檔案隻有一個檔案名。總之,硬連結就是讓多個不在或者同在一個目錄下的檔案名,同時能夠修改同一個檔案,其中一個修改後,所有與其有硬連結的檔案都一起修改了。

12.setuid位是讓普通使用者可以以root使用者的角色運作隻有root帳号才能運作的程式或指令。是以當程式設定了setid權限位時,普通使用者會臨時變成root權限,但實際使用者仍然是普通使用者。

13.幾種程序間的通信方式: 管道( pipe ),有名管道 (named pipe) ,消息隊列( message queue ) ,信号 ( sinal ) ,共享記憶體( shared memory ) ,套接字( socket ) ,信号量( semophore ) 。

14.臨界區指的是一個通路共用資源(例如:共用裝置或是共用存儲器)的程式片段,而這些共用資源又無法同時被多個線程通路的特性。當有線程進入臨界區段時,其他線程或是程序必須等待,有一些同步的機制必須在臨界區段的進入點與離開點實作,以確定這些共用資源是被互斥獲得使用。

繼續閱讀