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

本文通过对冯.诺伊曼体系中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

相关推荐

  • grep与vim工具基本命令详解

    本文记录了些我在学习grep与vim时记录的一些笔记,希望可以帮到大家

    2018-04-06
  • Docker容器技术之Dockerfile

    什么是dockerfile?
    dockerfile可以理解为构建docker images的源码(原料),docker可以通过读取一个dockerfile来自动构建docker镜像

    2018-08-06
  • 命令行展开案例

    [Azuth@azuth ~]$ mkdir /home/Azuth/tmp/{a,b}_{c,d}[Azuth@azuth ~]$ ll /home/Azuth/tmp/total 0drwxrwxr-x. 2 Azuth Azuth 6 May 20 20:35 a_cdrwxrwxr-x. 2 Azuth Azuth 6 May 20 20:35 a_…

    Linux笔记 2018-05-20
  • 进程和计划任务

      进程概念 内核功能:进程管理 文件系统 网络功能 内存功能 驱动功能 安全功能 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 task struc…

    Linux笔记 2018-05-06
  • linux基础之自动登陆和自动开启网卡设置

    Centos7.4设置自动登陆以及设置网卡开机自动启用功能 1、进入命令行模式,输入 nano /etc/gdm/custom.conf ,在[daemon]下添加2条命令,分别是 AutomaticLoginEnable=true AutomaticLogin=root 2、然后按住Ctrl+X退出并保存,接着选择Y,再按回车键即可保存更改,到这里设置自动…

    2018-03-29