Lesson3: Introduction to Operating System 学习笔记

最近计划学习 Udacity 上的课程:Introduction to Operating System.

由于是学习笔记,内容中的谬误不可避免,敬请斧正。


操作系统简介

操作系统是应用层与硬件层之间的桥梁,主要起到两个作用:

  • 对底层硬件进行抽象,方便应用层调用。
  • 对硬件资源进行分配,高效利用系统资源。

操作系统实例

  • 桌面操作系统
  • Windows
  • Unix based Systems
    • macOS
    • Linux
  • 手机操作系统
  • Android
  • iOS
  • Symbian

操作系统组成部分例子

抽象(abstrations):

  • 进程(process)
  • 线程(thread)
  • 文件(flie)
  • 套接字(socket)
  • 内存页面(memory page)

方法(mechanisms):

  • 创建(create)
  • 规划(schedule)
  • 打开(open)
  • 写入(write)
  • 分配(allocate)

协议(policies):

  • least-recently-used(LRU),earlist
  • deadline first(EDF)

操作系统设计原则

  • 方法与协议分离(separation of mechanism and policy)
  • 灵活运用不同方法支持不同协议
  • 例如:对内存管理使用 LRU EDF 等协议
  • 优化普通场景
  • 操作系统会在什么场景下被使用
  • 用户会在机器上执行什么

操作系统隔离

  • 用户层(user level),非特权层(unprivileged)
  • 内核层(kernel level),特权层(privileged)

操作系统直接操作底层硬件,因此必须在内核层。

操作系统会对应用进行隔离,保证在用户层的应用不能随意操作硬件,不能随意读写其他应用的内存。

系统调用

System Call,系统调用,指应用通过操作系统调用系统资源。

  • User Mode 执行应用程序
  • 进行系统调用
  • 切换到 Kernel Mode
  • 执行系统调用
  • 切换回 User Mode
  • 系统调用返回

进行系统调用的应用必须:

  • 写入调用参数
  • 在指定位置保存相关数据
  • 进行系统调用

系统调用可以同步调用,也可以异步调用。

从 User Mode 转换到 Kernel Mode 的开销较大,因为需要向 Cache 中写入相关数据,切换 CPU 上的 Mode Bit.

庞大的操作系统(Monolithic OS)

Monolithic OS 将所有可能用到的 Abstractions, Mechanisms and Policies 全部打包,在需要的时候使用。

优点:

  • 功能全面。
  • 便于编译时优化。

缺点:

  • 内存消耗大。
  • 代码冗余。

模块化操作系统(Modular OS)

通过底层的进一步抽象,只要是实现了特定接口(interface)的程序都能作为模块(module)接入系统。

优点:

  • 模块化便于维护。
  • 代码简单,浪费资源少。

缺点:

  • 可能减少了优化机会。
  • 可能依然难以维护。

模块化是现在的主流。

微内核(microkernel)

微内核设计,将 Kernel 层进一步精简,而将我们通常认为是操作系统组成部分的 File System, Drivers 等放在 User 层运行。

优点:

  • 简单短小。
  • 便于调试、保证正确性。

缺点:

  • 兼容性。
  • 应用的复杂性。(抽象不足导致底层暴露)
  • 层间调用频繁,性能下降。
  • 对硬件要求高,往往需要特殊适配。

在嵌入式设备等场景可能有较多应用。

Linux架构

从上到下,依次为:

  • 用户层
  • 应用层
  • 标准库层
  • 系统层
  • 硬件层

macOS架构

基于 BSD.


课程总结:

What is an OS: the bridge between applications and hardware.

OS Examples: Windows,macOS,Linux Android,iOS,Symbian

OS Components: abstractions, mechanisms, policies

System Call: transition between privileged mode and unprivileged mode.

Monolithic OS and Modular OS

Microkernel

Linux Architecture and macOS Architecture.

本文标题:Lesson3: Introduction to Operating System 学习笔记
本文作者:Clouder
本文链接: https://www.codein.icu/lesson3-introduction-to-operating-system/
转载请标明。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇