(What) 什么是操作系统?

(What) 什么是操作系统?

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

什么是操作系统?

Operating System: A body of software, in fact, that is responsible for making it easy to run programs (even allowing you to seemingly run many at the same time), allowing programs to share memory, enabling programs to interact with devices, and other fun stuff like that. (OSTEP)

诸多疑点

  • “Programs” 就完了?刚才提到了虚拟机、游戏外挂……
    • 那么多复杂的程序,它们都一样吗?
  • “Shared memory, interact with devices, ...”?
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

什么是操作系统? (cont'd)

“管理软/硬件资源、为程序提供服务” 的程序?

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

操作系统 = Fun

操作系统是来帮我们的,不是来折磨我们的

  • 我们不需要 “精准” 的教科书定义
    • 操作系统是帮我们更好地开发程序的
    • 很多事办起来很复杂,所以需要操作系统 (所以知道 “能做什么” 很有必要)

理解操作系统:理解它发展的历史

  • 操作系统如何从一开始变成现在这样的?
  • 三个重要的线索
    • 硬件 (计算机)、软件 (程序,本课程视角)、操作系统 (管理硬件和软件的软件)
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

复习:理解计算机硬件 (电路)

Quiz: 《数字逻辑电路》课学了个什么?

  • 一个极简的公理系统 (导线、时钟、逻辑门、触发器)
  • 能支撑非常复杂的数字系统设计 (例如,高性能计算机)

center

(复习:山寨 logisim)
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

会编程,你就拥有全世界!

Logisim 是本次课程的第一个彩蛋

  • 同样的方式可以模拟任何数字系统 (包括计算机系统)
  • 同时还体验了 UNIX 哲学
    • Make each program do one thing well
    • Expect the output of every program to become the input to another

命令行是一个非常有趣的设计

  • 在自然语言和编程语言之间达到了平衡
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

复习:理解计算机软件 (程序)

计算机系统基础

  • 高级语言代码 → 指令序列 → 二进制文件 → 处理器执行
  • Everything is a state machine

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

理解操作系统

本课程讨论狭义的操作系统

  • 操作系统:硬件和软件的中间层
    • 对单机 (多处理器) 作出抽象
    • 支撑多个程序执行
  • 这个概念可以推广到 “Systems”
    • 对多台计算机抽象 (分布式系统)、对存储设备的抽象 (存储系统)、……

理解操作系统

  • 理解硬件 (计算机) 和软件 (程序) 的发展历史
  • 夹在中间的就是操作系统
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

一个新时代的诞生:ENIAC (1946.2.14)

“图灵机” 的数字电路实现

  • 执行完一条指令后,可以根据结果跳转到任意一条指令
    • 用物理线路 “hard-wire”
  • 重编程需要重新接线:Programming the ENIAC

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1940s 的计算机硬件

电子计算机的实现

  • 逻辑门:真空电子管
  • 存储器:延迟线 (delay lines)
  • 输入/输出:打孔纸带/指示灯

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1940s 的计算机软件

打印平方数、素数表、计算弹道……

  • 解释了《程序设计》教课书上经典习题的来源
    • (是时候改一改了)
  • 大家还在和真正的 “bugs” 战斗

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1940s 的操作系统

没有操作系统

连编程语言都没有

  • 大家还在画流程图、写机制代码、戳纸带

能把程序跑起来就很了不起了

  • 程序直接用指令操作硬件
  • 不需要画蛇添足的程序来管理它
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1950s-1960s 的计算机硬件

硬件改进了,逻辑门-存储-I/O 的基本格局没有变

  • 晶体管、磁芯内存、丰富的 I/O 设备
  • I/O 设备的速度严重低于处理器的速度,中断机制出现 (1953)

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1950s-1960s 的计算机软件

更复杂的通用的数值计算

  • 高级语言和 API 诞生 (Fortran, 1957):一行代码,一张卡片
    • 80 行的规范沿用至今

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1950s-1960s 的计算机软件 (cont'd)

Fortran 已经 “足够好用”

  • 迎来了自然科学、工程机械、军事……对计算机的需求暴涨
C---- THIS PROGRAM READS INPUT FROM THE CARD READER,
C---- 3 INTEGERS IN EACH CARD, CALCULATE AND OUTPUT
C---- THE SUM OF THEM.
  100 READ(5,10) I1, I2, I3
   10 FORMAT(3I5)
      IF (I1.EQ.0 .AND. I2.EQ.0 .AND. I3.EQ.0) GOTO 200
      ISUM = I1 + I2 + I3
      WRITE(6,20) I1, I2, I3, ISUM
   20 FORMAT(7HSUM OF , I5, 2H, , I5, 5H AND , I5,
     *   4H IS , I6)
      GOTO 100
  200 STOP
      END
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1950s-1960s 的操作系统

库函数 + 管理程序排队运行的调度代码

  • 写程序 (戳纸带)、跑程序都是非常费事的
  • 计算机非常贵
    • $50,000$1,000,000\$50,000-\$1,000,000
    • 通常一个学校只有一台

算力成为服务,操作系统概念形成

  • 多用户轮流共享计算机,operator 负责操作程序切换
  • Operating systems (操作系统/作業系統)
    • (今天算力又成为服务了)
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1950s-1960s 的操作系统

CTSS (Compatible Time-Sharing System)

  • 操作系统中出现了各类对象:设备、文件、任务……
  • CTSS Subroutines:
RDFLXA: Read an input line from console
WRFLX: Write an output line to console
DEAD: Put the user into dead status, with no program in memory
DORMNT: Put the user into dormant status, with program in memory
GETMEM: Get the size of the memory allocation
SETMEM: Set the size of the memory allocation
TSSFIL: Get access to the CTSS system files on the disk
USRFIL: Change back to user's own directory
GETBRK: Get the instruction location counter at quit
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1960s-1970s 的计算机硬件

集成电路、总线出现

  • 更快的处理器
  • 更快、更大的内存;虚拟存储出现
    • 可以同时载入多个程序而不用 “换卡” 了
  • 更丰富的 I/O 设备;完善的中断/异常机制

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1960s-1970s 的计算机软件

更多的高级语言和编译器出现

  • COBOL (1960), APL (1962), BASIC (1965), PASCAL (1970), C (1972)
  • 计算机科学家们在今天难以想象的计算力下开发惊奇的程序

center

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

个人电脑登上历史舞台

2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1960s-1970s 的操作系统

能载入多个程序到内存且调度它们的管理程序

  • 为防止程序之间形成干扰,操作系统自然地将共享资源 (如设备) 以 API 形式管理起来
    • 有了进程 (process) 的概念
    • 进程在执行 I/O 时,可以将 CPU 让给另一个进程
      • 在多个地址空间隔离的程序之间切换
      • 虚拟存储使一个程序出 bug 不会 crash 整个系统

操作系统中自然地增加进程管理 API

  • 既然可以在程序之间切换,为什么不让它们定时切换呢?
  • Multics (MIT, 1965):现代分时操作系统诞生
2025 南京大学《操作系统原理》
(What) 什么是操作系统?

1970s+ 的操作系统

UNIX 奠定了今天计算机世界的基础

  • 1973: 信号 API、管道 (对象)、grep (应用程序)
  • 1983: BSD socket (对象)
  • 1984: procfs (对象)……
  • UNIX 衍生出的大家族
    • 1BSD (1977), GNU (1983), MacOS (1984), AIX (1986), Minix (1987), Windows (1985), Linux 0.01 (1991), Windows NT (1993), Debian (1996), Windows XP (2002), Ubuntu (2004), iOS (2007), Android (2008), Windows 10 (2015), ……
2025 南京大学《操作系统原理》