use*_*863 5 linux operating-system kernel system
我正在参加我的第一门操作系统课程,所以希望我在这里没有任何大的误解。
我想知道为什么 getpid() 在 Linux 中被实现为系统调用。据我了解,某些函数被制成系统调用,因为它们访问或更改操作系统可能想要保护的信息,因此它们被实现为系统调用,以便将控制权转移到内核。
但据我所知, getpid() 只是返回调用进程的进程 ID。是否存在不授予此信息许可的情况?简单地让 getpid() 成为一个普通的用户函数不是安全的吗?
谢谢您的帮助。
Getpid() 可能只是从某个位置读取,但必须有人写入该位置。为了防止任何旧进程将垃圾写入操作系统使用的位置,需要保护它免受用户模式访问。为了让应用程序访问该位置,它需要在内核模式下执行此操作。因此,它必须作为系统调用来完成。
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |