OS

操作系统结构

Operating System Notes

Posted by AH on October 30, 2019

第2章 操作系统结构

2.1 OS服务

  • 用户界面(UI):包括命令行界面、批界面和图形用户界面

  • 程序执行:正常/不正常结束(指明错误)

  • I/O操作

  • 文件系统操作:读写文件和目录、创建删除文件、搜索文件、列出文件信息、访问管理

  • 通信:发生在同一台计算机运行的两个进程之间/由网络连接起来的不同的计算机上的进程之间,由共享内存消息交换技术实现

  • 错误检测:包括CPU、Mem、I/O、用户程序

  • 资源分配:为多个用户/作业分配资源

  • 统计:记录用户使用了多少和哪种类型的资源

  • 保护和安全:内部(进程之间互不干扰)、外部(不受外界侵犯)

2.2 OS的用户界面

2.2.1 命令解释程序

  1. 主要作用:获取并执行用户指定的下一条命令

  2. 执行方法:

  • 命令解释程序本身包含代码以执行这些命令,所能提供的命令数量决定了命令解释程序的大小

  • 由系统程序实现绝大多数命令;命令解释程序只要用命令来识别文件以装入内存并执行(好处:命令解释程序很小,增加新命令时不必改变)

2.2.2 图形用户界面GUI

2.2.3 触摸屏界面

2.3 系统调用

是OS提供的服务的编程接口;常常用高级语言C/C++写;大部分都由程序通过高级的API访问,而不是直接系统调用

API:一系列适用于应用程序员的函数,包括传递给每个函数的参数及其返回的程序员想得到的值(Win:Win32 API、POSIX:POSIX API、JVM:Java API)

API好处:可移植性

向OS传递参数的三种方式:Reg、内存块/表(然后把块地址存在Reg里)、压入堆栈中

2.4 系统调用类型

2.4.1 进程控制

不论正常还是非正常中止,OS都必须把控制权转交给命令解释器,命令解释器接着读下一个命令

执行一个程序的进程或作业可能需要装入和执行另一个程序,可以调用另一个程序或者并发执行(取决于新程序终止时控制权在哪里)

许多OS都提供程序的时间表,表示一个程序在某个位置或某些位置执行所花的时间。时间表要求具有跟踪功能定时时间中断

例子:MS-DOS/Arduino(单任务系统)和FreeBSD(多任务系统)

2.4.2 文件管理

常用系统调用:创建和删除文件、打开文件、读、写、重定位

2.4.3 设备管理

用户程序请求资源-》有可用资源-》系统允许请求-》控制返回用户程序

or 用户程序请求资源-》无可用资源-》程序等待足够多的资源

可对设备进行读、写、重定位(与文件非常相似)

2.4.4 信息维护

e.g. 当前用户数、OS版本、空闲内存、磁盘的多少、当前时间日期、所有进程的信息

2.4.5 通信

  • 消息传递模型:直接/间接通过一个共同的邮箱

  • 共享内存模型

消息传递容易实现、不必避免冲突

共享内存速度快,但是在保护和同步方面有一些问题

2.4.6 保护

控制资源访问、获取/设置许可、允许/拒绝用户访问

2.5 系统程序

  • 文件管理

  • 状态信息
  • 文件修改
  • 程序语言支持
  • 程序装入和执行
  • 通信

2.6 OS设计和实现

2.6.1设计目标

  1. 用户:方便、易使用、安全快速
  2. 设计、创建、维护:容易设计、实现和维护,灵活、高效且没有错误

2.6.2 机制与策略

机制:how to do

策略:what to do

理想情况:通用机制,策略只改系统参数

2.6.3 实现

汇编语言or高级语言

高级语言实现OS的缺点仅仅在于降低了速度和增加了存储要求(minor problem可忽略)

优点:代码编写更快、更为紧凑、更容易理解和调试、可移植性好,编译技术的改进只要通过重新编译就能改善整个OS的生成代码

OS的重要性能改善很可能是因为更好的数据结构和算法而不是优秀的汇编语言代码。且可以找出瓶颈子程序并用汇编语言子程序代替(这就需要监视系统性能才能找出瓶颈)。

2.7 OS结构

2.7.1 简单结构

e.g. MS-DOS/原始的UNIX(Linux和UNIX很相像)

原始UNIX:内核+系统程序,内核可进一步分为接口和设备驱动

尽管简单结构看上去简单,很难应用和扩展。然而由于在简单结构中系统调用的开销很少,且内核内部通讯很迅速,现在还是能在UNIX、Linux和Windows中看到简单结构的影子。

2.7.2 分层方法

简单结构是一种紧耦合的系统,因为部分的改变会影响整个系统。

分层结构是一种松耦合的系统,每一部分有特定和受限制的功能。每层能调用下层的方法。

分层方法的优势:易于构造、调试简单(逐层调试)

缺点:如何定义层、和其他方法比效率差

2.7.3 微内核

好处:便于扩红、可移植性好、更好的安全性和可靠性

坏处:由于系统功能总开销增加,系统性能下降

2.7.4 模块

好处:允许内核提供核心服务,也能动态地实现特定的功能

与分层系统的区别:比分层系统更灵活,任意模块都能调用任何其他模块

2.7.5 混合系统

2.8 虚拟机

基本思想:单个计算机的硬件抽象为几个不同的执行部件,从而造成一种”幻觉“,仿佛每个独立的执行环境都在自己的计算机上运行一样

主要困难:不能为每个虚拟机分配一个磁盘驱动器。-》解决方法:提供虚拟磁盘

2.8.1 实现

当虚拟用户模式上运行的程序执行系统调用时,它会在真实机器上引起一个到虚拟机监控器的转换。当虚拟机监控器获得控制,它能改变虚拟机的寄存器内容和程序计数器以模拟系统调用的效果。接着它能重新启动虚拟机,此时它在虚拟内核模式下运行。

2.8.2 优点

  • 没有安全问题,但也没有直接资源共享(解决:共享小型磁盘/虚拟通信网络)

  • 用于研究和开发OS的好工具
  • 减少系统开发时间(无需进行中断来开发系统)

2.8.3 实例

VMware
JVM

2.9 系统生成

OS通常通过磁盘或CD-ROM来发布

2.10 系统启动

启动过程:

  1. 引导程序/引导装载程序(小块代码)定位内核
  2. 将内核装载至内存并启动
  3. 内核初始化硬件
  4. 装入根文件系统

小型OS通常在ROM(所有ROM都是固件)中完整保存;大型OS或经常改变的系统常常将引导程序存储在固件中,OS保存在磁盘上

固件缺点:不能修改,比RAM慢,且相对比较贵