课程基本信息
- 必修
- 课时:2课时/次*2次/周*15周=60课时
- 机时:40;
|
主讲老师信息
陈香兰(xlanchen@ustc.edu.cn)
- 课程QQ群:218260109(请提供验证信息“OS_student:你的学号_你的姓名”)
|
助教信息
人数(3人)
赵勇(zhao9664@mail.ustc.edu.cn)
李俊(lijun814@mail.ustc.edu.cn) 作业、上机等相关主页:http://home.ustc.edu.cn/~lijun814/
万波(wanborj@mail.ustc.edu.cn)
|
教材
使用“恐龙书”,即《Operating System Concepts》
- 教材主页:http://www.os-book.com/
- 教材信息:英文原版的最新版为第9版,目前国内有第7版的影印版和翻译版。
|
其他参考书
Understanding the linux kernel
|
Slides
0. 课程简介
1. 第一章
2. 第二章
3. 第三章
4. 第五章
5. 第四章
6. 第六章
7. 第七章
8. 第八章
9. 第九章
10. 第十章
11. 第十一章
12. 第十二章
13. 第十三章
打印版pdf
|
交作业通知
第一次交作业的时间:2015年3月16日。截止时间为2015年3月16日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第一章作业
第二次交作业的时间:2015年3月30日。截止时间为2015年3月30日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第二章作业
第三次交作业的时间:2015年4月13日。截止时间为2015年4月13日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。
第四次交作业的时间:2015年4月27日。截止时间为2015年4月27日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。
第五次交作业的时间:2015年5月18日。截止时间为2015年5月18日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。
第六次交作业的时间:2015年6月1日。截止时间为2015年6月1日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。
第七次交作业的时间:2015年6月10日。截止时间为2015年6月10日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。
|
上机实验(上机时间:周三晚上6点半~10点半;地点:电三楼517)
1、【全体适用】在虚拟机(VirtualBox)上安装一款Linux发行版操作系统(推荐KUbuntu)
注意:使用虚拟机不是必须的。可以直接在裸机上安装。也可以使用wubi安装。
熟悉Linux下的软件安装方法
安装一个可用的集成开发环境(推荐:eclipse CDT)和GCC编译工具链(大多自带)
学会编写简单的shell脚本
注意:为防止数据因重装系统丢失,建议将数据与系统分开管理
完成时间:由助教指定
2、【早就安装过Linux,平时工作在Linux平台上,并且不想再次安装Linux的同学适用】
截图并说明你的Linux平台,包括版本信息等内容
查看你的MBR内容,并截图说明
截图并说明你的Linux平台上的集成开发环境或者你的喜欢使用的(其他/非集成)开发环境界面
提供一个你自己编写的shell脚本,脚本中提供使用手册说明脚本编写的目的和使用方法
提供一个你自己编写的C语言程序,附README文件说明编写此程序的目的和编译及运行方法
完成时间:同1
实验2[实验报告截止时间:待定]
在linux中,编写一个程序
父进程创建一个pipe后创建一个子进程
父进程输出当前的时间和日期
父进程输出自己的进程号和子进程的进程号
父进程将自己的进程号通过pipe告诉子进程
子进程输出自己的进程号和父进程的进程号
最后,让子进程执行另外一个程序。
提示:getpid,pipe,write,read,close,fork,execve
使用strace跟踪父子进程的运行情况,了解程序是如何在系统中运行起来的。
对可执行程序进行反汇编,了解用户程序是如何请求操作系统的系统调用的。
提供上机报告,说明:
- 编写程序的过程中参考的材料或者网页
- 编写程序的过程中出现的错误,解决问题的方法
- 附上源代码和运行结果的截图
完成时间:由助教指定
实验3:制作启动硬盘并启动一个操作系统映像[实验报告截止时间:待定]
实验4:多线程编程实践[实验报告截止时间:待定]
- 1(学号尾数为奇数的同学选此题) 写一个多线程的程序,求素数。
- 2(学号尾数为偶数的同学选此题) 写一个多线程的程序,生成Fibonacci序列。(fib_0=0; fib_1=1; fib_n=fib_n-1+fib_n-2)
- (对于1)要求1:用户运行程序时在命令行输入一个数N,然后程序创建一个独立新的线程来输出小于或等于N的所有素数。
- (对于2)要求1:用户运行程序时在命令行输入一个数N,然后程序创建一个独立新的线程来输出连续N个Fibonacci数。
- 要求2:采用两种thread来实现pthread或者Windows thread或者Java thread
- 完成时间:由助教指定
实验5:操作系统进程调度和进程同步实验(本实验在讲完同步后才考虑截止)[上机时间:待定;上机地点:待定;实验报告截止时间:待定]
实验6:存储管理实验[实验报告截止时间:待定]
|
多媒体/视频制作(选一)
- 请制作一个小视频,介绍不同人群对“什么是操作系统”的理解。(1人)
- 介绍一款主板,要求首先给出整体介绍,然后给出局部介绍。(1~2人)
- 介绍完整的Linux的启动过程,要求:(1~3人)
- (a) 进入BIOS界面
- (b) 说明启动介质(硬盘还是网络)
- (c) 有Linux启动菜单选择界面
- (d) 有启动完成后的Linux桌面
- 介绍完整的Windows操作系统启动过程,要求类似2。(1~3人)
- 介绍其他操作系统的启动过程也可以。(1~3人)
- 录制视频说明你在课程实验过程中遇到的软件安装问题和解决过程,要求:(1~3人)
- 清楚说明问题来源
- 清楚说明你的资料来源
- 清楚说明你的解决方法
- 使用FAT文件系统(或其他文件系统),在该文件系统中删除一个文件然后恢复该文件(1~3人)
- 安装NFS文件系统服务环境实现文件共享(可以使用多个物理/虚拟机)(1~3人)
- 堆溢出或栈溢出或两者皆有的实验(1~3人)
- 后续逐渐添加中...
|