所谓计算机硬件系统,就是指构成计算机看得见的,摸得着的实际物理设备。html
常见的计算机硬件组成主要由下图各部件组成:java
现代计算机的结构更复杂,包括多重总线。python
简单打个比方,方便你们理解计算机各部件的主要功能:linux
cpu是人的大脑,负责运算;程序员
内存是人的记忆,负责临时存储;数据库
硬盘是人的笔记本,负责永久存储;编程
输入设备是耳朵或眼睛,负责接收外部的信息传给cpu;缓存
输出设备是你的表情,负责通过处理后输出的结果;app
以上全部的设备都经过总线链接,总线至关于人的神经。框架
编程语言就是程序员与计算机沟通的介质,经过编程语言可使得计算机可以根据程序员的指令一步一步去工做,完成某种特定的任务。
程序员用编程语言写程序,最终开发出的结果就是一个软件,软件不能直接操做硬件,必须运行在操做系统之上,操做系统是用来管理计算机硬件设备的。操做系统是电脑的软件基础。它和电脑的硬件组成了系统。使电脑可以为人类工做。
应用程序的功能执行须要经过操做硬件之间的相互配合才能得以实现,可是应用程序不能直接操做硬件,只能经过调用操做系统,让应用程序的功能经过操做系统来操做相应的硬件才能得以实现其功能。
因CPU访问内存以获得指令或数据的时间比cpu执行指令花费的时间要长得多,因此,全部CPU内部都有一些用来保存关键变量和临时数据的寄存器。
寄存器是用与cpu相同材质制造,与cpu同样快,于是cpu访问它无时延。用来避免内存速率比CPU慢几个数量级的瓶颈问题。
寄存器的分类:
内核态与用户态
除了在嵌入式系统中的很是简答的CPU以外,多数CPU都有两种模式,即内核态与用户态。一般,PSW中有一个二进制位控制这两种模式。
内核态:运行操做系统内核,能够操做硬件,能够获取全部CPU的指令集。(操做系统在内核态下运行,从而能够访问整个硬件)
用户态:运行应用程序,不能够操做硬件,能够获取全部CPU的指令集的一个子集,该子集不包括操做硬件的的指令集。(应用程序在用户态下运行)
内核态与用户态切换
全部用户程序都是运行在用户态的,可是有时候程序确实须要作一些内核态的事情,例如从硬盘读取数据, 或者从键盘获取输入等。 而惟一能够作这些事情的就是操做系统, 因此此时用户程序就须要使用系统调用,操做系统请求以程序的名义来执行这些操做,此时就会从用户态切换到内核态。
存储器包括:寄存器,高速缓存、内存、磁盘、磁带。
L1缓存即寄存器:
用与cpu相同材质制造,与cpu同样快,于是cpu访问它无时延,典型容量是:在32位cpu中为3232,在64位cpu中为6464,在两种状况下容量均<1KB。
L2缓存即高速缓存:
主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最经常使用的高速缓存行放置在cpu内部或者很是接近cpu的高速缓存中。L1与L2的差异在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。
内存:
常称为随机访问存储RAM,全部的程序都是在内存中运行的,计算机在运行中,操做系统也会在内存中运行。全部不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据所有消失,除了主存RAM以外,许多计算机已经在使用少许的非易失性随机访问存储如ROM(Read Only Memory,ROM),在电源切断以后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,而后不再能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另一些I/O卡也采用ROM处理底层设备的控制。
内存的速度会慢于L1和L2缓存,CPU访问的前后顺序是先访问L1缓存吗,而后访问L2缓存,再访问内存,最后访问硬盘。
EEPROM和闪存都是一种储存器,能够擦除和重写,可是重写的速度介于内存和磁盘之间。被应用于便携式电子设备的存储媒介,磁盘,固态硬盘等,都是应用闪存。
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的出现提高了系统的性能,尤为是上下文切换
在价钱相同的状况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,可是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来作备份。(常见于大型数据库系统中)
控制器:是插在主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都须要插到一个口上,这个口连的即是控制器),控制器负责控制链接的设备,它从操做系统接收命令,好比读硬盘数据,而后就对硬盘设备发起读请求来读出内容。控制器的任务就是为操做系统屏蔽这些复杂而具体的工做,提供给操做系统一个简单而清晰的接口。
设备驱动:要想调用设备,必须根据该接口编写复杂而具体的程序,因而有了控制器提供设备驱动接口给操做系统。必须把设备驱动程序安装到操做系统中。设备驱动是操做系统和输入输出设备间的粘合剂。驱动负责将操做系统的请求传输,转化为特定物理设备控制器可以理解的命令。
1.总线将计算机内部各部件链接,而且实现了计算机各功能部件之间的信息传输。
2.南桥即ISA桥:链接慢速设备,硬盘,显示器等设备。
3.北桥即PCI桥:链接高速设备,CPU,内存等设备。
在计算机的主板上有一个基本的输入输出程序(Basic Input Output system)
BIOS就至关于一个小的操做系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
1.计算机加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader(grub),选择内核(kernel),找到内核后将内核代码读到内存里,而后CPU加载运行,启动操做系统
6.而后操做系统询问BIOS,以得到配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,若是没有,系统则会要求用户安装设备驱动程序。一旦有了所有的设备驱动程序,操做系统就将它们调入内核。而后初始有关的表格(如进程表),建立须要的进程,并在每一个终端上启动登陆程序或GUI
前提:应用程序是运行与操做系统之上
举例:启动暴风影音
双击快捷方式-->告诉操做系统一个文件路径-->操做系统从硬盘读取文件内容到内存中-->CPU从内存读取数据执行
原文连接:
https://www.cnblogs.com/huchong/p/7152292.html
识别图中二维码,领取python全套视频资料