操作系统复习攻略:引论

版权声明:如果喜欢的话,可以撩我哟,此处没有联系方式,想要就自己找哈。 https://blog.csdn.net/qq_39384184/article/details/85411468

操作系统所处的位置

多数计算机由两种运行模式:内核态和用户态。软件中最基础的部分是操作系统,它运行在内核态,在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下,只使用机器指令中的一个子集。

用户接口程序(shell 或 GUI)处于用户态程序中的最低层次,允许用户运行其他程序。

操作系统运行在裸机之上,为所有其他软件提供基础的运行环境。操作系统中的程序由硬件进行保护,防止用户试图对其进行修改。

在这里插入图片描述


什么是操作系统

操作系统主要有两个方面的重要作用:管理系统中的各种资源,并为用户提供良好的界面。

操作系统有两个基本上独立的任务:为应用程序提供一个资源集的清晰抽象,并管理这些硬件资源。

  • 作为扩展机器:例如,硬盘驱动。
  • 作为资源管理者:资源管理包括用两种不同的方式实现多路复用(共享)资源:时间复用和空间复用。

操作系统的历史

  1. 真空管和穿孔卡片
  2. 晶体管和批处理系统
  3. 集成电路和多道程序设计(SPOOLing)
  4. 个人计算机

SPOOLing 假脱机

同时的外部设备联机操作(Simultaneous Peripheral Operation On-Line)

SPOOLing 系统的三大组成部分:

  1. 输入井和输出井
  2. 输入缓冲和输出缓冲
  3. 输入进程和输出进程

若有进程要求对它打印输出时,SPOOLing系统并不是将这台打印机直接分配给进程,而是在共享设备(磁盘或磁鼓)上的输出SPOOLing存储区中为其分配一块存储空间,进程的输出数据以文件形式存放于此。各进程的数据输出文件形成了一个输出队列,由输出SPOOLing系统控制这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLing 系统中,实际上并没有为任何进程分配,而只是在输入井和输出井中,为进程分配一存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。

在这里插入图片描述

技术特点

  1. 提高了I/O速度。从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾。
  2. 设备并没有分配给任何进程。在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表。
  3. 实现了虚拟设备功能。多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备。

工作原理

1、SPOOLing的含义是什么?试述SPOOLing系统的特点、功能以及控制过程。

答:SPOOLing是Simultaneous Peripheral Operation On-Line(即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为"假脱机技术"。SPOOLing技术是在通道技术和多道程序设计基础上产生的,它由主机和相应的通道共同承担作业的输入输出工作,利用磁盘作为后援存储器,实现外围设备同时联机操作。SPOOLing系统由专门负责I/O的常驻内存的进程以及输入井、输出井组成;它将独占设备改造为共享设备,实现了虚拟设备功能。

2、SPOOLing技术如何使一台打印机虚拟成多台打印机?

答:将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。具体做法是:系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。


计算机硬件简介

  • 处理器
  • 存储器
  • 磁盘
  • I/O设备
  • 总线
  • BIOS(基本输入输出系统,Basic Input Output Stream)

在这里插入图片描述


操作系统概念

进程

进程本质上是正在执行的一个程序。与每个进程相关的是地址空间,这是从某个最小值的存储位置(通常是零)到某个最大值的存储位置的列表。

与一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表,进程表是数组或链表结构,当前存在的每个进程都要占用其中的一项。

一个挂起的进程包括:进程的地址空间(磁芯映像,纪念过去使用的磁芯存储器,即主存),以及对应的进程表项(其中包括寄存器以及稍后重启该进程所需要的许多其他信息)。

与进程管理有关的最关键的系统调用是那些进行进程创建和进程终止的系统调用。

一个进程能够创建一个或多个子进程,而这些子进程又可以创建子进程,得到进程树。合作完成某些作业的相关进程经常需要彼此通信以便同步它们的行为,这种通信称为进程间通信

由于定时器到期,或各种由硬件检测出来的陷阱,如非法指令或使用了无效地址,操作系统会向该进程发送一个警告信号,此信号引起该进程暂时挂起,系统将其寄存器的值保存到堆栈,并开始运行一个特别的信号处理过程,如重新发送可能丢失的信息。

系统管理器授权每个进程使用一个给定的UID。每个被启动的进程都有一个启动该进程的用户 UID。子进程拥有和父进程一样的 UID。用户可以是某个组的成员,每个组也有一个 GID。在 UNIX 中,有一个 UID 称为超级用户,在 Windows 中为管理员,它具有特殊的权力,可以违背一些保护规则。

地址空间

较复杂的操作系统允许在内存中同时运行多道程序。为了避免它们互相干扰,需要有某种保护机制。虽然这种机制必然是硬件形式的,但是由操作系统掌控。

管理进程的地址空间同样重要,在本质上,操作系统创建了一个地址空间的抽象,作为进程可以引用地址的集合。该地址空间与机器的物理内存解耦,可能大于也可能小于该地址空间,操作系统可以把部分地址空间装入主存,部分留在磁盘上,并且在需要时来回交换它们。对地址空间和物理空间的管理组成了操作系统功能的一个重要部分。

文件

目录层结构中的每一个文件都可以通过从目录的顶部即根目录开始的路径名来确定。

在实例中,每个进程有一个工作目录,对于没有斜线开头给出绝对地址的路径,将在这个工作目录下寻找。进程可以通过使用系统调用指定新的工作目录,从而变更其工作目录。

提供特殊文件是为了使 I/O 设备看起来像文件一般,这样,I/O 设备可以像使用系统调用读写文件一样进行读写。

  • 块特殊文件:指那些由可随机存取的块组成的设备,如磁盘等。
  • 字符特殊文件:用于打印机、调制解调器和其他接收或输出字符流的设备。

按照惯例,特殊文件保存在/dev目录中。

管道是一种虚文件,它可连接两个进程。这样在 UNIX 中两个进程之间的通信就非常类似于普通文件的读写了。而且若进程想发现它所写入的输出文件不是真正的文件而是管道,则需要特殊的系统调用。

输入/输出

某些 I/O 软件是设备独立的,即这些 I/O软件部分可以同样应用于许多或者全部的 I/O 设备上。

I/O 软件的其他部分,如设备驱动程序,是专门为特定的 I/O 设备设计的。

保护

rwx 位:所有者、其他组成员、其他人。

shell

操作系统是进行系统调用的代码。编辑器、编译器、汇编程序、链接程序、效用程序以及命令解释器等都不是操作系统的组成部分。

shell 本身不是操作系统的一部分,但它体现了许多操作系统的特性,并很好地说明了系统调用的具体用法。shell 同时也是终端用户与操作系统之间的接口。现在,很多个人计算机使用 GUI,GUI 与 shell 类似,GUI 只是一个运行在操作系统顶部的程序。

系统调用

任何单 CPU 计算机一次只能执行一条指令。如果一个进程正在用户态运行一个用户程序,并且需要一个系统服务,比如从一个文件读取数据,那么它就必须执行一个陷阱(trap)或系统调用(system call)指令,将控制转移到操作系统。操作系统接着通过参数检查找出所需要的调用进程。然后,它执行系统调用,并把控制返回给在系统调用后面跟随着的指令。在某种意义上,进行系统调用就像进行一个特殊的过程调用,但是只有系统调用可以进入内核,而过程调用则不能。

在这里插入图片描述

TRAP 指令实际上与过程调用指令非常类似,它们后面都跟随一个来自远处位置的指令,以及供以后使用的一个保存在栈中的返回地址。然而,TRAP 指令与过程指令存在两个方面的差别:

  • TRAP 指令的副作用是切换到内核态,而过程调用指令并不改变模式。
  • 不像给定过程所在的相对或绝对地址那样,TRAP 指令不能跳转到任意地址上。根据机器的体系结构,或者跳转到一个单固定地址上,或者指令中有一8位长的字段,它给定了内存中一张表格的索引,这张表格中含有跳转地址。

跟随在 TRAP 指令后的内核代码开始检查系统调用编号,然后分派给正确的系统调用处理器。

此时,系统调用处理器运行。

一旦系统调用处理器完成其工作,控制可能会在跟随 TRAP 指令后面的指令中返回给用户空间库过程。

这个过程接着以通常的过程调用返回的方式,返回到用户程序。

什么是陷阱指令(TRAP)?在操作系统中解释它的用途?

答:TRAP 是由于系统调用引起处理机中断的指令。在系统调用中,TRAP 负责由用户模式切换为内核模式,并将返回地址保存至堆栈中以备后用。

在这里插入图片描述

读取日期-时钟指令可以在非内核态使用
读取用户地址空间可以在非内核态使用

陷阱指令和中断的区别?

答:陷阱指令可以使执行流程从用户态陷入内核;而中断是由外部事件导致并且它发生的时间是不可预测的。外部事件主要是指时钟中断,硬件中断等。所以说中断的主要作用是完成进程间切换,从而支持CPU和设备之间的并行。

系统调用的目的是?

答:操作系统编制了许多不同功能的子程序,供用户程序执行中调用。这些由操作系统提供的子程序称为系统功能调用,简称系统调用。

系统调用类型

  • 进程管理
  • 文件管理
  • 目录和文件系统管理
  • 杂项

fork 是唯一可以在 POSIX 中创建进程的途径,它创建一个原有进程的精确副本。在 fork 之后,原有的进程及其副本就分开了,fork 调用返回一个值,在子进程中该值为零,在父进程中等于子进程的进程标识符(PID),所以根据返回的 PID, 就可以在两个进程中看出哪一个是父进程,哪一个是子进程。


操作系统特性

  • 并发
  • 共享
  • 虚拟化
  • 异步

操作系统结构

  • 单体系统:整个操作系统在内核态以单一程序的方式运行。整个操作系统以过程集合的方式编写,链接成一个大型可执行二进制程序。
  • 层次式系统:把单体系统进一步通用化,就变成一个层次式结构的操作系统,它的上层软件都是在下一层软件的基础之上构建的。
  • 微内核:为了实现高可靠性,将操作系统划分成小的、良好定义的模块,只有其中一个模块——微内核——运行在内核态,其余的模块由于功能相对弱些,则作为普通用户进程运行。特别地,由于把每个设备驱动和文件系统分别作为普通用户进程,这些模块中的错误虽然会使这些模块崩溃,但是不会使得整个系统死机。
  • 客户端-服务器模式:客户端和服务器之间的通信是消息传递。为了获得一个服务,客户端进程构造一段消息,说明所需要的服务,并将其发给合适的服务器(微内核)。该服务器完成工作,发送回应。
  • 虚拟机:
    • 第一代虚拟机:没有底层支持,必须自己实现所有功能。
    • 第二代虚拟机:利用宿主操作系统并通过其文件系统创建进程、存储文件等。安装在虚拟盘上,实际上只是宿主操作系统的文件系统中的一个大文件。
    • Java 虚拟机:JVM 具有非常简单的、只需要解释的体系结构;还要对所输入的 JVM 进行安全性检查,然后在一种保护环境下执行,这样程序就不能进行任何有害的操作。
  • 外核:在底层中,一种称为外核的程序在内核态运行。它的任务是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源。减少了映像层,不需要重映像磁盘地址(在其他设计中,每个虚拟机都认为它有自己的硬盘,盘块号从0到最大编号);它还将多道程序(在外核内)与用户操作代码(在用户空间内)加以分离,而且相应负载并不重,因为外核所做的只是保持多个虚拟机彼此不发生冲突。

Booting 启动计算机

  1. BIOS:硬件自检,按启动顺序启动外部储存设备。
  2. 主引导记录:BIOS按照启动顺序,把控制权转交给排在第一位的储存设备。读取该设备的第一个扇区,也就是读取最前面的512个字节,如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动。
  3. 硬盘启动:将计算机的控制权就要转交给硬盘的某个分区,卷引导记录告诉计算机,操作系统在这个分区里的位置。然后,计算机就会加载操作系统了。
  4. 操作系统:控制权转交给操作系统后,操作系统的内核首先被载入内存。

猜你喜欢

转载自blog.csdn.net/qq_39384184/article/details/85411468