操作系统 - 基本概述【0】

主要是记录学堂在线的操作系统课的一些知识点。

一、什么是操作系统?

首先操作系统是一个极其复杂的软件,它的外延和边界不是很固定,所以所以很难有一个完整、精确、公认的定义。但是可以从功能和特点上来介绍操作系统,从而对操作系统是一个什么样的软件有一个更深入的理解。

从功能上来说,可以分为对上和对下,对上就是对于用户和应用程序来说,操作系统是一个控制软件,可以管理应用程序、为应用程序提供服务(比如I/O服务)、杀死应用程序。对下对于操作系统的内部管理来说,操作系统是一个资源管理器,管理各种各样的资源(CPU、内存、外设)以及分配资源。

操作系统是一个控制程序

  • 一个系统软件
  • 控制程序执行过程,防止错误和计篡机的不当使用
  • 执行用户程序,给用户程序提供各种服务
  • 方便用户使用计算机系统

操作系统是一个资源管理器

  • 应用程序与硬件之间的中间层
  • 管理各种计算机软硬件资源
  • 提供访问计算机软硬件资源的高效手段
  • 解决资源访问冲突,确保资源公平使用

二、操作系统架层次结构

操作系统 - 基本概述【0】

  • 硬件之上,对硬件进行控制管理。
  • 应用程序之下,为应用程序提供服务支撑。

例如,如果你是用户,那么你只关心应用程序的使用,而不会关心系统应用和操作系统的实现。操作系统就夹在硬件和系统应用之间,对应上面说的,类似于一种作为软件和硬件之间的管理/协调者的地位。

操作系统 - 基本概述【0】
上图表明,操作系统就是用来隔离软件和硬件的,对上层(软件)提供常见的资源,例如线程,对下层则是一种管理者的角色,管理硬件上的操作。

总的来说,操作系统本身就相当于是一种软件,具体而言可以按下图这样分类:

操作系统 - 基本概述【0】
操作系统的组成:

操作系统 - 基本概述【0】

Linux、Windows、Android的界面属于外壳(Shell),而不是内核(kernel ),Kernel是我们的研究重点,在Shell之下.

shell就是操作系统对外提供的各种接口和服务,windows命令行也是shell的一种,属于命令行式的shell。

操作系统和外部(用户)的关系:

操作系统 - 基本概述【0】
操作系统 - 基本概述【0】

Kernel(内核)-操作系统内部组件,包括:

  • CPU调度器(如进程、线程管理)
  • 物理内存管理
  • 虚拟内存管理
  • 文件系统管理
  • 中断处理与(I/O)设备驱动

OS Kernel(操作系统内核)的特征:

  • 并发
    计算机系统中同时存在多个运行的程序,需要OS管理和调度
  • 共享
    多个应用可以“同时”访问资源;互斥共享即在微观上,应用访问的资源是不同的,互斥的,某个应用访问的资源不能让另一个应用去访问
  • 虚拟
    利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务
  • 异步
    程序的执行不是一贯到底,而是走走停停(比如只有一个CPU却要执行多个任务),向前推进的速度不可预知,但只要运行环境相同,OS需要保证程序,运行的结果也要相同

三、为什么要学习操作系统?

操作系统是一门综合课程—结合许多不同的课程,学习它是对与自己能力的重要提升。

  • 程序设计语言
  • 数据结构
  • 算法
  • 计算机体系结构

学习 材料

  • 操作系统概念和原理,源代码

学习技能

  • 操作系统的设计和实现

已经有了很多操作系统,例如∶Windows、Linux还有学的必要吗?本科生应该学吗?

为什么要学习操作系统:

  • 操作系统还在不停的发展、在工控等各种领域有强烈的需求!
  • 操作系统很酷、很有用、有挑战。
  • 操作系统知识很底层,掌握好对于其他类似的东西也可以做到触类旁通,能力也会得到提升。

操作系统: 计算机科学研究的基石之一

  • 计算机系统的基本组成部分
  • 由硬件的发展和应用需求所驱动
  • 学术和工业的持续推进
前沿资讯 主要代表
工业界 微软、谷歌、Facebook...
苹果:iphone.ipad...以OS为核心
学术界 ACM
IEEE
USENIX
国内:CCF
*会议 SOSP(每两年,1967- ...)
USENIX(每两年,1994 - ...)

操作系统为什么复杂?

  • 实际操作系统代码量巨大,如:Windows XP有4500万行,不可能完全掌握目标是要理解其核心内容。
  • 操作系统管理并发(CPU调度等·)
  • 操作系统代码管理原始硬件,时间依赖行为,非法行为,硬件故障都需要考虑
  • 操作系统是一个核心软件,代码必须是高效的,是低耗CPU、内存、磁盘的
  • 操作系统出错,就意味着机器出错,操作系统必须比用户程序拥有更高的稳定性
  • 操作系统是系统安全的基础

从更高层次的一个角度来看

1、操作系统需要权衡:

  • 空间(内存)与时间(CPU)
  • 性能和可预测性
  • 公平和性能

2、硬件方面,操作系统需要∶

  • 良好的硬件管理
  • 合理的资源分配

例如∶硬盘速度跟CPU、内存相差很多,操作系统需要协调处理

四、如何学习操作系统?

不应该仅仅是把概念和原理背下来,把题做完就够了。应该尽量去动手实践,阅读源码,最好能够去coding(编码)。

我听到的我会忘记
我看到的我能记住
只有我做过的我才能理解

没有练习、实战和总结,学了白学。

五、操作系统实例

面向桌面,面向服务器,面向数据中心等等,各种各样的不同用途

UNIX家族

操作系统 - 基本概述【0】

Linux家族

操作系统 - 基本概述【0】
Linux与Unix是同一类,他们的API是兼容或者相似的(向教授说的……我对Unix的了解基本为零,查了查,只能确认的是Linux是Unix的模仿——这点从他的名字可以看出来,Linux Is Not UniX,即Linux,程序员界的烂俗递归笑话——所以我目前还不能确定是不是确实是兼容的,不过既然是模仿,那么大概率是相似的了。不过知乎上有人提到了是兼容的,如下图)。
操作系统 - 基本概述【0】

Windows家族

操作系统 - 基本概述【0】
操作系统的演变

操作系统 - 基本概述【0】

六、操作系统历史

操作系统 - 基本概述【0】
操作系统 - 基本概述【0】

七、操作系统的结构

1、简单操作系统: MS-DOs(1981~1994)不分模块的单体内核

操作系统 - 基本概述【0】

2、分层结构

操作系统 - 基本概述【0】

分层结构使得操作系统的可移植性成为了可能。ucore系统就是分层结构。

分层结构的缺陷在于随着层次的增加依赖关系会越来越复杂,导致越来越臃肿,效率越来越低。因此提出了:

3、微内核结构:微内核的设计,尽可能把内核功能移到用户空间

操作系统 - 基本概述【0】
操作系统 - 基本概述【0】

现在大部分系统都是微内核和分层的混合体。

4、外核结构

操作系统 - 基本概述【0】

相当于只让内核起到一种隔离硬件软件的作用,负责分配资源,但是具体怎么处理资源则由程序来决定。原来操作系统的功能就通过操作系统库来实现。有点类似虚拟机的结构。

5、VMM(虚拟机管理器)(解决硬件资源过剩)

操作系统 - 基本概述【0】
操作系统 - 基本概述【0】

操作系统 - 基本概述【0】

此时管理器负责资源隔离,操作系统负责资源的管理。