计算机速成课 第十八集 操作系统
1. 操作系统诞生背景
- 1940,1950 年代的电脑,每次只能运行一个程序,程序员在打孔卡纸上写程序
- 然后拿到一个计算机房间,交给操作员,计算机空闲下来的时候,操作员会把程序放入,然后运行,输出结果,停机
- 运行一个程序通常需要几个小时,几天甚至几周
- 以前计算机慢的时候,手动放程序的做法可以接受,但是随着计算机越来越快,放程序的时间比运行程序的时间更长
- 我们需要一种方式,让计算机自动运作,于是「操作系统」诞生了。
2. 操作系统介绍
- 简称 OS,其实也是程序
- 有操作硬件的特殊权限,可以运行和管理其他程序
- 一般是开机第一个启动的程序。其他所有程序都由操作系统启动
- 开始于 1950 年代
- 第一个操作系统,加强了程序加载方式(指批处理)。
- 批处理(batch processing):之前只能一次给一个程序,现在可以一次多个。当计算机运行完一个程序,会自动运行下一个程序,这样就不会浪费时间,找下一个程序的纸卡
- 外部设备:和计算机连着的其他设备。(因此程序员有的时候需要了解设备的硬件细节,一般是阅读手册来写代码)。现在是「即插即用」,以前是「祈祷能用」
- 为了程序员写软件更容易,操作系统充当软件和硬件之间的媒介:提供 API 来抽象硬件,叫「设备驱动程序」,程序员可以用标准化机制和输入输出硬件交互
3. 1950年代尾声
- 这个时候,电脑已经非常快,经常是处理器闲着,等着外部慢的机械设备,比如打印机和读卡器
4. 1950 年代后期,
- Atlas:世界上第一台超级计算机,由英国曼彻斯特大学开始研发
- 1962 年,出现 Atlas Supervisor
- 不仅可以自动加载程序
- 还可以在单个 CPU 上同时运行几个程序(通过调度来实现这一点)
- 最终达到:多个程序可以同时运行,在单个 CPU 上共享时间,这种能力被称为「多任务处理」multitasking
- 给每个程序分配专属内容,
- 解决程序切换的时候的数据丢失问题
- 隔离后更好,可以实现「内存保护」,同时可以防止病毒程序
- 虚拟内存
- 程序可以假定内存总是从地址 0 开始
- 内存地址「虚拟化」
- 实际物理位置被操作系统隐藏和抽象了
- 动态内存分配:
- 使程序的内存大小可以灵活增减
- 简化了一切,为操作系统同时运行多个程序提供了极大的灵活性
分时操作系统
- 每个用户只能用一小部分处理器、内存等
- 最有影响力的是 Multics :多任务信息与计算系统,
- 于 1969 年发布
- 是第一个从设计时就考虑到安全的操作系统
- 复杂度超过当时的平均水准
- 操作系统占 1MB 内存,这在当时很多,可能是内存的一半
- 被 Unix 的设计者称为没有获得商业成功是因为「过度设计」,功能太多
Unix
- 操作系统分为两部分
- 1 操作系统的核心功能
- 内核:内存管理、多任务、输入/输出处理
- 2 一堆有用的工具
- 1 操作系统的核心功能
- 由于其具有的简单性,可以在更便宜更多的硬件上运行
- 1970-1980 年代最流行的操作系统之一
Windows
- 风行开始于 90 年代
- 磁盘操作系统(MS-DOS)只有 160KB,一张磁盘就可以容纳
- 1981 年发布,成为早起家用电脑最受环境的操作系统
- 虽然系统崩溃很讨厌但还可以接受,因为用户可以重启
- 1985年,发布早期 Windows,也会出现蓝屏
- 蓝屏代表程序崩溃的非常严重,把系统也带崩溃了
- 新版的 Windows 有更好的保护,不会经常崩溃
今日操作系统
- Mac OS, Windows, Linux, iOS, Android
- 虽然一般只有一个用户,就是正在使用设备的你,但是操作系统依然有「多任务」、「虚拟内存」、「内存保护」,因此可以同时运行多个程序
- 一边在浏览器看视频,一边使用修图软件,播放音乐等
- 如果没有操作系统这几十年的发展,这些都不可能
2022.4.23
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?