我正在实现与简单操作系统非常类似的东西,但我正在努力去掌握系统调用实际上是什么:
首先 - 进程系统哪个线程通常 *执行中断例程(系统调用内核函数) - 内核线程之一或给定时间特权和例程地址的用户空间线程?
如何在用户空间中实现系统调用机制 - 下面的任何一个大致匹配引擎盖下的内容?
实施A:
if ($this->logger->isDecorated()) {
$this->logger->write("\x0D");
}
实施B:
//equivalent to assembly
//MOV EAX sys_call_no
//INT 0x80
void* interrupt(int service, void* args)
{
return kernel::int_vector[service](args);
}
C:我根本不理解它 - 它完全不同。 答案 0 :(得分:2)
实施A通常是它的工作原理。操作系统主要仅将自己的线程用于不涉及直接响应特定进程请求的任务。当进程进行典型的系统调用时,该线程切换到内核堆栈并开始在内核上下文中运行内核代码。