操作系统

作者: 时间:2016年04月22日 10:38 点击数:

课程介绍

操作系统是计算机科学与技术学科知识体系中的一个核心领域,是计算机系各专业的主干必修课,它在计算机 知识结构中有着极其重要的地位和作用,可为学生较全面的建立起关于计算机系统的概念。该课程主要讲述影响现代操作系统设计的各种因素及实际操作,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才.

操作系统,作为计算机系统最重要的系统软件,其管理计算机系统硬件(如处理器、存储器、I/O设备等)和软件资源(如程序和数据文件等)的机制,从无到有,从简单到复杂,经过近 20 年蓬勃的发展,于上世纪 70 年代形成了较为完整的理论和产品。到今天,操作系统的发展已经走过了近 50 年的历程。近些年来,随着计算机制造技术和用户需求,特别是网络应用的发展,一些新的问题相继出现,例如系统的安全性问题、网络的快速链接与传输问题以及大容量硬盘等层出不穷的新硬件的管理问题等,因而操作系统的理论与设计方面的研究又得到了迅速的发展,特别是系统安全性方面的研究已经成了该学科的一个研究热点与难点。

操作系统是配置在计算机硬件上的第一层软件,是对硬件的第一次扩充。其它所有的系统软件和应用软件都必须依赖于操作系统的支持。本课程从处理机管理,存储管理,设备管理,文件管理和用户接口等角度介绍操作系统的基本原理,并辅以Linux系统为实例。

通过本课程学习,使学生了解什么是操作系统,掌握操作系统的基本原理,实现机制和基本算法,并结合目前的典型操作系统进行具体分析,加深对操作系统基本原理的理解和认识。

我们北京邮电大学软件学院在本科生以及研究生课程中开展了对这门课程的学习,并进行双语教学。 教材,课件,以及上课全用英文教学。使用国外最新教材,使同学们加深对操作系统的认识。

返回顶部

教师介绍

主讲教师

刘知青1

课程主讲教师刘知青教授情况介绍:

1989年毕业于清华大学计算机系。

1994年12月毕业于美国纽约大学计算机科学系,获得博士学位。

曾在美国AT&T公司贝尔实验室任高级研究员,在美国印第安纳大学普渡大学计算机与信息科学系任教授。在国际会议及期刊上发表多篇科技论文。

主要研究方向:函数化程序语言、操作系统

联系方式: 58828089

E-mail: liuzhiqing@bupt.edu.cn

其他教师

张笑燕

张笑燕,副教授,硕士生导师,毕业于北京邮电大学计算机科学与技术学院,计算机通信专业 / 计算机应用专业,获工学学士 / 硕士学位。

主讲过“信号与系统”、“电路分析基础”、“个体软件开发过程”、“小组软件开发过程”、“现代通信网络”、“计算机网络”等课程;

2004.8 —— 2005.8 到美国康奈尔大学做访问学者,主要从事 Ad hoc 和无线传感器网络方面的研究工作。近年来,在国内、国际会议和刊物上发表论文数篇。

目前研究方向包括:通信软件,侧重通信协议的设计与开发;移动通信,侧重移动自组网和无线传感器网络的最新技术的研究。

电话: 13661339549

E-mail :xiaoyan@bupt.edu.cn

赵方

姓名:赵方

性别:女

职称:副教授,硕士生导师

研究方向:传感器网络定位 跟踪 管理 /RFID 网络 /Ad hoc 网络管理 / 计算机网络和软件设计 /linux 系统程序设计

电话: 13521811089

E-mail : zfsse@bupt.edu.cn

返回顶部

教学大纲

Operating Systems Syllabus

This course teaches the fundamentals of operating systems. The students will study the fundamental concepts and design principles of modern operating systems. Specifically, the students will study, in detail, processes and threads, virtual memory, context switches, CPU scheduling, synchronization, dead locks, memory management, virtual memory, and file systems.

This course is organized in two parts: lectures and a major lab. The lectures familiarize the students with the fundamental concepts and design principles. The lab forces the students to understand the concepts at a deeper level, since the students will construct key components of an instructional operating system.

The lectures of this course will cover the following topics:

  • Overview of operating systems, functionalities and characteristics of OS.

  • Hardware concepts related to OS, such as interrupt and memory hierarchy.

  • The concept of a process, operations on processes, process states, concurrent processes, process control block, process context.

  • The concept of a thread, operation of threads, thread control block, thread context.

  • Concurrency and asynchrony, critical sections, atomic operations, mutual exclusion, producer and consumer processes.

  • Synchronization abstractions: semaphores, locks, and condition variables.

  • CPU scheduling, scheduling algorithms.

  • Deadlock: prevention, detection, avoidance, banker's algorithm.

  • Memory organization and management, storage allocation.

  • Virtual memory concepts, paging and segmentation, address mapping.

  • Virtual memory management, page replacement algorithms.

  • File system organization: file and directory structures

  • File system implementation: block allocation, fragments, file descriptors, inodes and UNIX file structures.

The lab of this course will be conducted on the NACHOS instructional operating systems. See the lab section for details.

The course will be graded on the following three parts:

  1. Lab exercises: 20%

  2. Mid-term examination: 20%

  3. Final examination: 60%

返回顶部

实验

Operating Systems Lab

The project for this course is to build an operating system from scratch. We believe that the best way for the students to understand operating systems concepts is to build a real operating system and then to experiment with it. To help the students get started, we have built a very simple, but functional, operating system called Nachos. Over the course of the semester, the students' job will be to improve the functionality and performance of Nachos; we expect that the students will eventually modify or replace much of what we have written.

The project has three phases, corresponding to four of the major pieces of a modern operating system: thread management, multiprogramming, and virtual memory.

Some phases build on previous phases; for example, all parts of the project use thread management routines. As far as possible, we have structured the assignments so that the students will be able to finish the project even if all of the pieces are not working, but the students will get more out of the project if the students use their own software. Part of the charm of building operating systems is that the students get to "use what one builds": if the students do a good job in designing and implementing the early phases of the project, that will simplify their task in building later phases.

It is important to realize that while we run Nachos on top of this emulation as a Java program, the code the students write and most of the code we provide are exactly the same as if Nachos were running on bare hardware. We run Nachos as a Java program for convenience: it is very portable, it is easier to debug (Java is a type-safe language, and we can use jdb), and so that multiple students can run Nachos at the same time on the same machine. These same reasons apply in industry; it is usually a good idea to test out system code in a simulated environment before running it on potentially flaky hardware.

In order to port Nachos to real hardware, we would have to replace our emulation code with a little bit of machine-dependent code and some physical machines. For example, in phase 1, we provide routines to enable and disable interrupts; on real hardware, the CPU provides these functions.

Unless the students work for a really smart company, when the students develop operating system software the students usually cannot change the hardware to make their life easier. Thus, the students are not permitted to change any of our emulation code, although the students are permitted to change most of the Nachos code that runs on top of the emulation.

Finally, some suggestions for doing well in this course:

  1. Read the code that is handed out with the assignment first, until you pretty much understand it. Start with the interface documentation.

  2. Don't code until fully understand what you are doing. Design, design, and design first. Only then split up what each of you will code.

  3. If you get stuck, talk to as many other people as possible.

Nachos Code Distributions

The Java version of Nachos is available for you to download (112 Kb gzipped tarfile). You can unpack this file using the command

gzcat nachos-java.tar.gz | tar xf –

which will create the directory nachos . See the file README contained within the tarfile for information on using and compiling the code.

Java Distributions

The Java version of Nachos only supports Java 1.3.1, as the security manager and set of reserved keywords has changed in later versions. For remote users, you can download 1.3.1 here: http://java.sun.com/j2se/1.3/download.html . If you are curious to see what version of java you are using you can run the following command "java -version". We cannot stress strongly enough that you should not use java 1.4 or java 1.5. You might run into transient errors that will not show up as warnings or errors during compile time.

Project Components

There are four projects. Each project has two components:

  1. A design document.

  2. Project code.

General Project Information

  • Nachos for Java Walkthrough

  • Two roadmaps for the C++ version of Nachos (note that these are non-UCB web sites): one and two .

  • Nachos API Javadoc

  • An informative Nachos tutorial, in PowerPoint and HTML .

  • Design document instructions are available here .

  • Sample Design Document

  • A Better Design Document , though still not perfect

Project Grading

The design document will be worth 40% of the project grade, and the code itself will be worth the other 60%. You must turn in your initial design document in order to get a grade for the project.

Download:

Phase 1: Build a thread system

Phase 2: Multiprogramming

Phase 3: Caching and Virtual Memory

返回顶部

课件下载

Download(PPT):
Download(pdf)

返回顶部

视频下载

点击下载

返回顶部

教材信息

System Concepts, Seventh Edition, Avi Silberschatz, Peter Baer Galvin and   Greg Gagne, John Wiley & Sons, Inc., 2004. ISBN 0-471-69466-5

影印版:《操作系统概念》,高等教育出版社, 2007 , ISBN : 9787040209280

返回顶部

作业习题

返回顶部

考核方法

The course will be graded on the following three parts:

  1. Lab exercises: 20%

  2. Mid-term examination: 20%

  3. Final examination: 60%

 

北京市昌平区北七家镇北京邮电大学宏福校区(102209) 010-58828027