真的有点汗颜,今天我才理解什么是系统调用。搞JAVA太久没有修身养性呀。
普通的函数调用,代码的执行还是在你的进程空间里面,CPU还在执行的你的进程。
而系统调用是CPU已经把你的进程踢出去了,把控制权交给系统内核了。因为进程都不同了,系统需要切换上下文,既寄存器内容切换。
为什么要这样做呢?
为了安全,为了稳定
系统的资源是非常敏感的,比如说吧,你到银行取现,你告诉银行你要取多少钱,银行说好,你在这里等着。我到里面去取钱来给你。银行当然不能说,好你进来,到金库里面自己拿哈。我监控你拿多少的,不要骗人哈。人都会有差错的吧,如果你一不小心拿错了呢,那银行还不完蛋。
所以呢,系统调用的设计是为了系统安全稳定起见,防止你这个进程做错了事情导致整个系统崩溃了。
普通的函数调用,代码的执行还是在你的进程空间里面,CPU还在执行的你的进程。
而系统调用是CPU已经把你的进程踢出去了,把控制权交给系统内核了。因为进程都不同了,系统需要切换上下文,既寄存器内容切换。
为什么要这样做呢?
为了安全,为了稳定
系统的资源是非常敏感的,比如说吧,你到银行取现,你告诉银行你要取多少钱,银行说好,你在这里等着。我到里面去取钱来给你。银行当然不能说,好你进来,到金库里面自己拿哈。我监控你拿多少的,不要骗人哈。人都会有差错的吧,如果你一不小心拿错了呢,那银行还不完蛋。
所以呢,系统调用的设计是为了系统安全稳定起见,防止你这个进程做错了事情导致整个系统崩溃了。