zoukankan      html  css  js  c++  java
  • 程序是怎么运行起来的

      1 我们用c语言写一个exe程序,双击就可以运行,它是怎么运行起来的呢?

    实际上,我们写的exe程序保存在硬盘上,双击运行程序的时候操作系统会把保存在硬盘上的数据复制到内存。为什么?因为CPU被设计成只能从内存中读取数据和指令。

    为什么这么设计CPU?因为为了运行速度,在读写速度上,内存是远高于硬盘的,为了不拖累CPU的高速度,操作系统运行程序时先把数据复制到内存。

    2 谁把硬盘上的数据复制到内存?

    这个程序叫做加载器。Windows平台上就是Windows加载器。

    3 我的电脑内存8G,我运行了5个程序,这5个程序共需要占12G的内存空间,如果程序运行前都需要把数据加载到内存,当前程序需要的内存超出了电脑内存上限,为什么程序还是正常运行?

      这涉及到虚拟内存的概念,Windows上叫虚拟内存,Linux上叫交换空间。

    操作系统是这么做的,当程序运行需要的空间大于内存容量时,会将内存中暂时不用的数据再写回硬盘,需要这些数据时再从硬盘中读取,读取同时把另外一部分暂时不用的数据写回硬盘。

    由此可见,内存小,硬盘读取速度低都是影响电脑运行速度低的重要原因

     4 虚拟内存

      Windows上作为内存使用的一部分硬盘空间叫做虚拟内存。虚拟内存在硬盘上其实就是为一个硕大无比的文件,文件名是PageFile.Sys,通常状态下是看不到的。必须关闭资源管理器对系统文件的保护功能才能看到这个文件。虚拟内存有时候也被称为是“页面文件”就是从这个文件的文件名中来的。

  • 相关阅读:
    nginx设置缓存策略
    http缓存原理理解
    promise教程
    vue项目发布到github演示
    vue路由嵌套子路由不渲染
    hihocoder 1403 1407 1415 后缀数组*3 最长公共子串/最长不重叠重复出现的子串/最长k次重复子串
    hdu 4691 后缀数组+rmq 求子串lcp
    hdu1506+ luogu 1440 单调栈/单调队列裸题
    codeforces 873F 后缀数组+单调栈(fastio)
    HihoCoder
  • 原文地址:https://www.cnblogs.com/fengxing999/p/10209421.html
Copyright © 2011-2022 走看看