Android

Android

2025 南京大学《操作系统原理》
Android

人手一个的 “手机”

center

  • 曾经可不是今天的样子!
2025 南京大学《操作系统原理》
Android

我上大学的时候在用什么手机?

center

  • Nokia 5310 XpressMusic (2007): 320 x 240 Screen; 2 MP Camera; 30 MB Storage (非常精细)
  • Symbian S40 (相比于 “功能机” 已经是巨大的进步了)
2025 南京大学《操作系统原理》
Android

Symbian 和 J2ME 的时代

center

2025 南京大学《操作系统原理》
Android

那个男人改变了世界

center

2025 南京大学《操作系统原理》
Android

那个男人遇到了对手

center

  • Google 2005 年收购了 Android Inc.,初创团队有一些 BeOS 的成员 (例如 Binder IPC 就来自 BeOS)
2025 南京大学《操作系统原理》
Android

Android 的兴起

Linux + Full JVM + Framework API + 开放平台

  • Dalvik VM \to Android Runtime @ 5.0
  • 那么,代价呢?卡到爆啊!
    • HTC G1: Qualcomm MSM7201
      • 32-bit ARMv6 @ 528MHz (1 CPU, TSMC 90nm)
      • 顺序八级流水线 (IPC < 1),地图都会卡

但这其实是一个高瞻远瞩的决定

  • 他们赌摩尔定律会生效!(同年: i7-965, 4C8T, 6 发射)
  • Symbian: 暴毙于 C++; Windows Phone: 暴毙于 C#
    • (其实也许熬到网页时代,就都能活下来了)
2025 南京大学《操作系统原理》
Android

One More Comment

初期的 “低性能” 总会解决的

  • 算法 (软件) 会进步
  • 硬件也会进步
    • 摩尔定律还没死呢!

在大语言模型时代,同样成立

  • 600B 模型能做到的,30B 的模型也能做到
  • 一定存在一个临界点,能实现 “实时推理无处不在”
2025 南京大学《操作系统原理》
Android

Android Apps

首先,是一个 Java 程序 (Kotlin)

其次,有运行模型

2025 南京大学《操作系统原理》
Android

Platform API 之下:一个 “微内核”

center

2025 南京大学《操作系统原理》
Android

例子:Binder IPC

Remote Procedure Call (RPC)

  • remote.transact()

在性能优化和易用之间的权衡

  • 注册机制
    • 相比之下,管道/套接字就太 “底层” 了,需要手工管理的东西太多
  • 基于共享内存实现
    • Linux Kernel binder driver
    • Copy once
  • 服务端线程池
2025 南京大学《操作系统原理》
Android

例子:Activity Stack

center

  • 在微信拉起知乎,知乎可以返回到微信
    • 这行为在 “切换应用” 后仍能保持
  • 与窗口管理器的 Alt + Tab 稍微不同
2025 南京大学《操作系统原理》