博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机基础
阅读量:2268 次
发布时间:2019-05-09

本文共 4410 字,大约阅读时间需要 14 分钟。

 


全世界都有各国的语言,各地的方言,而计算机也有很多的编程语言。

编程语言就是程序员让计算机解决问题的工具,例如程序员想要让计算机干一件特定的事情,那这个时候就得先了解计算机其中的原理。

 

计算机硬件介绍:


计算机硬件包括:CPU\硬盘\内存\输入输出设备,  这些设备都通过总线连接,总线就相当人的大脑神经。

 

 

 

CPU:


CPU=大脑:从内存中 取指令→解码执行,一直反复执行这一过程,直到整个程序执行完成。

每个CPU都有自己的指令集,相当于每个人的大脑结构都一样,但是每个人会的事情也不一样。

 

寄存器:   在访问内存得到指令或数据的时间比CPU执行指令的时间要长,所以,CPU内部都有一些用来保存关键变量和临时数据的寄存器。将一个字(理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。CPU的一些指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,例如将两个字相加将结果存在寄存器中。

 

 

寄存器的分类


通用寄存器:存储变量和临时结果

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

堆栈指针:也是一种寄存器,堆栈指针的规则是“先进后出”,先进去的后出来, 举个例子,有一个箱子,刚刚好可以放下一本书的大小,有语文、数学、英语、化学,先将语文放去,然后数学、英语、化学。

那么在出栈的时候,最先出来的是化学、英语、数学、语文。   跟进去的顺序相反,这就是“先进后出”的原则。

 

程序状态字寄存器(Program Status Word , PSW): 这个寄存器包含了条码位,CPU优先级、模式(用户态或内核态),及其它各种控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。

 

 

####用户态与内核态:


    CPU划分出来的两个权限等级,限制不同的程序之间的切换。  所有用户程序的运行都是在用户态的,但是有时候程序需要做一些内核态的事情,像硬盘读取数据。

  内核态:操作系统在内核态下运行,可以访问整个硬件

 

  用户态:只能受限的访问内存,且不允许访问外围设备。

例子:

打开一个播放器,这个时候是在用户态的,如果播放某一个视频文件,这个时候需要读取硬盘的视频文件,这一个过程需要访问硬盘,用户程序会使用系统调用(system call),就会切换到内核态。

 

 

#多线程和多核芯片


多核、多处理器系统中的每颗处理器(每个核),同时间内可以执行各自不同的行程(或线程)

 

一级缓存:在CPU芯片中加入更大的缓存,用和CPU相同的材质制成,CPU访问它没有时延

二级缓存:一个CPU中的处理逻辑增多,Intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的CPU就相当于两个CPU,进程是资源单位而线程才是CPU的执行单位。

多线程运行CPU保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多纯种不提供真正的并行处理一个CPU同一时刻只能处理一个进程(一个进程中至少一个线程)

  

第三步增强:除了多线程,还出现了2个或者4个完整处理器的CPU芯片。

 

存储器:


计算机中第二重要的是存储,大家都想存储:速度快(这样,CPU的等待存储器的延迟就降低了+容量大+价钱便宜。然后同时兼备三者是不可能的,所以不同的处理方式

 

 

 

存储器系统采用如上图的分层结构,顶层的存储器速度较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的。

 

寄存器即L1缓存:

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

 

高速缓存即L2缓存:


主要由硬件控制调整缓存的存取,内在中有调整缓存行按照064字节为行0,64127为行1.  最常用的高速缓存行放置在CPU内部或者非常接近CPU的调整缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的调整缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这还是慢的,高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,需要付出大量的时间代价。由于高速缓存价格昂贵,所以其在小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。

 

缓存不仅仅是RAM(随机存取存储器)的缓存行,只要存在大量的资源可以划分为小的部分,这些资源就会比其他部分更频发的得到使用。这个时候就用缓存可以带来性能上的提升。

 

缓存是很好的方法,现代CPU中设计了两个缓存,第一级缓存称为L1总是在CPU中,常用来将已解码的指令调入CPU的执行引擎。

另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对CPU对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

 

内存:

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

 

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

 

EEPROM(Electrically Erasable PROM,电可擦除可编程) 和闪存(Flash memory)也是非失性的,但是与ROM 相反,他们可以擦除和重写。不过花费的时间比写入RAM要多。与磁盘不同的是闪存擦除的次数过多,就被磨损了。

 

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)

 

PS:从一个程序切换到另外一个程序,成为 上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下切换。

 

磁带:


在价钱相同的情况下比硬盘更高存储容量,但是速度低于磁盘,但是因为其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见大型数据库系统中)

 

I/O设备

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

 

 

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

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

 

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

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

 

 

 

总线:


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

 

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

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

 

 

 

 

 

计算机的启动:


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

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

 

启动的流程:


计算机插电

2、BIOS运行,因为物理性BIOS处于主板上的位置,所以会先启动, 然后检测硬件:CPU、内存、硬盘等

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

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

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

6、然后 操作询问BIOS,以获得配置信息,对于每一种设备,系统都会检查设备驱动是否存在,如果没有,系统会提示用户安装设备驱动程序,当装了全部的设备驱动程序,操作系统会将它们调入内核,然后初始有关的表格(如进程表),创建需要的进程,并在每个终端上启动登录程序或GUI

 

转载于:https://www.cnblogs.com/tonycloud/articles/6532876.html

你可能感兴趣的文章
代码_网络_WWW
查看>>
技巧_MFC_执行外部程序
查看>>
排序算法——归并排序(动态演示和静态演示,包含代码生成和简化的过程)
查看>>
排序算法——基数排序(Radix Sort,可以关注一下思维方式,由最初的一步,到最后的递归构成)
查看>>
排序算法——总结
查看>>
查找算法——顺序查找
查看>>
查找算法——二分查找
查看>>
查找算法——插值查找
查看>>
查找算法——斐波那契查找法(黄金分割法)
查看>>
哈希表(散列)
查看>>
用哈希表实现简单的缓存层
查看>>
树结构的基础部分
查看>>
二叉树
查看>>
二叉树——查找指定节点
查看>>
二叉树删除节点
查看>>
顺序存储二叉树
查看>>
顺序存储二叉树——线索化二叉树
查看>>
2019年在上海的最后一天,2020年新开始的一年
查看>>
遍历线索化二叉树
查看>>
二叉树——堆排序
查看>>