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

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

教材问题

  • 第一章 计算机各个组件如何相互影响?系统硬件如何组成的?
  • 第二章 IEEE是什么?
  • 第三章 机器机是什么?学会看懂反汇编码
  • 第四章 Y86指令集的理解与使用
  • 第五章 优化程序性能要注意哪些方面?
  • 第六章 如何写好一个从高速缓存存取数据的程序?
  • 第七章 静态连接是什么?静态连接须要注意哪些?
  • 第八章 如何对进程进行控制?
  • 第九章 为什么要动态存储器分配?什么是虚拟存储器?
  • 第十章 c语言中使用I/O函数要注意的问题?
  • 第十一章 套接字借口是什么?web服务器如何编写?
  • 第十二章 并发编程对服务有什么影响?

教材学习内容总结

第一章

  • 信息就是位+上下文。源程序以字节序列的方式存储在文件中,系统中全部信息——包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网上传送的数据,都是由一串位表示的,区分不一样数据对象的惟一方法是咱们读到这些数据对象时的上下文。只由ASCII字符构成的文件称为文本文件,全部其余文件都是二进制文件。
  • 程序的生命周期由一个高级C语言程序开始,若要运行该程序须要将每条C语句转化成一系列的低级机器语言指令并按可执行目标程序的格式打包,并以二进制磁盘文件的形式存放。目标程序称为可执行目标文件
  • hello.c——>预处理器(cpp)——hello.i——>编译器(ccl)——hello.s——>汇编器(as)——hello.o——>连接器(ld)——hello(可执行目标文件——>
  • 系统的硬件组成:总线、I/O设备、主存、处理器。

1.一般总线被设计成传送定长的字节块即字。html

2.主存是一个临时存储设备,用来存放程序和程序处理的数据。java

3.加载:从主存复制到寄存器;linux

存储:从寄存器复制到主存。git

  • 一个系统上能够同时运行多个进程。
  • 文件就是字节序列。
  • 并发:指一个同时具备多个活动的系统web

    并行:指的是用并发使一个系统运行的更快编程

    本周课堂学习内容

  • Linux下编程:
    1.vi hello.c
    2.编译gcc hello.c
    3.运行./a.out
    4.查看运行完程序的返回值echo $?缓存

  • od -tc -tx1 hello.c用文本查看ASCII码
  • gcc -E hello.c -o hello.i hello.c——>hello.i预处理安全

    gcc -S hello.i -o hello.s hello.i——>hello.s编译服务器

    gcc -c hello.s -o hello.o 汇编码——>机器码并发

第七章

  • 连接是将各类代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行。
  • 链接静态库
ar rcs libhello.a hello.o

    gcc main.c -L -lhello

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

  • 问题1:在学习第七章的过程当中,我将重点放在了静态连接和动态连接的学习上,可是对其区别并不十分了解。
  • 问题1解决方案:经过查找,在博客静态连接与动态连接的区别中了解到

动态连接:
特色:在生成可执行文件的时候(连接阶段),把全部须要的函数的二进制代码都包含到可执行文件中去。所以,连接器须要知道参与连接的目标文件须要哪些函数,同时也要知道每一个目标文件都能提供什么函数,这样连接器才能知道是否是每一个目标文件所须要的函数都能正确地连接。若是某个目标文件须要的函数在参与连接的目标文件中找不到的话,连接器就报错了。目标文件中有两个重要的接口来提供这些信息:一个是符号表,另一个是重定位表。

优势:在程序发布的时候就不须要的依赖库,也就是再也不须要带着库一块发布,程序能够独立执行

缺点:
程序体积会相对大一些。
若是静态库有更新的话,全部可执行文件都得从新连接才能用上新的静态库。

动态连接:
特色: 在编译的时候不直接拷贝可执行代码,而是经过记录一系列符号和参数,在程序运行或加载时将这些信息传递给操做系统,操做系统负责将须要的动态库加载到内存中,而后程序在运行到指定的代码时,去共享执行内存中已经加载的动态库可执行代码,最终达到运行时链接的目的。

优势: 多个程序能够共享同一段代码,而不须要在磁盘上存储多个拷贝。

缺点: 因为是运行时加载,可能会影响程序的前期执行性能

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

  • 问题1:在linux系统中实践设断点时,四种断点的设法和应用不十分清楚。
  • 问题1解决方案:,经过复习上课笔记和上网查资料,我大体明白了四种断点的设法。

1.条件断点:b fxx(函数名)

2.条件断点:b 12 if i=5000

  1. 行断点:b 行号

4.临时断点:tb 行号

还能够经过p 变量在调试过程当中来查看变量的值

p k=4,来假设正确调试后面的代码

PS🅱️设断点

r:运行

stop(s):进入函数的下一步

next(n);不进入函数的下一步

  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

上周考试错题总结

结对及互评

暂无

本周结对学习状况

  • 20155326
    • 结对照片
    • 结对学习内容
      • 学习了课本第一章、第七章的内容
      • 在Linux下代码的编译和调试

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

本周主要学习了一下linux下的代码编译和调试以及静态连接和动态连接的相关内容。上学期学java时虽然初步学习了一些linux下的命令,可是因为当时主要是在Windows环境下写代码,不少命令几乎都得从新熟悉,最初是感受很不方便也不习惯,可是因为虚拟机出现了些问题,我在实验楼里学习事后感受手感好了不少。确实命令这些东西仍是须要实践与理论相结合着来学,否则总感受记不住,之后要多多实践。

学习进度条

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

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

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

  • 计划学习时间:22小时

  • 实际学习时间:15小时

  • 改进状况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

相关文章
相关标签/搜索