首頁  >  文章  >  系統教程  >  初學 Linux 系統呼叫要掌握的技巧

初學 Linux 系統呼叫要掌握的技巧

王林
王林轉載
2024-01-18 10:12:05544瀏覽

Linux 系统调用的初学技巧

#在過去的幾年中,我一直在做大量容器相關的工作。先前,我看到Julien Friedman的一個很棒的演講,它用幾行 Go 語言寫了一個容器框架。這讓我突然了解到容器只是一個受限的 Linux 進程中的機器。

建立這個受限視圖涉及到Golang 系統呼叫套件中的許多呼叫。最初,我只是用到了表面的那些,但過了一段時間,我想剝下洋蔥的下一層,看看這些系統調用是什麼,以及它們的工作原理。我將在 OSCON 的演講中分享我所學到的東西。

顧名思義,syscalls即係統調用,它們是你從用戶空間請求進入 Linux 核心的方式。核心為你做一些工作,例如創建一個進程,然後再回到用戶空間。

有一個常見的機制使所有的系統呼叫轉換到內核,這是由libc函式庫處理的。使用者空間代碼設定一些暫存器,包括其想要的系統呼叫的 ID 以及需要傳遞給系統呼叫的所有參數。它觸發一個 “陷阱” 將控制權轉換到核心。

這就是用戶空間程式碼如何向核心請求的,而 Linux 也有一個偽檔案系統,它允許核心將訊息傳遞給用戶空間,其內容看起來像普通的目錄和檔案。

/proc目錄就是一個很好的例子。看看裡面,你會發現有關機器上運行的進程的各種有趣的資訊。在某些情況,像cgroups(控制組)一樣,使用者空間可以透過寫入這些偽檔案系統下的檔案來設定參數。

當你在使用容器時,特別有趣的是,主機的/proc包含了所有有關容器化的進程的資訊。這包括環境變量,它們也保存在/proc偽檔案系統中,這意味著你的主機可以存取所有正在運行的容器的環境。如果你透過環境變數將諸如憑證或資料庫密碼這類秘密傳遞到容器中,則可能會產生安全性後果。

許多編寫常規程式的程式設計師可能不覺得他們經常使用系統呼叫。但實際上他們會經常調用,因為每天的活動例如製作檔案或更改目錄都涉及 Linux 的系統調用。

你不必是一位系統程式設計師才能享受系統呼叫的樂趣!

 


作者簡介:

Liz Rice - Liz Rice 是一位技術傳播者,也是 Aqua Security 的容器安全專家。此前,她共同創立了 Microscaling Systems,並開發了其實時伸縮引擎,以及流行的圖像元資料網站 MicroBadger.com。她擁有豐富的從網路協定和分散式系統,以及數​​位技術領域,如 VOD,音樂和 VoIP 軟體的開發、團隊和產品管理經驗。


以上是初學 Linux 系統呼叫要掌握的技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除