操作系统概念(二)——操作系统结构

操作系统结构

从多个角度研究操作系统:

  1. 考察提供的服务
  2. 考察为用户和程序员提供的接口
  3. 研究系统的各个组成部分以及相互关系

本章目的:

  1. 研究操作系统提供的服务
  2. 研究操作系统的不同设计方法
  3. 研究计算机的启动过程

服务

操作系统提供了一些操作系统服务来帮助用户:

  • 界面
    共有命令行界面、批界面与图形化界面

  • 程序执行
    提供执行程序并指明程序错误的服务

  • I/O操作

  • 文件系统操作
    文件系统是组织信息的方式

  • 通信
    通信主要有两种方式:
    进程间通信、网络间通信

  • 错误检测

另外一组操作系统函数确保系统本身的高效运行

  • 资源分配

  • 统计

  • 保护与安全

用户界面

有些操作系统在内核部分含有特殊的命令解释程序
在有多个命令解释程序的系统中,解释程序称之为Shell

命令解释程序的主要作用是获取并执行用户指定的一条命令
执行命令有两种方法,一种是解释程序本身包含代码;另一种是由系统程序实现大多数命令

图形化界面提供基于鼠标的窗口和菜单系统作为接口。

用户界面的设计常被从实际系统结构中删除
从操作系统角度而言,不区分用户程序与系统程序

系统调用

系统调用提供了操作系统提供的有效服务界面(太绕了,没看懂)

例如打开文件等等操作都需要用到系统调用,每个操作都可能遇到错误情况

通常,系统每秒执行数千个系统调用
程序员一般都是通过系统提供的API进行系统调用的
他们不需要知道操作系统是怎么执行这些程序的。

系统调用根据使用的计算机不同而不同。

向操作系统传递参数有三种方法:

  1. 通过寄存器
  2. 放在内存的块与表中
  3. 放在堆栈中

系统调用类型

  1. 进程控制
  2. 文件管理
  3. 设备管理
  4. 信息维护
  5. 通信

进程控制

运行程序需要能正常或非正常地中断其执行
若碰到陷阱,可能会有内存信息转出并产生一个错误信息
不管是正常还是非正常,操作系统都必须将控制权转交给调用命令解释器

控制卡是一个批处理系统概念
它是一个管理进程执行的命令

在这里插入图片描述

执行一个程序的进程或者作业可能需要装入和执行另一个程序。
如果新程序终止时返回到现有的程序,那么必须保存现有程序的内存映像
如果新程序与现程序并发执行,则创建一个新作业和进程以便多道执行

许多操作系统都会提供程序的时间表,以表示一个程序在某个地方执行所花的时间

// 这一段看不懂

文件管理

首先需要能创建和删除文件
文件需要有一些属性
文件需要能被打开、读、写、重定位、关闭

如果使用目录结构来组织文件系统内的文件,则目录也需要一样的操作

设备管理

操作系统控制的不同资源可以被当作设备看待。
若系统有多个用户,那么用户必须请求设备以便能独自使用它。
在使用完设备后,用户需要释放它。

即使内在的系统调用不同,UI同样可以使得文件操作和设备操作的表现相似

信息维护

许多系统调用是用于用户程序和操作系统之间传递信息。

通信

有两种通信模型

  1. 消息传递模型,进程间通过彼此之间交换消息来交换信息。更容易实现。
  2. 共享内存模型,进程使用系统调用来获得其他进程拥有的内存区域的访问权。更快。

大多数系统这两种都实现了。

系统程序

系统程序提供了一个开发和执行程序的环境

它们分为:

  1. 文件管理
  2. 状态信息
  3. 文件修改
  4. 程序语言支持
  5. 程序装入和执行
  6. 通信

绝大多数用户看到的操作系统是由应用和系统程序而不是系统调用决定的。

在系统中,真正被所有进程都是使用的内核通信方式是系统调用。

操作系统设计和实现

设计目标:
定义操作系统的目标和规格

实际上,关于定义操作系统的要求并没有唯一的解决方案。不同要求能形成对不同环境的解决方案

机制、策略

机制决定做什么,策略决定怎么做

策略和机制的区分对于灵活性来说很重要。

实现

在设计操作系统后需要进行实现。

现在大部分实现都是高级语言。

操作系统重要性能的改善是基于更好的数据结构和算法。内存管理器和CPU调度程序可能时最关键的子程序。
为了识别瓶颈,必须要能监视系统性能,并增加代码以计算及显示系统行为。

操作系统结构

分层法:操作系统分成若干层。最底层为硬件,最高层为用户接口。
一个典型的操作系统层由数据结构和一层可以被上层所调用的子程序集合组成。
每一层都是使用较低层所提供的功能来实现的。
分层法的主要困难是对层的详细定义。

微内核:将所有非基本部分从内核中移走,并将其实现为系统程序或者用户程序。它包含最小的进程管理、内存管理以及通信功能
它的主要功能是使得客户程序与运行在用户空间的各种服务之间进行通信。
它的好处之一在与便于扩充操作系统,所有的新服务都可以在用户空间增加。另一个好处是容易移植。
它提供了更好的安全性与可靠性,如果一个服务出错,操作系统的其他部分不受影响。

问题:系统程序和系统调用有什么区别

微内核由于系统功能总开销的增加,系统性能会下降。

模块

使用面向面向对象编程技术来生成模块化的内核。

这种方法使用动态加载模块。

这样的设计允许内核提供核心服务,也能动态地实现特定的服务。

虚拟机

虚拟机:单个计算机的硬件抽象为几个不同的执行部件,给应用程序营造霸占电脑的感觉。

创建虚拟机的最根本原因:在运行几个不同的执行环境时能共享相同的硬件。

虚拟机方法的主要困难与硬盘系统有关。
使用提供虚拟磁盘的方法解决。所有虚拟磁盘的大小总和必须小于可用的物理磁盘。

实现

虚拟机实现的主要困难:提供与底层完全一样的副本。
它能提供虚拟用户模式与虚拟用和模式。它都运行在物理用户模式上。在真正机器上引起从用户模式到内核模式转换的动作时也必须在虚拟机上引起虚拟用户模式到内核模式的转换

虚拟机和物理机器的主要差别是执行时间。

它的优点是,

  1. 不同的系统资源具有完全的保护(但是也没有直接的资源共享)
  2. 是研究和开发操作系统的好工具(系统开发可以在虚拟机而不是真实的物理机器上执行)

系统生成

操作系统通常设计成能运行在一类计算机上。
对于某个特定的计算机场所,必须要配置和生成系统,这一过程有时候称之为系统生成。

必须确定:

  1. 使用什么CPU?安装什么选项?
  2. 有多少可用内存?
  3. 有什么可用设备?如何访问
  4. 需要什么操作系统选项或者什么参数值

系统启动

绝大多数计算机系统有一小块代码,称之为引导程序
它能定位内核,并且将它装入内核。

小结

本文主要介绍了操作系统的纵览概念。

首先介绍了操作系统提供的服务,接着介绍了系统调用与系统程序,其次研究操作系统的结构,并且研究设计操作系统的两种方法:分层法与模块法,然后介绍了虚拟机的概念。最后简要介绍了操作系统的生成与操作系统启动的过程(很简要)

猜你喜欢

转载自blog.csdn.net/weixin_45206746/article/details/113036174