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.条件断点:b fxx(函数名)
2.条件断点:b 12 if i=5000
4.临时断点:tb 行号
还能够经过p 变量
在调试过程当中来查看变量的值
p k=4
,来假设正确调试后面的代码
PS🅱️设断点
r:运行
stop(s):进入函数的下一步
next(n);不进入函数的下一步
无
暂无
本周主要学习了一下linux下的代码编译和调试以及静态连接和动态连接的相关内容。上学期学java时虽然初步学习了一些linux下的命令,可是因为当时主要是在Windows环境下写代码,不少命令几乎都得从新熟悉,最初是感受很不方便也不习惯,可是因为虚拟机出现了些问题,我在实验楼里学习事后感受手感好了不少。确实命令这些东西仍是须要实践与理论相结合着来学,否则总感受记不住,之后要多多实践。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 200小时 | |
第一周 | 5/5 | 1/1 | 15 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进本身的计划能力。这个工做学习中很重要,也颇有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:22小时
实际学习时间:15小时
改进状况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)