计算机基础初识
一、编程语言的作用及与操作系统和硬件的关系
1、编程语言的作用
语言对于大家来说并不陌生,我们每个人每天正是靠语言来互相沟通,是沟通的介质,按照语种来说有汉语、英语、德语、法语、阿拉伯语等等,而编程语言又是什么呢?顾名思义,编程语言是程序猿用来编写程序所使用的、用来和计算机沟通的计算机语言,是程序猿和计算机沟通交流的介质。我们所使用的各种软件正是用编程语言编写而成。
2、操作系统和硬件的关系
现代的计算机系统由硬件系统和软件系统组成,硬件系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成,很复杂。如果每位应用程序员都必须掌握该系统所有的细节,那就没有那么多的时间和精力再编写代码了。因为管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统。简单言之,操作系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序,它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的所有设备。有了操作系统,程序猿就可以从这些繁琐的工作中解脱出来,只需要考虑自己的应用软件的编写就可以了,应用软件直接使用操作系统提供的功能来间接使用硬件。
二、应用程序、操作系统与硬件
应用程序是程序猿开发出来的应用软件,并不属于操作系统,而是运行于操作系统之上的应用软件,是操作系统的实际客户。操作系统本质上是一个软件,处于计算机硬件和应用程序之间。而对于应用程序和硬件之间的关系来说,其实很多应用软件是共用一套计算机硬件的,比如:有可能有三个应用程序(a、b、c、)同时需要申请打印机来输出内容。为了使用硬件,必须在操作系统上安装该硬件的驱动程序才可发挥正常作用,如显卡驱动、声卡驱动等等。
三、CPU、内存与磁盘的关系
CPU是中央处理器,是计算机的大脑,负责运算它从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。每个CPU都有一套可执行的专门指令集,任何软件的执行最终都要转化成CPU的指令去执行。
内存是计算机的记忆,负责临时存储,计算机断电之后数据便会消失,磁盘是计算机的笔记本,负责永久存储,即使断电也没关系,依然可以找到。磁盘的容量可能远大于内存的容量,但是磁盘的读写速度却比不上内存快速。所以,CPU不会直接从磁盘读取数据,因为速度较慢,而是内存先从磁盘读取数据,然后CPU再将数据从内存中读取出来,这样的话,可大大提升计算机的运行速度。
四、CPU与寄存器,内核态与用户态及如何切换
什么是寄存器呢??寄存器是用和CPU相同材料制成的用于保存关键变量和临时数据的,因访问内存以得到指令或数据的时间比CPU执行指令花费的时间要长得多,所以,所有CPU内部都有一些寄存器,这样通常在CPU的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。CPU其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。
内核态和用户态是CPU的两种工作状态。
内核态:当CPU在内核态运行时,CPU可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
用户态:用户程序在用户态下运行,仅仅只能执行CPU整个指令集的一个子集,该子集中不包含操作硬件功能的部分(操作系统占用的内存是受保护的,不能被别的程序占用)
内核态和用户态之间如何切换呢?
用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。把系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。
五、存储器系列:L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池
寄存器即L1缓存:
用与CPU相同材质制造,与CPU一样快,因而CPU访问它无时延,典型容量是:在32位CPU中为32*32,在64位CPU中为64*64,在两种情况下容量均<1KB。
高速缓存即L2缓存:
主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在CPU内部或者非常接近CPU的高速缓存中。
内存(RAM):RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的移动存储,用来临时存储和保存数据的。它在任何时候都可以读写,RAM通常是作为操作系统或其他正在运行程序的临时存储介质(可称作系统内存)。
不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作“可变存储器”。
ROM:非易失性随机访问存储如ROM(Read Only Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜
EEPROM和闪存:
EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。
CMOS:CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。
BIOS电池 :BIOS是 Basic Input/Output System 的缩写,它的意思是基本输入/输出系统,BIOS是电脑开机后必须调用的程序,检测程序都由BIOS提供,BIOS更是配件之间的一个数据交换和协调中心。而BIOS电池是安装在主板正面的一颗直径1cm的钮扣电池,它的主要作用是给CMOS充电,以持续保存储存在CMOS中的BIOS信息。
六、磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU
磁盘结构是一个立体结构,它是由一个个盘片、磁道、扇区、磁头和柱面组合而成的。如图:
图1
图1 中绿色圆弧部分是扇区。
图2
图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面。
平均寻道时间
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻道时间,找到了磁道就找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
平均延迟时间
机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
虚拟内存与MMU:
许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)
七、磁带
在价钱相同的情况下磁带比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震、水灾、火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)
八、设备驱动与控制器
控制器是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口,有了相对简单的接口且标准,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统,必须把设备驱动程序安装到操作系统中。
九、总线与南桥和北桥
北桥即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,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI。
十一、应用程序的启动流程
1、鼠标点击该程序在桌面上的快捷方式;
2、操作系统接到指令,命令硬盘将该程序的文件调取出来给内存;
3、CPU从内存中读取该文件,解码,执行打开该程序。