Linux系统初学者指南,观点|Linux 系统调用的初学者指南
在過去的幾年中,我一直在做大量容器相關(guān)的工作。先前,我看到 Julien Friedman 的一個很棒的演講,它用幾行 Go 語言寫了一個容器框架。這讓我突然了解到容器只是一個受限的 Linux 進程中的機器。
構(gòu)建這個受限視圖涉及到 Golang 系統(tǒng)調(diào)用包中的很多調(diào)用。最初,我只是用到了表面的那些,但過了一段時間,我想剝下洋蔥的下一層,看看這些系統(tǒng)調(diào)用是什么,以及它們的工作原理。我將在 OSCON 的演講中分享我所學(xué)到的東西。
顧名思義,syscalls 即系統(tǒng)調(diào)用,它們是你從用戶空間請求進入 Linux 內(nèi)核的方式。內(nèi)核為你做一些工作,例如創(chuàng)建一個進程,然后再回到用戶空間。
有一個常見的機制使所有的系統(tǒng)調(diào)用轉(zhuǎn)換到內(nèi)核,這是由 libc 庫處理的。 用戶空間代碼設(shè)置一些寄存器,包括其想要的系統(tǒng)調(diào)用的 ID 以及需要傳遞給系統(tǒng)調(diào)用的所有參數(shù)。它觸發(fā)一個 “陷阱” 將控制轉(zhuǎn)換到內(nèi)核。
這就是用戶空間代碼如何向內(nèi)核請求的,而 Linux 也有一個偽文件系統(tǒng),它允許內(nèi)核將信息傳遞給用戶空間,其內(nèi)容看起來像普通的目錄和文件。
/proc 目錄是一個很好的例子。看看里面,你會發(fā)現(xiàn)有關(guān)機器上運行的進程的各種有趣的信息。在某些情況,像 cgroups(控制組)那樣,用戶空間可以通過寫入這些偽文件系統(tǒng)下的文件來配置參數(shù)。
當(dāng)你在使用容器時,特別有趣的是,主機的 /proc 包含了所有有關(guān)容器化的進程的信息。這包括環(huán)境變量,它們也保存在 /proc 偽文件系統(tǒng)中,這意味著你的主機可以訪問所有正在運行的容器的環(huán)境。如果你通過環(huán)境變量將諸如憑證或數(shù)據(jù)庫密碼這類秘密傳遞到容器中,則可能會產(chǎn)生安全性后果。
許多編寫常規(guī)程序的程序員可能不覺得他們經(jīng)常使用系統(tǒng)調(diào)用。但實際上他們會經(jīng)常調(diào)用,因為每天的活動比如制作文件或者更改目錄都涉及 Linux 的系統(tǒng)調(diào)用。
你不必是一位系統(tǒng)程序員才能享受系統(tǒng)調(diào)用的樂趣!
如果你想要了解更多,Liz 會在 Austin,Texas 舉辦的 OSCON 2017 上演講 Linux 系統(tǒng)調(diào)用的初學(xué)者指南。
(題圖:?opensource.com)
作者簡介:
Liz Rice - Liz Rice 是一位技術(shù)傳播者,也是 Aqua Security 的容器安全專家。此前,她共同創(chuàng)立了 Microscaling Systems,并開發(fā)了其實時伸縮引擎,以及流行的圖像元數(shù)據(jù)網(wǎng)站 MicroBadger.com。她擁有豐富的從網(wǎng)絡(luò)協(xié)議和分布式系統(tǒng),以及數(shù)字技術(shù)領(lǐng)域,如 VOD,音樂和 VoIP 軟件的開發(fā)、團隊和產(chǎn)品管理經(jīng)驗。
本文由 LCTT 原創(chuàng)編譯,Linux中國 榮譽推出
總結(jié)
以上是生活随笔為你收集整理的Linux系统初学者指南,观点|Linux 系统调用的初学者指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言EOF0x99,C语言选择题99道
- 下一篇: linux 重读环境变量,关于linux