一:编程语言的作用及与操作系统和硬件的关系
编程语言和汉语,英语一样都是语言;都是用来沟通的介质;程序员的目的就是让计算机工作,编程语言就是程序员和计算机沟通的介质。当然你想让电脑为你工作,你就得知道计算机他能干什么,是怎么工作的。
编程语言直接对硬件进行操作,过程过于复杂且严重影响开发效率,而操作系统运行于硬件之上,所以,我们开发的时候只需要调用操作系统给我们提供的接口就可以,操作系统直接操作硬件,为我们提供接口,提升了开发效率.
所以一套完整的计算机系统应该包括:硬件、操作系统、软件(程序员所写的程序);
二、cpu-》内存-》磁盘
cpu就像人的大脑,它是计算机的大脑,负责运算工作,包括普通的算数运算和逻辑运算;
内存就像人的记忆,负责临时存储,它是易失性储存,一断电就会丢失数据;
磁盘就像一本笔记本,负责永久储存,我们安装的软件都在磁盘上,是永久储存。
三、cpu与寄存器
因为CPU从内存中得到指令(数据)所用的时间比cpu执行指令所用时间要长很多,所以cpu中有一些用来保存关键变量和临时数据的存储器。这样cpu专门提供一些指令用来将一些数据从内存中调入存储器或者从存储器中调入内存。cpu其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。
四、内核态与用户态及如何切换
内核态:简单来说就是cpu在处理操作系统时的状态;当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)
用户态:简单来说就是cpu在处理用户软件时的状态;用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分。
用户态和内核态的切换
用户状态下的软件不能直接操作硬件,但是我们需要操作硬件,所以我们要通过操作系统来操作硬件,而操作系统处于内核态,所以我们就临时将用户态转换为内核态,通过操作系统操作硬件发送请求,最后把处理的结果返回给用户程序,内核态又转变为用户态.
五、存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池
存储器系统采用如上图的分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的
L1缓存:L1缓存即存储器缓存,它的材质和cpu相同,因而cpu访问它无延时,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。
L2缓存:L2缓存高速缓存,主要由硬件控制高速缓存的存取,最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。典型的访问时间为2ns,典型的容量为4MB;
内存(RAM):内存是存储器系统的主力,内存是易失性存储,断电后数据会丢失;
EEPROM和闪存:是非易失性存储,不过与ROM相反,他们可以擦除和重写,但是重写花费的时间比存入RAM所用的时间要多,在便携设备中,闪存作为主要的存储媒介,闪存在 速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。
CMOS:是易失性存储,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路有一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正 确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电 池失效时,相关的配置和时间等都将丢失
BIOS电池:BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
六、磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU
磁盘结构:在磁盘中有一个或多个金属盘片,每个磁头可以读取一段换新区域,称为磁道。把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面每个磁道划成若干扇区,扇区典型的值是512字节.数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈
平均寻道时间:机械手臂从一个柱面随机移动到相邻柱面所用的时间叫做平均寻道时间,这是虽然已经找到了数据所在的那个磁道,但还不知道数据所在的具体位置。
平均延迟时间:机械手臂从数据所在的磁道移动到数据所在的扇区的这段时间叫做平均延迟时间。
虚拟内存:我们可以发现计算机可以运行比自己内存大的程序,实现的方法是将正在运行的程序放到内存中,暂时不执行的程序放到磁盘的某个地方,这个地方就叫做虚拟内存。
MMU:是存储器管理单元,有cpu的一个部件负责,核心在于快速地映射地址,
七、磁带
在相同的价钱下,磁带拥有的内存比磁盘大,但是运行速度比磁盘小,磁带的典型访问时间为100s,典型容量为400-800G,因为他容量大,可移动性强,常常用来备份数据。
八、设备驱动与控制器
设备驱动:控制器提供的用于调用设备的复杂而具体的程序;
控制器:是主板上的一块或一组芯片,负责控制连接的设备,他从操作系统接受命令;
九、总线与南桥和北桥
总线:将计算机硬件(cpu、内存、io设备)和其他设备连接起来进行通讯.
北桥:即PCI桥:连接高速设备
南桥:即ISA桥:连接慢速设备
十、操作系统的启动流程
1.计算机加电,
2.BIOS开始运行,检测硬件,如cpu、内存、硬盘等;
3.BIOS读取CMOS中存储器中的参数,选择启动设备,
4.从启动设备读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64位为分区信息,最后两位为标志位)
5.根据MbR读入Bootloader(grub)启动装载模块,启动操作系统;
6.系统从BIOS中获取配置信息,检查驱动。调入内核(Kernel)
十一、应用程序的启动流程
1.双击快捷方式,告诉操作系统要启动文件的路径
2.操作系统接到命令后,去硬盘找到文件的内容,把内容放到内存中,然后cpu进行读取运行。
3.应用型软件无法操作硬件,需要向操作需要发出调用,由用户态转换为内核态,然后操作系统帮助我们去硬盘上找我们所需的文件,找到后进行读取后返回给应用软件,由内核态转换为用户态.