一、关于静态库的测试
1 首先对 编写 .h 以及.c 文件,对编辑的文件进行编译。第一次我只是通过命令“gcc .c -o 20179225”,但是通过这个命令只出现了可执行文件并没有出现 .o文件,于是我就又进行了 “gcc -c .c ”得到.o 文件。
2 生成静态库
使用命令“ar cr libmymath.a .o”,其中生成静态库和动态库必须写成"lib+名字.a",意思是将所有的“.o”文件生成静态库。然后对其进行了编译,,编译时用到了“main.c”文件,使用的命令是“gcc main.c -L. -lmymath”其中 -L 代表需要库依赖 ,需要注意的-L.中的“.”不要忘记,“-l+名字”在名字后没有.a。此时生成静态库。
3 设置条件断点
若设置条件断点必须先输入命令“-g”,首先我输入命令“gcc -g .c”,其次输入“gdb 20179225”进入调试窗口,在这个窗口中输入“l”可以看到main函数(输入出现的错误是直接输入的“gdb”在进入编译窗口时输入“l”出现没有符号被读取,这是由于没有输入文件名)然后输入命令“b 6 if a==66”表示在第六行设置断点当a==66时停下。接下来的命令“r”代表运行程序,输入“p a”查看结果
二、关于动态库的测试
1 利用上面编译运行的文件先生成动态库,生成动态库的命令为“gcc -fpic -shared -o libmymath.so *.o”和静态库一样必须以 lib 开头但是最后要以.so结尾。
2 在进行动态库运行时还应该将动态库的库文移动到lib 或者 /usr/lib/ 下,使用的命令为“sudo cp libmymath.so /lib”使用超级权限进行移动(出现的问题是so与/lib间没有加空格键,导致出现没有此文件)
3 进行运行和动态库运行的命令一样,命令为“gcc main.c -L -lmymath”,也以和静态库一样的方法进行设置断点。
三、教材学习
1 进程 由于操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)
多任务系统可以分为两类 :非抢占式多任务和抢占式多任务。
2 Linux采用了两种不同的优先级范围,第一种是nice值,它的范围是-20~+19,值越大优先级越低,也就是说nice值为-20的进程优先级最大。
第二种是范围是实时优先级,实时优先级的范围是0~99,与nice值的定义相反,实时优先级是值越大优先级越高。
3 时间片 有了优先级,可以决定谁先运行了。但是对于调度程序来说,并不是运行一次就结束了,还必须知道间隔多久进行下次调度。系统响应变慢(调度周期长);调度策略必须规定一个默认的时间片,时间片设小了,进程频繁切换带来的处理器消耗。默认的时间片一般是10ms。
4 Linux调度实现 CFS有四个部分组成 时间记账 进程选择 调度器入口 睡眠和唤醒