0

We all know that when a C program executes, there are lots of plumbing jobs done by the OS under the hood, before entering main, such as allocating a stack, initiating some resources, loading the binary,etc.

So intuitively I regard these jobs part of the OS. However, the fact is that all these jobs are in an important module called CRT(C runtime library), like glibc in linux, or msvcrt.dll in Windows. I wanna know its whereforce.

4

2 回答 2

0

重要的是要了解为什么操作系统中存在用户模式和内核模式的分离。简而言之,它提高了系统的稳定性。C-Runtime 库只是一个利用操作系统服务的库。它与进程一起加载。我们的程序大多是用户模式程序(与驱动程序和其他操作系统核心服务不同)。资源分配由其他操作系统服务完成,这些库是访问它们的安全方式!

于 2012-12-22T09:59:42.563 回答
0

无论是 C 程序、Java 还是 PHP 程序,都可以完成这些例行进程创建任务。

另外,用 C(甚至 C)以外的语言编写的程序没有必要使用 C 标准库。因此,我们不能将所有这些常规任务放在 C 标准库中。

例如,在 Linux 系统中,“程序加载器”和“动态链接器”不是 gnu c 库的一部分。它们是单独的“binutils”包的一部分。

这个链接虽然有点过时,但会为您提供大量关于将程序编写到正在运行的进程的过程的信息。它使用 gcc/Linux,但主要任务在其他平台上是相似的。

编辑 /* 动态链接器是 GLIBC 的一部分...感谢employeesrussian */

于 2012-12-22T10:22:22.523 回答