20155325 2017-2018-1 《信息安全系统设计基础》第一周学习总结

教材学习内容总结

  • 源程序实际上就是一个由值0和1组成的位(又称为比特)序列。
  • 只由ASCII字符构成的文件(eg.hello.c)成为文本文件,其余文件均为二进制文件。
  • C语言是系统级编程的首选,也非常适用于应用级程序的编写。、
  • 系统硬件的组成:1.总线(常传字)2.I/O设备(系统与外部世界的联系通道,每个I/O设备通过一个控制器或适配器与I/O总线相连)3.主存4.处理器(CPU)
  • 创建并运行C程序
  1. vi 名.c—— 在Linux下进入vim编写C程序
  2. gcc 名.c —— 编译,会出现a.out文件
  3. ./a.out——运行,"."的意思是当前目录
  • 其他命令

    显示程序返回值——echo$?

    出现可征用文件(绿色字体显示)——gcc 名.c -o 名

    编译预处理——gcc -E 名.c -o 名.i

    产生汇编代码(只需看不以"."开头的代码就好,其余都是指令)——gcc -S 名.i -o 名.s

    查看.o文件(里面都是乱码)——od -tx1 名.o

    反汇编的汇编码——objdump -d 名.o

  • 调试

  1. 不常用

gcc -g 名.c

以下gdb窗口输入

gdb a.out

b main(在main设置断点)

info b(查看断点)

r (运行,或写作run也可)

2.常用

cgdb a.out

step(单步调试的“下一步”,可进入函数,可简写为"s")

next(单步调试的“下一步”,不可进入函数,可简写为"n")

quit退出

3.四种断点

函数断点——b 函数名

行断点——b 行号

临时断点—— tb 行号

条件断点—— b if

eg.b 12 if i==5000

(12是行号)

从一个断点跑到下个断点,若没有下一个则行至最后——c

重新执行——r

打印变量值——p

把当前函数执行完——finish

强行把变量赋值——p 变量=值

把当前循环执行完——until

当变量有所变化时显示(适用于循环)——display 变量

  • 模块分发

    xx.c-->windows:xx.lib;linux:xx.a-->windows:xx.dll;linux:xx.so

  • 操作系统有两个基本功能:(1)防止硬件被失控的应用程序滥用(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。
  • 系统是硬件和系统软件相互交织的集合体,它们必须共同协作以达到运行应用程序的最终目的。
  • 虚拟内存:程序代码和数据;堆;共享库;栈;内核虚拟内存(不允许应用程序读写或直接调用它)。
  • Amdahl定律

ASCII码源文件-->可执行文件

通过驱动程序翻译

  • 静态链接器(eg.Linux LD)以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的、可以加载和运行的可执行目标文件作为输出。
  • 目标文件(可重定位目标文件、可执行目标文件、共享目标文件)纯粹是字节块的集合。

教材学习中的问题和解决过程

本次学习的问题

  • 问题1 :看了那段文字后并不能理解线程,甚至对“进程”和“线程”的概念更加模糊
  • 问题1的解决::在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。
    20155325 2017-2018-1 《信息安全系统设计基础》第一周学习总结_第1张图片

参考资料:
进程与线程的区别

  • 问题2:给a.out改名字?
  • 问题2的解决:可以设置输出文件的名字
    gcc -o b.out a.c
    参考资料:
    Linux命令大全 gcc

每章节的问题

第二章:原码、补码、反码在计算机不同情景中各有什么优势?

第三章:重点理解指针

第四章:与HDL的verilog有什么联系?

第五章:如何增加生成的机器代码中指令级并行度的变换?

第六章:如何通过改善程序的时间局部性和空间局部性来提高应用程序的性能?

第八章:如何初步判断哪些情况是由于程序的并发执行引起的不确定行为。

第九章: 计算机系统将软件和硬件结合起来的优点是什么?

第十章:有什么方法能够弥补标准I/O的局限性?

第十一章:如何用套接字接口编写Internet客户端和服务器?

第十二章:并发编程的适用领域

代码调试中的问题和解决过程

  • 问题1:截图后无法把图片传到共享文件夹
    20155325 2017-2018-1 《信息安全系统设计基础》第一周学习总结_第2张图片

  • 问题1解决方案:尝试存到虚拟机本地里,成功。又按照教程装了一遍,然并卵。把窗口变小,鼠标移到windows,使用windows的picpick截图。因为时间紧迫暂时只能这样,后面会继续处理

代码托管

结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    • 20155328
    • 结对学习内容
      • 第一章、第七章
      • 宝贝队友安抚我的情绪,悄悄ღ( ´・ᴗ・` )比心

其他

1.可能是因为老师上课讲了一部分,所以看第一章的时候感到轻松了一些。

2.忙到爆炸。

从假期里那种练字画画听书的悠闲养生突然变成了忙到爆炸的紧张节奏,身心都不大适应。

疲惫。

忙完这一波还有下一波下下波好多波……

本周的学习时间实在是不够了,实在是学不透,下周默默补上。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 16篇 400小时
第一周 9/9 1/1 10/10 第一章、第七章

参考资料

  • 《深入理解计算机系统》

  • unbuntu中编写第一个helloworld简单c语言程序
  • Linux vi/vim编辑器常用命令与用法总结
  • linux系统中如何进入退出vim编辑器,方法及区别

  • 进程与线程的区别

  • Linux命令大全 gcc

转载于:https://www.cnblogs.com/GDDFZ/p/7589225.html

你可能感兴趣的:(开发工具,c/c++,运维)