计算机硬件和基本的原理
一.计算机硬件的介绍:
从概念上讲:一个简单的计算机就是将CPU,内存以及一些i/o设备通过一条总线连接起来,
并且通过总线与其他设备通信。
1.cpu:cpu就相当于人类的大脑,负责分析和处理数据
2.内存:内存相当与人类的记忆,负责临时存储。内存也是易失性的
3.硬盘:硬盘相当于笔记本,用于永久存储。
4.输入设备:相当于人类的眼睛或者耳朵,用于从外界接收信息并将其传给CPU
5.输出设备:输出设备相当于人类的表情,用于输出信息经过处理后的结果
总线相当于人类的神经,负责各个设备之间的通信。
1.1 处理器:cpu
概念:cpu就相当于人类的大脑,它从内存中 取指令→解码→执行,然后再取指令→解码→执行
周而复始,直到整个程序被执行完成。每个cpu都有一套自己的指令集,任何软件的执行都要转化
为cpu的指令取执行。
1.2 寄存器:(寄存器与cpu的材质是一样的,L1缓存)
由于cpu处理数据的速度比从内存中取指令的速度要快,有速度差,为了提高效率,寄存器就出现了。
在CPU中的,提供了一些特殊的指令集,用来将数据从内存中调入寄存器中,或者从寄存器存入内存中,
寄存器有很多种,功能也不同。
寄存器的分类:
1.通用寄存器:用来存放关键变量和临时数据的寄存器
2.程序计数器:用来保存cpu将要取出的下一条的指令的内存地址。在指令取出后,程序计数器更新以执行后期的指令
3.堆栈指针(先进后出):它指向内存中当前栈的顶端。它用来
4.程序状态字寄存器(PSW):这个寄存器包含了条码位(有比较指令设置),cpu优先级,模式(内核态或用户态),以及各种控制位。
用户通常读入整个PSW,当只对其中的少量字段写入。在系统调用和i\o 中,非常重要。
寄存器的维护:操作系统必须知晓所有的寄存器,在时间多路复用的CPU中,由于cpu经常要终止一个正在运行的程序并启动另外一个程序,
在终止一个正在运行的程序时,必须保存所有的寄存器,这样,在再次运行这个终止的程序时,能够重新载入寄存器并再次运行。
大多数的CPU有两种模式:内核态和用户态
内核态:内核态是cpu陷入内核态,能够执行所有指令集,包括控制硬件的指令。
用户态: 用户态是应用程序在用户态下运行,只能执行指令集的一个子集,该子集中不包含控制硬件的功能。
因此,在一般情况下,在用户态下,有关i/o和内存保护。在用户态下,PWS是禁止写成内核态的
内核态和用户态的切换,在PSW中有一个二进制位是控制其转换的。由于在用户态下不能操作硬件,当应用软件需要操作硬件的需求时,
就必须从用户态切换至内核态,这时启用系统调用(system call),使系统陷入内核并调用操作系统,通过PRAP指令将用户态切换至内核态
,从而能够操作硬件
进程和多线程:
进程:是一个资源单位
线程:是一个执行单位
进程和线程的关系:
1.地址空间:一个进程可以有多个线程,但至少有一个线程。线程共享进程内的地址空间,但进程有自己独立的地址空间。
2.资源拥有:进程是资源拥有和分配的单位,线程共享进程内的所有资源
3.线程是操作系统可识别的最小执行和调度单位,但进程不是
4.线程执行过程中,需要协作同步。不同进程的线程间要通过消息通信的办法来实现。
多核芯片:多核芯片一般为intel和AMD多核芯片
intel芯片主要是,由于是共享一个缓存,会出现L2缓存抢占的情况
AMD芯片主要是,由于是每个独立的CPU都有自己的一个cpu,会出现在L2保持一致性的问题上很困难
cpu的向下兼容性:
64位的cpu,是指一次能够从内存取64位,32位的CPU,是指一次能够从内存中取32位
32位的软件可以在64位操作系统下运行,但64位的软件不可以在32的操作系统上运行
存储设备:寄存器L1(1ns,<1kb)→高速缓存L2(2ns,4MB)→内存(10ns,512MB-2048MB)→硬盘(10ms,)→磁带(100s) 读取速度从前到后依次变小,存储空间从前到后依次变大
高速缓存命中:当一个应用程序需要读取存储的字时,高速缓存硬件会检查其是否在高速缓存中,如果在,则成为高速缓存命中,如果不在,就会访问内存。
磁盘:磁头,磁道,柱面
-磁头
-盘片:
-扇区:每个磁道化成若干个扇区,一个扇区通常为512字节
-磁道:每个盘片上磁头划过的一个个圆是磁道
-柱面:不同的盘片间若干个同心圆形成的圆柱称为一个柱面
平均寻道时间:磁头从一个柱面移动到相邻的柱面的时间为寻道时间。
平均延迟时间:磁头到达了正确的磁道后还必须找到正确的扇区,这段时间为延迟时间
虚拟内存:将正在使用的程序放到内存去,将暂时不需要执行的程序的放在硬盘上的某个地方,这个地方为虚拟内存。
linux里面的虚拟内存是SWAP,这种机制的核心在与快速的映射内存地址,由CPU中的一个部件负责,称为存储器管理单元(MMU)
上下文切换:从一个程序切换到另外一个程序,称为上下文切换。
总线:
PCI:南桥链接慢速设备
ISA:北桥链接高速设备
计算机原理:
1.编程语言的作用:
编程语言是操作,操作系统是平台,编程语言是为了与计算机沟通,让计算机完成你想要完成的目标。
2.计算机发展历史:电子管->晶体管->集成电路->大规模集成电路。
3.硬件系统有五大部分组成:
运算器:是负责算术运算与逻辑运算,与控制器共同组成了中央处理器(cpu)
控制器:是负责发送和接受指令
存储器:是用来存储正在进行程序,将要进行程序的
输入设备:用来进行输入的设备。键盘
输出设备:用来进行输出的设备。显示屏
4.硬件和操作系统的关系:
首先操作系统是躺在硬盘上的,也可以说成操作系统是计算机硬件的接口,应用软件是不能控制直接控制硬件的,
而操作系统可以直接控制硬件,简单的说操作系统也是程序,程序由编程语言写成的,编程语言通过编译后转化为
二进制,然后通过电流信号(0表示低电频,1表示高电频)控制硬件
5.操作系统的启动流程:
-1.计算机加电
-2.计算机加载主板上的BIOS程序,BIOS开始运行,检测硬件,cpu,内存,硬盘等
-3.BIOS读取CMOS存储器中的参数(配置信息放在CMOS存储器里面,BIOS已经设置好系统盘在哪个位置),选择启动设备
-4.从启动设备中读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64位为分区信息,最后两个为标志位)
-5.根据分区信息读入bootloader启动装载模块(bootloader模块将操作系统的代码加载到内存中)启动操作系统
-6.然后操作系统会询问BIOS,以获取配置信息,对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统会要求用户
按装设备驱动程序,当有了全部的设备驱动程序,操作系统会将它们加载到内核中,然后初始有关的表格,创建需要的进程,并在每个终端上启动登入程序或GUI
6.应用程序的启动流程:
-1.点击程序运行(由于操作系统时刻对桌面进行监控),对操作系统发起系统调用,
-2.操作系统切换至内核态,然后操作硬盘,将硬盘上应用程序的数据加载到内存中,然后cpu执行,软件就启动了。
操作系统:
操作系统位于硬件和应用软件之间,操作系统有操作系统的内核(内核态)以及系统调用(用户态)两部分组成。
操作系统的功能:
1.隐藏了丑陋的硬件的调用接口,为应用程序员提供调用硬件资源的更好的,更简单,更清晰的模型(系统调用接口)。
2.将应用程序对硬件资源的竞态请求变得有序化。
多路复用:
1.时间上的复用:当一个资源在时间上复用时,不同的程序和用户轮流用它,第一个程序获取该资源使用结束后,第二个程序再使用该资源。
比如当一个程序执行i/o时,cpu可以给另外一个程序用。
2.空间上的复用:将内存分成几个部分,每个部分存放一个程序,这样,同一时间,内存就能存放多个程序。
空间上复用实现的前提是硬件层次能够支持物理上的隔离。
如果硬件层次不能支持物理上的隔离,则首先会出现安全性的丧失,其次是稳定性的丧失。
时间上的复用和空间上的复用组合在一起就是多道技术。