Operating System Principles And Implementation

操作系统原理与实现
陈香兰
Spring 2014


考试时间:2014-6-16 14:30-16:30,地点:3B215,3B216

课程基本信息


  1. 必修
  2. 课时:2课时/次*2次/周*15周=60课时
  3. 机时:30;

主讲老师信息


陈香兰(xlanchen@ustc.edu.cn)
  • 课程接待日:周三下午课后,电三421,来之前请先预约
  • 联系电话:0551-3606864-83
  • QQ:9444504443(请提供验证信息“OS_student:你的学号_你的姓名”)

助教信息


  • 人数(2人)
  • 王篁
  • 上机作业相关主页:home.ustc.edu.cn/~ustc
  • 刘松

  • 教材


    使用“恐龙书”,即《Operating System Concepts》
    1. 教材主页:http://www.os-book.com/
    2. 教材信息:英文原版的最新版为第8版,目前国内有第7版的影印版和第6版的翻译版。
    http://codex.cs.yale.edu/avi/os-book/images/os8c-cover.jpg http://ecx.images-amazon.com/images/I/51Jq1Aw1fiL._AA200_.jpg http://images.china-pub.com/ebook15001-20000/18247/zcover.jpg

    其他参考书


    Understanding the linux kernel

    Slides


    0. 课程简介
    1. 第一章 2. 第二章 3. 第三章 4. 第五章 5. 第四章 6. 第六章 7. 第七章 8. 第八章 9. 第九章 10. 第十章 11. 第十一章 12. 第十二章 13. 第十三章

    交作业通知


    第一次交作业的时间:2014年3月5日。截止时间为2014年3月5日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第一章作业
    第二次交作业的时间:2014年3月19日。截止时间为2014年3月19日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第二章作业第三章作业
    第三次交作业的时间:2014年4月2日。截止时间为2014年4月2日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第四章作业第五章作业
    第四次交作业的时间:2014年4月16日。截止时间为2014年4月16日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第六章作业
    第五次交作业的时间:2014年4月30日。截止时间为2014年4月30日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第七章作业
    第六次交作业的时间:2014年5月21日。截止时间为2014年5月21日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第八章作业第九章作业第十章作业
    第七次交作业的时间:2014年5月30日。截止时间为2014年5月30日晚9点之前,以交到助教手上的时间为准。不接受迟交的作业。第十一章作业第十三章作业
    -->

    上机实验


    实验1[上机时间:待定;上机地点:待定;实验报告截止时间:待定]


    在虚拟机(VirtualBox)上安装一款Linux发行版操作系统(推荐KUbuntu)
  • 注意:使用虚拟机不是必须的。可以直接在裸机上安装。也可以使用wubi安装。
  • 熟悉Linux下的软件安装方法
  • 安装一个可用的集成开发环境(推荐:eclipse CDT)和GCC编译工具链(大多自带)
  • 学会编写简单的shell脚本
  • 注意:为防止数据因重装系统丢失,建议将数据与系统分开管理
  • 完成时间:由助教指定
  • 实验2[上机时间:待定;上机地点:待定;实验报告截止时间:待定]


    在linux中,编写一个程序
  • 父进程创建一个pipe后创建一个子进程
  • 父进程输出当前的时间和日期
  • 父进程输出自己的进程号和子进程的进程号
  • 父进程将自己的进程号通过pipe告诉子进程
  • 子进程输出自己的进程号和父进程的进程号
  • 最后,让子进程执行另外一个程序。
  • 提示:getpid,pipe,write,read,close,fork,execve
  • 使用strace跟踪父子进程的运行情况,了解程序是如何在系统中运行起来的。
  • 对可执行程序进行反汇编,了解用户程序是如何请求操作系统的系统调用的。
  • 提供上机报告,说明:
    • 编写程序的过程中参考的材料或者网页
    • 编写程序的过程中出现的错误,解决问题的方法
    • 附上源代码和运行结果的截图
  • 完成时间:由助教指定
  • 实验3:制作启动硬盘并启动一个操作系统映像[上机时间:待定;上机地点:待定;实验报告截止时间:待定]


    • 下载grub-0.97.tar.gz并编译,或者直接下载grub-0.97-i386-pc.tar.gz(这是已经编译好的)
    • 制作grub启动软盘,进而制作启动硬盘
    • 操作系统映像:可以到网络上下载一个可用的OS映像,然后编写menu.lst或grub.cfg,利用grub启动之
      • 例如dlxlinux,或其他
      • 这里提供2个RTEMS操作系统的映像: hello.exe ticker.exe
      • 也可以自己编译一个Linux内核、制作一个根文件系统,并启动之
    • 可以参考 这里
    • 提交实验报告
    • 完成时间:由助教指定

    实验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. 介绍一款主板,要求首先给出整体介绍,然后给出局部介绍。(1~2人)
    3. 介绍完整的Linux的启动过程,要求:(1~3人)
      1. (a) 进入BIOS界面
      2. (b) 说明启动介质(硬盘还是网络)
      3. (c) 有Linux启动菜单选择界面
      4. (d) 有启动完成后的Linux桌面
    4. 介绍完整的Windows操作系统启动过程,要求类似2。(1~3人)
    5. 介绍其他操作系统的启动过程也可以。(1~3人)
    6. 后续逐渐添加中...

    Edited by xlanchen@ustc.edu.cn
    HeFei, AnHui, China.
    Fall, 2011.