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

2013年暑期补课计算机操作系统原理

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

课程目标

  1. 记忆和理解操作系统的一些基本概念和术语,能使用操作系统提供的接口编写简单的程序;
  • 比如:函数调用堆栈、中断、进程与线程、竞争条件、临界区、变量锁、信号量、互斥锁
  1. 能准确理解操作系统工作的核心机制,能编写或读懂一个简化的操作系统内核;
  • 中断信号的效果、进程切换的方法
  1. 在软件系统设计中常用的一些基本算法能够透彻理解并能比较其优劣和用途;
  • 比如:忙等待的几种算法、生产者消费者问题的几种算法

Chapter 1 Introduction

  • What Is An Operating System
  • The history of Operating System
  • Computer Hardware Review
  • Important concepts of Operating System

Chapter 2 Processes and Threads

Chapter 3 Memory Management

实验作业及课程项目(筹备)

  • 实验一:Linux操作系统的安装和使用
  • 实验二:理解函数调用堆栈完成一个简单的嵌入式汇编程序实现函数调用和返回
  • 实验三:基本目标是:编程实现一个简单的Shell程序(缪),可以将进程(线程)间通信、多线程编程基本知识纳入进来,为之后的实验做准备(缪)
  • 实验四:动态内存分配管理(王)
  • 实验五:文件系统实验,有往年材料可以优化设计一下,讲解应该包含fopen等接口可以多一些,但最终考核内容需要设计一下(王)
  • 实验六:可以将进程(线程)间通信、多线程编程等结合起来来解决一个经典的死锁(第六章)问题,这个要花点心思设计一下(缪)
  • 实验七:I/O设备实验,我希望能将ioctl用户态接口的使用、与linux驱动程序模块mod对芯片寄存器的操控(可能需要用到嵌入式汇编)结合起来设计一个简单的实验(王)
  • 课程项目:mykernel会贯穿整个课程(孟)
Clone this wiki locally