gdb的使用
1、开始gdb调试
输入 gdb [可执行文件名]
2、结束gdb调试
输入quit
3、显示代码
输入l,以默认的方式显示。
输入l 0,表示从第一行开始显示,回车键会执行最近的一条命令,这里是执行l。
4、执行debug程序开始调试
输入run,简写r。
5、给某一行打断点
输入break [行数],break可简写b。
6、查看所有断点
输入 info b,gdb会给每一个断点一个Num编号。
7、去除某一行的断点
输入delete [断点的Num号],delete可简写d。
8、逐过程(相当于VS中的F10)
输入next,next简写n。
9、查看当前位置之前的变量
输入print [变量名],print可简写p。
10、逐语句(相当于VS中的F11)
输入step,step可简写s。
11、查看调用堆栈
输入bt
12、执行完当前函数就停下来
输入finish
13、长显示变量(每一步调试都显示变量的值)
输入display [变量名]
14、取消长显示
输入undisplay [变量对应的编号]
15、跳出循环的办法
输入until [行数],输入循环体之外的行号。
16、跳到下一个断点
输入continue,可简写c。
17、禁用断点
输入disable [断点编号],info b显示所有断点可看到一列Enb,表示断点是否生效。
18、启用断点
输入enable [断点编号]
set var i=100 #直接执行到i==100的地方?
冯诺依曼体系结构
存储器:指的就是内存
输入设备:鼠标、键盘、摄像头、话筒、磁盘、网卡
从磁盘里面读数据时,磁盘就是输入设备。
网卡既是输入也是输出。
输出设备:显示器、音响、打印机、磁盘、网卡
写入数据到磁盘时,磁盘就是输出设备。
CPU:运算器和控制器是其中比较大的两个组件
运算器:算术运算、逻辑运算。
控制器:CPU响应外部事件,协调外部就绪事件。
做系统开发时的一些问题可能是需要软硬件结合来解决的。
显卡是输入设备还是输出设备? 控制器的功能不懂,控制器会控制事件的逻辑
1、为什么要有存储器?
处理数据的速度:CPU/寄存器 > 内存 > 磁盘 > 光盘 > 磁带
木桶效应,整个计算机的性能会被效率最低的设备牵制。
存储器的处理速度和CPU/寄存器最接近。
因为存储器的存在,我们可以提前把外设(输入或输出设备)的数据放入存储器当中,之后的CPU读数据时就会直接和内存打交道,木桶效应的短板就不是外设了,而是存储器,从而提高整体效率。
2、CPU读取数据(数据+代码),都要从内存中读取。
暂且这么认为,不排除CPU会访问外设的情况(尤其是将数据拷贝的内存的过程)。
将外设中的数据加载到内存中,是操作系统或者自己的程序给自己加载.
3、数据从输入设备到存储器的过程叫做input,数据从存储器到输出设备的过程叫做output,数据输入和输出的过程称为“IO”。
4、请描述发送qq消息时,数据是如何“流动”的。
发送:输入设备(键盘)>内存>CPU(给数据添加报头)>内存>输出设备(网卡)
接收:输入设备(网卡)>内存(运行在内存的qq就可以读取网卡的数据)>CPU(解析数据报)>内存>输出设备(显示器)
5、请描述通过qq发送文件时,数据是如何“流动”的。
发送:输入设备(磁盘)...
接收: ...输出设备(磁盘)
操作系统
operating system
驱动程序主要对硬件进行操作,提供操作硬件的软件接口。
操作系统有很多和核心模块,上图四个是最具有代表性的。
操作系统要给用户提供一个稳定、安全、简单的执行环境。
1、操作系统如何管理好软硬件资源的?
管理是对被管理对象的数据的管理
计算机管理硬件是通过先描述(struct)再组织(数据结构).
管理者通过被管理者的核心数据进行做决策 管理者和被管理者不直接沟通 管理者如何拿到数据? 管理者如何将决策交付给下层人员 所有的算法离不开结构?