zoukankan      html  css  js  c++  java
  • 系统调用及损耗

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

    系统调用

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

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

  • 相关阅读:
    UCML破解
    UCML快速开发平台学习1-UCML环境安装
    window系统安装jdk,jre
    解决Android报错No resource found that matches the given name (at 'text' with value '@string/hello').
    es6小技巧整理
    如何将项目推到github上面
    如何将时间格式化
    uni-app 页面跳转的两种方法
    layui表单校验及监听复选框选中状态的坑
    使用nvm管理多个不同版本的nodeJS之安装成功nodeJs之后使用npm报错的问题
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10738362.html
Copyright © 2011-2022 走看看