为什么现代操作系统实现了一种调用内部函数的hirarchy? 比如在Windows中调用ReadFile函数时,你会异常调用NtReadFile。 为什么没有Windows直接调用NtReadFile?
如果操作系统直接调用内部函数会发生什么?
答案 0 :(得分:3)
当前版本的Windows基于Windows NT,它始于1989年。当时他们不知道哪些OS / API会受欢迎,因此他们设计了Windows NT以拥有通用的本机API({ {1}})以及将调用转换为本机API的多个子系统(Windows,POSIX,OS / 2)。
1989年,Windows并不受欢迎,设计人员希望OS/2成为主要的子系统。仅在微软离开与IBM的OS / 2合作伙伴关系并且Windows 3.0于1990年问世并且变得非常受欢迎之后,他们决定制作一个Windows子系统。因此,创建Win32子系统是为了将NtReadFile
之类的调用转换为ReadFile
。
答案 1 :(得分:2)
解耦和传统。你必须记住,NT最初设计为microkernel,它支持多个API,默认API当然是已经建立的WIN32 API。
如果直接致电NtReadFile
,则不再使用WIN32 API。