几天前,我开始学习操作系统的概念,我已经遇到了一些问题。主要是我对系统调用非常好奇。我了解到,每个操作系统都提供了自己的API (例如Windows for Windows API、Linux for libc等)。
我开始混淆的是包装器函数。例如,Linux有一个fork()包装器函数。这是否意味着此函数中的算法根据操作系统的系统调用表执行系统调用例程?我不明白它是什么意思,它是用C编写的,这是否意味着它使用的是C标准库?或者只是C编译器?另外,为什么C编译器会编译它的标准库,即使有不同种类的编译器,比如GCC,windows,C编译器等等?我很好奇的是,C标准库函数也会调用系统调用,对吧?
我对操作系统编程很感兴趣,我想白手起家写我自己的内核。我精通C语言,还懂一点汇编。我打算买一本Andrew tanenbaum的书:"Operating systems Design and implementation“,开始读这本书。每个人都告诉我,这只是浪费时间,如果我放弃写自己的内核的想法就好了。但我只是想知道一切是如何在幕后工作的,学习编写自己的内核只是为了教育目的,我没有任何幻想,我的操作系统将是巨大的和可用的。
除了购买A.T OS Design and Implementation之外,还有什么方法可以了解OS在幕后是如何工作的?是否足以构建我自己的linux发行版?学