2021/6/4程序员的自我修养
1.今日收获内容
《程序员的自我修养》读书笔记
进程的总体目的是希望每个进程从逻辑上都是可以独占计算机的资源,操作系统所支持的多任务功能保证了各个进程可以很好地共享CPU资源,而操作系统的IO抽象模型实现了设备的共享,所有剩下的唯一问题就是内存的分配问题。在我们编写小程序的时候就已经体验过程序所申请的内存空间过大导致程序崩溃甚至电脑死机这样的问题,比如在使用高维数组时,当维数过高并且每一维长度过大时就会导致程序崩溃。在早期的计算机中,程序是直接运行在物理内存上的,也就是说程序在运行时访问的地址都是物理地址,而面临多道程序,分时系统和多任务是,CPU的利用率会比较高,很明显的一个问题就是如何将有限的物理地址分配给多个程序使用。
直接分配有很多问题,如果地址空间不隔离的话,一些程序可能会篡改其他程序的内存,就会使其他的程序也发生崩溃,这对于需要安全稳定的计算环境的用户来说是不能容忍的,我们希望在使用的时候,如果某一个程序发生了崩溃,不要影响其他任务。而且这样会导致内存的使用效率很低,由于没有内存管理机制,监控程序就将整个程序装入内存中然后执行,这样是十分浪费的。而且在程序的编写时,内存的空闲区域是不固定的,而程序有很多地址跳转是固定的,这就产生了矛盾。
解决这些问题有很多方法,其中比较有效的就是设置中间层,也就是使用间接地址访问的方法,通过某种对应关系,把程序给出的地址看作是虚拟地址,然后我们只需要管理这写虚拟地址和物理地址的对应过程就可以实现有效的管理内存了。
2.遇到的问题
3.明天目标