operating system

1. 操作系统的基本概念

计算机系统自下而上分为:硬件、操作系统、应用程序和用户。

定义:操作系统直接运行在硬件之上,是管理和控制计算机硬件与软件资源的计算机程序。任何其他软件都必须在操作系统的支持下才能运行。

汇编、编译、数据库等软件都依赖于 OS 提供的服务。

2. 操作系统的特征

2.1 并发(Concurrence)

多道用户程序可以在同一个时间间隔中运行,例如在一秒内有不止一个程序在交替着跑(注意交替),我们就说该系统具有并发性,但是在一个时间点里只有一个程序在跑。

并行性 = 并发性 + 同时性

2.2 共享(sharing)

系统资源可供 内存 中多个并发的进程共同使用,例如我使用打印机,你使用磁盘。分为两种

2.3 虚拟(Virtual)

系统物理资源可虚拟为更大、更多的逻辑资源。例如

时分复用:我将一个处理机虚拟化成两个逻辑处理机,也就是你用 0.1 秒,我用 0.1 秒,这样交替着用,你是察觉不到的,都是骗子。

空分复用:虚拟内存,例如我的内存只有 8 G,而如果用户在跑 12 G 的程序的时候系统也照样没事,那是因为系统将磁盘的一部分当作内存来使用了,只不过要付出时间的代价,因为磁盘的读写实在太慢了。

2.4 异步(Asynchronism)

内存中多个并发的进程以异步方式运行,也就是说没有说一定要按顺序,谁合适谁上,难道我比较晚认识你就不能追你了?并发的进程之间没有统一的同步节拍控制(除非遇到临界资源),所以多个进程不能以预想的方式先后完成,先脱单的不一定先有孩子,社会就是一个很大的操作系统。


并发和共享是操作系统两个最基本的特征。两者之间互为存在的条件是

3. 操作系统的目标和功能

操作系统的目标有如下几点,最重要的是 有效性方便性

  1. 有效性:管理资源,提升利用率/吞吐率。
  2. 方便性:提供公共服务/抽象接口。
  3. 可拓展性:适应硬件拓展和结构变化。
  4. 开放性:标准化接口

还有一些其他应用目标:实时性、可靠性和紧凑性。

计算机模型

3.1 操作系统作为计算机系统资源的管理者

  1. 处理机管理

    处理机的分配和运行都是以进程(或线程)为基本单位,因此对处理机的管理可归结为对进程的管理。包括进程控制、进程同步、进程通信、死锁处理和进程调度等。

  2. 储存器管理

    为多道程序提供良好的环境,方便用户使用和提高内存的利用率。包括内存分配、地址映射、内存保护与共享、内存扩充等。

  3. 设备管理

    完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。包括缓冲管理、设备分配、设备处理和虚拟设备等。

  4. 文件管理

    计算机中的信息都是以文件的形式存储的,操作系统复杂文件管理的部分称为文件系统。包括文件存储空间的管理、目录管理以及文件读写管理和权限设置等。

3.2 操作系统作为用户与计算机硬件系统之间的接口

操作系统提供了用户与硬件系统间的接口,也就是说软件工程师不用直接和硬件打交道。接口类型有

操作系统是资源的管理者,包括处理器、内存、文件、设备。操作系统将很多设备的操作都进行了抽象,因此我们读写设备的时候感受不到设备的差异。

3.3 操作系统用作扩充机器

4. 习题

  1. 操作系统是什么?

  2. 操作系统是对什么进行管理的软件?

  3. 操作系统的基本功能?

  4. 现代操作系统中最基本的两个特征是啥?

  5. 说说你对并发的理解。

  6. 单处理机系统中,同一时刻最多有几个进程同时运行?

  7. 用户可以通过哪些方式使用计算机?

  8. 系统调用怎么用?

  9. 操作系统提供给应用程序的接口是什么?

  10. 操作系统提供给编程人员的接口是什么?

  11. 系统调用的目的是?

  12. 命令接口可进一步分为什么?

  13. 用户在程序中试图读某个文件的第 100 个逻辑块,使用操作系统提供的什么接口?

  14. 操作系统与用户通信接口通常不包括

    A:shell B:命令解释器 C:广义指令 D:缓存管理指令

  15. 不属于多道设计程序的基本特征是

    A:制约性 B:间断性 C:顺序性 D:共享性

  16. 综合题:库函数和系统调用的区别和联系。

5. 习题答案

  1. 系统软件
  2. 计算机资源,包括硬件资源和软件资源,注意,文件不属于硬件资源,但属于软件资源。
  3. 四大管理功能
  4. 并发和共享
  5. 一个时间段有多个进程运行
  6. 一个
  7. 命令接口和系统调用
  8. 编程的时候用
  9. 系统调用
  10. 系统调用
  11. 请求系统服务
  12. 联机命令和脱机命令
  13. 系统调用
  14. D,缓存管理对用户透明
  15. C,异步性才对
  16. 库函数是语言或应用程序的一部分,可以运行在用户空间中。而系统调用是操作系统的一部分,是内核为用户提供的程序接口,运行在内核空间中,而且许多库函数都会使用系统调用来实现功能。未使用系统调用的库函数,其执行效率通常要比系统调用的高。因为使用系统调用时,需要上下文的切换及状态的切换(由用户态转向和心态)。