热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

金字塔形的存储设备,操作系统的抽象概念

金字塔形的存储设备,操作系统的抽象概念系统在数据的创书上花费了大量的时间.硬件开发商(主要是那个做存储介质的人)为了减少这种数据传输的时间成本,此阿勇了以中高速缓存的技术去减少这种时间成本.

金字塔形的存储设备,操作系统的抽象概念

系统在数据的创书上花费了大量的时间.硬件开发商(主要是那个做存储介质的人)为了减少这种数据传输的时间成本,此阿勇了以中高速缓存的技术去减少这种时间成本.

 

高速缓存被置放于处理器中,与处理器中寄存器文件直接进行数据交换,这样大大较少了数据传输的时间成本,使得程序的运行速度可以得到数倍的提升.作为一个搞电脑的,入股可以适当的利用高速缓存去存放一些程序运行过程中常用的数据,可以将程序的运行速度提高数倍甚至数个数量级.

 

你回想一下在网页中,你第一个打开一个网页,可能很慢,但是当你打开第二次的时候,可能快点了,多开几次可能很快乐,你如果知道怎么查看缓存的话,你肯定能知道你缓存了该网页不少的图片啥的.说这个例子,没啥特别的,就是想告诉你关于缓存的一点东西.我想告诉你高速缓存的重要性.

 

下图展示了硬件分布中,告诉缓存的位置.

 

 

 

 

 

 

存储设备的金字塔

当今的计算机系统中,基本上全部都置入了各种各样的存储设备,这些存车设备呈明显的层次结构,他们的特定是容量越大,速度越慢(你的硬盘容量较大,但是速度呢?)因此如果按照容量和速度将他们以图示的方式呈现出来的话,看起来像一个金字塔(如果你书序学得好的话,就是一个什么随着x增大

y减小的函数,我数学不好,不知道咋描述,你懂).盗个图

 

 

 

英文版,咋办?想想那个函数,x变大,y减小,x代表容量,y代表速度.联系起来.

 

解释一下这个图:左边的意思更小更快但是也更贵的存储设备,包括寄存器以及L1-L3的高速缓存,以及更大更慢更便宜的存储设备,包括主存,贝蒂磁盘,以及远程存储设备.通常意义上,我们将上一层的存储设备作为当前设备的高速缓存,比如L1的告诉缓存是寄存器,L2的高速缓存是L1,以此类推.

 

 

OS是硬件的管理者

操作系统是帮我们控制硬件的软件,它就像是应用程序与硬件程序的中间这,在两之间扮演一个翻译的角色,关系如下图:

 

 

OS操作系统提供了几个我们属性的概念去表示硬件,,比如进程,虚拟存储器,文件.他们表示的硬件设备如下所示:

 

 

能看出文件是对I/O设备的抽象描述,而虚拟存储器是对主存和I/O设备的统称吗?最后还有一个,进程在此基础上又加入了处理器.

什么意思呢,就是说对于操作系统来所,这些硬件其实都被抽象化了,对于OS来说,文件就是I/O设备.

 

进程

进程是操作系统对一个正在运行的程序的抽象.OS会记录每一个进程的状态,这些状态就称作进程的上下文.这些状态主要包括了PC,寄存器以及主存的当前内容.OS在进程间切换的时候,也会切换相应的上下文,从而保证进程恢复到之前的状态.

在进程当中,又被计算机界的大神们引入了线程的概念,没办法又得学,我想起了我高中的时候,数学老师说过一句话,如果有人穿越了,在高斯5岁的时候把他弄死,咱们的数学课本最少得薄一半....

 

 

虚拟存储器

对于我这种渣渣来说,什么是寻你存储器都不知道,今天一起学习,虚拟存储器是一种抽象描述,从物理上讲,它包含了I/O设备和主存.在逻辑上讲,虚拟存储器被描述为虚拟地址空间.下图为进程的虚拟地址空间表示:

 

 

 

(看完这个图我真心不知道这个图想说啥,看不懂)

这里的地址自上向下依次增大,可以看出.图中标注了起始地址,分别为0x08048000(32)以及0x00400000(64),然后向上分别是只读代码和数据,读写数据,运行时堆,共享库的内存映射区间,用户栈以及内核虚拟内存区域.

好多新名词,记不住没关系,慢慢来.在所记住了这个玩意也没啥用处.要真正理解了.

 

程序代码和数据:这些内容的起始地址就是0x08048000,首先是代码,然后是一些全局变量.

:是运行时可以动态扩展的一部分内村区域,他可以由mallocfree这样的标准库函数操作.

共享库:用于存放共享库的代码和数据.

:在用户虚拟地址空间的顶部是栈,这部分区域与函数的执行有密切的关系.

内核虚拟存储区域:内核是OS的一部分,Linux内核应该听过吧?内核可以看作一个进程,在计算机运行期间总是在运行着,因此这部分内存区域对用户程序是不可见的,通俗的说就是不能用的.

 

 

 

文件

文件是I/O设备逻辑上的概念,他其实就是字节序列,也就是01组成的一些信息.因此所有的I/O设备,包括磁盘,键盘,鼠标,显示器都可以看成是文件.

 

 

网络

所有的I/O设备其实都是文件这一概念的具体表现.na,e网络其实也是稳健的一种,因为所到底,他也可以被看做是一系列的字节序列.网络适配器的作用就是给计算输入一堆被传送过来的字节序列,这里面可能包括图片,文字甚至可能是代码等等.


推荐阅读
  • 本文详细记录了在基于Debian的Deepin 20操作系统上安装MySQL 5.7的具体步骤,包括软件包的选择、依赖项的处理及远程访问权限的配置。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了如何通过调整InnoDB的关键配置参数来优化MySQL的随机IO性能,涵盖了缓存、日志文件、预读机制等多个方面,帮助读者全面提升数据库系统的性能。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
author-avatar
游太虚傲寰宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有