- 计算机四大基础课:
操作系统、计算机组成原理、数据结构与算法、计算机网络。
计算机分为:软件和硬件。
硬件:包括显示器、键盘、鼠标、硬盘、CPU、主板等;
软件又分为:系统软件和应用软件。
软件会按照用户的要求协调整台计算机的工作,比如 Windows、Linux、Mac OS、Android 等操作系统,以及 Office、QQ、迅雷、微信等应用程序。
- 编程语言:
是用来定义计算机程序的形式语言,用来向计算机发出指令。计算机语言数量很多,每年都会产生大量新的编程语言。按层次来分,编程语言可分为3类:机器语言、汇编语言和高级语言。机器语言由机器指令集构成,能够直接被机器执行。机器语言写的程序存在不便于阅读、难以记忆的问题。汇编语言本质上也是直接对硬件操作,由于采用了助记符,相比机器语言更加方便书写与阅读。在高级语言中,将多条汇编程序语句合并成更简洁的编程语句,同时自动完成一些如堆栈、寄存器分配管理等工作,更加方便程序员开发程序
机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言。
- 一个完整的程序运行的过程:
- 操作系统:
是负责和底层的硬件进行交互的。把汇编编程转换成机器语言的只能是操作系统。
操作系统(operation system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等)。
操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
1) 文件系统
提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式。
2) 设备驱动程序
提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是让你能吃到鸡蛋,但不用养一只鸡。
3) 用户接口
操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 iOS 系统,也是一种操作系统的交互方式。
4) 系统服务程序
当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。
打个比方,操作系统就好像是一个政府,其它软件都会被它管控;操作系统在给其他软件提供各种便利的同时,还会约束其他软件不能为所欲为。
目前流行的服务器和 PC 端操作系统有 Linux、Windows、UNIX 等,手机操作系统有 Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。
- 总结一下:
- 只有机器语言才能够被计算机直接识别并执行
- 相同的汇编语言程序在不同的指令集平台下生成的机器语言是不一样的。
- 机器语言就是微指令。用来指导计算机硬件的执行。
- 微指令系统的作用就是指挥计算机的各部分工作。
- 微指令系统是指导计算机硬件运行的。那么,这些计算机硬件都包括什么呢?
众所周知,现代计算机是在冯若依曼体系计算机的基础之上发展起来的,在开始我们的讲述之前,了解下冯若依曼计算机的结构还是很有必要的。
- 运算器:进行算数逻辑运算
- 存储器:存放数据以及程序
- 控制器:控制程序、数据、运算处理结果
- 输入设备:将指令转换成机器可识别的机器语言
- 输出设备:将指令转换成人可以识别的内容
可以看到,冯诺依曼结构的计算机是以运算器为核心的,而现在的计算机则是以存储器为核心的。虽然现代计算机是以存储器为中心的,但是还是基于冯若依曼体系的。冯若依曼体系计算机的特点现代计算机都有。
现代计算机的结构是这样的:
运行方式:存储器有很多的存储单元,在一部分存储单元进行输入输出时另外一部分可以进行运算。即可以实现存储与程序计算并行
核心转变为存储器的原因
(1)早期仪表功能较单一,不能同时承担运算和控制调节的功能,运算器和控制器分离。其次当时的存储器还是以磁芯存储器为主,存储的信息量少。最后那时的人们对计算机的要求是能完成一些基本运算,对数据处理要求不高,所以早期计算机以运算器为核心。
(2)现代微处理器的问世,运算器和控制器集成到一个芯片里,处理效率得到很大提升。同时半导体存储器替代磁芯存储器,存储容量成倍扩大。当今信息量与日俱增,人们对数据处理的要求变得很大,处理速度远远大于存储速度,所以为了提高整体的效率改为了以存储器为核心。
- 指令集:
机器执行时必须遵守的规范。一般是CPU开发人员制定的。
设计CPU的厂商有多家,这样就产生了不同的指令集,比如intel阵营的8086指令集,ARM阵营的RISC指令集。
指令集是存储于CPU内部,用来引导CPU进行加减运算和控制计算机操作系统的一系列指令集合!
可以这样说指令集是软件与CPU之间的一个接口而CPU就是接口的实列化。
指令集看不见摸不着,设计人员根据具体的设计规范生成的cpu具体构造就是这些指令集的实例化。
其实指令集就是一组汇编指令的集合,不同的CPU使用的指令集不同。
自主研发的指令集也是基于汇编语言设计的一些列指令,用来指导CPU的运行。
指令集存储在CPU哪里?
指令集就是电路,当电流流向不同的方向,根据路线到不同的电子元器件时,这就是指令集,指令集不存在任何一个器件里,cpu在设计时上面的线路构成了这些指令,所谓的指令其实就是电路路线
- CPU执行命令的过程小知识:
CPU首先通过前端总线与北桥芯片进行交互,北桥芯片从内存中取出指令,传输到指令寄存器中,CPU在从指令寄存器里读取出来通过译码器将其二进制数据翻译成对应的状态并执行!
译码器就是将二进制数据翻译成电路的某种状态,比如“101010”CPU不知道这个二进制指令对应的电路是什么状态,但通过译码器翻译后就是高电平低电平!也就是开关。
- 处理器架构、指令集和汇编语言,三者有何关系?
处理器架构就是处理器的硬件架构,称为微架构。是一堆硬件电路,去实现指令集所规定的操作运算。是的,指令集决定了处理器的架构,因为处理器架构就是用硬件电路实现指令集。但是具体用什么样的处理器架构,设计怎样的硬件电路,每个人设计的都可以不一样。MIPS是一种采取精简指令集(RISC)的处理器架构,既有指令集,也有相应的处理器架构。大名鼎鼎的龙芯就是MIPS的。汇编语言是用人类看得懂的语言来描述指令集。否则指令集的机器码都是一堆二进制数字,人类读起来非常麻烦,但汇编是用类似人类语言的方式描述指令集,读起来方便多了。要设计处理器,首先就需要有指令集,规定处理器相应操作,通过指令集去控制处理器实现相应功能。但处理器是一堆硬件电路,只能识别二进制数据,所以指令集是由一堆二进制数据组成。而二进制数据对人类来说读起来很麻烦。为了方便人类操作指令集,发明了汇编语言来描述指令集。汇编语言类似人类语言,读起来方便多了。虽然汇编语言读起来方便了,但也有缺陷。首先汇编语言操作起来还是挺麻烦的。其次汇编语言对应一条条指令集,所以当指令集改变时,就得修改相应汇编语言,导致其可移植性很差,不能跨平台使用,如ARM的汇编语言与Intel X86的就不同。这时人们就想开发一种更方便操作,超越指令集的语言,于是有了C,C++等高级语言。但处理器只能识别二进制码,那怎么能识别高级语言呢?于是人们开发了编译器,依照如下顺序,将高级语言翻译成二进制码: 高级语言 汇编语言 二进制机器码。至此,人类可以很方便的利用高级语言编写程序,控制处理器完成相应功能。然后程序员这个红火的职业就此大规模诞生了。