内存管理

内存管理概述

CPU能直接访问的通用存储只有内存和处理器内置的寄存器,进程要想被执行,首先要把执行过程中所需要的数据加载到内存中。

我们先从简单的入手,一步步深入,看看如何设计一个安全高效的内存管理系统。

  • 先考虑单道程序系统,如何实现内存管理?

    这个简单,我们可以直接把程序全部加载到内存中,CPU要用到什么数据,直接拿地址去访问内存就好了。

  • 这个方案非常简单,在某些场景下是可行的。但是如果内存空间有限,放不下整个进程怎么办呢?

    略加思考,我们就能想到动态加载技术!程序运行过程中并不需要访问程序的所有代码和数据,我们只需要把一部分代码和数据加载到内存,然后程序用到什么就加载什么,如果内存不够了,把暂时用不到的数据先踢出内存,腾出一些空间给新加载进来的数据。

  • 前面的场景中,考虑的都是单道程序,如果操作系统中同时运行多个进程呢?

    唉呀,有多个程序同时运行就不太好办了!此时,我们不仅要把内存划分成多个区域,每个进程分配一个独立的区域,还要保证每个进程不能越界访问其他进程的内存空间。再考虑动态加载过程中可能存在的问题,那就更麻烦了!此时就需要用到虚拟内存技术了。

下面我们详细介绍下在操作系统的发展历程中,用到的4种内存管理机制。

阅读更多...

进程与线程

本文内容基本来自小林coding

什么是进程

进程,简单来说就是“一个运行中的程序”。为什么会出现“进程”这个概念呢?

早期的计算机系统一次只允许执行一个程序,这个程序拥有系统的所有资源。但是现代计算机系统允许将多个程序调入内存并发执行,这就要求对各种程序提供更严格的控制和更好的划分,从而产生了“进程”的概念,即执行中的程序。系统可以看作由一组进程组成:操作系统进程执行系统代码,用户进程执行用户代码。通过CPU多路复用,所有进程可以并发执行。通过进程之间的切换,操作系统能使计算机更为高效。

阅读更多...

HTTP协议

HTTP协议概述

HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol), 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。这其实是一种懒政,有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。

阅读更多...
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信