操作系统(2017春季,基地班)课程主页

课程编号

  • 22020230

课程时间与地点

  1. 周一 3~4节,计227
  2. 周五 3~4节,计227

备注:2017.2.20~2017.6.23(共计18周)

教材

参考书目

  • 《UNIX操作系统设计(英文版)》,Maurice J. Bach著,机械工业出版社

课程内容

  1. Introduction,
    • 书面作业:1,3,6,9,14,17,22,24,26,28,31
    • 编程作业:35
    • 讨论:云计算与操作系统(相关主题但不限于:云计算介绍、云计算与资源管理、云计算与虚拟技术、云计算安全 )
  2. Processes and Threads
    • 书面作业:1,4,7,13,14,20,22,30,39,45,49,52
    • 编程作业:64
    • 讨论(一):并行计算与数据处理框架(相关主题但不限于:MPI、OPENCL、CUDA、Mapreduce)
    • 讨论(二):多线程机制与多线程编程(相关主题但不限于:Linux pthread-NPTL实现机制介绍,JVM多线程实现机制介绍,Java与Python多线程编程比较,Python多线程编程与多进程编程比较)
  3. Deadlocks
    • 书面作业:5,8,14,28
    • 编程作业:实现一个并发多线程程序,并使其在运行过程中发生死锁,实现相应的检测算法报告死锁状态。(编程语言可选C, Java, Python)
    • 讨论:死锁检测技术(相关主题:操作系统层面死锁检测技术,应用层面死锁检测技术、静态死锁检测技术、动态死锁检测技术)
  4. File Systems
    • 书面作业:4,10,17,37,38
    • 编程作业:47
    • 讨论:文件系统(相关主题:文件系统备份,日志结构文件系统,日志文件系统,云文件系统)
  5. Memory Management
    • 书面作业:5,6,14,21,33,36
    • 编程作业:51
    • 讨论: 存储管理(相关主题:多核系统中分页、实时系统中的内存管理、面向虚拟机的存储管理、虚拟机迁移中的页面传输)
  6. Input/Output
    • 书面作业:7,27,31
    • 讨论:输入输出(相关主题:磁盘移动臂调度算法、RAID、传感器网络中的能量消耗、时钟中断开销)

课程考核方法

  • 书面作业 10%
  • 编程作业 10%
  • 课堂讨论 10%
  • 实验 30%
  • 期末 40%

跨专业选修学生考核方法:书面作业 10%,编程作业 10%, 期末 80%。

课程实验

  1. 引导程序与游戏 参考资料 (时间:2017-3-3 3-4节,地点:系楼227)
    • MBR:从实模式切换到保护模式,加载游戏并执行;
    • 游戏:实现一个图像化界面的、由键盘控制的小游戏,如黑白棋、推箱子等。
  2. 系统调用 参考资料 (时间:2017-3-24 3-4节,地点:系楼227)
    • 内核:建立完整的系统调用机制,实现基本的图形模式初始化initScreen,画点drawPoint,键盘值读入readKey等系统调用;
    • 库:封装上述系统调用,基于drawPoint系统调用实现drawLine等更高级的库函数;
    • 游戏:利用新增库函数重构前次游戏代码。
  3. 进程与线程 参考资料 (时间:2017-4-7 3-4节,地点:系楼227)
    • 内核:实现进程或线程切换,并提供系统调用fork, exit, sleep(时钟中断)等;
    • 库:封装上述系统调用;
    • 游戏:利用新增库函数重构前次游戏代码,将功能模块构造为多个并发运行的进程或线程。
  4. 同步机制 参考资料 (时间:2017-5-5 4节,地点:系楼227)
    • 内核:实现信号量和P/V操作,并提供相应的系统调用createSem, lockSem, unlockSem, destroySem;(可进一步实现消息机制)
    • 库:封装上述系统调用;
    • 游戏:利用新增库函数重构前次游戏代码,利用同步机制协调各进程或线程的执行顺序。
  5. 文件系统 参考资料 (时间:2017-6-2 3节,地点:系楼227)
    • 内核:实现文件系统的基本操作,并提供系统调用open, close, read, write;(可将屏幕、键盘等I/O设备封装为设备文件)
    • 库:封装上述系统调用;
    • 工具:格式化磁盘镜像,并能在磁盘镜像对应的文件系统中创建目录,从宿主机拷贝文件至磁盘镜像中指定目录等;
    • 游戏:将游戏所需资源(如图片等)作为独立文件存放,利用新增库函数读取资源文件,保存游戏进度或记录等。
  6. Shell(可选)参考资料 (时间:2017-6-2 4节,地点:系楼227)
    • 内核:顺序构造类似初始化进程-login进程-shell进程;新增系统调用exec等
    • 库:封装上述系统调用;
    • 用户:基于前次和本次库函数,实现常用的Shell命令,如ls, ps等;
    • 游戏:在Shell中能运行前次实验完成的游戏,或在规范库函数的情况下,能运行他人实现的游戏。

助教

  • 徐圣斌, QQ: 857442867

© 2015 Institute of Computer Software, Nanjing University. All rights reserved.