操作系统(一)操作系统概述
Published in:2023-10-15 | category: 操作系统

概述总览图

1 程序如何执行

我们都对运行程序很熟悉,无论是QQ,微信都是一个个在运行的程序

我们也都知道有这样一个职业叫做——程序员,就是编写这些程序的代码的。

那么代码从编写好后到最终执行的过程是怎样的呢?实际有三步

​ 预处理 编译 链接

我们感觉好像很简单,但实际上程序运行需要各种资源,会有一些异常,这些处理我们往往不关心,而这些实际上是系统应用程序——操作系统来完成的

换句话说程序执行的整个生命周期都受操作系统控制

比如 建立程序的内存映像, CPU的分配 内存分配、释放 文件访问,输入输出(I/O) 中断(异常)处理

2 操作系统初探

2.1 操作系统功能

从用户观点看,操作系统是一个虚拟机

​ 让用户(程序员)在使用计算机时不涉及计算机硬件的细节,使硬件细节和用户(程序员)隔离开来,即建立一种简单的高度抽象。

从系统观点来看,操作系统是一个资源管理器:管理系统的软硬件资源

​ 硬件资源:构成计算机系统所必须配置的所有硬件: CPU、内存、时钟、磁盘。 软件资源:程序和数据(文件)。

总结来看,操作系统有四大功能

​ 进程管理,内存管理,文件管理, I/O设备管理,以后的系列文章也会微软这个展开

2.2 操作系统定义

基于操作系统的功能

操作系统可以定义为

​ OS是硬件之上的第1层软件(系统软件),是一组程序,用来有效控制和管理计算机系统的各类资源(硬件和软件资源:设备、文件、存储器、CPU、程序(进程)), 以方便用户使用计算机(用户和计算机的接口)

3.操作系统一些概念

3.1 作业

从输入开始到输出结束,用户要求计算机所做的一次业务处理的全部工作(一次业务处理往往需要包括多个程序配合)所以操作系统中的作业(Job)通常又可以理解为是一组相关任务或程序的集合

作业由三部分组成:1 程序 2要执行的程序代码 3数据

作业通常需要访问和处理数据,因此数据是作业的另一个重要组成部分

作业往往有着自己的控制信息等

假设你正在使用一台多任务操作系统的个人电脑,你同时打开了以下两个应用程序:

  1. 文字处理器:你在编辑一份重要的文档。
  2. 网页浏览器:你正在浏览互联网上的一些新闻文章。

在这个情景中,操作系统将视每个应用程序为一个作业,并为其分配资源和执行环境。

3.2 批处理

为改进内存和I/O设备之间的吞吐量 ,进行批处理操作

就是3.1讲的是一个作业处理

而3.2 就是同时处理多个作业,多个作业构成一个队列,依次处理

缺点

​ 用户不能干预自己作业的运行 一旦发现作业错误不能及时改正 延长了软件开发时间 一般只适用于成熟的程序或大型的计算程序

3.3 单道程序和多道程序

  • 单道程序:

​ 内存中只有一个用户程序

​ 因为I/O很费时,若当前程序因等待I/O而暂停, 则CPU空闲

  • 多道程序: 在内存中存放多个用户程序,同时处于可运行状态。 当一个程序等待I/O时,另一个程序可以使用CPU

我们现在的操作系统肯定都是多道程序,核心目的让CPU忙起来,提高效率

3.4 多道批处理系统

多道程序+批处理=多道批处理系统

与单道批处理系统相比: 系统吞吐量(单位时间内完成的总工作量)大; 资源利用率高; 周转时间(作业从进入系统到完成所经历的时间)长。

3.5分时系统

多个用户(程序)共享一台计算机,按时间片(time slice)轮流使用。

什么是 时间片:OS将CPU时间划分为若干个片段

3.6 并发和并行

并发:两个或多个事件在同一时间间隔内交替发生,不一定是同时执行。

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

多用户:允许多个用户通过各自的终端使用同一台主机,共享主机系统中的各类资源。 多任务:允许多个程序并发执行。

一个 比喻更好理解

  • 并发:想象一个餐厅,只有一个厨师和一个服务员。多个客人进入餐厅,他们点餐后,服务员会为每个客人记录点餐的需求,然后将这些需求交给厨师。厨师会依次准备每份菜肴,然后将它们送到客人的桌子上。虽然只有一个厨师,但由于服务员不断地切换处理不同客人的需求,似乎每个客人都在同一时间段内得到了服务,这就是并发。多个任务(客人的点餐需求)在同一个资源(厨师)上交替执行。
  • 并行:现在,想象这家餐厅升级了,雇佣了多个厨师,每个厨师都可以独立准备菜肴,而服务员可以同时为多个客人提供服务。在这种情况下,每个厨师和服务员都可以同时处理不同的客户需求,这就是并行。多个任务(客人的点餐需求)在同时使用不同的资源(多个厨师和服务员)来提高效率。

还有比如实时OS,网络OS,分布式OS

4. OS对运行环境的要求

4.1 CPU

CPU是执行程序的核心部件

CPU 通过状态标识,知道是操作系统程序还是用户程序在执行,从而给到OS特权指令(只能由OS执行的命令),进行一些紧急任务建立存储保护,清内存、关中断等

CPU两种工作状态

核心态

处于核心态的时候

全部指令(包括特权指令)可以执行 可使用所有资源 并具有改变处理器状态的能力

用户态

处于用户态的时候

只有非特权指令能执行 特权级别不同,可运行的指令集合也不同 特权级别越高,可以运行的指令集合越大 高特权级别对应的可运行指令集合包含低特权级的

CPU的程序状态字PSW

指示程序执行的当前状态,主要包括
CPU的工作状态——指明核心态还是用户态,用来说明当前在CPU上执行的是操作系统还是应用程序,从而决定其是否可以使用特权指令或拥有其他的特殊权力
条件标志——反映指令执行后的结果特征
中断标志——指出是否允许中断

CPU的程序计数字PC

指示下一条要执行的指令

4.2 内存

程序必须存放在内存中才能运行。

在多任务系统中,操作系统要管理、保护各任务的程序和数据,使它们不至于受到破坏和相互干扰。 操作系统本身也要存放在内存中并运行,不能被破坏。

内存分块:块作为分配内存空间的基本单位,如4KB为1块。

为什么要按块来分配内存空间?旨在简化对内存的分配和管理

内存保护: OS正常运行的基本条件

常用的保护机制

(1) 界限寄存器 存放某任务在内存的上界和下界地址(或者下界与长度),越界后产生越界中断

(2) 存储保护键( Key) 当一个程序进入内存时,OS为其分配一个唯一的Key。 同时将分配给它的每个存储块都设置成该Key

4.3 中断

指CPU在收到外部中断信号后,停止原来工作,转去处理该中断事件,完毕后回到原来断点继续工作。 CPU对系统中发生的“异步(随机)”事件的处理

中断类型

1 硬件中断

​ 又分为两类

​ 内部异常(硬故障中断 : 如电源断掉,程序性中断 :如溢出,越界,非法指令等)

​ 外部中断(CPU外部发生的特殊事件,通过“中断请求”向CPU请求处理 如打印机缺纸等)

2 异常(Exception)

3 陷入(Trap)

4 访管中断(系统调用)

中断响应过程

1 关中断 防止其他中断修改影响当下中断

2 保护断点和程序状态 将断点和程序状态保存到栈或特殊寄存器中

3 识别中断事件

4.4 时钟

进行程序的同步,计数等

1 硬件时钟:通过时钟寄存器实现。 绝对时钟:记录当前时间 相对时钟(间隔时钟):分时系统的基础。

2 软件时钟:通过时钟队列实现。

4.5 重定位

将程序中的相对地址转换为绝对地址。

原因:运行前不可能知道程序将放在内存的什么位置。

静态重定位:程序装入内存时,由装入程序重定位

动态重定位:CPU每次访问内存时,由动态地址转换机构(硬件)自动进行

5.现代操作系统基本特征

(1)并发 计算机系统中同时存在多个运行的程序,需要OS管理和调度

(2)共享 “同时”访问 互斥共享

(3)虚拟 利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务 (4)异步 程序的执行不是一贯到底,而是走走停停,向前推进的速度不可预知 只要运行环境相同,OS需要保证程序运行的结果也要相同

6 操作系统启动过程

  1. 硬件自检(POST)
    • 当计算机电源打开时,计算机硬件执行自检过程(POST),以确保所有硬件组件正常运行。这包括检查内存、CPU、磁盘驱动器等。
  2. 引导设备选择
    • 计算机 BIOS 或 UEFI 固件负责选择要从中启动的设备。用户可以在 BIOS/UEFI 设置中配置启动顺序,以决定首选引导设备,例如硬盘、光盘驱动器、USB 驱动器等。
  3. MBR/GPT加载
    • 根据 BIOS/UEFI 设置,计算机将查找引导设备的主引导记录(MBR)或分区表(GPT),以确定启动引导加载程序的位置。
  4. 引导加载程序(Boot Loader)
    • 引导加载程序是启动过程的下一步,它负责加载操作系统内核。在EOS操作系统中,引导加载程序通常是GRUB(GRand Unified Bootloader)或其他引导加载程序。
  5. 内核加载
    • 引导加载程序加载EOS操作系统内核(Linux内核)到计算机的内存中。内核是操作系统的核心,它负责管理硬件、进程、内存和文件系统等。
  6. 初始化(init)
    • 一旦内核加载到内存中,它会执行初始化过程,初始化操作系统的各个组件和服务。在Linux中,init 进程是初始化的第一个进程,它将创建其他系统进程,并启动用户界面或命令行终端。
  7. 启动级别/运行级别(Runlevels)
    • EOS操作系统支持不同的启动级别,每个级别定义了在系统启动时运行的一组服务和任务。用户可以通过更改运行级别来控制系统启动时加载的服务。不同的运行级别可以是单用户模式、多用户模式等。
  8. 登录/用户界面
    • 最后一步是用户登录或进入用户界面。用户可以通过输入用户名和密码登录,或者进入图形用户界面(GUI)或命令行界面(CLI),具体取决于系统配置。
Prev:
操作系统(二)进程管理上
Next:
关于我