文章摘抄于矢泽久雄的《计算机是怎样跑起来的》,用于个人学习,内容有不当或错误的地方请见谅。让我们一起学习,共同进步。
文章目录
第一章 计算机三大原则
1.1三个根本性基础
-
计算机是执行输入、运算、输出的机器
计算机硬件由大量IC(集成电路)组成,每块IC上有许多引脚(有些用于输入,有些输出)。
-
程序是指令和数据的集合
指令–>控制计算机进行输入、运算、输出的命令。(组成函数、语句、方法等)
数据–>1.作为指令执行对象的输入数据。2.从指令执行结果得到的输出数据
编译:把用C语言等编程语言编写的源文件转换成用机器语言(原生代码)编写的文件(生成…exe文件 ,里 面是数值的罗列)无论哪个程序,其内容都是数值的罗列,每个数值要么是指令要么是数值。(怎么区分?)
-
计算机的处理方式有时与人的思维习惯不同
计算机把什么都(如文字)转换成数字再做处理;
计算机协同工作指输入到一台计算机中的数据,可以通过互联网传送到与这台计算机相连的其他计算机上执行运算,运算所输出的结果再返回给这台计算机。(只要定义了指令和数据规范,装有符合规范的程序的计算机就可以相互协作了)
1.2计算机网络
1.按网络作用范围分类:广域网WAN、城域网MAN、局域网LAN、个人区域网PAN
LAN局域网:把一栋建筑物内或一间办公司内小规模网络称作LAN。
WAN:像互联网那样将企业和企业联结起来的大规模网络
2.按网络使用者分类:公用网、专用网
3.性能指标:速率,带宽,吞吐量,时延,往返时间RTT,利用率
第二章 试着制造一台计算机
计算机工作原理:CPU在时钟信号的控制下解释、执行内存中存储的程序,(CPU配合着由时钟发生器发出的滴答滴答的时钟信号,从内存读出指令,再依次对其进行解释和执行)按照程序中的指令从内存或I/O中把数据输入到CPU中,在CPU内部进行运算,再把运算结果输入到内存或I/O中。
2.1基础元件
- CPU
- 内存
- I/O
2.2连接电源、数据和地址总线
Z80CPU、TC5517和Z80 PIO上分别带有Vcc引脚(电路正常供电电压+5V)和GND引脚(接地的电压0V),将+5V和0V连接到时钟发生器上。连通电源后这些IC和时钟发生器就可以工作了。微型计算机的IC(数字IC),每个引脚要么0V,要么+5V,通过这两个电压与其他IC进行电信号的收发。除VCC和GVN上的电压,其他引脚上的电压会随着计算机操作在+5V和0V之间不断变化。
一个二进制数(数字IC上一个引脚所能表示的0或者1)所表示信息称为“1比特”,8比特为一个字节。
CPU上有“地址总线引脚”,Z80CPU的地址总线引脚有16个,用代号A0A15,A表示Address(地址)。015表示16位二进制数中各个数字位置,0为最低位,15为最高位。16个地址总线引脚所能指定地址有65536个(2的15次方)(即0000000000000000~1111111111111111).因此Z80CPU可以指定65536个数据存取单元(内存存储单元或I/O地址),进行信息输入输出。
一旦指定存取数据的地址,就可以使用数据总线引脚进行数据的输入输出了。Z80CPU的数据总线引脚有8个,D0D7,D为Date,07为二进制各数的位置。可一次性输入8比特的数据。
内存的TC5517上也有(A0A10)和(D0D7)同Z80CPU上带有相同代号引脚相连。其可以存储2048个8比特的数据。但输入程序的指拨开关以8比特为单位指定内存地址,所以只使用(A0~A7),其余连到0V上,只能用256个,
寄存器位于CPU和I/O中的数据存储器。Z80 PIO上有四个寄存器(端口A控制、端口A数据、端口B控制、端口B数据)端口就是I/O与外部设备之间输入输出数据的场所。Z80 PIO中D0~D7与CPU中带有相同代号的引脚连接。B/A和C/D分别连在Z80CPU的地址总线引脚A0和A1上。若赋予B/A(A上有横线)引脚1表示选中B,反之赋予0则表示选中A。
通过Z80CPU的A0A7地址总线引脚可以选择内存(TC5517)中的存储单元。使用Z80CPU的A0A1地址总线引脚也可以选择I/O (Z80 PIO) 中的寄存器。Z80CPU的A8~A15地址总线引脚尚未使用电路图中NC表示引脚什么都不用连接;对于只用于输入和输入输出两用的引脚,不需要使用时把引脚的电压固定成+5V或0V。
时钟信号
CPU和I/O的运转离不开时钟信号。为传输时钟信号需要把时钟信号8号引脚和Z80CPU的CLK(时钟)引脚、Z80 PIO的CLK引脚分别连接起来。时钟发生器的8号引脚与+5V之间的电阻用于清理时钟信号。
2.3区分读写对象是内存还是I/O
Z80CPU连接到TC5517和Z80PIO上,都使用了地址总线引脚A0和A1,CPU无法区分访问的是内存的存储单元还是I/O的寄存器
解决:
2.4控制引脚
这些引脚上输入输出的电信号具有控制IC的功能
2.5连接外部设备
通过DMA将数据上的数据存储到内存。
输入测试程序:按下Z80CPU上DMA请求开关。拨动用于指定地址的指拨开关,设定出第一行代码所在内存地址00000000,然后拨动用于输入程序的指拨开关,设定出程序代码00111110,然后按下用于向内存写入程序的按键开关,循环往复,输完后,按下用于重置CPU的按键开关,控制DMA请求的快动开关还原成关闭状态,同时程序运行。
第三章 体验一次手工编程
第四章 程序像河水一样流动
程序是用来在计算机上实现现实世界中的业务和娱乐活动,程序员需结合计算机特性(数据结构),用程序表示现实世界对问题的处理步骤(算法),即处理流程
通过流程图(顺序/循环/条件)
CPU中有各种各样的寄存器,PC(程序计数器):负责存储内存地址,该地址指向下一条即将执行的指令。每解释执行完一条指令,PC寄存器的值就会自动被更新为下一条指令地址。(基本从内存低地址到高地址)
特殊程序流程–中断处理
计算机使程序的流程突然跳转到程序中的特定地方,这种跳转是通过CPU所具备的硬件功能实现。即由于外部原因使正常的程序中断,中断后再返回到之前流程的过程就是中断处理流程。(个人计算机上,中断请求是由连接到周边设备上I/O模块发出的–CPU上有接受I/O设备中断请求的引脚)
特殊程序流程–事件驱动
把用户在应用程序中点击鼠标或者敲击键盘这样的操作称为“事件”,负责检测事件的是Windows。Windows通过调用应用程序的WndProc()函数通知应用程序事件的发生。而应用程序根据实际的类型做出相应的处理,这种机制就是驱动。
第五章 与算法成为好朋友的七个要点
程序中的“哨兵”:一种含有特殊值的数据,可用于标识数据的结尾等,字符串末尾用0表示,链表末尾用-1表示等
5.1算法要点
1.要点一:算法中解决问题的步骤是明确且有限的
2.计算机不靠直觉而是机械的解决问题
3.了解并应用典型算法
4.利用计算机的处理速度
5.使用编程技巧提升程序执行速度
6.找出数字间的规律
7.先在纸上考虑算法
第六章 与数据结构成为好朋友的七个要点
变量:按变量所存储数据的大小被分配到的一块内存空间。(数据容器)
数组:连续分配的一块特定大小的内存空间
栈(LIFO):先进后出(桶)
队(FIFO):先进先出(排队)
链表:
6.1数据结构要点
1.了解内存和变量的关系
计算机所处理的数据都存储在M内存的IC中。内存被分成若干数据存储单元,每个单元存储一字节数据,且分配一个编号(地址),如果64M字节内存就有0到64M(M=100万)个地址。
定义的变量a被存储在哪块内存空间中由操作系统分配。
2.了解作为数据结构基础的数组
数组在内存中由操作系统分配一块连续的存储空间,并将其整体命名。
栈、队列、链表、二叉树这些数据结构是通过程序从逻辑上改变了内存的物理结构
3.了解栈和队列
相似:把不能立即处理的数据暂时存储起来。
栈:1.定义一个数组(栈的大小) 2.定义一个变量(存储了一个索引,指向存储在栈中最顶端的数据)
队列:一个任意大小的数组;2.用于存放排在队头的数据对应的索引的变量;3.用于存放排在队尾的数据对应的索 引的变量;4.一对儿函数,用于把数据存入队列中和从队列中把数据取出来
4.了解结构体组成
一旦完结结构体,就可以把结构体当作一种数据结构,用它来定义变量,在内存上分配了一块空间存储结构体的对象。巧妙运用结构体的数组就可以实现链表和二叉树。
5.了解链表和二叉树
定义一个指向下一个元素的指针。
第七章 面向对象编程
在面向对象编程中,类是对象的定义,而对象是类的实例。
7.1类有三种使用方法
1.仅调用类所持有的个别成员(函数和变量);
2.在类的定义中包含其他类(组合)
3.继承已存在的类定义新的类
第八章 数据库
第九章 理解TCP/IP
网络:通过连接多台计算机所组成的、可用于交换信息的系统(互联网是网络的一种,时我们的计算机,和远在千里的计算机连接)
信息以电信号在网线传播,所以计算机彼此之间能进行信息交换。但为了交换信息,必须在发送者和接收者之间事先确定发送方式。这种对信息发送方式的规范或约束称为“协议”
LAN局域网:把一栋建筑物内或一间办公司内小规模网络称作LAN。
WAN:像互联网那样将企业和企业联结起来的大规模网络
TCP/IP:互联网所使用的一套标准协议
MAC地址:MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。
9.1实验环境
办公室内网络
路由器:负责将LAN连接到WAN上。路由器一端会先连接到互联网服务提供商思的路由器上。在服务提供商那里,又会将它们的路由器连接到其它路由器上,通过这种方式最终连入到互联网的主干线缆上。像把LAN这样的小网联结起来就能织成互联网的大网。
9.2网卡MAC地址
网络硬件
组建公司内部网络:1.安装到每台计算机的网卡;2.插到网卡上的网线;3.把网线汇集起来连在一处的集线器;4.用于接入互联网的路由器;注意这些硬件规格需相互匹配。
在以太网中,发送给一台计算机的电信号也可以被其他所有的计算机收到。用MAC地址的编号指定电信号的接收者。每块网卡的ROM中都预先烧录了一个唯一MAC地址(厂商编号和产品编号组成,独一无二)
9.3计算机IP地址
在TCP/IP网络中,除了硬件上的MAC地址,还需要为每台计算机设定一个软件编号(IP地址)。通常把设定IP地址的计算机称为“主机”,路由器算计算机的一种也有IP地址。TCP/IP中传输的数据都会携带MAC地址和IP地址两个地址。
IP地址是32比特的整数,每8比特为一组,用’.'分隔,分成4段表示。8比特换成整数0255,所以可用IP地址的整数0.0.0.0255.255.255.255,共计4294967296个。
子网掩码:标识哪一位到哪一位是网络地址,哪一位到哪一位是主机地址
IP与端口
浏览器请求-http://网络IP:端口 -------- 服务器响应
IP:定位到具体的服务器 127.0.0.1代表自己这台电脑,端口是自己定义的
端口:定位到具体的应用程序 (所有需要联网通信的应用程序都会占用一个端口号-0–65536之间)
9.4DHCP服务器作用
DHCP(动态主机设置协议):计算机启动时会去从DHCP服务器获取IP地址和子网掩码。
9.5路由器
路由器工作原理:查看附加到数据上的IP地址中的网络地址部分,只要发现这个数据不是发送给LAN内计算机的,就把它发送到LAN外,即互联网的世界中。(当从公司内计算机向另一家公司计算机发送数据时,一个不属于LAN内计算机的IP地址会被发送到数据的发送目的地字段)
路由器是一个计算机,分布在各地的LAN中的路由器相互交换信息,这种信息称为“路由表”,用来记录应把数据转发到哪里。路由器是站在各个岔路口的指路人。
路由器路由过程
浏览其他网站主页,该网站web服务器上的数据要经过若干路由器的转发才能达到我们的计算机上,这种数据经过路由器转发的过程称为“路由”。
查看路由过程
第一行:作为实验对象的LAN内路由器IP
第二行:所租用互联网提供商的路由器
… : 其他互联网提供商的路由器
第n行:另一对象所租用互联网提供商的路由器
第n行:另一对象的路由器
第n行:另一对象的web服务器
9.6DNS服务器
互联网中存在DNS(域名系统)的服务器。该服务器为我们把www.grapecity.com这样的域名解析为210.160.205.80这样的IP地址。
计算机有主机名,LAN有域名组合起来称作FQDN
DNS服务器通常部署在LAN中,记录FQDN和IP的对应关系表。世界范围内的DNS服务器通过相互合作运转起来。
9.7ARP
ARP(地址解析协议):由IP地址到MAC地址的转换。(会将得到的对应关系缓存起来)
9.8TCP的作用及TCP/IP网络的层级模型
TCP/IP表示在网络上同时使用TCP和IP两种协议。
IP协议:用于指定数据发送目的地的IP地址以及通过路由器转发数据。
TCP协议:通过数据发送者和接收者相互回应对方发来的确认信号,可靠的传输数据。
第十章 数据加密
基本手段:字符编码的变换(构成明文的每个字符的编码分别变换成其他数值)