我正在听OS讲座,对这两个短语感到困惑。
我相信用户进程会调用系统调用来使用IO,内核会执行内核指令,而内核正在运行时,用户进程会等待IO进程完成。所以我认为第2句话一定是错误的。但是教授说,两者都是正确的。有人可以帮我理解为什么吗?
答案 0 :(得分:1)
实际上,两者有时都是正确的。
“当用户进程调用IO时,它会调用系统调用并等待直到系统调用完成”
仅当系统服务执行同步I / O时才如此。某些操作系统具有不引起等待的异步I / O调用。
“当用户进程调用系统调用时,该用户进程本身将以内核模式执行内核功能”
当系统以内核模式实现其所有系统服务时,这是正确的。某些系统具有多种模式(通常为4种),这些模式允许实现无法使系统崩溃的系统服务。
无论如何,这可能不是同步I / O系统服务调用。在这种情况下,它可能不会等待。如果您调用时间系统服务,则您的进程不太可能会等待。