Skip to content
mengning edited this page Aug 15, 2013 · 51 revisions

2013年暑期补课计算机操作系统原理(筹备)

什么是操作系统?计算机是如何工作的?操作系统又是如何在计算机上运行的?从这些基本的问题出发,我们一起探索操作系统的奥秘,并动手编写一个自己的操作系统内核,在这个过程中我们需要学习使用C语言、简单的汇编和嵌入式汇编、Linux操作系统的基本接口等。当然还要庖丁解牛式地一一考察学习进程、进程调度、内存管理、文件系统、I/O设备等操作系统的主要构成和相关理论。

课程目标

  1. 记忆和理解操作系统的一些基本概念和术语,能使用操作系统提供的接口编写简单的程序;
  • 比如:函数调用堆栈、中断、进程与线程、竞争条件、临界区、变量锁、信号量、互斥锁、多队列动态优先级调度、可抢占/不可抢占、地址空间、线性地址、虚拟内存、交换、分页、分段、TLB及缓存技术、相对路径、File System Layout
  • 基本的X86汇编指令、Linux操作系统接口fork\exec,sigaction,semget\semctl\semop,pthread,File Operations
  1. 能准确理解操作系统工作的核心机制,能编写或读懂一个简化的操作系统内核;
  • 中断信号发生后在堆栈上产生的效果、进程切换的方法、时间片轮转RR调度算法
  1. 在软件系统设计中常用的一些基本算法能够透彻理解并能比较其优劣和用途;
  • 比如:忙等待互斥的几种算法、生产者消费者问题的几种算法、空间(内存和磁盘)管理(索引方法、空间使用效率、查询速度、空闲块管理等)

Chapter 1 Introduction

  • What Is An Operating System
  • The history of Operating System
  • Computer Hardware Review
  • Important concepts of Operating System
  • Process
  • Threads
  • Race condition/synchronization
    • Mutual exclusion,Critical region
    • Mutual Exclusion with busy waiting
    • Semaphores & Mutexes
    • Classic IPC Problems
  • Process scheduling
    • Preemptive/Nonpreemptive
    • Scheduling Algorithm Goals
    • Round-Robin Scheduling
    • Multiple Queues and Dynamic Priority scheduling
  • memory hierarchy,memory abstraction,address space
  • swapping,virtual memory
  • paging, page tables, page replacement algorithm
  • TLB,multilevel page tables,inverted page tables
  • segmentation,linear address,segmentation with paging

Chapter 4 File Systems

  • File,File attributes,File Operations
  • Directory,Hierarchical Directory Systems,Relative path
  • File System Layout,Contiguous Allocation,Linked List Allocation Using a Table in Memory
  • i-nodes,Implementing Directories,The UNIX V7 File System

实验作业及课程项目

  • 实验一:Linux操作系统的安装和使用
  • 现场检查方法:比如在当前目录下查找以a开头的所有文件,用tar将某个目录打包解包、从某几个文件中查找指定字符串。
  • 实验二:理解函数调用堆栈完成一个简单的嵌入式汇编程序实现函数调用和返回
  • 完成顺序执行的嵌入式汇编代码实现函数调用堆栈变化
  • 现场检查方法:指定某行汇编代码给出当前堆栈内容;正常函数调用中的call和ret的功能在我们的汇编代码中是怎么实现?
  • 实验三:基本目标是:编程实现一个简单的Shell程序(缪),可以将进程(线程)间通信、多线程编程基本知识纳入进来,为之后的实验做准备(缪)
  • 实验四:动态内存分配管理(王)
  • 实验五:文件系统实验,有往年材料可以优化设计一下,讲解应该包含fopen等接口可以多一些,但最终考核内容需要设计一下(王)
  • 实验六:可以将进程(线程)间通信、多线程编程等结合起来来解决一个经典的死锁(第六章)问题,这个要花点心思设计一下(缪)
  • 实验七:I/O设备实验,我希望能将ioctl用户态接口的使用、与linux驱动程序模块mod对芯片寄存器的操控(可能需要用到嵌入式汇编)结合起来设计一个简单的实验(王)
  • 课程项目:mykernel会贯穿整个课程(孟)
Clone this wiki locally