什么是操作系统

冯诺依曼体系结构

冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。

  • 输入单元:包括键盘、鼠标、扫描仪、写板等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器、打印机等

强调:

  1. 这里的存储器指的是内存
  2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  4. 一句话,所有设备都只能直接和内存打交道。

内存提高冯•诺依曼体系结构效率的方法

  • 内存具有数据存储的能力。虽然内存的大小只有4G/8G,但是既然内存有大小,那么它就有预装数据的能力,而这就是提高该体系结构效率的秘诀。
  • 根据统计学原理,当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。
  • 输出数据 的时候也一样,CPU处理 完数据后直接将数据放到内存 当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区 的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出。

寄存器

一个典型的CPU由运算器、控制器、寄存器等器件构成,分工如下

a) 运算器进行信息处理;

b) 寄存器进行信息存储;

c) 控制器控制各种器件进行工作;

d) 内部总线连接各种器件,在它们之间进行数据的传送。

32位通用寄存器有八个,eax, ebx, ecx, edx, esi, edi, ebp, esp,

他们主要用作逻辑运算、地址计算和内存指针,具体功能如下:

eax 累加和结果寄存器

ebx 数据指针寄存器

ecx 循环计数器

edx i/o指针

esi 源地址寄存器

edi 目的地址寄存器

esp 堆栈指针

ebp 栈指针寄存器

操作系统(Operator System)

概念

操作系统是指控制和管理整个计算机系统的硬件和软件资源、合理的组织和调度计算机的工作与资源分配 、进而为用户和其它软件提供方便接口与环境的程序集合 ,操作系统是计算机系统中最基本的系统软件

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

定位

就是一款搞管理的软件。

如何理解"管理"

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构
  • 进程管理:在多道程序环境下,处理机的分配和运行都以进程(或线程)为基本单位,进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理和进程调度等。
  • 内存管理:存储器管理是为了给多道程序的运行提供良好的环境,方便用户使用及提高内存利用率,主要功能包括内存分配与回收、地址映射、内存保护、内存共享以及内存扩充等。
  • 文件管理:计算机中的信息都是以文件形式存在的,操作系统中负责文件管理的部分称为文件系统,文件管理主要功能包括文件存储空间的管理、目录管理以及文件读写管理和保护等。
  • I/O管理:设别管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要功能包括缓冲管理、设备分配、设备处理和虚拟设备等。
  • 设备管理:完成设备的请求或释放,以及设备启动等功能。

系统调用和库函数概念

  1. 在开发者角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  2. 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所有有些开发者对部分系统调用进行了适度的封装,从而形成了库,有了库,就很有利于更上层用户或者开发者进行二次开发。

系统调用是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。相对于库函数而言,系统调用更为底层:

操作系统提供的接口主要分为两类,

  • 一类是命令接口,用户利用这些命令来组织和控制作业的执行;
  • 另一类是程序接口,程序员可以使用它们请求操作系统的服务。
  1. 命令接口:使用命令接口进行作业控制的方式有两种,联机控制方式和脱机控制方式,按作业控制方式的不同,可将命令接口分为联机命令接口脱机命令接口
  • 联机命令接口:又称为交互式命令接口,它由一组键盘操作命令组成。用户通过控制台或终端输入操作指令,用户每输入一条命令,控制权就转交给操作系统的命令解释程序,然后由命令解释程序解析并执行输入的命令,之后控制台返回控制台或终端,此时用户又可输入下一条指令。
  • 脱机命令接口:又称批处理指令接口,它由一组作业控制命令组成,脱机用户不能直接干预作业的执行,而应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起交给操作系统,系统调度到改作业时,由操作系统中的解释程序逐条解释执行作业说明书上的命令,从而间接的控制作业的执行。
  1. 程序接口:程序接口由一组系统调用组成,用户通过在程序中使用这些系统调用来请求操作系统为其服务。

并行和并发

  • 并发:并发是指计算机系统中在同一时间间隔(宏观)内运行多个程序。而在同一时刻(微观),单处理机的环境下实际仅能有一道程序执行,因此并发执行实际是通过分时交替实现的。在操作系统中引入进程的目的是使程序能并发的执行。
  • 并行:并行是指计算机系统在同一时刻运行多个程序,并行性需要有相关硬件的支持。

共享

共享是指计算机中的资源可供内存中多个并发执行的进行共同使用。共享可分为以下两种方式:

  • 互斥共享模式:当进程访问某个资源时,必须先提出请求,若此时该资源空闲,那么操作系统便将其分配给该进程使用,此后有其它进程要访问该进程时就必须等待,仅当资源被使用完并被释放时才能被另一个进程访问。这种资源共享模式就称为互斥共享 ,这种在一段时间内只允许一个进程访问的资源称为临界资源
  • 同时访问模式:某种资源允许在一段时间内被多个进程同时(类似于并发,通过分时实现)访问。这种访问模式就称为同时访问

并发和共享互为同时存在的条件:

  • 资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题。
  • 若系统不能对资源共享实施有效的管理,则必将影响程序的并发执行,甚至根本无法并发执行。

虚拟

虚拟是指把一个物理上的实体变为若干逻辑上的对应物,用于实现虚拟的技术称为虚拟技术,虚拟技术分为以下两种:

  • 时分复用技术:如虚处理器技术 ,可以通过多道程序设计,采用让多道程序并发执行的方法,来分时复用一个处理器。虽然只有一个处理器,但每个程序都认为有一个专门的处理器为它服务。
  • 空分复用技术:如虚存储器技术,可以将一台计算机的物理存储器变为虚拟存储器,以便从逻辑上扩充存储器的容量。

异步

多道程序 环境允许多个程序并发执行 ,但由于资源有限,进程的执行并不是一贯到底 的,而是走走停停 的,它以不可预知的速度向前推进,这就是进程的异步性。只要程序运行的环境相同,操作系统就必须保证多次运行进程后都能获得相同的结果。

CPU运行模式

在计算机系统中,CPU通常执行两种不同性质的程序,

  • 一种是操作系统内核程序
  • 另一种是用户程序。

内核程序是用户程序的管理者,因此内核程序可以执行一些特权指令。

  • 特权指令:指不允许用户直接使用的指令。
  • 非特权指令:指允许用户使用的命令,它不能 直接访问系统中的软硬件资源 ,仅限于访问用户的地址空间,主要是为了防止用户程序对系统造成破坏

在具体的实现上,将CPU的运行模式实现为用户态内核态,用户程序运行在用户态,操作系统内核运行在内核态。CPU变态的过程如下:

  • 计算机开机时,计算机内核 开始运行,CPU处于内核态
  • 内核态→用户态:操作系统执行一条特权指令,这个动作意味着操作系统将主动让出CPU使用权
  • 用户态→内核态:由异常和中断引发,硬件自动完成变态过程。

异常和中断

异常和中断是CPU从用户态到内核态的唯一途径,当发生异常和中断时,运行在用户态的CPU会立即进入到内核态,这是通过硬件实现的。

当CPU在执行用户程序的第i条指令时检测到一个异常事件 ,或者在执行第i 条指令后发现一个中断请求信号 ,则CPU打断当前用户程序,然后转到相应的异常或中断处理程序 去执行。若异常或中断处理程序能够解决相应的问题,则在异常或中断处理程序的最后,CPU通过执行异常或中断返回指令,回到被打断的用户程序 的第i 条指令或第i +1 条指令继续执行;若异常或中断处理程序发现是不可恢复的致命错误,则终止用户程序 。通常情况下,对异常和中断的具体处理过程由操作系统完成。从CPU检测到异常或中断事件,到调出相应的处理程序,整个过程称为异常和中断的响应。CPU对异常和中断响应的过程可分为以下几个步骤:

  • 关中断:在保存断点和程序状态 期间,不能被 新的中断打断 ,因此要禁止响应新的中断,即关中断。
  • 保存断点和程序状态:为了能在异常和中断处理后 正确返回到被中断的程序继续执行 ,必须将程序的断点和状态送到栈或特定寄存器中。
  • 识别异常和中断:异常大多采用软件识别方式 ,中断可以采用软件识别方式或硬件识别方式
  • 软件识别方式是指CPU设置一个异常状态寄存器 ,用于记录异常原因。操作系统使用一个统一的异常或中断查询程序,按优先级顺序查询异常状态寄存器,以检测异常和中断类型,先查询到的先被处理,然后转到内核中相应的处理程序。
  • 硬件识别方式又称向量中断,异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中,类型号和中断向量一一对应,因而可以根据类型号快速找到对应的处理程序。
相关推荐
Cikiss1 分钟前
微服务实战——平台属性
java·数据库·后端·微服务
NuyoahC5 分钟前
算法笔记(十一)——优先级队列(堆)
c++·笔记·算法·优先级队列
jk_1017 分钟前
MATLAB中decomposition函数用法
开发语言·算法·matlab
weixin_464078078 分钟前
C#串口温度读取
开发语言·c#
无敌の星仔10 分钟前
一个月学会Java 第2天 认识类与对象
java·开发语言
楚灵魈12 分钟前
[Linux]从零开始的网站搭建教程
linux·运维·服务器
OEC小胖胖14 分钟前
Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)
java·spring boot·后端·spring·mybatis·web
小小不董15 分钟前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba
豆豆33 分钟前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
2401_8576176239 分钟前
SpringBoot校园资料平台:开发与部署指南
java·spring boot·后端