全部博文(370)
分类: LINUX
2011-08-07 07:44:21
西邮Linux兴趣小组10级暑期学习周总结
第三周(7月29日至8月4日)第一组
组长:刘丹阳
组员:王涛 陈雍 王亚莉 黄傲妮 黄博才
本周任务:
完成《鸟哥Linux的私房菜》基础学习篇第九、十章的学习。
黄傲妮第三周学习总结:
一、学习总结
这一周学习《linux C编程》进程这一章的大部分内容,和鸟哥的第八章“linux磁盘与文件系统管理”。
二、存在问题
主要存在问题的“linux磁盘与文件系统”这一章涉及到很多比较抽象的知识,很多命令不太好理解。
1、文件系统,分区等等一些新的知识刚接触不好消化需要以后再进一步理解;
2、书上说‘uname -r’是当前Linux系统所用的核心版本,如果有很多版本,可以直接输入核版本,又有要知道linux支持的文心件系统有哪些,有命令:ls -l /lib/modules/'uname -r'/kernel/fs但是当我输入该命令显示没有该文件?(问题已解决,原来是引号的问题,'uname -r'应该是`uname -r`,大家看看有什么不一样呢。这样的问题还是第一次见,不知道大家有没有见过,注意下o!)
3、mount命令只能由root执行吗?命令mount不加任何参数可以将系统所有一载入的分区数据列出来,一般用户也可以执行该命令,为什么?
6、父子进程都进入各自的循环,子进程的循环结束之后该进程会结束,怎么会开始调用父进程的?还是像书上说的那样必须先调用exec或exit之后,父进程才可能被调用?因为书上一些例子似乎不用函数exec和exit父进程也可以开始运行,所以有点不太理解到底什么意思?
三、心得体会
这周又接触了一些新的知识,有很多的不理解,所以在过程中比较吃力,觉得很多知识还是得下去再自己反复的看,反复的理解。
陈雍第三周学习总结
本周学习到了:
1.kickstart的配置以及如何以kickstart来自动化安装一个系统;
2.wireshark显示筛选的表达式。如:ip.src == addr && ip.dst == addr;
3.了解了一些红帽虚拟化技术的基础知识,以及kvm的基本配置。
4.通过编写一个简单的ping命令,阅读TCP/IP卷2中ICMP的实现,对icmp协议的工作机制有了更进一步的了解。
心得:
当创建一个原始套节字的时候必须以root身份执行,协议字段可用数字代替,可大大减少书写内容,具体代替的数字可以查看/etc/protocols文件。但是发现这个文件在不同版本的linux下不同,如ubuntu(我用的11.04)下只有很少的一部分,但是fedora15下几乎支持所有的协议,所以,一些不常用的协议如:cbt最好不用数字,因为会降低程序的可移植性。
在收发icmp包的时候发现sento函数不能直接发送结构体的指针,但那些数据包都是由结构体定义的,
如:struct icmp.因此它定义了一个“缓冲区”,一般都为一个字符串,如:char sendbuf[100].
它用了一种方法将结构体的内容放入“缓冲区”,也就是字符串中,代码大致如下:
struct icmp *icmp;
char sendbuf[100];
icmp=(struct icmp *)sendbuf; 这句把字符串的首地址强制转换成机构体指针赋给了icmp
icmp->icmp_type=ICMP_ECHO;
icmp->icmp_code=0;
icmp->icmp_id=getpid();
icmp->icmp_seq=1;
此时通过gdb看到sendbuf里面已经有值了,是赋给结构体中的那些值.
但是用printf(“%s”,sendbuf)却打印不出值来。
然后便可以用sendto将其发送出去.令一方便可以用recfrom将其收到再存入自己的缓冲区.
再通过一个相同的转化存入自己的icmp结构体当中,然后便可依次读出各个成员的值.协议的作用就这样表现出来了.
黄博才第三周学习总结:
本周学习了上周没完成的部分,《linux c编程实战》主要是gdb调试器的使用,但还是不熟练,往后要加强练习;还有搞清楚结构体对齐的问题,面试题还是也看了第五章的c语言预处理、结构体、和make的使用,对预处理、结构体算是复习了,不过对于make的使用和makefile的编写还不太理解,特别是一些规则一时半会记不清;第六章的文件操作只是看了一半,发现linux的某些c函数与之前所学的有所差别,对于一些系统调用函数还比较陌生,它只是把某一小块截取下来讲解,还有很多需要补充学习。
结合一下《鸟哥的linux私房菜》的学习,鸟哥把linux的命令使用方法技巧告诉我们,而c编程实战则是告诉我们这些命令是如何实现的。前面落下的内容下周尽量把它补上。
刘丹阳第三周学习总结:
学习内容:
《POSIX多线程程序设计》
《Linux C编程实战第九章》
学习心得:
感觉Linux C编程实战对许多问题还都是点到为止。包括进程、线程、信号、管道,虽然都有涉及,但是基本都仅仅是讲了每一部分的系统调用和一些库函数,对于其更深层的用法涉及的还相对比较少,想进行更深入的学习,就必须依靠些专门讲这些部分的书。看了《POSIX多线程程序设计》虽然只看到第四章,但是对锁和条件变量的理解更深刻了。而且对于一些专门的宏也更加理解了。
学习中遇到的问题:
1.多线程操作和一个线程中循环操作哪个更加浪费内存?
2.为什么条件变量一定要和一个互拆锁链接着?
王涛第三周学习总结
一 .linux下c编程实战
1. 本周对于c编程主要学习了进程这一章!
进程的三个段:
数据段:存放全局变量,常数以及动态数据分配的数据空间,根据存放的数据,又可以分为普通数据段以及堆!
代码段:存放程序代码数据.
堆栈段:存放子程序的返回地址,子程序的参数以及程序的局部变量!
对于多进程的环境有了初步的认识!在下一周加强对多进程的理解。
学习了书写简单的makefile:
make的工作方式:
1) 读入所有的makefile。
2) 读入被include的其他makefile。
3) 初始化文件中的变量。
4) 推导隐晦规则,并分析所有规则。
5) 为所有的目标文件创建依赖关系链。
6) 根据依赖关系,决定哪些目标要重新生成。
7) 执行相关生成的命令。
还有就是相关进程方面函数的学习,学习这些函数重在理解,不会的时候能man一下就知道其用法,所以就不用刻意去记住那么多函数。
二. 鸟哥私房菜
这一周主要学习了鸟哥私房菜上面的第四部分,对linux下帐号的管理,准备将shell script这一章后面专门找一段时间来系统的学习,由于对进程的学习花去拉大部分时间,所以本周的进度较前两周比较慢一点。
王亚莉第三周学习总结:
1.学习内容:
编程实战第七章
鸟哥第十章。
2.收获和问题:
了解了进程的概念,知道进程是区别于程序的动态程序;了解进程的内存映射是指在内存中存放可执行程序,但是不明白程序映射的布局;了fork和fork的区别,想自己写,却不知从何下手,接下来还是要考虑练习操作。
鸟哥中,看了第十章,有些部分感觉很帅,就像多功能窗口,很有印象。但是有些命令,在实际操作的过程中和课本上有一些差别,不能得到一样的效果,不知道是因为版本的问题还是别的,但总是有时候正确,有时又不行的状况。悲剧的是,看完之后仍旧没有找到“无法写入中文“这一个问题的解决办法。整章内容看完之后留下深刻记忆的很少,等看完了后边,前边有忘的差不多了,暂时没有什么好的记忆这些东西的方法,很伤啊。
小组总结: