Ash*_*ban 4 unix operating-system
我正在研究测试OS(unix是我们的模型).我有以下问题:
以下哪两项不会导致用户程序停止并切换到操作系统代码?
答:程序发现错误并将其打印到屏幕上.
B.程序分配了内存,稍后将从磁盘中读取.
好吧,我有答案,但是,我不确定它们有多好.他们说答案是B.但是,B是用户使用malloc哪个是系统调用没有?分配内存不通过操作系统?为什么打印到屏幕应该需要操作系统呢?
谢谢你的帮助
malloc不是系统调用.这只是一个功能.
当你调用malloc它时检查它是否(内部)有足够的内存给你.如果是,它只返回地址 - 不需要陷入内核模式.如果它没有它,它会询问操作系统(实际上是系统调用).
根据打印的方式,也可能会或可能不会引发系统调用.例如,如果您使用stdio,则打印是用户缓冲的.这意味着,printf意味着复制到某个stdio缓冲区而没有任何实际的I/O. 但是,如果printf决定刷新,那么确实必须执行系统调用.
| 归档时间: |
|
| 查看次数: |
232 次 |
| 最近记录: |