对冯.诺伊曼体系的一点理解

本文通过对冯.诺伊曼体系中CPU,RAM硬盘的处理能力差别来解释Linux和ORACLE中的一些处理机制的原因

冯.诺伊曼体系结构是现代计算机发展的基础,特点如下:

1:必须有一个存储器

2:必须有一个控制器;

3:必须有一个运算器,用于完成算术运算逻辑运算

4:必须有输入设备和输出设备,用于进行人机通信。

冯诺依曼

在这个体系中,程序和数据必须经过内存储器(RAM)后,才能有运算器完成数据加工和处理,而内存储器在断电之后就会丢失所有的程序和数据,因此主存储器RAM必须把程序和数据同步到外存储器(硬盘)保证在计算机在断电之后程序和数据不丢失。

同时,内存储器RAM,CPU(运算器+控制器),外存储器硬盘的处理能力不同,并且差别很大,如下以普通家用电脑为例来说明(服务器的相关性能会提高,但是三者之间差别和普通家用电脑类似)。

CPU:处理能力最高,以Intel i9为例,25.5GB/s

RAM:以DDR3为例子,大概是10GB/s

硬盘:最低,固态硬盘大概500MB/s

因此,程序在设计时要充分考虑到这种差别,采用一定的策略来取长补短,达到系统的最优使用率。以下举例从不同的角度来阐述。

 

例子1:Linux内部命令和外部命令

Linux在系统启动的过程中,会把某些常用的或者系统认为优先级别高的命令即内部命令常驻内存,这样,在执行内部命令时,速度会更快。

对于外部命令,在第一次执行时,会有从硬盘读取这个命令到内存的过程,相对于内部命令执行速度会较慢,之后,这个外部命令也会驻留在内存中一段时间,在此期间内,再次执行此命令的速度和内部命令同等,因为省去了从硬盘读取到内存的过程。外部命令在内存中的查询和管理可以通过hash指令。

 

例子2:读文件的时间atime更新机制

文件的atime在每次访问文件时,理论上都应该更新,但是实际上atime的更新是系统自动来控制的,一般来说,atime相比mtime,ctime的重要性没那么高,所以系统决定在自已认为合适的时间去更新atime,比如在硬盘写操作很少时更新或关机之前把atime更新到硬盘上等,这样省去了每次访问文件时,因更新atime导致的资源竞争,比如,在某一时刻,硬盘在做大量重要的文件写操作,硬盘的访问速度是这个体系中最慢的,如果在此时系统强制更新atime,意味重要文件写操作就会停止或变慢。

 

例子3:ORACLE数据库更新表数据机制

ORACLE在数据库表更新时,当提交完commit命令后,内存的数据会立即变化,但是并不会马上同步更新到硬盘,因为批量更新的效率是要高于单个数据更新,如每次更新1K,一共更新10次数据从内存到硬盘,效率要远远低于一次性更新10K。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/94606

(3)
Evan LiangEvan Liang
上一篇 2018-04-01
下一篇 2018-04-01

相关推荐

  • ansible进阶小技巧

    用ansible写playbook的朋友可能会发现,当配置工作很多时,如果在中间过程出错了,修改后想重新执行,前面的一大堆步骤让人感觉很烦躁。虽然提供了“retry”文件,但是却只是根据host来判断重新执行,仍然不够方便;又或者,中间的某些步骤特别耗时,比如下载一个很大的数据包,每次执行特别浪费时间,想要特别的跳过。怎么办?我猜你就是把不需要的部分给注释掉…

    Linux笔记 2018-06-03
  • 2018第十届GOPS全球运维大会9月上海召开!

    第十届 GOPS 全球运维大会将于2018年9月14日-15日在上海召开。大会为期2天,侧重方向是 AIOps、运维自动化和 DevOps。目前已经有全国各地大公司组团前来参加。

    2018-06-22
  • Linux基础和帮助

    多动手,勤思考

    2018-03-31
  • linux入门命令

    bc:计算器 mainframe 缓存查看:lscpu磁盘和内存性能测试命令: dd Xmanager (xshell) 安装:用户名: byg公司: microsoft注册码: 使用工具生成 命令库调用: # ldd /bin/ls系统库跟踪,调用库详细信息 # strace lslibrary 库跟踪 # ltrace ls 二进制文件查看: # hex…

    Linux笔记 2018-07-21
  • Linux用户和组管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。 5、取出当前主机的…

    Linux笔记 2018-07-13