系统调用及损耗

系统调用的根本目的是保护操作系统所维护的共享资源;

 

系统调用

程序运行的时候,本身是没有权限访问多少系统资源的。系统资源有限,如果操作系统不进行控制,那么各个程序难免会产生冲突。线程操作系统都将可能产生冲突的系统资源保护起来,阻止程序直接访问。比如文件、网络、IO、各种设备等。

比如无论在Windows还是Linux中,程序员都不能直接去访问硬盘的某扇区上的数据,必须通过文件系统,也不能擅自修改任意文件。所有这些操作必须经过操作系统规定的方式进行。比如用fopen打开没有权限的文件就会失败。



作者:纸简书生
链接:https://www.jianshu.com/p/4b9c40e6b8ae
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

(1) 内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据。不管是内核空间还是用户空间,它们都处于虚拟空间中。 

(2) Linux使用两级保护机制:0级供内核使用,3级供用户程序使用。

https://www.cnblogs.com/feng9exe/p/8179538.html

 

 

参考:《Understanding Unix/Linux Programming: A Guide to Theory and Practice》之2.7

用户进程位于用户空间,内核进程位于系统空间,磁盘只能被内核直接访问。

 

        在运行内核代码时,CPU工作在管理员模式,这对应于一些特殊的堆栈和内存环境,必须在系统调用时切换到这个环境中。系统调用结束后,CPU要切换到用户模式,又要将堆栈和内存环境恢复到用户模式的状态,这种内存环境的切换要耗费很多时间。

 

        因此,系统调用所耗费的时间主要在两次环境切换上,如果用户程序中普通代码和系统调用交替出现,那么将产生很大的环境切换的开销。

--------------------- 

作者:jubincn 

来源:CSDN 

原文:https://blog.csdn.net/jubincn/article/details/6989716 

版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-04-19 19:33  zzfx  阅读(319)  评论(0编辑  收藏  举报