您的位置:首页 > 新闻 > 热点要闻 > 操作系统复习

操作系统复习

2024/10/6 0:10:42 来源:https://blog.csdn.net/never1624/article/details/139667458  浏览:    关键词:操作系统复习

一、操作系统的定义

  操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了重要地位,汇编程序、编译程序、数据库管理系统等系统软件,都依赖于操作系统的支持,需要取得操作系统的服务。

二、操作系统在计算机系统中的地位
     从人机交互看,OS是用户与机器的接口,提供良好的人机界面,方便用户使用计算机,在整个计算机系统中具有承上启下的地位。

三、操作系统的主要功能

  为什么需要操作系统?可以很简单的会带,因为为了方便使用者使用计算机,所以需要操作系统,如果没有操作系统,使用计算机将会无比的困难,因为机器只能识别0,1二进制码,而普通人不可能去通过二进制码而计算机打交道,所以必须需要操作系统,这样普通用户才能很好的使用计算机,比如windows操作系统,Linux操作系统,它们都使得我们使用计算机变得非常的简单。既然需要在计算机中装操作系统,那么操作到底有什么作用呢。

  3.1 OS作为用户与计算机硬件系统之间的接口(用户视角

  用户可以通过如下三种方式使用计算机。

  ① 命令方式;OS提供了命令接口,用户可输入命令取得操作系统的服务,并控制用户程序的运行。

  ② 系统调用方式;OS提供了系统调用,用户可在应用程序中调用系统调用,来实现与操作系统的通信,并取得它的服务。

  ③ 图形、窗口方式;这应该是用户最熟悉的一种方式,只需要通过鼠标简单的点击就能够实现与操作系统之间的通信,并取得它的服务。

  OS作为接口示意图如下。

  

  3.2 OS作为计算机系统资源的管理者(系统视角

  OS管理的计算机系统资源如下。

  ① 处理器;用于分配和控制处理器。

  ② 存储器;负责内存的分配与回收。

  ③ I/O设备;负责I/O设备的分配与操纵。

  ④ 文件管理;负责文件的存取、共享和保护。

  3.3 OS实现了对计算机资源的抽象

  若在计算机上没有安装任何软件,那么用户需要面向硬件接口进行编程,那是相当的痛苦,为了方便使用硬件设备,则覆盖了一层I/O设备管理软件,该软件提供Read/Write接口,用户通过此接口就可以使用该硬件设备进行数据的输入和输出了,这就方便了很多。还可以覆盖一层文件管理软件并提供相应的操作接口,用户则可以用户接口去操作文件,而不用去了解具体的细节。OS就是由这些软件组成,其屏蔽了具体的硬件的细节,提供统接口供用户调用,通过该接口就可以轻松的访问操纵硬件资源。

四、操作系统的特征

  操作系统最重要的特征有并发、共享、虚拟和异步。其中,并发是最基本的特征,其他三个特征都是以并发为前提的。

  4.1 并发性  

  提到并发,就自然而然的会提到并行,两者到底有怎样的区别呢。

  并行性是指两个或多个事件在同一时刻发生。

  并发性是指两个或多个事件在同一时间间隔发生。

  有两者的概念可知,在单处理器计算机上,多道程序会交替运行,是并发的;但是每一个时刻最多只有一道程序运行,是并行的。而在多处理器计算机上,同一时刻会有多到程序同时运行,是并行的。

  用户编写好的程序交给计算机运行,从用户的角度看,计算机运行的是程序,但是,实际上,在计算机中运行的是线程。因为程序时静态实体,不能被处理器调用独立运行,更不能与其他程序并发执行。实际上,计算机会为每个程序建立进程,然后为每一个进程建立线程,处理器调度线程,从而到达运行程序的效果。

  而进程与线程也是一个容易混淆的概念。进程是操作系统分配资源的基本单位,线程是独立运行和独立调度的基本单位,线程基本上不占据资源,一个进程的多个线程共享该进程的资源。关于进程与线程,之后还会具体的介绍。

  4.2 共享性

  共享是指操作系统中的资源可供内存中多个并发执行的进程(线程)共同使用,这种资源的共同使用就叫做资源共享。而根据各种资源的不同属性,进程对资源利用的方式也不相同,目前实现资源共享的方式有如下两种。

  1. 互斥共享方式

  互斥共享是指当资源被一个进程A占用时,其他想用使用该资源的进程B就只能等待,只有进程A使用完该资源后,进程B才能够使用该资源,这种共享方式就叫做互斥式共享,把这种资源叫做临界资源或独占资源。如打印机就属于临界资源。

  2. 同时访问方式

  某一资源在一段时间内可由多个进程"同时"访问,这种"同时"是宏观上的,在微观上,这些进程可能是交替对该资源进行访问,磁盘设备就是这类资源。

  4.3 虚拟技术

  虚拟就是通过某种技术把一个物理实体转变为若干个逻辑上的对应物。物理实体是实际存在的,逻辑上的对应物是虚拟的,现在主要有两种虚拟技术,时分复用和空分复用技术。

  1. 时分复用技术

  时分复用技术可以用来实现虚拟处理机、虚拟设备等,用来提高资源的利用率。

  虚拟处理机技术。虚拟处理机技术借助多道程序设计技术,即为每一道程序建立一个进程,让多道程序并发执行,从而达到分时使用一台计算机,这台计算机能够同时为多个用户服务,使得每个终端用户都认为有一个处理机专门为他服务。

  虚拟设备技术。通过虚拟设备技术将一台物理I/O设备虚拟为多态逻辑上的I/O设备,并允许用户占用一台逻辑上的I/O设备,这样可以允许在一段时间内由一个用户访问的设备变为在一段时间内允许多个用户同时访问的共享设备。

  2. 空分复用技术

  空分复用技术可以用来实现虚拟磁盘、虚拟存储等,用来提高资源利用率。

  虚拟磁盘技术。通过虚拟磁盘技术可以将一个硬盘虚拟为多台虚拟磁盘,这样使用起来既安全又方便。如将一块硬盘划分为C、D、E等逻辑盘。

  虚拟存储器技术。利用存储器的空闲空间来存放程序,提高内存利用率。还可以通过虚拟存储器技术(实质上是时分复用技术)在逻辑上扩大存储器的容量,它可以使得一道程序通过时分复用技术在远小于它的内存空间中运行。

  时分复用或空分复用中逻辑设备数为N,那么每台虚拟设备速速必然等于或低于物理设备速度的1/N。

  4.4 异步性

  在多道程序环境下,允许多个进程并发执行,但只有进程在获得所需的资源后方可执行,如正在执行的进程A提出打印请求,需要使用打印机,但是此时进程B正在使用打印机,故此时进程A只能等待并且放弃处理机资源,当进程B使用完打印机后,并且分配处理机才能运行,可以看出,进程的执行通常不是一气呵成的,而是走走停停的方式。进程以不可预知的速度向前推进,此即进程的异步性。异步性也是操作系统的一个重要特征。

五、发展历史

        批处理系统,Batch Processing Systems。Jobs 在内存或者外存里,内存始终有一个job在运行,操作系统负责在结束后加载下一个开始运行(我们将加载到内存并运行的程序为进程,process)。问题在于如果运行时发生I/O,CPU就会停下来等I/O完成。

多道批处理系统,Multiprogramming Batch Systems。在批处理系统基础上,当当前job发生I/O时,操作系统负责让CPU转而运行另一个job。问题在于,没有考虑和用户的交互,响应时间较长。

分时系统,Time Sharing Systems。将CPU时间划分为很小的时间片,操作系统负责安排各个job轮流运行。由于切换频率很高,从而用户通过输入设备向计算机发出指令时可以收到实时的回复。
分时系统本身也是一种多道(multiprogramming)系统,即允许多个job并发(concurrently)执行。但是不是批处理(batch)系统。

六、CPU 的两种工作模式(用户态、内核态)

用户态(User Mode)

  1. 定义: 用户态是指程序在非特权级别下运行的模式。大多数应用程序和进程都在用户态运行。
  2. 特权级别: 用户态的特权级别低,不能直接访问硬件和关键系统资源。
  3. 权限限制: 在用户态,程序只能执行非特权指令,无法直接进行I/O操作、内存管理等。这些操作需要通过系统调用请求内核的帮助。
  4. 目的: 用户态的设计目的是保护操作系统内核和其他进程的安全,防止应用程序直接干扰系统的关键功能。
  5. 切换方式: 当用户态程序需要执行特权操作时,它会发出系统调用请求,导致CPU从用户态切换到内核态。

内核态(Kernel Mode)

  1. 定义: 内核态是指操作系统内核在特权级别下运行的模式。内核态有权访问所有硬件资源和执行所有指令。
  2. 特权级别: 内核态的特权级别高,可以执行所有CPU指令,包括特权指令。
  3. 权限: 在内核态,操作系统内核可以直接访问硬件、内存和其他关键资源,进行进程管理、内存管理、I/O操作等。
  4. 安全性: 内核态运行的代码必须非常可靠,因为任何错误都可能导致整个系统崩溃。
  5. 切换方式: 当内核完成特权操作后,会将控制权返回给用户态程序,切换回用户态。

切换过程

  1. 用户态到内核态: 这种切换通常由系统调用引发。用户程序通过执行系统调用指令来请求内核服务,此时CPU会切换到内核态,操作系统内核接管控制权。
  2. 内核态到用户态: 当内核完成请求的操作后,它会将控制权交还给用户程序。这通常是通过一个特定的返回指令(如iretsysret)来实现的,恢复用户态的执行上下文。

重要性

  1. 安全性: 通过区分用户态和内核态,可以有效地防止用户程序直接访问或修改系统的关键资源,保护系统的稳定性和安全性。
  2. 稳定性: 内核态代码的错误可能导致整个系统崩溃,因此必须格外小心。而用户态程序的错误通常只会影响自身,不会破坏整个系统。
  3. 效率: 虽然用户态和内核态的切换有一定的开销,但这种设计可以最大限度地利用CPU的特权指令,提高系统的整体性能。
七、特权指令和非特权指令 

特权指令(Privileged Instructions)

  1. 定义: 特权指令是只能在内核态(Kernel Mode)下执行的指令。这些指令通常涉及硬件和系统资源的管理,如内存管理、I/O操作、中断管理等。
  2. 权限要求: 只有在内核态下,CPU才能执行这些指令。如果在用户态(User Mode)下尝试执行特权指令,会引发异常或陷阱,操作系统内核会捕获并处理这种违规操作。
  3. 功能:
    • 中断控制: 使能或禁用中断。
    • I/O操作: 直接访问和控制I/O设备。
    • 内存管理: 修改页表、设置段寄存器等。
    • 处理器状态修改: 改变处理器状态、模式或特权级别。
  4. 例子:
    • CLI (Clear Interrupt Flag): 禁用中断。
    • STI (Set Interrupt Flag): 使能中断。
    • HLT (Halt): 使处理器进入休眠状态,直到下一个中断。
    • IN/OUT: 进行I/O端口的读写操作。

非特权指令(Non-Privileged Instructions)

  1. 定义: 非特权指令是在用户态和内核态都可以执行的指令。这些指令不涉及对关键系统资源的直接访问和控制。
  2. 权限要求: 用户态和内核态都可以执行这些指令,不会引发权限异常。
  3. 功能:
    • 算术操作: 加减乘除等基本算术运算。
    • 逻辑操作: 位与、位或、位非、异或等逻辑运算。
    • 数据传输: 内存与寄存器之间的数据传输。
    • 控制转移: 无条件跳转、条件跳转、子程序调用和返回。
  4. 例子:
    • ADD: 进行加法运算。
    • MOV: 数据传输指令。
    • JMP: 无条件跳转。
    • CALL/RET: 子程序调用和返回。

关键区别

  1. 执行权限:

    • 特权指令: 仅在内核态下执行,用户态执行会引发异常。
    • 非特权指令: 在用户态和内核态均可执行。
  2. 系统资源访问:

    • 特权指令: 直接访问和控制硬件、内存管理单元、中断系统等关键资源。
    • 非特权指令: 通常不涉及直接对硬件或关键资源的控制。
  3. 安全性:

    • 特权指令: 设计为只有内核能够执行,以保护系统的稳定和安全。
    • 非特权指令: 设计为应用程序可以安全执行,不会影响系统的整体稳定性。

通过将指令分为特权和非特权,操作系统能够有效地管理资源和权限,确保用户程序不能直接干扰或破坏系统的关键部分。这种机制是现代操作系统安全模型的重要组成部分。

八、操作系统的接口(Command Interpreter、GUI、system call)

命令解释器(Command Interpreter)

  1. 定义: 命令解释器,也称为命令行界面(CLI,Command Line Interface),是用户通过命令行输入文本命令来与操作系统交互的接口。
  2. 功能:
    • 执行命令: 允许用户输入和执行系统命令,例如文件操作(复制、删除、重命名等)、程序运行和脚本执行。
    • 脚本编写: 用户可以编写批处理文件或脚本(如Shell脚本)来自动化任务。
    • 系统管理: 提供管理系统的工具,例如进程管理、用户管理和网络配置等。
  3. 例子:
    • Windows: Command Prompt (cmd.exe), PowerShell
    • Unix/Linux: Bash, Zsh, KornShell (ksh)
    • MacOS: Terminal (使用Bash或Zsh等)

图形用户界面(GUI, Graphical User Interface)

  1. 定义: 图形用户界面是一种通过图形元素(如窗口、图标、按钮等)来与用户交互的界面,用户可以通过鼠标、键盘和触摸屏等输入设备进行操作。
  2. 功能:
    • 直观操作: 提供一个直观和用户友好的界面,使用户能够通过点击、拖放等操作来执行任务。
    • 多任务处理: 允许用户同时操作多个窗口和应用程序,提高工作效率。
    • 丰富的视觉反馈: 提供图形化的状态显示和反馈,增强用户体验。
  3. 例子:
    • Windows: Windows操作系统自带的GUI(如Windows 10, Windows 11)
    • MacOS: macOS的Aqua界面
    • Linux: GNOME, KDE Plasma, XFCE等桌面环境

系统调用(System Call)

  1. 定义: 系统调用是操作系统提供的一组函数,允许用户程序请求操作系统内核提供服务,如文件操作、进程管理、内存管理等。系统调用是程序与操作系统内核交互的接口。
  2. 功能:
    • 文件操作: 打开、关闭、读写文件,获取文件信息等。
    • 进程管理: 创建、终止进程,进程间通信,进程调度等。
    • 内存管理: 分配和释放内存,内存映射等。
    • 设备管理: 访问和控制硬件设备。
  3. 例子:
    • POSIX标准: open(), read(), write(), fork(), exec(), wait(), mmap()
    • Windows API: CreateFile(), ReadFile(), WriteFile(), CreateProcess(), VirtualAlloc()

总结

  • 命令解释器: 提供基于文本的交互方式,适合高级用户和系统管理员进行复杂操作和脚本编写。
  • 图形用户界面: 提供直观的图形化交互方式,适合一般用户进行日常操作,提高易用性和用户体验。
  • 系统调用: 提供程序与操作系统内核交互的低级接口,是实现高层功能和服务的基础。

这三种接口共同构成了操作系统的用户和程序交互体系,满足了不同层次和不同类型用户的需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com