当前位置: 代码迷 >> 汇编语言 >> 操作系统API的兑现原理
  详细解决方案

操作系统API的兑现原理

热度:2739   发布时间:2013-02-26 00:00:00.0
操作系统API的实现原理
  操作系统也是一个进程,用户程序调用了API,不是跟函数调用一样吧,我觉得应该是转到了操作系统。如果是转到操作系统执行,这个用户程序调用操作系统是如何实现的?
 另外,操作系统是一个进程,其中包含了进程调度功能,他能调度其他用户进程。可是谁来调度执行操作系统呢?

------解决方案--------------------------------------------------------
系统调用一般要采用cpu内核模式切换,也就是书上讲的管态和用户态。

谁调度执行操作系统? 回去看书吧

------解决方案--------------------------------------------------------
引用:
操作系统也是一个进程,用户程序调用了API,不是跟函数调用一样吧,我觉得应该是转到了操作系统。如果是转到操作系统执行,这个用户程序调用操作系统是如何实现的?
 另外,操作系统是一个进程,其中包含了进程调度功能,他能调度其他用户进程。可是谁来调度执行操作系统呢?

其实操作系统就是一个while,哈哈
你想想哈。
bool exit=false;
while(exit)//操作系统代码
{

操作系统 控制进程代码....(包括了控制整个操作系统的代码 比如吧exit赋值为true的话那整个操作系统的while就退出了。。。当然还有控制其他进程的代码,)

其他进程代码。。。

}
当然,上面的只是一个很简单的比方。




------解决方案--------------------------------------------------------
引用:
我只是想了解系统调用的实现原理,操作系统不必划分层次,这个功能还是可以实现的吧。


这个我也说不好,写过ARM和单片机上的简单操作系统,但是也就只是任务调度和任务同步,顶多再加个简单的内存管理。API这个一般是需要文件系统的。所以,我个人感觉不划分层次不是不能实现,就是把这些分模块的东西揉到一起还是怎么样,但是写起来维护起来就极其麻烦了。

任务调度和任务同步应该是最底层的,然后是内存管理,然后是文件系统。API实现应该算是文件系统层的,这里都有3层了。不分层要自己完全重写一定麻烦。不知道你到底是要实现什么?

对于那些不需要软中断实现的API,一般来说就很简单了,它不需要切换进入内核态。那些用软中断来做的就需要用 int n的软中断来实现了,n是软中断号,在这个流程中软中断相当于就是一个接口了。进入软中断处理流程后就算是内核态了,后面有一些就和驱动、系统服务啥的有关系了,这块就比较难了。一般学习系统调用的话,知道这个流程,原理上就差不多了,然后实战上,需要知道怎么利用软中断命令的接口来实现自己的API功能就差不多了,如果还要深入到内核态下继续实现底层的功能,就很困难了,也没有必要了。

以上个人观点仅供参考,有一些也不敢确认一定是对的。希望对你有用。
  相关解决方案