首页 > 代码库 > 计算机基础

计算机基础

一、编程语言 操作系统 硬件

编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 编程语言俗称"计算机语言",种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。
?操作系统(英语:Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统所处位置作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。
计算机硬件,是由许多不同功能模块化的部件组合而成的,并在软件的配合下完成输入、处理、储存、和输出等4个操作步骤。另外,还可根据它们的不同功能分为5类。1. 输出设备(显示器、打印机、音箱等)2.输入设备(鼠标、键盘、摄像头等)3.中央处理器4.储存器(内存、硬盘、光盘、U盘以及储存卡等)5.主板(在各个部件之间进行协调工作、是一个重要的连接载体)。
三者之间的关系如下图所示。
技术分享

 

二、cpu 存储器 磁盘

CPU {
  工作过程 [
    ‘早期‘ : ‘取指令 》 通过指令集解码 》 执行‘,
    ‘流程化‘ : ‘取指令单元(第一条指令) 》 解码单元(第二条指令) 》 执行单元(第一条指令)‘,
    ‘超变量‘ : ‘多个取指单元 》 多个解码单元 》 将结果保存到缓冲区 》 多个执行单元从缓存区获取解码结果执行‘
  ],

存储器 {[
RAM : ‘临时性存储设备,RAM通常来讲速度快,容量小,数据变动大,临时存储在内存中的数据将在断电后消失‘,
ROM: ‘永久存储设备,ROM在断电后数据不会消失,ROM内的数据一般在设备出产前便写入固件,不能随意进行改写‘,
CMOS : ‘CMOS作为临时性存储设备,在计算机硬件中用作BIOS的配置存储,通过锂电池进行保存数据,容易改写‘,
EEPROM : ‘称作电可擦除式ROM,也称为闪存,其数据能长期保存,特点是速度快,成本高‘
]}

磁盘 {
数据读取写入方式 : ‘盘片中包含一段一段的扇区,而磁头通过盘片上一根根的圆形磁道寻找数据位置并进行读写操作‘,
寻道平均时间 : ‘磁头到达数据所在磁道所需要的平均时间‘,
延迟时间 : ‘在磁头到达所在的扇区后,磁头将开始在扇区内找到所需的数据,所消耗的时间成为延时时间‘
}

三、内核态与用户态

 内核态当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
 用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。
内核态与用户态切换
 用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。
  请把的系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。技术分享

四、L1缓存&L2缓存 磁带

  寄存器即L1缓存用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。
  高速缓存即L2缓存主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。
  缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。
  缓存是一个好方法,在现代cpu中设计了两个缓存,再看4.1中的两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据自,多少芯片还会按照第二L1缓存 。。。另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。

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

五、设备驱动与控制器

  控制器是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。
  控制器的功能通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口
设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

六、总线与南桥北桥

总线 {
总线工作方式 : ‘总线由南北桥芯片,即PCI(北桥)、ISA(南桥)芯片进行控制‘,
北桥 : ‘早期的北桥在主板中的位置邻近CPU,负责连接速度较快的设备,以及I/O设备,intel在G41芯片组之后,抛弃了主板上的北桥,将其继承在了CPU当中‘,
南桥 : ‘南桥负责连接速度较慢的设备,比较常见的总线是SATA总线以及早期的ISA和IDE总线‘
}

技术分享

 

七、操作系统的启动流程

在计算机的主板上有一个基本的输入输出程序(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,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

八、应用程序的启动流程

应用程序通过IO输出>用户>用户双击IO输入请求打开>操作系统接受请求,从用户态系统调用进入内核态>相应硬件启动>返回操作系统,内核态切换用户态>应用程序启动通过IO输出显示给用户

 

计算机基础