ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[MIT 6.S081] Lec 18: OS Organization 笔记

2021-11-29 00:00:46  阅读:224  来源: 互联网

标签:IPC Lec 18 L4 线程 内核 微内核 Linux S081


Lec 18: OS Organization

宏内核

Linux, Unix 和 XV6 等传统方式实现的操作系统成为宏内核.

宏内核优点

内核庞大且高度抽象.

  • 可移植性
  • 向应用程序隐藏复杂性
  • 帮助管理资源.
  • 所有内核子系统集成在一个程序中, 数据共享
  • 内核所有代码以完整的硬件权限运行

宏内核缺点

  • 庞大->复杂->容易有 Bug->带来安全问题
  • 通用目的(General-Purpose)->运行变慢
  • 太大而去掉非常复杂的抽象
  • 缺乏可扩展性(Extensibility)

微内核

核心观点

  • 进程间通信(Inter-Process Communication, IPC)
  • 线程或任务
  • 内核只需要支持进程/任务/线程, 以及 IPC 作为信息传递途径

微内核优点(动机)

  • 微内核更小
    • 美感(sense of aesthetic), 设计小而专注
    • 更安全
    • 可验证正确性和安全性
    • 程序更易被优化, 运行速度更快
    • 更具灵活性
  • 大部分功能和函数位于用户空间
    • 代码更模块化
    • 更容易定制
    • 系统更加健壮
  • 模拟或运行多个操作系统

微内核的挑战

  • 最小化系统调用 API
  • 需要开发一些用户空间服务以支持操作系统
  • IPC 的性能

L4 微内核

  • 只有 7 个系统调用
    • Thread Create: 创建新线程, 若地址空间或任务不存在则会创建任务
    • Send/Recv IPC
    • Mapping: 映射内存页面到当前任务或其它任务的地址空间
    • Dev Access: 特权任务可以将硬件控制寄存器映射到本任务的地址空间中
    • 设备中断转换为 IPC 信息. 包括对 Page Fault的处理, 由每个任务关联的 Pager Task 处理
  • 内核进行线程调度和上下文切换.
  • 程序不大
  • 只有 任务, 线程, 地址空间, IPC 这些基础的抽象

IPC 性能

传统管道实现

  • 异步传输
  • 需要内核缓冲区存放信息
    两个用户进程间通信需要:
  • 4 个相同调用, 2 个 send, 2 个 write
  • 8 次用户空间与内核空间的切换
  • recv 时需要 sleep 等待数据
  • 用户进程切换时需要至少一次线程调度和上下文切换

L4 fast IPC

  • 同步传输: P1 调用 send 时会等待 P2 调用 recv, 当两个进程都进入内核后, 直接将消息从 P1 拷贝至 P2(相当于 P1 进入内核返回到 P2)
  • 无缓冲(Unbuffered): IPC 过程无需将数据由用户空间拷贝至内核空间
  • 零拷贝(Zero Copy): 当消息极小时, 可以直接在寄存器中传递, 无需拷贝
  • Page Mapping: 对于极长消息, 可以在 IPC 中携带页面映射, 页面会再次映射到目标任务的地址空间
  • RPC: 使用 call 系统调用, 结合 send 和 recv 系统调用: 发送消息的同时等待其它任务的请求消息

在 L4 微内核上运行 Linux

  • L4 作为内核运行在底部, Linux 作为一个服务运行在用户空间(作为一个任务)
  • 每一个 Linux 用户进程又作为一个独立的 L4 任务运行. Linux 进程执行系统调用时会转换为发送到 Linux 任务的 IPC 消息并返回.
  • L4 只有一个内核线程运行 Linux 内核, 而非每个用户进程对应一个 L4 内核线程. 用户进程的内核线程由 Linux 内核线程实现.
  • L4 控制用户进程的调度运行
  • 缺点: 缺乏和 Linux 一样复杂的线程调度机制

微内核的影响

  • 有关虚拟内存使用的系统调用. 导致了 mmap 等系统调用合并到 Linux 系统
  • 将操作系统作为一个用户程序运行在另一操作系统之上
  • Linux 演进出了可加载的内核模块
  • 基于 IPC 的 Client-Server 支持

标签:IPC,Lec,18,L4,线程,内核,微内核,Linux,S081
来源: https://blog.csdn.net/LostUnravel/article/details/121600543

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有