计算机内存管理基础知识
- 格式:docx
- 大小:117.48 KB
- 文档页数:9
计算机操作系统基础知识计算机操作系统是一种控制和管理计算机硬件和软件资源的软件系统。
它为应用程序提供了一个运行环境,并且对硬件资源进行了有效地管理和分配。
计算机操作系统的基础知识对于理解计算机系统的工作原理和提高计算机操作技能非常重要。
本文将介绍计算机操作系统的一些基础知识。
一、操作系统的定义与功能操作系统是计算机系统中的一种软件,它负责管理计算机硬件和软件资源,并为应用程序提供一个运行环境。
操作系统的主要功能包括进程管理、文件管理、内存管理、设备管理和用户界面等。
1. 进程管理:进程是指计算机中正在运行的一个程序。
操作系统负责对进程的创建、调度和终止进行管理,以保证系统的高效运行。
2. 文件管理:文件是计算机存储数据的一种方式。
操作系统负责对文件的创建、读取、写入和删除进行管理,以便用户能够方便地访问和管理文件。
3. 内存管理:内存是计算机用于存储程序和数据的地方。
操作系统负责对内存的分配和回收进行管理,以提供给应用程序足够的内存空间。
4. 设备管理:设备管理是指对计算机硬件设备的管理和控制。
操作系统负责对各种输入输出设备的分配和控制,以满足应用程序对设备的需求。
5. 用户界面:用户界面是用户与计算机系统进行交互的方式。
操作系统提供了命令行界面和图形界面两种方式,使用户能够方便地操作计算机。
二、操作系统的类型根据操作系统的特点和用途,可以将操作系统分为主机操作系统、网络操作系统和嵌入式操作系统等几种类型。
1. 主机操作系统:主机操作系统是指安装在计算机主机上的操作系统,它能够管理主机的硬件和软件资源。
常见的主机操作系统有Windows、Linux和macOS等。
2. 网络操作系统:网络操作系统是指用于管理网络服务器和网络设备的操作系统。
它提供了一些特定的功能,如文件共享、打印服务和网络安全等。
常见的网络操作系统有Windows Server和Linux等。
3. 嵌入式操作系统:嵌入式操作系统是指安装在嵌入式设备中的操作系统,它通常具有一定的实时性和可靠性。
内存硬件基础知识内存条对于电脑来说是至关重要的,电脑中有较大的内存,就可以让我们流畅的进行媒体播放,畅快的游戏以及高效的工作等。
下面就让小编带你去看看关于内存硬件基础知识,希望能帮助到大家!探讨内存基础知识和如何选择内存条内存也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,与硬盘等外部存储器交换的数据。
简单的说就是在操作系统的文件会储存在硬盘内存,当操作系统运作起来的时候会从硬盘内面读取数据储存在内存,CPU从内存读取数据,CPU不会从硬盘去读取数据。
操作系统或者应用软件在运行的时候都会在内存中运作,当需要读取数据或者持久化数据的时候才会从硬盘读取到内存或者从内存储存到硬盘。
有人会问为什么CPU不从硬盘去读取数据而跑去内存读取数据?很多人可能会说因为硬盘读写速度太慢而内存的读写的很快,所以CPU选择从内存读取数据。
内存介中硬盘和CPU之间做一个加速缓冲。
硬盘的速度普通机械硬盘的速度大概在是100M/s-200M/S的区间。
SSD硬盘的速度sata线路大概是500M/S的速度。
SSD硬盘的速度是nvme协议大概是2G/S-3G/s的区间。
内存的速率DDR1 大概是2G/S-3G/S的区间。
DDR2 大概是5G/S的左右。
DDR3 大概是8G/S-15G/S的区间。
DDR4 大概是15G/S-20G/S的区间。
当然内存的读写速度和频率有关,频率越高读写速率越大。
当然上面的数据是基于顺序读取,如果是随机读写则性能更是会下降。
可以看到内存的读写速率远远高于硬盘的读写速率。
那为什么内存不代替硬盘昵?1 成本不一样。
内存单价成本高,普通硬盘可以大规模储存海量数据而价格更便宜。
2 工作原理不一样。
内存是半导体属于易失性存储器只有通电的情况可以工作无法持久化数据。
硬盘是有介质的储存可以断电之后永久储存数据。
非易失性的RAM也是目前的研究方向,但是目前来看机械硬盘或者SSD硬盘依然的民用的首选储存介质。
计算机基础知识点归纳一、计算机硬件部分1. 主板:计算机的核心部件,连接其他硬件设备2. 中央处理器(CPU):执行指令和进行运算3. 内存:存储数据和指令,提供临时存储空间4. 硬盘:永久存储数据和程序5. 显卡:控制显示器的显示输出6. 输入设备:键盘、鼠标、摄像头等,用于向计算机输入数据和指令7. 输出设备:显示器、打印机、音箱等,用于将计算机处理后的结果输出8. 硬件接口:连接计算机各个硬件设备之间的通信通道,如USB、HDMI等接口二、计算机操作系统1. 操作系统的概念和作用:控制和管理计算机硬件和软件资源,提供用户与计算机交互的环境2. 常见操作系统:Windows、Linux、Unix、macOS等3. 操作系统的功能:进程管理、文件管理、内存管理、设备管理、用户界面等4. 用户界面类型:命令行界面(CLI)、图形界面(GUI)等三、计算机网络1. 网络的概念和作用:将多台计算机连接起来,实现数据和信息的传输和共享2. 网络的分类:局域网(LAN)、广域网(WAN)、互联网等3. 网络协议:TCP/IP协议、HTTP协议、DNS协议等4. 网络拓扑结构:总线型、星型、环型、网状型等5. 网络设备:路由器、交换机、网卡等四、计算机编程1. 编程语言的概念和作用:用于编写计算机程序的一套规范和约定2. 常见编程语言:C、C++、Java、Python、JavaScript等3. 程序的基本组成部分:变量、数据类型、运算符、控制结构、函数等4. 程序开发的过程:分析问题、设计算法、编写代码、测试和调试、发布和维护5. 面向对象编程(OOP)的概念和特点:封装、继承、多态等五、数据库1. 数据库的概念和作用:用于存储和管理大量结构化数据的系统2. 关系型数据库和非关系型数据库的区别:表格形式存储数据 vs 非结构化或半结构化存储数据3. 常见关系型数据库:MySQL、Oracle、SQL Server等4. SQL语言:用于操作关系型数据库的标准化查询语言5. 数据库的设计和优化:表结构设计、索引设计、查询优化等六、算法和数据结构1. 算法的概念和作用:解决问题的一系列步骤和规则2. 常见算法:排序算法、查找算法、图算法、动态规划算法等3. 数据结构的概念和作用:组织和存储数据的方式和结构4. 常见数据结构:数组、链表、栈、队列、树、图等5. 算法和数据结构的分析和优化:时间复杂度、空间复杂度、算法改进等以上是计算机基础知识点的归纳总结,涵盖了计算机硬件、操作系统、网络、编程、数据库、算法和数据结构等方面的内容。
计算机存储器层次结构基础知识详解计算机存储器层次结构是指计算机内部存储器的层级结构,主要由寄存器、高速缓存、主存和辅助存储器等组成。
每一层存储器都有其独特的特点和作用,在计算机运行过程中发挥不同的作用。
本文将对计算机存储器层次结构的基础知识进行详解。
一、寄存器寄存器是计算机存储器层次结构中最高速的存储器,位于CPU内部,用于存放指令和数据。
寄存器拥有极快的读写速度,可以在一个CPU周期内完成读写操作。
常用的寄存器有通用寄存器、指令寄存器、程序计数器等。
寄存器的容量有限,通常只能存储少量的数据。
但是由于其速度快、响应时间低,因此经常被用于存放频繁使用的数据和指令,以提高计算机的执行效率。
二、高速缓存高速缓存是位于CPU和主存之间的一层存储器,用于存放最近经常访问的数据和指令。
高速缓存的容量较小,但读取速度非常快,可以减少CPU等待数据的时间,提高计算机的运行速度。
高速缓存采用了一种称为缓存替换算法的方法来管理数据的存储和替换。
常见的缓存替换算法有最近最少使用(LRU)算法和先进先出(FIFO)算法等。
这些算法能够根据数据的访问模式,选择性地保留和替换缓存中的数据,以提高缓存的命中率。
三、主存主存是计算机存储器层次结构中容量最大的存储器,用于存放程序和数据。
主存的容量通常以GB(千兆字节)为单位,可以存储大量的数据和指令。
主存中的数据和指令需要经过CPU的请求来进行读写操作。
由于主存的读写速度较慢,因此常常需要高速缓存来缓解CPU等待数据的时间。
同时,主存采用了一种称为虚拟内存的技术,能够将部分主存的内容存储到磁盘等辅助存储器中,以扩大主存的容量。
四、辅助存储器辅助存储器是计算机存储器层次结构中容量最大,但读写速度较慢的一层存储器。
辅助存储器包括硬盘、固态硬盘(SSD)、光盘、磁带等。
辅助存储器主要用于长期存储计算机的程序和数据,可以存储大量的信息。
但与主存相比,辅助存储器的读写速度较慢,需要较长的时间来读取或写入数据。
内存颗粒基础知识
内存颗粒,也被称为内存芯片,是计算机内存储器的一部分,主要用于存储和访问数据。
以下是一些关于内存颗粒的基础知识:
1. 容量:内存颗粒可以存储的数据量通常以位(bit)或字节(byte)为单位。
内存颗粒的容量决定了计算机系统可以存储和处理的数据量。
2. 速度:内存颗粒的访问速度非常快,可以在纳秒级别完成数据的读取和写入操作。
内存颗粒的速度对计算机系统的性能有着重要影响,较高的速度可以提高数据访问效率。
3. 可靠性:内存颗粒需要具备良好的可靠性,以确保数据的安全存储和正确读取。
现代内存颗粒通常采用错误检测和纠正码(Error Detection and Correction Code)等技术来提高数据可靠性。
4. 寿命:内存颗粒具有一定的使用寿命,经过长时间使用后可能会出现故障或损坏。
因此,合理管理和维护内存颗粒是确保计算机系统稳定运行的重要任务。
5. 类型:内存颗粒有多种类型,包括DRAM、SRAM、SDRAM、DDR、DDR2、DDR3、DDR4等。
不同类型的内存颗粒具有不同的特性和应用场景。
6. 生产厂家:主要的内存颗粒生产厂家包括三星、海力士、镁光等。
这些厂家生产不同型号和规格的内存颗粒,以满足不同计算机系统的需求。
以上是关于内存颗粒的基础知识,如需了解更多内容,建议咨询专业技术人员或查阅相关书籍文献。
Windows系统内存管理技巧作为一款广泛使用的操作系统,Windows在内存管理方面拥有许多技巧,可以帮助提升系统的性能和稳定性。
本文将介绍一些Windows系统内存管理的技巧,旨在帮助读者更好地利用系统资源,优化计算体验。
一、了解内存管理基础知识在探索Windows系统内存管理技巧之前,首先需要了解一些基础知识。
内存是计算机中的重要组成部分,用于存储运行中的程序和数据。
Windows系统使用虚拟内存管理技术,将硬盘空间用作内存扩展,以满足程序的需求。
理解内存和虚拟内存的概念,对于更好地管理Windows系统内存至关重要。
二、合理调整虚拟内存设置虚拟内存是一项重要的内存管理技术,可以有效扩展系统内存。
Windows系统中,虚拟内存的大小可以通过调整页面文件的设置进行管理。
默认情况下,系统会自动管理虚拟内存的大小,但用户可以根据自己的需求进行手动设置。
当系统出现内存不足的情况时,可以适当增加虚拟内存的大小来解决问题。
打开“控制面板”-“系统和安全”-“系统”,点击“高级系统设置”,在“性能”选项卡中的“设置”中找到“高级”选项卡,点击“更改”按钮,即可对虚拟内存进行设置。
三、优化内存使用除了调整虚拟内存设置,还可以通过一些优化手段来改善Windows系统的内存使用情况。
以下是一些常用的内存优化技巧:1. 关闭不必要的后台应用程序和进程:在任务管理器中可以查看当前正在运行的应用程序和进程。
关闭不必要的后台应用程序和进程,可以释放一部分内存资源。
2. 优化启动项:在系统启动时,有许多应用程序会自动启动并占用内存。
通过管理启动项,可以禁用一些不必要的自启动程序,提升系统的启动速度并释放内存。
3. 清理垃圾文件:定期清理临时文件、缓存文件和回收站中的垃圾文件,可以释放磁盘空间和一部分内存。
4. 使用高效的软件和浏览器:一些软件和浏览器可能会占用较多的内存资源。
选择使用较为高效的软件和浏览器,可以减少内存的占用。
计算机存储技术基础知识试题及答案解析计算机存储技术基础知识试题及答案解析一、单项选择题1. 在计算机存储器中,RAM 指的是:A. 随机访问存储器B. 只读存储器C. 缓存存储器D. 数据存储器答案:A. 随机访问存储器解析:RAM(Random Access Memory)是指计算机中用于临时存储数据的一种随机访问存储器。
它可以按照任意顺序存取数据,且可读写。
因为其读写操作的快速和随机访问特性,RAM通常作为计算机主存储器使用。
2. 下列关于硬盘的说法中,正确的是:A. 硬盘属于主存储器B. 硬盘属于辅助存储器C. 硬盘属于高速缓存D. 硬盘属于内存储器答案:B. 硬盘属于辅助存储器解析:硬盘是一种常见的计算机辅助存储器,用于长期存储和读取数据。
与主存储器(主存)相比,硬盘的容量更大,但读写速度较慢。
硬盘通常用于存储操作系统、应用程序和用户数据等。
3. 下列存储器中,读写速度最快的是:A. 硬盘B. 光盘C. 固态硬盘D. U盘答案:C. 固态硬盘解析:固态硬盘(Solid State Drive,SSD)是一种基于闪存技术的存储设备,具有非常高的读写速度。
相比传统的硬盘和光盘,固态硬盘具有更低的访问延迟和更快的数据传输速度。
4. 下列关于缓存技术的说法中,错误的是:A. 缓存可以提高数据访问速度B. 缓存一般位于存储器和CPU之间C. 缓存的容量一般比主存小D. 缓存的读写速度与主存相同答案:D. 缓存的读写速度与主存相同解析:缓存是一种用于提高数据访问速度的技术,通过临时存储常用的数据项,减少对主存储器的访问次数。
缓存一般位于存储器和CPU之间,容量较小,但读写速度比主存快,可以加速数据的读取和写入。
5. 下列存储器中,可以被电脑直接访问的是:A. 光盘B. 硬盘C. 内存D. U盘答案:C. 内存解析:内存(Memory)是计算机中用于临时存储数据的一种存储器。
CPU可以直接访问内存中的数据,随时进行读写操作。
计算机应用基础知识点汇总计算机应用基础知识点是计算机科学与技术领域的基础内容,对于每一个计算机从业者来说都是必修的学习内容。
以下是一些常见的计算机应用基础知识点的汇总,旨在帮助读者更好地掌握和理解这些知识。
一、计算机硬件知识1.中央处理器(CPU):负责执行计算机指令,是计算机系统的核心部件,主要由控制器和算术逻辑单元组成。
2.内存:计算机的主要存储器件,包括随机存取存储器(RAM)和只读存储器(ROM)。
3.硬盘:计算机的主要外部存储设备,用于长期存储数据。
4.输入设备:如键盘、鼠标、扫描仪等,用于向计算机输入数据和指令。
5.输出设备:如显示器、打印机、投影仪等,用于向用户显示计算机处理结果。
6.主板:计算机内部连接所有硬件设备的电路板,是计算机各部件协同工作的基础。
二、操作系统知识1.操作系统的概念和作用:操作系统是计算机系统中的核心软件,负责管理计算机硬件和软件资源,提供给用户一个友好、高效的工作环境。
2.常见操作系统:如Windows、Mac OS、Linux等,了解它们的特点和应用场景。
3.文件管理:包括文件的创建、修改、删除等操作,以及文件的存储和组织方式。
4.进程管理:了解进程的概念、进程间的通信方式,以及进程调度算法等。
5.内存管理:包括内存的分区方式、地址映射、虚拟内存等内容。
三、网络基础知识1.网络的概念和分类:了解计算机网络的基本概念,如局域网、广域网等。
2.TCP/IP协议:TCP/IP是互联网通信的核心协议,包括IP地址分配、数据传输等内容。
3.网络安全:了解网络攻击方式和防御策略,如防火墙、加密技术等。
4.网络设备:如路由器、交换机等,了解它们的功能和作用。
5.网络应用:如电子邮件、文件传输协议(FTP)、远程登录协议(Telnet)等。
四、数据库基础知识1.数据库的概念:了解数据库的基本概念、特点和应用。
2.数据模型:如层次模型、网络模型、关系模型等,了解它们之间的区别和联系。
计算机基础知识100题及答案1. 什么是计算机的硬件?计算机的硬件包括了所有可触摸的零部件,例如中央处理器(CPU)、内存(RAM)、硬盘、显示器、键盘、鼠标等。
2. 什么是计算机的软件?计算机的软件是指安装在计算机硬件上的程序或数据,包括操作系统、应用程序、驱动程序等。
3. 什么是操作系统?操作系统是计算机系统的核心软件,负责管理计算机的硬件和软件资源,提供用户与计算机之间的接口。
4. 什么是二进制?二进制是一种数制,只包含0和1两个数字,用于表示计算机中的数据和指令。
5. 什么是字节(byte)?字节是计算机中最基本的存储单位,一字节等于8个二进制位。
6. 什么是存储器?存储器是计算机中用于存储数据和指令的地方,包括内存和硬盘等。
7. 什么是中央处理器(CPU)?中央处理器是计算机中的核心部件,负责执行计算机指令和进行数据处理任务。
8. 什么是网址(URL)?网址是用于定位互联网上资源的地址,通常以http://或https://开头。
9. 什么是浏览器?浏览器是一种用于访问互联网资源的软件,例如Google Chrome、Mozilla Firefox等。
10. 什么是计算机网络?计算机网络是指多台计算机通过通信设备连接起来,共享资源和信息的系统。
11. 什么是IP地址?IP地址是计算机在网络中的唯一标识,用于进行网络通信。
12. 什么是云计算?云计算是一种基于互联网的计算模式,通过远程服务器提供计算资源和服务。
13. 什么是数据库?数据库是用于存储和管理数据的系统,常用的数据库软件包括MySQL、Oracle等。
14. 什么是编程语言?编程语言是一种用于编写计算机程序的语言,常见的编程语言有C、Java、Python等。
15. 什么是算法?算法是解决问题的步骤和方法,是计算机程序的核心。
16. 什么是文件格式?文件格式是指文件中数据的组织方式和存储方式,常见的文件格式有txt、jpg、mp3等。
存储基础知识试题及答案一、单项选择题(每题2分,共20分)1. 计算机存储器中,RAM代表什么?A. 随机存取存储器B. 只读存储器C. 可编程只读存储器D. 硬盘存储器答案:A2. 在计算机系统中,哪个部件负责将数据从硬盘传输到RAM?A. CPUB. 内存控制器C. 硬盘控制器D. 输入/输出控制器答案:B3. 以下哪种类型的存储器是易失性的?A. ROMB. EPROMC. SRAMD. 硬盘答案:C4. 计算机启动时,BIOS存储在哪种类型的存储器中?A. RAMB. ROMC. SRAMD. 硬盘5. 计算机中的高速缓存(Cache)位于何处?A. CPU内部B. 主板C. RAM内部D. 硬盘答案:A6. 以下哪种类型的存储器是永久性的?A. RAMB. ROMC. SRAMD. 硬盘答案:B7. 计算机存储器的地址空间是指什么?A. 存储器的物理大小B. 存储器的逻辑大小C. 存储器的访问速度D. 存储器的接口类型答案:B8. 计算机中,字节(Byte)通常由多少位(bit)组成?A. 4B. 8C. 16D. 32答案:B9. 以下哪种类型的存储器通常用于存储操作系统?B. ROMC. SRAMD. 硬盘答案:D10. 计算机中的虚拟内存是指什么?A. 物理内存B. 硬盘上的一部分空间C. 内存条D. 只读存储器答案:B二、多项选择题(每题3分,共15分)1. 以下哪些是计算机存储器的类型?A. RAMB. ROMC. SRAMD. DRAM答案:ABCD2. 计算机存储器的层次结构包括哪些?A. 寄存器B. 缓存C. 主存储器D. 辅助存储器答案:ABCD3. 以下哪些因素会影响计算机存储器的性能?A. 存储器的容量B. 存储器的访问速度C. 存储器的类型D. 存储器的成本答案:ABC4. 计算机存储器的哪些特性是重要的?A. 容量B. 速度C. 可靠性D. 成本答案:ABCD5. 以下哪些是计算机存储器的易失性特点?A. 当电源关闭时,数据会丢失B. 当电源关闭时,数据不会丢失C. 数据可以在没有电源的情况下长期保存D. 数据只能在有电源的情况下保存答案:AD三、判断题(每题1分,共10分)1. 计算机中的RAM是易失性的存储器。
计算机内存管理基础知识一、前言学妹刚上大学,问我计算机内存知识需要了解么?我当场就是傻瓜警告,于是就有了这篇文章。
为什么要去了解内存知识?因为它是计算机操作系统中的核心功能之一,各高级语言在进行内存的使用和管理上,无一不依托于此底层实现,比如我们熟悉的Java内存模型。
最近几篇文章学习操作系统的内存管理后,喜欢底层的同学可以去学习CPU结构、机器语言指令和程序执行相关的知识,而看重实用性的同学后续学习多进程多线程和数据一致性时,可以有更深刻的理解。
二、冯•诺伊曼结构1、早期计算机结构在冯•诺依曼结构提出之前的计算机,是一种计算机只能完成一种功能,编辑好的程序是直接集成在计算机电路中,例如一个计算器仅有固定的数学计算程序,它不能拿来当作文字处理软件,更不能拿来玩游戏。
若想要改变此机器的程序,你必须更改线路、更改结构甚至重新设计此计算机。
简单来说,早期的计算机是来执行一个事先集成在电路板上的某一特定的程序,一旦需要修改程序功能,就要重新组装电路板,所以早期的计算机程序是硬件化的。
2、理论提出1945年,冯•诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机Mark I和ENIAC,在使用Mark I和ENIAC的过程中,他意识到了存储程序的重要性,从而提出了“存储程序”的计算机设计理念,即将计算机指令进行编码后存储在计算机的存储器中,需要的时候可以顺序地执行程序代码,从而控制计算机运行,这就是冯.诺依曼计算机体系的开端。
这是对计算机发展有深刻意义的重要理论,从此我们开始将程序和数据一样看待,程序也在存储器中读取,这样计算机就可以不单单只能运行事先编辑集成在电路板上的程序了,程序由此脱离硬件变为可编程的了,而后诞生程序员这个职业。
关于冯・诺依曼这位大神,值得单独开一篇文章来聊聊。
3、五大部件冯诺依曼计算机体系结构如下:数据流一》指令流-A 控制流---►img冯•诺依曼结构用极高的抽象描述了计算器的五大部件,以及程序执行时数据和指令的流转过程。
现在快速的将现代计算机的设计概念结构了解后,我们把目光聚焦在本文的主角一一存储器上。
三、存储器1、存储器的种类我们编写的程序、下载的电影,自然需要有个地方存放这些数据,存储器现在主要有易失性存储器和非易失性存储器两种。
存取速度上来看,前者要快很多。
数据持久化上来看,当电源供应中断后,易失性存储器所存储的数据便会消失,而非易失性存储器所存储的数据并不会消失,重新供电后,就能够读取存储器中的数据。
易失性存储器也叫随机存储存储器,分为动态随机存储存储器和静态随机存储存储器,表现出来的区别在速度上。
动态随机存储存储器,英文缩写写作DRAM, 一般每个单元由一个晶体管和一个电容组成。
特点是单元占用资源和空间小,速度比SRAM慢,需要刷新。
一般计算机内存即由DRAM组成。
在PC上,DRAM以内存条的方式出现。
静态随机存储存储器,英文缩写写作SRAM, 一般每个单元由6个晶体管组成,但近来也出现由8个晶体管构成的SRAM单元。
特点是速度快价格贵,单元占用资源比DRAM多,在PC上,一般CPU和GPU的缓存即由SRAM构成。
2、摩尔定律摩尔定律(英语:Moore's law)是由英特尔(Intel)创始人之一戈登・摩尔提出的。
其内容为:集成电路上可容纳的晶体管数目,约每隔两年便会增加一倍;经常被引用的“18个月”,是由英特尔首席执行官大卫・豪斯(David House)提出:预计18个月会将芯片的性能提高一倍(即更多的晶体管使其更快),是一种以倍数增长的观测。
上世纪末开始,随着CPU的性能极速发展,矛盾出现了。
CPU运行的太快了,而磁盘的数据读取又太慢了。
经过上一节的介绍,我们发现并没有一种可以同时满足稳定可用、支持持久化保存、存取速度要非常快、成本便宜并且容量大体积小的存储器,那就各取其长,将各类存储器,根据其各自的特点,按一定规律组合起来使用。
后来,CPU的性能达到物理极限而引出的计算机多核多级缓存架构,本文暂不展开。
3、存储层次百科如是说明:存储层次是在计算机体系结构下存储系统层次结构的排列顺序。
每一层于下一层相比都拥有较高的速度和较低延迟性,以及较小的容量。
大部分现今的中央处理器的速度都非常的快。
大部分程序工作量需要存储器访问。
由于高速缓存的效率和存储器传输位于层次结构中的不同等级,所以实际上会限制处理的速度,导致中央处理器花费大量的时间等待存储器I/O完成工作。
简单来说,如果单一存储器无法满足全部的需求,那就通过各类存储器的组合使用,在一定程度上满足了各方面需求都达标的一种存储结构,即存储层次,或称内存的层次结构。
在网上找了这张经典的内存层次结构图img大部分电脑中的存储层次如下四层:寄存器:(应该是)最快的访问。
高速缓存(L1-L3: SRAM):高速缓存中的访问速度为纳秒级别,非常快。
第一级高速缓存(L1),通常访问只需要几个周期,通常是几十个KB。
第二级高速缓存(L2),比L1约有2到10倍较高延迟性,通常是几百个KB或更多。
第三级高速缓存(L3)不一定有,比L2更高的延迟性,通常有数MB之大。
第四级高速缓存(L4)不普遍,CPU外部的DRAM,但速度较主存高。
主存(DRAM):访问需要几百个周期,可以大到数几十GB。
磁盘存储:需要成千上百个周期,容量非常大,持久化保存数据。
这一节中介绍的几种存储器,其各自工作所在的层次一目了然,需要注意的是其中高速缓存不受操作系统管理,我们重点看操作系统可管理的主存,后文为了方便叙述,不做特殊说明时,内存单指上图中的主存。
如今,市面上个人计算机的常规配置是三级高速缓存下配上16G内存和512G的固态硬盘,各层存储器在操作系统的内存管理下协调工作,让我们“同一时间”可以流畅使用多个软件。
4、关于内存分层的思考计算机为了提高访问速度而采用的内存分层结构,似乎像是互联网公司高性能架构中的常用手段一一缓存,其一我们把数据尽可能的放在靠近使用者(CPU)的地方,其二我们使用速度更快但不会持久化数据的中间件来做数据库(磁盘)的缓存(内存)。
这就是要去学习基础知识和阅读经典论文的原因,我们会发现思路都是相通的,落地方案的差异也不过是考虑到了特定领域与业务。
四、内存管理的需求和实现1、需求确认现在,基于以上内存的硬件结构,我们操作系统要完成对内存管理的能力,它主要应该具备如下的能力:抽象:逻辑地址空间,屏蔽掉真实的内存地址,在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。
分配与回收:即内存空间的高效率分配和及时回收。
安全与隔离:独立地址空间,保护各自进程的保护,恶意去破坏其他进程的数据,隔离性,保证各道作业在各自的存储空间内运行,互不干扰。
共享:访问相同内存,各进程间的数据传递机制允许多个进程访问同一块公共的内存空间,这是效率最高的进程间通信形式。
原本每个进程的内存地址空间都是相互隔离的,但操作系统提供了让进程主动创建、映射、分离、控制某一块内存的程序接口。
当一块内存被多进程共享时,各个进程往往会与其它通信机制,譬如信号量结合使用,来达到进程间同步及互斥的协调操作。
虚拟化:在无需扩大内存硬件容量的情况下,为了满足同时运行多个程序,我们需要更大的地址空间,也就是虚拟内存。
2、实现方式操作系统主要是通过下面五种方法实现的:•程序重定位•分段•分页•虚拟内存•按需分页虚拟内存这里涉及到的实现方式我们后面会逐一学习,现在先来看程序重定位。
五、程序重定位1、地址空间首先,需要了解两种地址空间,物理地址空间和逻辑地址空间,前者是硬件支持的地址空间,也叫绝对地址。
后者是程序看到的,一个运行的程序所拥有的内存范围,也叫相对地址。
操作系统负责建立并维护这个对应关系,我们知道程序的运行,依次需要经过编译、链接、载入(程序重定位)后,才能执行。
其中编译阶段,简单来说就是由“高级语言”转成“机器语言”的过程,该阶段和地址空间关系不大,这里暂时不展开,我们重点看后两个阶段。
2、链接阶段经过链接阶段后,程序就是拥有完整的逻辑地址空间的可以执行的程序了,比如Windows下的.exe文件。
三种链接方式:静态链接:在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。
装入时动态链接:将各目标模块装入内存时,边装入边链接的链接方式。
运行时动态链接:在程序执行中需要该目标模块时,才对它进行链接。
3、载入阶段载入阶段,或称之为装入阶段,由操作系统进行内存地址分配,并将程序的逻辑地址转换为物理地址。
这块同样有三种方式进行载入:绝对装入:在之前的编译阶段,编译程序直接产生绝对地址的目标代码。
而后载入程序按照载入模块中的地址,将程序和数据装入内存。
那哪种程序环境,可以在编译阶段就能确认物理地址呢?没错,绝对装入只适用于单道程序环境。
静态重定位:编译和链接后的指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址,在载入阶段可根据内存的当前情况,装入到内存的适当位置。
装入时对地址根据初始位置和偏移量进行重定位,将逻辑地址变换为物理地址,地址变换是在装入时一次完成的。
也就是说,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。
动态重定位:现在又称动态运行时装入。
编译、链接后的装入模块的地址都是从0开始的。
装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址,而是把地址转换推迟到程序真正要执行时才进行。
因此装入内存后所有的地址依然是逻辑地址。
这种方式需要一个重定位寄存器的支持。
这种方式虽然带来了复杂性,但是却将内存空间,极大极大的扩大了(虚拟内存的作用之一),现在的载入程序一般都是这种方式进行载入。
4、地址空间的读取过程由前文的了解,我们可以想到CPU对某一地址的内容读取,是经过如下几步完成的:1.CPU需要在逻辑地址的内存内容;2.内存管理单元寻找在逻辑地址和物理地址之间的映射(这里可以做地址安全的检查,确保程序不相互干扰);3.控制器从总线发送在物理地址的内存内容的请求;4.内存发送物理地址内存内容给CPU;六、总结本文自冯•诺依曼结构起,引出各类型存储器组成了内存层次结构,并交代了操作系统的内存管理需要实现的目标和方案,并对方案其一的程序重定位进行了详细说明。
其中对为了加速CPU对数据的读取速度,所引入的内存层次结构,其处理方式对我们互联网高性能架构有极大的借鉴意义。