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

计算机基础

 

编程语言的作用及与操作系统和硬件的关系

编程语言是程序员与计算机沟通的介质。

编程语言在程序员的使用下作用于操作系统,而操作系统运行于硬件之上来控制硬件。

 

应用程序-》操作系统-》硬件

编程语言的编写开发结果就是应用程序,应用程序的运行需要在操作系统之上,而操作系统运行作用于硬件以此来控制硬件。

 

cpu-》内存-》磁盘

CPU的运行速度最快,内存次之,磁盘最慢。

在磁盘中保存的程序文件的计算执行需要被导入到内存中,最后传输到CPU中。磁盘永久保存程序文件,内存则保存正在执行程序断电则消失。

 

cpu与寄存器,内核态与用户态及如何切换

CPU是计算机的大脑,它从内存中取指、解码、执行,周而复始,直至整个程序被执行完成。

因访问内存得到的指令时间要比CPU执行指令花费的时间长,所以CPU内部有一些用来保存关键变量和临时数据的寄存器。

寄存器分为通用寄存器、程序计数器、堆栈指针以及最为重要的包括条码为、CPU优先级、模式(用户态或内核态),以及各种其他控制位的程序状态寄存器。

程序计数器是用来存放下一条指令的地址的。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指今的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令!

 

堆栈指针SP就是指示栈顶在RAM中的位置,从它可以了解到存放断点或者现场的位置压栈SP+1,出栈SP-1。堆栈的设立是为了中断操作和中断服务程序的执行,执行完后,还是要回到主程序中来,在转入子程序和中断服务程序前,必须先将现场的数据进行保存起来,否则返回时,CPU不知道原来的程序执行到哪一步,原来的中间结果如何?所以在转入执行其他子程序前,先将需要保存的中断服务程序压入堆栈中保存,以便返回时,再复原当时的数据。供主程序继续执行。

内核态下CPU可以执行指令集中所有的指令包括硬件的所有功能,操作系统在内核态下运行,因此可以访问整个硬件。

用户态下CPU可执行的指令数小于内核态下CPU可执行的指令数,因此不能访问整个硬件。

用户在进行操作时可以在内核态下请求操作系统系

统调用,TRAP指令把用户态切换为内核态执行内核态下的指令以此来访问硬件。

 

存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池

存储器根据访问速度由快到慢分为寄存器、高速缓存、内存、磁盘和磁带。

一级缓存为L1通常用来将已经解码的指令调入CPU的执行引擎,对那些频繁使用的数据字,二次缓存用来存放进来经常使用的内存字。两者差别在于CPU对L1的访问无时间延迟,而对L2的访问会有1到2个周期的延迟。

内存RAM易失性存储断电后数据消失。

EEPROM electrically erasable prom电可擦除可编程ROM和闪存flash memory都是易失性,他们可以擦除和重写,闪存用于固态硬盘,速度介于内存和磁盘之间,擦除次数过多会被磨损。

CMOS是易失性,保持当前时间和日期,还可以保存配置的参数。

 

磁盘结构,平均寻道时间,平均延迟时间,虚拟内存与MMU

 

磁盘结构包括磁头、磁道、柱面、扇区和圆盘。

图中是一个3个圆盘6个磁头7个柱面12个扇区的磁盘,所以容量为6*7*12*512个字节。

平均寻道时间是机械手臂从一个柱面随机移动到相邻柱面的时间。

平均延迟时间是机械手臂移动到正确的磁道正确的数据所在扇区所需的时间。

虚拟内存是运行程序所占内存超过物理内存时,将暂时不需要的程序放到磁盘的某块位置,这块位置就成为虚拟内存。

存储器管理单元memory management unit MMU是CPU中的一个部件,负责快速映射虚拟内存地址。

 

磁带

存储容量高于磁盘但速度低于磁盘,通常用于大型数据库系统。

 

设备驱动与控制器

I/O设备包括设备控制器和设备本身。控制器是主板上的一块或一组芯片,用于连接设备和接受操作系统的指令。

设备驱动是硬件厂商根据操作系统编写的配置文件,添加到操作系统中的一小块代码包括有关硬件设备的信息,为了保证硬件的兼容性及增强硬件的功能。

总线与南桥和北桥

总线式计算机各种功能部件之间传送信息的公共通信干线,北桥连接高速设备,南桥连接慢速设备。

 

操作系统的启动流程

1.  计算机通电。

2.  BIOS运行,检测硬件。

3.  BIOS读取CMOS中的参数,选择启动设备。

4.  从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后2个为标志位)。

5.  根据分区信息读入bootloader启动装载模块,启动操作系统。

6.  操作系统询问BIOS获得配置信息。

应用程序的启动流程

1.      运行程序

2.      CPU接受指令

3.      CPU发送指令

4.      程序由硬盘被调入内存

5.      由内存被调入CPU运行

计算机基础