《计算机是怎样跑起来的》要点记录

计算机的三大原则

  • 硬件:看得见、摸得着的设备,如主机、显示器、键盘。
  • 软件:计算机所执行的程序,即软件和指令。
  • 程序是指令的集合。无论哪个程序,其内容都是数值的罗列,每个数值要么是指令、要么是数据。
  • 输入、运算、输出是硬件的基础。指令就是控制计算机输入、运算、输出的命令。

计算机硬件的组成要素

试着制造一台计算机吧

  • CPU是Central Processing Unit(中央处理器)的缩写。
  • CPU上数据总线的t条数,或者CPU内部参与运算的寄存器数量,都可以作为衡量CPU性能的比特数。
  • 输出时钟信号的元件叫做“时钟发生器”。
  • 电容是存储电荷的元件,衡量电荷能力的单位是法拉(F)。
  • 通常将1个二进制数(也就是数字IC引脚上所能表示的0或者1)所表示的信息称作1比特,将8个二进制(也就是8比特)称作1字节。比特是信息的最小单位,字节是信息的基本单位。
  • 寄存器是位于CPU和IO中的数据存储器。
  • 连接用于区分读写对象是内存还是IO的引脚:
    MREQ:Memory Request,内存请求
    IORQ:I/O Request,I/O请求
    CE:Chip Enable,选通芯片
    RD:Read,表示输入,0为时执行输入操作
    WR:Write,表示输出,为0时表示输出操作
    M1:Machine Cycle 1,机器周期1
    INT:Interrupt,中断
    RESET:Reset,重置
    BUSRQ:Bus Request,总线请求
    DMA:Direct Memory Access,直接存储器访问
    BUSAK:Bus Acknowledge,响应总线请求
    WAIT:
    NMI:
    HALT:
    RFSH:
    ASTB:
    ARDY:
    BSTB:
    BRDY:

体验一次手工编译

  • 机器语言:由二进制数字构成的程序,CPU可以直接对其解释、执行。机器语言有时也叫“原生代码”(Native Code)。
  • 地址:标识内存或I/O中存储单元的数字。内存中有多个数据存储单元。计算机用从0开始的编号标识每个存储单元,这些编号就是地址(Address)。
  • 标志寄存器:用于在运算指令执行后,存储运算结果的某些状态(不是存储结果,是存储状态)。
  • 汇编语言使用“助记符”表示指令功能。汇编语言代码示例:
机器指令:  		1000100111011000
汇编指令:  		MOV  	AX, BX
		LOOP:	IN 		A, (0)	

其中,标签(如LOOP、JP)的作用是为该行代码对应的内存地址起一个名字。

参考:汇编语言(指令简表)

时钟周期:
时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。
我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。
机器周期:
在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。
指令周期:
指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。
单片机中定时器(Timer)、计数器(Counter)区别:
定时器和计数器在单片机内部使用同一电路来实现:当这一电路选择为定时器功能时,其输入源通常来自于内部输入的单位时间脉冲(比如由时钟源产生),包含有时间的概念在里面;当这一电路选择为计数器功能时,其输入源通常来自于外部事件触发,用于统计外部事件的数量,没有时间概念在里面。

程序像河水一样流动着

  • 流程图(Flow Chart)是指用图的形式表示程序的流程。
  • 程序的流程分为三种:顺序执行、条件分支、循环。
  • 特殊的程序流程–中断处理。中断处理是指计算机使程序的流程突然跳转到程序中特定的地方,这个地方被称为中断处理例程(Routine)或中断处理程序(Handler),而这种跳转是通过CPU所具备的硬件功能实现的。比如我们工作中突然接到电话就会先接一下电话,电话结束后继续处理工作。像这样由于外部的原因使正常的流程中断,中断后再返回到之前的流程的过程就是中断处理流程。中断处理程序已经被刻录到BIOS中,不需要我们编写代码处理。
  • 特殊的程序流程–事件驱动。通常把用户在应用程序中点击鼠标或敲击键盘的操作称为“事件”(Event)。负责检测事件的是Windows。Windows通过调用应用程序的WndProc()函数通知应用程序事件的发生。而应用程序则根据时间的类型做出相应的处理。这种机制就是事情驱动。

与算法称为好朋友的七个要点

  • “哨兵”指的是一种含有特殊值的数据,可用于标识数据的结尾等。如字符串的末尾用0表示,在直接插入排序算法中设置哨兵。
  • 算法是程序设计的“熟语”, 7个要点:
  1. 算法中解决问题的步骤是明确且有限的。
  2. 算法不靠直觉二是机械地解决问题。
  3. 了解并应用典型算法
  4. 利用计算机的处理速度
  5. 使用编程技巧提升程序执行速度
  6. 找出数字间的规律
  7. 先在纸上考虑算法

与数据结构成为好朋友的7个要点

  • 变量是数据的容器。
  • 把若干个数据沿直线排列起来的数据结构叫做数组。
  • 栈中数据的存取方式是LIFO(Last In First Out,后进先出);队列中数据的存取方式是FIFO(First In First Out,先进先出)。
  • 7个要点:
  1. 了解内存和变量的关系:变量是程序中数据存储的最小单位,每个变量都对应着一块物理上的内存空间。
  2. 了解作为数据结构基础的数组:数组实际上是为了存储多个数据而在内存上集中分配出的一块内存空间,并且为这块空间整体赋予了一个名字。在内存中存储数据的空间是连续分布的,数组的作用是从内存整体中划出一块连续的空间以供使用。
  3. 了解数组的应用–作为经典算法的数据结构:一些排序算法等。
  4. 了解并掌握典型数据结构的类型和概念:栈,把数据像小山一样堆积起来;队列,把数据排成一队;链表,可以任意地改变数据的排列顺序;二叉树,把数据分成两路排列。
  5. 了解栈和队列的实现方法:利用数组、指针等。
  6. 了解结构体的组成:
    示例:
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book; 
  1. 了解链表和二叉树的实现方法:利用指针。

成为会使用面向对象编程的程序员吧

参考:

  1. 设计模式前置基础知识点-类和对象
  2. 设计模式前置基础知识点-UML类图关系
  3. 类、对象、实例三者之间的差别

一用就会的数据库

  • 键用于设定表与表之间的关系(Relationship)
  • 索引是提升数据检索速度的机制,索引和键没有必然联系。提升数据检索和排序速度的代价,就是插入或更新速度的降低
  • 每个值都能唯一标识一条记录的字段成为主键,主键可以由一个字段充当,也可以由多个字段组合在一起形成复合主键
  • 为了在表与表之间建立关系而在表中添加的、其他表的主键的字段成为外键
  • CRUD:CREATE(插入)、REFER(获取)、UPDATE(更新)、DELETE(删除)

参考:事务和数据完整性:RDBMS的ACID和分布式系统的CAP原则

通过7个简单的实验理解TCP/IP网络

  • MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。
  • 协议:对信息的发送方式的规定或约束。
  • 路由器负责将LAN连接到WAN上。
  • 多路复用(Multiple Access)指的是多个设备可以同时访问传输介质。
  • 子网掩码的作用是表示出在32比特的IP地址中,从哪一位到哪一位是网络地址,从哪一位到哪一位是主机地址。
  • DHCP服务器上记录着可以被分配到LAN内计算机的IP地址范围和子网掩码的值。
  • tracert也被称为Windows路由跟踪实用程序,在命令提示符(cmd)中使用tracert命令可以用于确定IP数据包访问目标时所选择的路径。
    示例:
tracert www.google.com
  • ipconfig /all命令,可以查看电脑的ip地址,mac地址,其他网卡信息;ipconfig /flushdns命令可以刷新DNS缓存
  • nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题
  • ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址。实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容。此外,使用arp命令,也可以用人工方式输入静态的网卡物理/IP地址对,我们可能会使用这种方式为缺省网关和本地服务器等常用主机进行这项作,有助于减少网络上的信息量。如用 arp -a或arp -g 用于查看高速缓存中的所有项目。

试着加密数据吧

参考: 消息摘要、数字签名和数字证书三者在概念上的差别

  • 文本数据可以由各种各样的字符构成。其中每个字符都被分配了一个数字,我们成为字符编码。定义了应该把哪个编码分配给哪个字符的字符编码体系叫做字符集。字符集分为ASCII字符集、Unicode字符集等。

XML究竟是什么

  • 通常把用于定义新语言的语言称作元语言。通过使用XML可以定义各种各样的新语言。
  • 通常把通过添加标签为数据赋予意义的行为称为标记。为这种给数据赋予意义的行为定义规则的语言就是标记语言。HTML是用于编写网页的标记语言,更简单地说就是HTML决定了可用于编写网页的标签。
  • 所谓分布式计算,就是把程序分散部署在网络连接起来的多台计算机上,使这些计算机相互协作,充分发挥计算机整体的计算能力。

参考:XML教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值