什么是内存
《操作系统的存储结构》一文讲过,内存是现代计算机系统执行的中心。内存是一个大的字节数组,大小从数十万到数十亿。每个字节都有地址。内存是个快速访问的数据仓库,并为 CPU 和 I/O 设备所共享。中央处理器在获取指令周期时从内存中读取指令,而在获取数据周期时对内存数据进行读写(在冯•诺依曼架构上)。
内存一般是 CPU 所能直接寻址和访问的、唯一的、大容量的存储器。例如,如果 CPU 需要处理磁盘数据,那么这些数据必须首先通过 CPU 产生的 I/O 调用传到内存。同样,如果 CPU 需要执行指令,那么这些指令必须在内存中。
如果一个程序需要执行,那么它必须映射到绝对地址,并且加载到内存。随着程序执行,进程可以通过产生绝对地址来访问内存的程序指令和数据。最后,程序终止,它的内存空间得以释放,这样下一个程序可以加载并得以执行。
为改进 CPU 的利用率和用户的计算机响应速度,通用计算机应在内存中保留多个程序,这就需要内存管理。内存管理的方案有许多。这些方案会有各种具体方法,所有特定算法的效率取决于特定情景。在选择某个特定系统的内存管理方案时,必须考虑许多因素,尤其是系统的硬件设计。每个算法都要求特定的硬件支持。
操作系统负责内存管理的以下活动:
内存一般是 CPU 所能直接寻址和访问的、唯一的、大容量的存储器。例如,如果 CPU 需要处理磁盘数据,那么这些数据必须首先通过 CPU 产生的 I/O 调用传到内存。同样,如果 CPU 需要执行指令,那么这些指令必须在内存中。
如果一个程序需要执行,那么它必须映射到绝对地址,并且加载到内存。随着程序执行,进程可以通过产生绝对地址来访问内存的程序指令和数据。最后,程序终止,它的内存空间得以释放,这样下一个程序可以加载并得以执行。
为改进 CPU 的利用率和用户的计算机响应速度,通用计算机应在内存中保留多个程序,这就需要内存管理。内存管理的方案有许多。这些方案会有各种具体方法,所有特定算法的效率取决于特定情景。在选择某个特定系统的内存管理方案时,必须考虑许多因素,尤其是系统的硬件设计。每个算法都要求特定的硬件支持。
操作系统负责内存管理的以下活动:
- 记录内存的哪部分在被使用以及被谁使用;
- 决定哪些进程(或其部分)会调入或调出内存;
- 根据需要分配和释放内存空间;
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算