【清华大学】操作系统 陈渝 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虚拟出的是一个完整的计算机
    在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《基于Rust语言的组件化可重用操作系统内核设计》这篇论文阐述了一种新型的操作系统内核设计思路,即基于Rust语言实现可重用的组件化操作系统内核。Rust语言是一种安全、并发、现代化的系统级编程语言,具有内存安全、数据竞争自动检测、无GC、抽象层次高等优点,非常适合在操作系统内核中使用。 论文中提出的组件化操作系统内核设计思路,将内核划分为多个可重用的组件,每个组件实现特定的功能,并提供标准的接口和抽象,方便其他组件的调用和扩展。这种设计思路可以有效地提高操作系统内核的可维护性、可移植性和安全性。 在Rust语言的支持下,该操作系统内核在实现过程中采用了多种现代化的技术,如虚拟内存管理、进程管理、任务调度、文件系统管理等,每一个组件都采用了模块化、抽象化、可编程化、可扩展化的设计理念,使得整个系统具有高度的灵活性和可定制性。 此外,该操作系统内核还采用了一些基于Rust语言的特性,如避免数据竞争、安全指针、内存安全检查等,从而大大提高了系统的安全性和稳定性。 总之,《基于Rust语言的组件化可重用操作系统内核设计》这篇论文提出了一种有前途的、现代化的操作系统内核设计思路,为未来的操作系统内核研发和实践提供了新的思路和经验借鉴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kxwang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值