操作系统基础 (二)

简介: 操作系统基础 (二)

六. 运行机制

两种指令

  • 指令:处理器(CPU)能够识别,执行的最基本命令。【即二进制机器指令】

Linux,Windows,MacOS的cmd命令框中的”指令“实质上是交互式命令接口。

  • 特权指令:一些可以影响其他程序的指令。只能由”管理者“即操作系统内核使用
  • 非特权指令应用程序使用的指令,如加法指令,减法指令等。

CPU设计出来时候就划分了两种指令,因此执行的之前可以判断出指令类型。


两种CPU状态

  • 内核态(核心态,管态):此时运行的是内核程序,可以执行特权指令。
  • 用户态(目态):此时运行的是应用程序,只能执行非特权指令。

CPU中存在标志CPU状态的寄存器:程序状态字寄存器(PSW),使用一个二进制位来表示CPU处于用户态还是内核态。

两种程序

  • 应用程序:普通程序员写的程序。
  • 内核程序多个内核程序组成”操作系统内核“,简称”内核Kernel)


内核操作系统的核心部分(eg. Docker—>仅需要Linux内核),最接近硬件。操作系统最核心的功都在内核中,其他功能如图形化用户界面GUI则不在内核中。

  • 状态切换:内核态—>用户态执行特权指令—修改PSW位,操作系统让出CPU使用权。
    用户态---->内核态由”中断“信号引发,硬件自动完成变态过程。操作系统强行夺回CPU使用权。

凡是需要操作系统介入的地方,都会触发中断信号


七. 中断和异常

中断的作用

“中断”:操作系统内核夺回CPU控制权的唯一途径。

如果没有"中断"机制,一旦应用程序上CPU运行,就会一直占用CPU。


中断类型

  • 内中断:与当前执行的指令有关,中断信号来自CPU内部。【也称为”异常“,包括陷入(trap),故障(fault),终止(abort)】
  • 例子一:试图在用户态执行特权指令
  • 例子二:除法运算发现除数为零
  • 例子三:应用程序请求内核服务,会执行特殊指令–陷入指令【不是特权指令】,引发内部中断。
  • 外中断:与当前执行的指令无关,中断信号来自CPU外部。【狭义的"中断"】
  • 时钟中断:时钟部件发来的中断信号
  • I/O中断

中断机制基本原理

八. 系统调用

定义

系统调用是操作系统提供给程序(程序员/编程人员)使用的接口【可供应用程序调用的特殊函数】;应用程序通过系统调用请求获得操作系统内核服务


系统调用与库函数

系统调用实现的功能


系统调用过程

  • Step 1 传递寄存器参数

首先,向寄存器传递参数(≥1个),首个参数指明系统调用类型,如”fork“调用

  • Step 2 执行陷入指令 引发内中断信号。接着转入中断处理程序【内核程序】—即 系统调用入口程序。


  • Step 3 系统调用入口程序 【假设使用了fork系统调用】

  • **Step 4 **系统调用完成后,返回用户态继续执行原程序后续指令

  • 总结


九. OS体系结构

  • 原语一种特殊程序,具有原子性。(即程序的运行不可被”中断“

内核

  • 大内核(宏内核/单内核):将操作系统主要功能模块都作为系统内核,运行在核心态。


应用程序请求内核服务需要2次CPU状态转换。Tip:CPU状态转换需要消耗时间,频繁转换会降低系统性能

  • 优点:高性能
  • 缺点:内核代码庞大,结构混乱,难以维护某个功能模块出错,可能导致整个系统崩溃
  • 常见系统:Linux,Unix。


  • 微内核内核只保留最基本功能。

应用程序请求内核服务需要6次CPU状态转换

利用进程管理,存储管理 :通过消息传递,指明想要调用的功能模块。


  • 优点:内核功能少,结构清晰,便于维护可靠性高。内核外的功能模块出错不会导致整个系统崩溃。
  • 缺点:需要CPU频繁切换状态,性能低
  • 常见系统:Windows NT


分层结构

  • 操作系统内核被分为多层,最底层是硬件,最高层是用户接口。每层只能调用更低一层提供的接口。
  • 优点:1.便于调试,自底向上逐层调试验证。【本层只会使用低一层的功能
  1. 利于扩充维护,各层接口清晰固定。【只需要层间接口固定不变即可扩充层次】
  • 缺点:1. 仅仅可以调用相邻低层,难以定义各层的边界。【不同层的功能都需要被使用】
  1. 效率低,不可跨层调用,系统调用时间长


模块化

  • 内核被分为多个模块,各模块相互协作。

内核 = 主模块(由进程管理,内存管理等模块组成) + 可加载内核模块(如驱动模块)

可加载模块动态加载新模块到内核,无需重新编译整个内核。【使内核具有可拓展性】

  • 优点:模块间逻辑清晰易于维护,可以多模块同时开发。
    支持动态加载新的内核模块,增强OS适应性。
    ** 各模块之间可以相互直接调用**,无需通信,效率高
  • 缺点:模块间接口定义不一定合理,实用。
    模块间相互依赖,难以调试


外核

  • 内核:负责进程调度,进程通信等功能。
  • 外核:负责为用户进程分配,回收未经抽象的硬件资源保证资源使用安全
            外核**分配连续的地址空间**,便于用户随机访问【磁盘的磁头不需要来回跳转】,**提升了性能**。

未经抽象的硬件资源:即未经过虚拟化的硬件资源(内存空间,磁盘空间等)。

用户进程视角下连续的地址空间,实际上可能是分散存储的。

  • 优点:
  • 使得用户进程可以灵活使用硬件资源
  • 减少了虚拟硬件资源的”映射层“,提升效率。【不需要查页表,进行物理地址转换
  • 缺点:
  • 降低了系统一致性。【可能存在一块物理地址被用于虚拟地址映射,同时又被外核使用分配给用户进程。需要实际分析使用情况】
  • 使得操作系统更加复杂

十. 系统引导

BIOS(Basic Inout / Output System):基本输入/输出系统。

相关的数据

磁盘数据


  • 分区表:一个数据结构,指明了磁盘各个分区的空间大小和地址范围
  • C盘:作为磁盘的活动分区,安装操作系统。

C盘细分如图:


主存数据

RAM芯片区:易失性(断电丢失数据);ROM芯片区:不易失性。

  • ROM引导程序:指示CPU将磁盘的主引导记录读入CPU(RAM区)。


接着CPU会执行主存中的磁盘引导程序 ----> 磁盘引导程序确定C盘位置,将C盘的引导记录PBR读入主存 ------->执行PBR程序----->查找启动管理器【通常存储在根目录】

---------> 读取启动管理程序进入主存------------> 执行启动管理程序--------->完成操作性系统初始化操作


系统引导过程总述

eg. Windows操作系统万丈的开机初始化程序在”根目录/Windows/Boot“路径下。

十一. 虚拟机

背景

  • 传统计算机在一个物理机上只能运行一个操作系统,在其上运行多个应用程序。
  • 不足:1. 若物理机器硬件资源强大,则会出现计算机资源利用不充分
  1. 多个进程同时运行在一台物理机上,可能会出现资源冲突而相互影响造成安全隐患

两类虚拟机第一类VMM,直接运行在硬件之上

  • CPU按时间片划分,然后分配给各个虚拟机。磁盘,内存空间划分出来分配。

          直接管理、分配硬件资源。

          只有虚拟机管理程序运行在内核态,可以使用特权指令。【如果上层操作系统使用特权指令,会    被虚拟机管理程序捕获,然后进行转换,模拟出特权指令执行成功的现象】

  • 第二类VMM,运行在宿主操作系统
  • 参考上图
  • 虚拟机管理程序将获得的虚拟资源再次划分,然后分配给各个虚拟机,比第一类虚拟机多了一层套接,因此性能更差
  • 两种虚拟机的比较

目录
相关文章
|
7月前
|
Java
操作系统基础:进程同步【下】
操作系统基础:进程同步【下】
|
4月前
|
存储 资源调度 算法
操作系统基础(一)
操作系统基础(一)
63 1
|
6月前
|
存储 算法 安全
操作系统基础
操作系统基础
63 0
|
7月前
|
算法
操作系统基础:进程同步【上】
操作系统基础:进程同步【上】
操作系统基础:进程同步【中】
操作系统基础:进程同步【中】
|
存储 算法 安全
29【操作系统】计算机操作系统知识点总结
操作系统是计算机系统中最重要的软件之一,是计算机硬件和应用程序之间的桥梁,是计算机用户与计算机硬件之间的接口。 操作系统涉及到操作系统的原理、结构、管理、调度等方面的知识。
299 0
|
消息中间件 存储 Ubuntu
【操作系统基础知识 一】操作系统基本原理
【操作系统基础知识 一】操作系统基本原理
180 0
|
存储 算法 调度
408王道操作系统强化——操作系统大串讲
408王道操作系统强化——操作系统大串讲
320 1
408王道操作系统强化——操作系统大串讲
|
算法 调度
【操作系统】第九章同步互斥问题
【操作系统】第九章同步互斥问题
188 0
【操作系统】第九章同步互斥问题
|
存储 算法 人机交互
操作系统基础知识(1)——操作系统引论
操作系统基础知识(1)——操作系统引论
288 0