操作系统概述

操作系统概述

Question:

  • 操作系统做了什么?
  • 操作系统的定义与作用
  • 操作系统的主要特征
  • 操作系统的架构
  • 操作系统的分类

一.操作系统做了什么

通过下面程序的执行过程来分析操作系统对此程序的执行有哪些支持。

1
2
3
4
5
6
#include <stdio.h>
int main(int argc, char *argv[])
{
puts("hello world");
return 0;
}
  • 用户告诉操作系统执行 helloworld程序.
  • 操作系统: 找到 helloworld 程序的相关信息,检查其类型是否是可执行文件; 并通过程序首部信息, 确定代码和数据在可执行文件中的位置并计算出对 应的磁盘块地址.
  • 操作系统: 创建一个新的进程,并将 helloworld 可 执行文件映射到该进程结构,表示由该进程执行 helloworld 程序.

  • 操作系统:为 helloworld 程序设置CPU上下文环境, 并跳到程序开始处,准备执行程序 (假设调度程序选中hello程序)

  • 执行helloworld程序的第一条指令,发生缺页异常(代码和数据还没有读入内存,硬件机制会捕获缺页异常,把控制权交给操作系统)
  • 操作系统: 分配一页物理内存,并将代码从磁盘读入内存,然后继续执行 helloworld 程序.
  • helloworld 程序执行 puts 函数[系统调用(操作系统完成这个功能)],在显示器上写一字符串.
  • 操作系统: 找到要将字符串送往的显示设备,通常设备是由一个进程控制的,所以,操作系统将要写的字符串送给该进程.
  • 操作系统: 控制设备的进程告诉设备的窗口系统 它要显示字符串,窗口系统确定这是一个合法的操作,然后将字符串转换成像素,将像素写入设备的存储映像区.
  • 视频硬件将像素转换成显示器可接收的一组 控制/数据信号.
  • 显示器解释信号,激发液晶屏.
  • OK!!!我们在屏幕上看到了 “hello world” .

从用户程序在执行过程中,不断请求操作系统服务的角度来看程序执行的过程:

在CPU上执行一个用户程序,这个用户程序会不时地去请求操作系统的服务,因此在CPU上,时而运行的是用户程序。时而运行操作系统程序。

以helloworld程序为例:

在执行的时候,需要操作系统来创建进程,因此转到操作系统创建进程

进程创建完了以后会从操作系统返回 ,接着执行这个helloworld程序,在出现了缺页异常以后,控制权又转回了操作系统

操作系统分配物理内存给这个用户程序 ,然后又转向用户程序接着执行,然后helloworld程序又要去执行puts函数

此时又转向了操作系统去进行系统调用。

换一个角度看用户程序的执行:

实际上,是操作系统在执行过程中呢,如果选中了一个程序,那么就去通过调度选中这个程序,去执行这个程序

程序执行过程中,会不断地去陷入操作系统, 由操作系统完成一些服务.然后再通过调度再选中程序,接着执行.

从上面的介绍过程,看到在一个程序的执行过程中,操作系统负责了这个程序的启动过程, 负责了这个程序执行的过程, 同时在执行的 过程中,不断地去为用户程序的执行 提供各种各样的支持.


二.操作系统的定义与作用

1 定义

操作系统是计算机系统中的一个系统软件,是一 些程序模块的集合,这些模块相互协作,相互配合,来完成以下这些功能:

  • 它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源。

  • 合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能。

  • 使得用户能够灵活、方便地使用计算机,使整个计算机系统高效率运行。

有效:让系统效率,资源利用率得以提高。

合理:各种软硬件资源的管理是否公平合理。

方便使用:两种角度:用户界面编程接口

2 作用

  • 资源的管理者:有效

  • 向用户提供的各种服务:方便使用

  • 对硬件机器的扩展:扩展能力

(1)对于OS是资源的管理者

自底向上看,OS是资源的管理者。

硬件资源:CPU,内存,设备(I/O设备、磁盘、时钟、网 络卡等)。

软件资源:磁盘上的文件、各类管理信息等。

(2)怎么管理资源

  • 跟踪记录资源的使用状况(通过数据结构与算法)

    如:哪些资源空闲,分配给谁使用,允许使用多长时间等

  • 确定资源分配策略——算法

    • 静态分配策略(会导致资源的浪费)
    • 动态分配策略(根据数据结构与资源使用情况来分配,资源的利用率得到了显著的提高)
  • 实施资源的分配(根据资源分配策略去决定)和回收
  • 提高资源利用率
  • 保护资源的使用(一个进程使用资源时,不能被另外的所干扰)
  • 协调多个进程对资源请求的冲突

(3)从资源管理的角度—五大基本功能

  • 进程/线程管理(CPU管理)

    进程线程状态、控制、同步互斥、通信、调度、……

  • 存储管理

    分配/回收、地址转换、存储保护、内存扩充、……

  • 文件管理

    文件目录、文件操作、磁盘空间、文件存取控制、……

  • 设备管理

    设备驱动、分配回收、缓冲技术、……

  • 用户接口

    系统命令、编程接口

(4)操作系统是各种服务的提供者

  • 在操作系统之上,从用户角度来看:

    操作系统为用户提供了一组功能强大、方便易用的命令系统调用

  • 典型的服务:

    进程的创建、执行;文件和目录的操作;I/O设备 的使用;各类统计信息; ……

(5).操作系统是硬件之上的第一层软件

(6).操作系统在硬件机器的扩展

操作系统在应用程序与硬件之间建立了一个等价的扩展机器(虚拟机),对硬件抽象,提高可移植性;比底层硬件更容易 编程。


三.操作系统的特征

1.并发

并发(concurrency): 指处理多个同时性活动的能力。

由于并发将会引发很多的问题: 活动切换、保护、相互依赖的活动间的同步.

在计算机系统中同时存在多个程序运行,单CPU上

宏观上:这些程序同时在执行。

微观上:任何时刻只有一个程序真正在执行,即这些程序在CPU上是轮流执行的。

并行(parallel):与并发相似,但多指不同程序同时在多 个硬件部件上执行

有趣的例子记忆:

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

2.共享

共享:操作系统与多个用户的程序共同使用计算机系统中的资源(共享有限的系统资源)。

操作系统要对系统资源进行合理分配和使用,使得这些资源在一个时间段内交替被多个进程所用。

共享分为:

  • 互斥共享(如打印机)

  • 同时共享(如可重入代码、磁盘文件)

正是这些功能,所以又有了复杂的问题: 资源分配难以达到最优化,如何保护资源?

3.虚拟

虚拟(Virtual) : 一个物理实体映射为若干个对应的逻辑实体——分时分空间。虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。

典型的例子:

  • CPU——每个进程的”虚处理机”
  • 存储器——每个进程都有独立的虚拟地址空间(代码+数据+堆栈)
  • 显示设备——多窗口或虚拟终端

4.随机

随机:操作系统必须随时对以不可预测的次序发生的事件进行响应并处理。

因为随机性带来的例子:

进程的运行速度不可预知:多个进程并发执行,“走走停停”,无法预知每个进程的运行推进的快慢。

带来的问题:难以重现系统在某个时刻的状态(包括重现运行中的错误)。

0%