zoukankan      html  css  js  c++  java
  • Linux基础之计算机硬件

    一、编程语言的作用及其与操作系统和硬件的关系

    世界上任何语言的出现都是为了信息交换与交流,编程语言也不例外,它是沟通人与机器的桥梁:计算机并不能直接识别人类社会的语言,这就需要编程语言作为中间的媒介,我们通过编程语言将指令输入计算机,计算机进行识别然后执行,进而实现相应的功能。

    程序是由编程语言写出来的一段代码,最终的开发结果为软件。软件不能直接在硬件上运行,而需要借助操作系统才能调用硬件资源,实现软件的相关功能。完整的计算机系统包括计算机硬件、操作系统、软件。

    二、计算机硬件

    一台简单的计算机包括以下硬件:中央处理器(CPU)、存储器、输入输出(I/O)设备。

    如果把一台计算机比作一个人,那么:

    cpu是人的大脑,负责运算

    内存是人的记忆,负责临时存储

    硬盘是人的笔记本,负责永久存储

    输入设备是耳朵或眼睛,负责接收外部的信息传给cpu

    输出设备是你的表情,负责经过处理后输出的结果

    以上所有的设备都通过总线连接,总线相当于人的神经

    (一)处理器

    CPU是计算机的大脑,在执行程序时,CPU会经历从内存中“取指—解码—执行”的过程,这一过程周而复始,直至程序执行完毕。

    因访问内存以得到指令或数据的时间比cpu执行指令花费的时间要长得多,这两者之间存在着一个时间差,大大降低了CPU工作的效率。所以,所有CPU内部都有一些用来保存关键变量和临时数据的寄存器。通常在cpu的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。cpu其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。

    寄存器的分类:

    1.用来保存变量和临时结果的通用寄存器

    2.程序计数器,它保存了将要取出的下一条指令的内存地址,在指令取出后,程序计数器就被更新以便执行后期的指令。

    3.堆栈指针,它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。

    4.程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。另外,在PSW中包含着一个二进位控制着CPU的两种状态——内核态与用户态。

    内核态与用户态:

    1.内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能。(操作系统在内核态下运行,从而可以访问整个硬件)

    2.用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分。因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用)。

    内核态与用户态切换  

    用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。把系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。

    (二)存储器

    存储器有许多种类,根据其自身特点(传输速度,存储容量)的不同,它们在计算机的日常工作中扮演着不同的角色。具体分类如下:

    1.即寄存器,L1缓存

    用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

    2.高速缓存即L2缓存

    缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。

    3.内存:

    再往下一层是主存,此乃存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失。

    除了主存RAM之外,许多计算机已经在使用少量的非易失性随机访问存储如ROMRead Only Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。

    4.EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。

     5.还有一类存储器就是CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。

    (三)磁盘

    磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。
     
    磁道:每个盘片有两个面,都可记录信息。盘片表面以盘片中心为圆心,用于记录数据的不同半径的圆形磁化轨迹就称为磁道。磁化轨迹是磁化区域,是看不见的。磁道看起来是一个平面圆周形。
    扇区:盘面由圆心向四周画直线,不同的磁道被直线分成许多扇形(弧形)的区域,每个弧形的区域叫做扇区,每个扇区大小一般为512字节,扇区看起来就是圆弧或者扇形。
    柱面:磁盘中,不同的盘片(或盘面)相同半径的磁道轨迹从上倒下所组成的圆柱型区域就称为柱面,柱面看起来是一个圆柱体。
     

    数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间。

    平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置。

    平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间。
     
    (四)虚拟内存
    许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
     
    (五)磁带
    在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)

    cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。

    I/O设备一般包括两个部分:设备控制器和设备本身。

    控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。

    控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口。

    设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

    随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。

    北桥即PCI桥:连接高速设备

    南桥即ISA桥:连接慢速设备

    三、计算机启动流程

    在计算机的主板上有一个基本的输入输出程序(Basic  Input Output system)

    BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。

     启动流程

    1.计算机加电

    2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

    3.BIOS读取CMOS存储器中的参数,选择启动设备

    4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)

    5.根据分区信息读入bootloader启动装载模块,启动操作系统

    6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序。

    Life is short,i use python!
  • 相关阅读:
    ZQUOJ 1964 Hamilton回路(状压dp)
    ZQUOJ 1398 Hamilton路径(DFS,稀疏图,n≤40)
    2019 CCPC
    百度之星初赛第三场 1002 最短路2 (Floyd算法优化)
    2019牛客暑期多校训练营(第四场)J free(分层图最短路/模板题)
    2019牛客暑期多校训练营(第一场)I Points Division(DP+线段树)
    2019牛客暑期多校训练营(第七场)A String(枚举)
    2019牛客暑期多校训练营(第九场)B Quadratic equation(欧拉准则+解二次剩余)
    二次剩余系解法
    二次剩余的判断(欧拉准则)
  • 原文地址:https://www.cnblogs.com/chengnanlangzi/p/6875323.html
Copyright © 2011-2022 走看看