【清华大学】操作系统 陈渝 Part 1 —— 操作系统概述

1.1课程概述

  • 课程简介
    什么是操作系统
    为什么学习以及如何学习操作系统
    操作系统的实例,历史和结构介绍

  • 本课程涉及:

  • 操作系统基本概念和原理

  • 操作系统介绍

  • 中断及系统调用

  • 内存管理

  • 进程及线程

  • 调度

  • 同步

  • 文件系统

  • I/O子系统

  • 练习:在uCore操作系统上做实验

  • 操作系统实验:
    实验0:准备(搭建操作系统,搭建过程)
    实验1:系统启动及中断
    实验2:物理内存管理
    实验3:虚拟内存管理
    实验4:内核线程管理
    实验5:用户进程管理
    实验6:CPU调度
    实验7:同步与互斥(协调资源,提高利用率)
    实验8:文件系统

  • 预备知识:
    计算机结构原理(Intel 80386+)
    数据结构
    C和汇编语言

1.2什么是操作系统

从功能角度看什么是操作系统

第一,具有控制功能

  • 用户角度:操作系统是一个控制程序,可以控制软件
  • 管理应用程序
  • 为应用程序提供服务:I/O服务,声音,网卡服务
  • 杀死应用程序

第二,具有管理功能

  • 资源管理
  • 管理外设,分配资源:使得不同时刻分配不同资源,均匀分配

操作系统层次架构

操作系统位置:于 硬件之上,应用程序之下

操作系统是一个中间层的软件
在这里插入图片描述
操作系统是一个应用软件,管理硬件,上层有统一接口(例如图形界面Shell),方便管理。

而操作系统内部核心是:Kernel

硬件资源管理

  • CPU:CPU调度,进程和线程管理
  • 内存:物理内存管理,虚拟内存管理(为上层提供一个更大的虚拟环境)
  • 磁盘(闪存):文件系统管理(访问非常底层,不方便用户和应用程序存储数据,因此在上面抽象出了文件系统,以文件的形式提供访问,存储的环境)
  • 底层硬件:中断处理与设备驱动

操作系统内核的特征

并发
计算机系统可以同时运行多个程序。一段时间内有多个程序可以同时运行,需要OS管理和调度。不同于并行,并行是同一个时间点有多个程序可以同时运行,需要多个CPU,提供并行性,必须多个CPU。
共享
有“同时”和“互斥”共享。有限的资源可以提供给多个程序,但是内部中一个程序一个时间点只能访问一个内存单元。
虚拟化
操作系统直接面对硬件,把CPU虚拟化为进程,把磁盘虚拟化为文件,内存虚拟化为地址空间。利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务。
异步
程序的执行取决于操作系统的调度。程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知。但只要运行环境相同,OS需要保证程序运行的结果也要相同。

1.3为什么学习操作系统

操作系统是一门综合课程。结合许多不同课程

  • 程序设计语言
  • 数据结构
  • 算法
  • 计算机体系结构
  • 操作系统概念和原理,源代码
  • 技能
  • 操作系统的设计和实现(高手)

操作系统的挑战性

操作系统是计算机研究的基础,和软件硬件都有关,还在研究,具有挑战性:

  • 操作系统很大,代码量大,没有人会把OS方方面面都了解透
  • 实际操作系统很复杂,只看自己感兴趣的部分,或研究部分
  • 操作系统管理并发:并发导致有趣的编程挑战
  • 操作系统代码管理原始硬件:时间依赖行为,非法行为,硬件故障
  • 操作系统代码必须是可靠高效的:低耗CPU,内存,磁盘
  • 操作系统储蓄哦,就意味着机器出错:操作系统必须稳定
  • 操作系统是系统安全的基础

操作系统挑战性体现在哪些地方

课本上原理讲解的部分并不是现在操作系统的主要挑战,比如并发调度算法,I/O磁盘调度可以交给器件本身去完成了,进程调度这些调度算法之类的只是操作系统重要部分的一小部分,原理概念有的是老化的知识点,作为了解即可。

那么,我们需要站在更高的眼光上看待操作系统,因为它是一个大的系统。

操作系统需要权衡

  • 空间与时间
  • 性能和可预测性
  • 公平和性能

硬件方面,操作系统需要

  • 良好的硬件管理
  • 合理的资源分配
  • 例如:硬盘速度跟COU,内存相差很多,操作系统需要协调处理

操作系统领域

工业界:微软,谷歌,Facework,苹果以OS为核心
学术界:ACM,IEEE,USENIX,CFF(国内)
顶级会议:SOSP(每两年),USENIX(每两年)

1.4如何学习操作系统

实践,coding,动手
关注实验,做实验

1.5操作系统实例

操作系统有很多,面向桌面的,面向服务器的(数据中心,气象),移动中断(手机)

  • UNIX(C语言):改变了世界
  • UNIX BSD
  • Linux:很多操作系统都是基于它
  • Windows

1.6操作系统的历史

操作系统的发展随着计算机硬件,应用需求的发展而发展

  • CPU越来越快,计算机速度得到提升
  • 内存越来越大,CPU执行多个程序,内存中可以放进多个程序,并发执行,减小I/O开销,速度提升
  • 操作系统可以批处理,流水调度(初步形态)
  • 多道程序设计
  • 中断
  • 分时系统(为了更好利用计算机资源)方便人机交互
  • 网络的快速发展,出现了分布式的操作系统

1.7操作系统结构

为什么操作系统使用C语言?
C语言不分仪器,有好的移植性,而汇编语言需要在固定机器上,不具备可移植性。

  • 微内核的设计:尽可能把内核功能移动到用户空间。比如中断处理,消息传递放在内核里,文件系统,内存管理等放在外围以程序,服务形式存在,松耦合的架构,而不是通过函数调用的紧耦合方式。
    在这里插入图片描述
    这样的代价就是性能降低,因为多次拷贝的开销远远超过函数调用。所以产业上很少采用

  • 学术界存在另一种更加极端的架构,“外核”
    在这里插入图片描述

  • 虚拟机VMs:一台物理机可以虚拟出多个操作系统
    在这里插入图片描述
    VMM虚拟出的是一个完整的计算机
    在这里插入图片描述

发布了45 篇原创文章 · 获赞 4 · 访问量 2518

猜你喜欢

转载自blog.csdn.net/keke_Memory/article/details/104964815