为什么库函数不应该用于创建 os?
why library functions should not be used in creating an os?
我打算学习操作系统。我遇到了两个疑问。为什么我们在创建操作系统时不应该使用库函数?
它有什么缺点?
Why we should not use library functions while creating an operating system? What is the drawback in it?
这取决于你"library functions"的意思。
例如,您绝对应该 尝试使用其他人版本的 <string.h>
函数。如果你正在写一个OS,你有很多事情要做,为什么要用像strcpy
这样简单的东西重新发明轮子?
您应该使用任何可以没有依赖项的开源代码。我的意思是像 strcpy
这样没有依赖关系的简单 "leaf" 函数。如果您查看 Linux 内核源代码,您肯定会看到 memcpy
和 strlen
等标准库函数。但是您还会看到 strncpy_from_user
适用于内核中的特定用途(在本例中,将字符串从 user-space 复制到 kernel-space)。
您不应该 尝试使用(如果还不明显)的是 fopen
之类的东西。 fopen
是一些代码的包装器,这些代码对内核进行 系统调用 以处理文件的实际打开。很明显,如果您 是 内核,则不能在内核中使用它。
我打算学习操作系统。我遇到了两个疑问。为什么我们在创建操作系统时不应该使用库函数? 它有什么缺点?
Why we should not use library functions while creating an operating system? What is the drawback in it?
这取决于你"library functions"的意思。
例如,您绝对应该 尝试使用其他人版本的 <string.h>
函数。如果你正在写一个OS,你有很多事情要做,为什么要用像strcpy
这样简单的东西重新发明轮子?
您应该使用任何可以没有依赖项的开源代码。我的意思是像 strcpy
这样没有依赖关系的简单 "leaf" 函数。如果您查看 Linux 内核源代码,您肯定会看到 memcpy
和 strlen
等标准库函数。但是您还会看到 strncpy_from_user
适用于内核中的特定用途(在本例中,将字符串从 user-space 复制到 kernel-space)。
您不应该 尝试使用(如果还不明显)的是 fopen
之类的东西。 fopen
是一些代码的包装器,这些代码对内核进行 系统调用 以处理文件的实际打开。很明显,如果您 是 内核,则不能在内核中使用它。