关于c程序的执行,我知道编译器将代码转换成机器语言,然后是executed.But,我想知道操作系统提供了哪些服务来实现这一点。如果我正在使用fopen函数,请解释一下操作系统是如何处理它的。将文件从硬盘读取到memory...etc中。对于所有这些操作,哪些系统调用是内部调用的?如何将显式函数(如fopen、printf )转换为系统调用?如果可以在上下文中查看c++编程的内部系统调用,请让我知道要遵循的路径来查看它们?
发布于 2014-10-18 10:25:15
语言通常有自己的API作为运行时支持的一部分(例如C标准库中的fopen() )。这些都是语言的一部分,而不是操作系统本身的一部分。
该语言的运行时使用操作系统的低级API。例如,fopen()可能使用内核API的open()函数(Linux),但它可能是DLL中的createfile()函数,而不是内核中的createfile()函数(Windows)。在某些情况下,它不是那样的,更像是发送到不同进程的消息(微内核常见)。
不管它在哪里结束(以及如何结束),它可能会找到自己的方式到某种类型的“虚拟文件系统”层,并且取决于它是否在VFS的缓存中,它可能被或不可能被转发到负责处理文件系统的代码,该代码可能转发给某种类型的存储设备驱动程序(例如USB闪存设备驱动程序),而后者又可能将其转发到另一个设备驱动程序(例如USB控制器驱动程序)。
大多数情况下,对于不同的开放源码软件,它可能是非常不同的,所以没有一个单一的答案是正确的,对所有他们。
https://stackoverflow.com/questions/26438164
复制相似问题