今天是正式上课的第一天,听瞎驴老师讲课还是很容易听懂的。虽然接触计算机比较早,大学也学过一点相关内容,今天的课也是很有收获的,需要一定的时间来整理记录一下今天所学的东西。
一、编程语言的作用
我们使用电脑的目的就是让计算机帮助我们实现一些功能,提高我们的工作效率。老板让员工干一件事情,需要下达指令,这个指令可以是口头表达、文件下发,总之需要一个交流的介质或者沟通的媒介。编程语言就是人和计算机之间沟通的媒介。使用编程语言才能让计算机完成我们想要干的事情,达到我们想要达到的目的。
二、编程与操作系统及硬件的关系
计算机硬件是由CPU、内存、主板、硬盘、I/O设备等构成。
计算机软件包括系统软件和应用软件。我们所学的编程语言就是去做应用软件,在操作系统上去运行,控制计算机运行完成我们的功能得出相应的结果。用图标表示就是以下的关系。
三、CPU、内存、硬盘的关系
计算机软件包括系统软件和应用软件。我们所学的编程语言就是去做应用软件,在操作系统上去运行,控制计算机运行完成我们的功能得出相应的结果。用图标表示就是以下的关系。
CPU是做运算处理的操作,相当于人的大脑;内存是短暂存储CPU所用的数据,相当于人的临时记忆;硬盘是永久储存数据的部分,相当于人记录所用到的笔记本。我们的软件是储存在硬盘(磁盘)当中,当运行软件时,这些相关的数据会加载到内存当中, CPU从内存中读写数据进行相应的运算操作。CPU、内存、硬盘之间形成层级关系,主要是因为读取及运算的速度存在差异。CPU的速度最快,内存其次,硬盘最慢。所以CPU不从硬盘直接读取数据,而是从速度较快的内存的读取数据进行运算。关系也可以用下图表示。
四、CPU和寄存器
CPU的工作就是从内存中取指令→解码→执行,循环往复地执行下去。CPU执行的时间比比CPU从内存得到指令或者数据的时间要少很多,所以CPU内部需要有一些用来保存关键变量和临时数据的寄存器,这样能够提高速度也防止出错。
寄存器的分类:
1、通用寄存器:用来保存变量和临时结果,可以保存数据也可以保存地址;
2、程序计数器:用于存放下一条指令所在单元的地址的地方。
3、程序状态字寄存器(Program Status Word ,PSW):PSW是一个8位二进制寄存器,用来存放指令招待后的有关CPU的状态,通常由CPU来填写,但是用户也可以改变各状态位的值。
4、堆栈指针(SP寄存器):堆栈指针寄存器在堆栈操作中使用,PUSH和POP指令是从SP寄存器得到现行堆栈段的段内偏移量。
五、内核态与用户态及切换
在CPU的设计中,用户态和内核态是两种可执行的状态。
内核态:处于内核态,及特权状态。在这种模式下只有内核运行并且可以访问所有内存和其他系统资源。
用户态:处于用户态,及非特权状态,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。每个进程都在各自的用户空间中运行,而不允许存取其他程序的用户空间。
用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。系统调用可以看成是一个特别的的过程调用指令,该指令具有从用户态切换到内核态的特别能力。
六、存储器
存储器的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存取。在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。
计算机存储器的系列:
L1缓存:即为寄存器。用和CPU相同材质制造,与CPU的速度一样快,因而CPU访问它无时延。典型容量是:在32位CPU中为32*32,在64位CPU中为64*64,在两种情况下容量均<1KB。
L2缓存:即为高速缓存。高速缓存是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。
内存:再往下一层是主存,此乃存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升。所有不能在高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失。除了主存RAM之外,许多计算机已经在使用少量的非易失性随机访问存储如ROM(Read Only
Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。
CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等。CMOS的耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失。
磁盘:是计算机的外部存储器中类似磁带的装置,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,数据丢失。磁盘有软磁盘,硬磁盘。硬磁盘就是机械硬盘。
磁盘低速是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转)的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息写在磁盘上的一系列的同心圆上,是一连串的2进制位(称为bit位)。为了统计方便,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G。
每个磁头可以读取一段环形区域,称为磁道。
把一个磁头臂所在位置上所有的磁道合起来,组成一个柱面。
每个磁道划成若干扇区,扇区典型的值是512字节。
数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间。
平均寻道时间:机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就意味着找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置。
平均延迟时间:机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间称为延迟时间。
虚拟内存:许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在Linux中成为SWAP,这种机制的核心在于快速地映射内存地址,由CPU中的一个部件负责,称为存储器管理单元(Memory Management
Unit MMU)。
磁带:在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。
七、控制器和驱动
控制器是插在主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口。
驱动:驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。
八、总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及CPU到存储器的速度都更快。
北桥即PCI桥:连接高速设备。
南桥即ISA桥:连接慢速设备。
九、操作系统的启动流程
BIOS是英文"Basic
Input Output System"的缩略词,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向操作系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。
操作系统的启动步骤:
1、计算机通电;
2、BIOS开始运行,检测硬件:cpu、内存、硬盘等;
3、BIOS读取CMOS存储器中的参数,选择启动设备;
4、从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位);
5、根据分区信息读入bootloader启动装载模块,启动操作系统;
6、然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI。
十、应用程序的启动流程
1、用户双击启动文件;
2、磁盘通过路径找到相应数据文件;
3、将程序加载到内存中;
4、CPU从内存中读取数据进行处理,完成对应的硬件操作进行反馈。