应用程序的世界

应用程序的世界

2025 南京大学《操作系统原理》
应用程序的世界

操作系统是应用世界的幕后英雄

仅有的机制

  • 初始状态 + 系统调用

操作系统完全 “感知不到” 应用程序

  • Shell: 系统管理的接口
  • 系统工具: grep, cat, gcc, ...
  • 应用程序: vscode, ...
  • 后台服务: sshd, httpd, ...
    • 嘿!AI 时代,操作系统也许可以 “感知” 应用了:为每一个 system call (甚至是 function call) 提供 “traceability”
2025 南京大学《操作系统原理》
应用程序的世界

但我们还是需要应用程序的

前互联网时代

  • 软盘发行 (DOS) v.s. 光盘发行 (Windows 3.X/95)
    • 双击安装程序,输入 CD-Key (“破解” 简直太容易了)

今天呢?

  • 装应用哪那么麻烦;登录账号,自动管理,自动更新、……

center

2025 南京大学《操作系统原理》
应用程序的世界

操作系统上的应用生态

应用商店模式

开源模式

  • 开发者维护代码
  • 和发行版团队共同维护应用仓库
2025 南京大学《操作系统原理》
应用程序的世界

例子:Debian

Our Mission: Creating a Free Operating System

The Debian Project is an association of individuals, sharing a common goal: We want to create a free operating system, freely available for everyone. Now, when we use the word "free", we're not talking about money, instead, we are referring to software freedom.

  • CS 和其他任何学科都不同:开源开放
  • apt-get install firefox (1998)
    • 跨时代的 “Advanced Packaging Tool”
2025 南京大学《操作系统原理》
应用程序的世界

Debian 的包管理 (“软件供应链”)

center

2025 南京大学《操作系统原理》
应用程序的世界

Debian 软件包 (deb)

一个压缩包 (例子)

  • control.tar.xz
    • “control” 文件: Package, Source, Version, Architecture, Maintainer, Depends, Suggests, Section, Priority, Description, ...
  • data.tar.xz
    • 实际的文件 (绝对路径)
  • dpkg 可以安装 deb 包
    • 它也是操作系统上的一个普通应用程序 (使用系统调用完成 “安装” 功能)
2025 南京大学《操作系统原理》
应用程序的世界

dpkg 的流程

Preinstall & Unpack

  • 执行 preinst 脚本,用于检查/备份等

Configure

  • 执行 postinit 脚本;dpkg 标记为 installed

Triggers (可以延迟到多个包安装后执行)

  • 延迟触发的操作 (man-db update 等),例如 update-initramfs

Postinstall

  • 执行 postinst 脚本
2025 南京大学《操作系统原理》
应用程序的世界

关于生态

为什么建设我们的生态那么艰难?

  • 生态的关键是开发者
  • 但 qualify 的开发者太少了
    • 大学四年都在写高血压代码?
    • 错误的设计 = 无法维护的泥潭
      • 课程的使命是让大家 “见识” 各种设计

AI 时代

  • “软件生态” 会消失吗?
    • 只需要一个 “最小” 的执行环境
    • AI 随时随地按需生成代码
2025 南京大学《操作系统原理》