Linux Operating System Course Resources
Teacher: 李正华
Teach Assistant: 张月、巢佳媛、陈伟、凡子威
2015秋季学期,文正学院大四本科,选修课,部分内容选讲
上课时间:每周一10:30-12:00;地点:A-212
上机课时间:单周周一13:30-15:00;地点:A-206
操作系统课程设计上机时间:双周周一13:30-15:00;地点:A-206
一些补充材料
- C语言编程的知识,如gcc, Makefile, gdb (slides)
Course 1 (2015.9.7)
- Course introduction (slides)
- introduction to Linux (Teacher Zhongguo Li's slides)
- How to install Ubuntu as the second OS (Teacher Zhongguo Li's slides)
Course 2 (2015.9.14)
Course 3 (2015.9.21)
Course 4 (2015.9.28)
Course 5 (2015.10.19)
- Review previous lessons
- commands related with files and directories (slides)
Course 6 (2015.10.26)
Course 7 (2015.11.2)
- shell advanced (not finished) (slides)
Course 8 (2015.11.9)
Course 9 (2015.11.16)
- shell advanced (same slides as Course 7) (可以尝试getenv()这个函数,在c程序中获取系统中的环境变量:man getenv)
Course 10
- regular expressions (slides)
- redirection and pipeline (slides)
Course 11
Course 12
- filters (part B) (slides also in above)
- awk and sed (Teacher Zhongguo Li's 'slides)
Course 13
- Sed (Teacher Zhongguo Li's slides, see above)
- Shell scripts (slides)
Course 14
- Shell scripts (Teacher Zhongguo Li's slides)
- Linux filesystem (slides)
Course 15
- Linux filesystem (see above)
Course 16
- Miscellaneous: xargs, useradd, top, apt-get, init, shutdown (slides)
- Summary (slides)
Not included
- Server administration
- build ftp/mail/forum server
- Kernel related
编程作业要求
- 抄袭绝不容忍,1次发现抄袭,当次作业为0;2次发现抄袭,平时成绩为0。
- 检查之前自己必须编译运行通过,不要耽误老师时间。
- 如果可以在规定的时间内写完程序,上机课时可以让老师检查(不要发邮件给我),检查完拷入U盘,学期末进行抄袭检查。
- 如果不能在规定的时间内写完程序,学期末前会安排周末时间,来苏大本部让助教进行检查。
编程作业1(第10周上机课之前做完,含第10周)
- 写一个加密程序,命名为encrypt-学号.c。编译后命名为encrypt-学号(gcc encrypt-学号.c -o encrypt-学号)
- 如果没命令行参数,"$ ./encrypt-学号",则从标准输入循环读入文本,加密后输出到屏幕上(直到键盘输入结束ctrl+d)。
- 支持1个或多个命令行参数,如"$ ./encrypt-学号 file1 file2 ...",每个参数都对应一个文件,对多个文件逐一分别进行加密,结果输出到屏幕上。
- 加密算法:小写字母a变为b,b变为c,...,z变为a,大写字母类似,其它字母不管,输入只有英文字符。(参考tr 'a-zA-Z' 'b-zaB-ZA')
编程作业2(选Linux操作系统的同学需要完成,第13周上机课之前做完,含第13周)
- 写一个类似ls命令的C语言程序,命名为myls-学号.c。编译后命名为myls-学号
- 命令完成功能为:显示当前文件夹下所有的文件(目录),一行一个文件,包括信息:文件名、文件大小、文件的创建时间。
- 使用的头文件包括dirent.h, sys/stat.h, sys/types.h, unistd.h,函数有opendir, closedir, readdir, stat(大家可以用man 3 readdir,man 2 stat查看说明文档)
- 如果很好的完成如上功能,会给8分;如果可以额外完成其他功能,会酌情奖励分数,最高10分。
编程作业2(操作系统课程设计的同学需要完成,第14周上机课之前做完,含第14周)
- 在Linux下完成一个多线程交互的C语言程序,命名为multi-thread-学号.c。编译后命名为multi-thread-学号
- 命令完成功能为:
- 创建个4个线程(A/B/C/D),同时向屏幕上输出信息。
- 将屏幕看成一个公共资源,同一时刻只能由一个线程占用。
- 以线程A为例,当线程A占用屏幕后,首先在屏幕上输出“\nThis is A\n";然后通过随机函数确定占用时间(rand函数:0-5秒),占用期间,每隔1/5的时间输出一个A(sleep函数);最后,输出"\nDone for A\n",交出屏幕,并尝试下一次占用屏幕,不断循环。
- 其他线程类似。
- 主线程在程序运行30秒后结束所有线程,并退出。
- 多线程相关的头文件为:pthread.h,使用到的函数包含pthread_create, pthread_mutex_init等。由于多线程库是动态链接库,所以编译时需要写:gcc -lpthread xxx.c (-l表示链接一个库)
- 如果很好的完成如上功能,会给8分;如果可以额外完成其他功能,会酌情奖励分数,最高10分。如果大家对如上功能有疑问或建议,可以联系我。
编程作业3(第16周上机课之前做完,含第16周)
- 写一个shell程序,命名为sum-学号.sh(提前学习shell script内容)
- 不断循环,每次从键盘读入一个正整数(1-7位),将每一位加起来,输出到屏幕上(直到键盘输入结束ctrl+d退出循环)。
- 如输入123,输出6;输入2317,输出13。
感谢苏大计算机2012级同学在2015年春季学期反馈的意见,欢迎同学随时给我提意见!以后主要会从以下方面改进:
- 更早开课:与C语言/操作系统同时或之前;大一大二
- 关于上课点名提问加分:做一个点名系统,随机点名,并记录答题结果,做到公平(很多同学提这个意见,这学期给分时会放松这个考评标准)
- 编程题目:每学期2-3次,提前布置并规定截止时间,做一个系统,学生自主提交程序,自动查重,随机检查,如果抄袭则严惩,减少助教工作量
- 有些同学认为PPT内容太简单,计划写一个笔记做辅助,最终目标是写一个简化的教材,其中包括PPT中问题的答案(保护环境,减少森林砍伐)
- 有些同学反映实验课难度低,会布置一些更难的题目,作为选作,额外加分,但不作要求
- 进一步优化课程进度安排和讲课的顺序,确实有些内容设置有点乱,适当提高讲的内容的难度(考试不要求)
- 补充内容:网络服务器相关,git
- 适当降低速度(语速和演示)
- 课上适当放一些课程相关的视频或多媒体资料
Last modified at (UTC/GMT):