课程见学堂在线
第一章 操作系统概述
主要讲以下的几个模块:
- 中断和系统调用:分别是软件和硬件、软件和软件之间的联结
- 内存管理:负责调度内存资源(物理内存和虚存)
- 进程和线程:负责程序运行过程的调度
- CPU调度:进程共用处理器时的时间共享
- 进程间通信:同步互斥
- 文件系统:组织文件,便于读写和查找
- I/O子系统:使用较为统一性的接口对不同的外设兼容
总的框架如下:(以课程教学操作系统为例)
1.1 操作系统定义
- 控制程序?控制程序执行,防止不当使用,为使用者提供服务
- 中间层?协调软硬件
操作系统地位:中间件
操作系统是一种系统软件,对外有两种接口:Shell,GUI
操作系统内核特征:
- 并发:多个程序同时运行
- 共享:宏观上共享,微观上互斥(是并发的细致结构)
- 虚拟:使用多道程序设计技术,让每个用户都感到自己被单独服务
- 异步:要保证异步运行的正确性(能一步一步运行)
1.2. 操作系统的难点
- 操作系统代码量大
- 并发性和琐碎的调度算法的挑战
- 高效性、低耗性、稳定性需求,具有一定的硬件编程性质
- 锁的问题:最底层必须互斥
- 权衡:时间-空间、性能和可预测性、公平和性能(这个就说明了GPU和CPU的性能差异)
- 管理原始硬件:中断、异常、上下文切换、TLB和页表;汇编语言
1.3. 操作系统的实例、演变
windows和linux代表着封闭和开放的两种操作系统范式
提高用户的效率:
- 单用户系统(1945-1955)
- 批处理系统(1955-1965):批处理是单用户系统性能提升的必然要求,减少IO开销可以增加利用率
- 多道程序系统(1965-1980):保持多个程序在内存中交替运行,比较类似于数电中的并行化?
- 分时(1970-)
个人计算机系统和分布式系统:
- 个人计算机的易用性变得重要、安全性要求提升
1.4. 操作系统的结构
- 分层结构,逐层向上进行封装
- 微内核结构,应用程序直接和内核功能进行交互
- 外核结构,将部分物理资源分给多个程序,让每个程序决定如何处理这些资源
(虚拟机是一种较为全面的外核
1.5. 理解操作系统实验的作用
理解操作系统实验的作用:
这一点在做opengl lab时也感觉到了,边写边读,会对全局有一个更深刻的理解。
实验要点模块:
- 驱动
- 内存
- CPU(进程以及用户态、进程的同步互斥)
- 文件系统(以及操统的文件本质)
实验环境:
使用80386(或许要使用虚拟机),qemu是必需的(?
测试题纠错
- 分时操作系统把多个程序放到内存中,将CPU时间按照一定的时间间隔(简称时间片)分配给程序运行,这样CPU就可以轮流地切换给各个终端用户的交互式程序使用。由于时间片很短,远小于用户的交互响应延迟,用户感觉好像独占了这个计算机系统。
- 应用程序的执行先后主要是由操作系统的调度算法和应用程序本身的行为特征来确定。调度算法需要考虑系统的效率、公平性等因素。但公平性的考虑也并不是一定的,比如对于简单的时间片轮换算法来说,等待时间长的程序并不一定在下一次调用中被更高概率选中。
- Unix类操作系统支持交互式应用程序,属于分时操作系统。比早期的批处理操作系统更加强大。且它更多地面向桌面和服务器领域,并没有很强的实时调度和处理能力,所以不算作实时系统。对于ucore OS,如果它实现了实时进程管理、实时调度算法,并支持在内核中的抢占(preempt in kernel),则可以说它也是一个实时系统了。
- 单核处理器中,可以并行执行或工作的对象是各个抽象成文件的组件,比如设备与设备。一个核同时只能运行一个进程。
- 操作系统提供给应用程序的接口是系统调用
- 如下四个选项,命令解释程序是在用户态执行,缺页处理程序、进程调度程序、时钟中断处理程序都在内核态。