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

20155214 2017-2018-1 《信息安全系统设计基础》

第1周学习总结

教材学习内容总结

  • 在GCC编译过程产生的文件中,源程序(xxx.c),修改后源程序(xxx.i)以及汇编程序(xxx.s)都是以文本形式保存,而可重定位目标程序(xxx.o)和可执行目标程序以二进制形式保存。

  • 链接器负责将单独预编译好的目标文件(如printf.o)合并到主程序中。

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

  • 问题1:Unix和Linux之间的区别?

解决方案:通过搜索引擎初步了解,Unix侧重商业版,由封闭团队开发,注重对现有BSD做修改以适合80386系统。Linux作为免费软件,开放开发,使用类Unix内核的Minix作为模板研发,提供完整的Unix接口。

  • 问题2:命令行和shell,虚拟终端Terminal的联系?

解决方案:shell解读并执行处理命令行,实行人机交互,执行脚本等。Terminal作为虚拟终端为shell提供命令行用户界面。

  • 问题3:如何理解“每个I/O设备,包括磁盘、键盘、显示器,甚至是网络都可以视作文件(字节序列)?

解决方案:将Linux中的事物阐释为字节流,文件是对I/O的抽象,那么所有的输入输出都可以通过相同的Linux工具进行读写。主要分为普通文件特殊文件目录文件

  • 问题4:并发和超线程的区别?

解决方案:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。采用超线程即是可在同一时间里,应用程序可以使用芯片的不同部分,可以使芯片在任一时刻同时进行不冲突的多线程处理,使芯片性能得到提升。

  • 问题5:重定位和重定向的区别?

解决方案:通过链接器将符号引用指向新生成的对应存储器,称为重定位数据节。重定向通过管道将父进程的标准输入与子进程的标准输出相连接。

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

  • 问题1:上学期,由于库的建立,以及上传过于简单,码云代码管理的较为杂乱。

  • 问题1解决方案:通过设置分支git branch <name>,管理每周代码以及实验代码可能会较为清晰明了。

  • 问题2:创建静态库libvector.a后,在main2.c中调用提示找不到头文件victor.h?

  • 问题2解决方案:需要新建头文件victor.h,并在其中定义libvector.a中的函数,之后编译main2.c,链接libvector.a即可。

  • 问题3:当运行与动态库libvector.so链接的可执行文件时,出现./p2: error while loading shared libraries: libvector.so: cannot open shared object file: No such file or directory错误提示?


p为链接静态库可执行文件,p2为链接动态库可执行文件,p3为利用接口链接动态库的可执行文件

  • 问题3解决方案:暂时没解决。

代码托管

将脚本statistics中的".java"通过:%s/*.java/*.c替换为".c",即可统计本周c代码量。

上周考试错题总结

结对及互评

ps:结对对象20155237已转学。

其他(感悟、思考等,可选)

  • 相较上学期Java课程的学习,本学期博客的提交时间更加宽裕了。在本周敲的几十行代码里,个人感觉课程的重心已经从对编程语言的学习转向《深入理解计算机系统》。但在阅读到有关计算机结构的一些内容如“储存器映像”时,还是缺乏直观感受,希望后面的学习能够有所理解。

学习进度条

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

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:14小时

  • 实际学习时间:10小时

  • 改进情况:无。

参考资料

原文地址:https://www.cnblogs.com/besti155214/p/7568463.html