一、操作系统基本概念

266 阅读6分钟

1.1 操作系统的概念

操作系统(Operating System)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件

图片1.png图片2.png

1.2 操作系统的特征

  • 并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
  • 共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。有互斥共享方式和同时共享方式。
  • 虚拟:把一个物理上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,而逻辑上的是用户感受到的。虚拟技术分为空分复用技术(如虚拟存储器技术)和时分复用技术(如虚拟处理器)
  • 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

单核CPU同一时刻只能执行一个程序 ,各个程序只能并发地执行;

多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

1.3 操作系统的体系结构和运行机制

1.3.1 操作系统的层次结构

图片4.png

1.3.2 操作系统的内核

根据操作系统内核设计的不同方式,内核分为大内核和微内核。

图片5.png

1.3.3 内核优缺点

图片6.png

1.3.4 两种程序

  • 内核程序:内核是操作系统的内部核心程序,是最接近硬件的部分,是它向外部提供了对计算机设备的核心管理调用。内核程序运行在内核态,执行特权指令非特权指令
  • 应用程序:是安装在操作系统上的软件,应用程序只能执行非特权指令,运行在用户态

1.3.5 两种指令

  • 特权指令:指令影响重大,只允许操作系统的内核(kernel)来执行,如内存清零指令。
  • 非特权指令:由应用程序调用的指令,如加法指令、减法指令。

p1:CPU是如何区分特权指令和非特权指令的?(1.3.6内容处查看回答)

1.3.6 两种处理器状态

内核态又叫核心态、管态;用户态又叫目态

  • 内核态:CPU处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令。
  • 用户态:CPU处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令。

问:CPU是如何区分特权指令和非特权指令的?

答: CPU中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。

p2:CPU怎么从内核态切换到用户态?

内核态--->用户态:执行一条特权指令---修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。

用户态--->内核态:由“中断”引发,CPU检测到中断信号后,会立即变为“内核态”,并停止运行当前的应用程序,转而处理中断信号的内核程序。触发中断信号意味着操作系统将强行夺回CPU的使用权。

1.4 中断和异常

1.4.1 中断的作用

中断是计算机自动响应一个中断请求信号,暂时停止当前程序的执行,转而执行与外部事件相关的特殊任务或处理程序,并且在执行完服务程序后自动返回原程序执行的过程。

发生中断,就意味着需要操作系统介入开展管理工作,CPU会立即进入核心态作用;“中断”是CPU从用户态进入内核态的唯一途径。

初衷是为了提高多道程序运行环境中汇总cpu的利用率;后成为操作系统各操作的基础,例如:键盘或鼠标信息的输入,进程的管理和调度,系统功能的调用、设备驱动、文件访问等。

1.4.2 中断的分类

图片1.png

1.4.3 中断的基本原理

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。中断处理程序是内核程序。

1.5 系统调用

1.5.1 什么是系统调用

“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用与库函数的区别?

图片1.png

什么时候使用到系统调用?

应用程序通过系统调用请求操作系统的服务。而系统中的各种共享资源都由操作系统内核统一掌管,因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

1.5.2 系统调用分类

图片3.png

1.5.3 系统调用过程

图片2.png

1.6 操作系统引导(开机过程)

图片1.png

操作系统引导:

  1. CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
  2. 将磁盘的第一块---主引导记录读入内存,执行磁盘引导程序,扫描分区表
  3. 从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
  4. 从根目录下找到完整的操作系统初始化程序(即启动管理器)并执行,完成“开机”的一系列动作

尝试在电脑上找到完整的操作系统初始化程序(即根目录下的启动管理器)

图片2.png

在活动分区(安装操作系统的磁盘分区)的Windows>Boot目录下。