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

本文通过对冯.诺伊曼体系中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 22:28
下一篇 2018-04-01 22:55

相关推荐

  • shell回顾

    测试基础知识

    2018-05-17
  • Linux系统MBR的修复方法

    grub boot loader

    2018-05-09
  • linux基础篇

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │ └── grub
    ├── dev
    ├── etc
    │ ├── rc.d
    │ │ └── init.d
    │ └── sysconfig
    │ └── network-scripts
    ├── lib
    │ └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │ └── local
    │ ├── bin
    │ └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    2018-05-20
  • 数组,字符串切片,高级变量

    数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引 bash4.0版本之后开始支持 bash –version   查看bash版本 bash的数组支持稀疏格式(索引不连续) 声明数组: de…

    Linux笔记 2018-05-13
  • N30-bash特性以及Linux文件管理常用命令汇总

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令:cat,tac,head,tail,more,less 分屏查看命令:more,less more:more FILE特点,翻盘至文件尾部后自动退出 less FILE head:查看文件的前n行head [options] FILE-n 数字-数字 tail:查看…

    Linux笔记 2018-05-26
  • 简述iproute家族命令

    iptoute2家族 ip命令:ip – show / manipulate routing, devices, policy routing and tunnelsip [ OPTIONS ] OBJECT { COMMAND | help }OBJECT := { link | address | addrlabel | route | ru…

    Linux笔记 2018-06-15