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

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

教材学习内容总结

一、实验楼实验二总结

我想尝试下OS系统的使用,所以实验内容都是在终端上完成。

  1. 熟悉vim的操作

  2. 练习gcc编译运行代码

  3. 练习gdb调试代码

  4. 把计算代码制作成静态库math.a和一个共享库math.so

  5. 编写makefile,让代码编译。

二、教材学习提问

  1. 一个C文件是如何变成一个可执行程序的?
  2. 整数运算在计算机中的溢出是怎么回事?
  3. 如何把学习过的数据结构知识同硬件知识结合?
  4. 怎样理解粗浅ISA指令(集体系结构)?
  5. 想要做到优化程序性能,应该保持怎样的思维结构或简单的思维定式?
  6. 如何把程序的数据项存储在层次结构中较高的地方?
  7. 所谓的“库”是什么?如何使用?
  8. ECF异常控制流与异常的关系?
  9. 虚拟内存的作用?
  10. I/O分为哪两种,这两种有什么关系?
  11. 如何理解客户端服务器编程模型?
  12. 并发在计算机系统的各个层有哪些情况?

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

  • 问题1:不会把几个c文件链接在一起。
  • 问题1解决方案:翻阅《深入理解计算机系统》第七章 P465
gcc -Og -o prog main.c sum.c

但是我的电脑输入-Og会提示错误,于是就删掉了-Og,输入

> gcc -o prog main.c add.c sub.c mul.c div.c
> ./prog

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

> gcc -c add.c
> gcc -c sub.c
> gcc -c mul.c
> gcc -c div.c

创建静态库由ar命令完成:

> ar -cr math.a add.o sub.o mul.o div.o
  • 问题2:如何创建共享库(动态库)?
  • 问题2解决方案:输入命令
> gcc -shared -fpic -o math.so add.c sub.c mul.c div.c

  • 问题3:如何Makefile?
  • 问题3解决方案:参考Linux makefile教程,创建Makefile文件
edit : main.o add.o sub.o mul.o div.o
        cc -o edit main.o add.o sub.o mul.o div.o
main.o : main.c head.h
        cc -c main.c
add.o : add.c head.h
        cc -c add.c
sub.o : sub.c head.h
        cc -c sub.c
mul.o : mul.c head.h
        cc -c mul.c
div.o : div.c head.h
        cc -c div.c
clean :
        rm edit main.o add.o sub.o mul.o div.o

然后在命令行里

> make

会发现生成了可执行文件edit,

> ./edit

代码托管

结对及互评

本周结对学习情况

  • 结对学习内容
    创建静态库、动态库。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 1/1 10/10
  • 计划学习时间:12小时

  • 实际学习时间:10小时

参考资料

posted @ 2018-09-23 22:31  Haimi98  阅读(133)  评论(0编辑  收藏  举报