<王道操作系统第2集>1.4~2.1.3

持续更新

详细笔记

深入理解

废话少说

补充上一集

中断 / 异常 / 陷阱(统称中断类事件)是 CPU 从用户态切换到内核态的唯一硬件合法入口,而系统调用本质是一种特殊的软件中断 / 陷阱(同步中断),和硬件中断(异步中断)同属「中断类事件」的范畴,并非两种独立的切换方式。

1.4(上) 操作系统的体系结构

操作系统基本结构

每一层大概是 :

$ 用户

$ 应用程序 用户

$ 操作系统(内核功能和非内核功能)

$ 裸机

图如下 :

内核是操作系统最基本,最核心 的部分

实现操作系统内核功能的那些程序是内核程序

大内核 和 微内核

大内核 :

所有操作系统核心服务 (进程调度、内存管理、中断处理、文件系统、网络协议栈、设备驱动等)都集成在同一个内核态地址空间中,服务间通过直接函数调用通信,无跨地址空间开销。

典型:Linux、FreeBSD、传统 UNIX

微内核 :
仅保留最核心的功能 (进程调度、内存地址空间管理、中断处理、基础进程间通信

IPC)在特权内核态其余 所有服务(文件系统、网络、驱动、GUI 等)全部移到用户态作为独立的 "服务器进程"

运行,服务间通过消息传递(IPC)跨地址空间通信。

典型:Minix 3、QNX(实时系统)、Mach(纯微内核版本)

大内核的体系结构

所有操作系统的核心服务都集成在一个内核态地址空间

情景:

操作系统的体系结构是大内核结构,应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理,存储管理,设备管理

在大内核体系结构下,应用程序向操作系统提出服务的请求,CPU会从用户态切换为内核态,开始运行一系列的内核程序

微内核的体系结构

仅保留最核心的功能集成在内核态地址空间

其他的服务全部移到用户态,作为单独的服务器进程

情景:

操作系统的体系结构是微内核结,应用程序想要请求操作系统的服务,这个服务的处理同时涉及到进程管理,存储管理,设备管理

在微内核体系结构下,应用程序向操作系统提出服务的请求,进程管理模块在处理应用程序的请求的时候,需要内核的请求,就是说,每一个模块响应应用程序的请求的时候,都需要向内核发出请求,变态的次数多

注意 : CPU特权态的转换过程是有成本的,要消耗不少时间,频繁的变态会降低系统的性能

大内核 && 微内核 的优缺点

1.4(下) 操作系统的体系结构

操作系统体系结构 : 大内核(又叫宏内核/单内核) , 微内核 , 分层内核 , 模块化 , 外核

1.5 操作系统引导

操作系统引导------开机的时候,怎么让操作系统运行起来

(完整的操作系统初始化程序(即 启动管理器)可以在根目录下找到)

1.6 虚拟机(Virtual Machine , VM)

虚拟机 :

使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每一个虚拟机都可以独立运行一个操作系统

虚拟机管理程序(Virtual Machine Monitor , VMM)

第一类虚拟机管理程序---直接运行在硬件上

第二类虚拟机管理程序---运行在宿主操作系统上

对比两类 虚拟机管理程序(VMM)

类型1虚拟机管理程序,是直接安装并运行在物理硬件上,没有任何宿主操作系统,创建多个虚拟机后,虚拟机通过虚拟机管理程序提供的接口,操作硬件

类型2虚拟机管理程序,是安装在原有的操作系统(宿主系统host OS 如 Window11 macOS Ubuntu)上,安装多个虚拟机后,虚拟机的指令先由虚拟机管理程序处理,在翻译为宿主系统可以执行的指令,最终由宿主系统调度到物理硬件执行

2.1.1+2.1.2 进程(Process)的概念,组成,特征

小总结

进程的概念

程序 : 是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合

进程 : 是动态的,是程序的一次执行过程

当进程被创建时,操作系统会为该进程非陪一个唯一的,不重复的"身份证号" ----PID (Process ID , 进程ID)

操作系统要记录PID,进程所属用户ID(UID )

还要记录给进程分配了哪些资源(如 : 分配了多少内存,正在使用哪些I/O设备,网络流量使用情况...)

还要记录进程的运行情况(如 : CPU的使用时间,磁盘的使用时间,网络流量的使用时间...)
这些信息都会保存在一个叫PCB(Process Control Block)中,即 进程控制块

进程管理块 PCB(Process Control Block)

PCB是进程存在的唯一标识

当进程被创建时,操作系统为其创建PCB

当进程结束时,操作系统会回收其PCB

进程的组成

PCB 是进程存在的唯一标识

注意 : 程序段和数据段是给进程自己用的,与进程自身的运行逻辑无关
"一个进程被调度" 就是指 操作系统决定让这个进程上CPU运行

如果同时挂起三个QQ号,会对应三个QQ进程,会有三个PCB,它们的PCB,数据段各不相同,但是程序段的内容都是相同的

进程的特征

2.1.3 进程的状态与转换

进程的状态

创建态 :

进程被创建时,它的状态是"创建态 ",在这个阶段,操作系统会为进程分配资源,初始换PCB

就绪态 :

进程创建完了,便进入"就绪态 ",处于就绪态的进程已经具备了运行条件,但是由于没有CPU,就暂时不能运行

阻塞态 :

在进程运行的过程中,可能会请求等待某个时间的发生(如 等待某种系统资源的分配,等待其他进程的响应),在这个事件发生之前,进程就无法继续往下执行,此时操作系统会让整个进程下CPU,并让它进入"阻塞态 ",当CPU空闲时,又会选择另一个处于就绪态的进程执行

终止态 :

一个进程可以执行exit系统调用,请求操作系统终止该进程,此时该进程会进入"终止态 ",操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB

当终止进程的工作完成之后,这个进程就彻底消失了

状态的转换

进程状态 小总结

相关推荐
听情歌落俗3 小时前
ARM架构-硬件架构和汇编指令
汇编·arm开发·硬件架构
KeLin&8 小时前
讯为iTOP4412-Qt5.7环境搭建
开发语言·arm开发·qt·arm
切糕师学AI1 天前
ARM 应用程序状态寄存器APSR的整数状态(NZCV)位
arm开发·寄存器·apsr
早日退休!!!2 天前
ARM Cortex-M核 【保存上下文&恢复上下文】
arm开发·单片机·嵌入式硬件
早日退休!!!2 天前
ARM A核、ARM M核、X86与RISC-V架构:寄存器作用及上下文处理差异报告
arm开发·架构·risc-v
A-花开堪折2 天前
Qemu-NUC980(十一):SPI Controller
linux·arm开发·驱动开发·嵌入式硬件
Q_21932764553 天前
基于ARM的嵌入式温度控制系统的设计
arm开发
想你依然心痛3 天前
从x86到ARM的HPC之旅:鲲鹏开发工具链(编译器+数学库+MPI)上手与实战
java·开发语言·arm开发·鲲鹏·昇腾
MUTA️3 天前
x86 架构下运行 ARM-ROS2 Docker 镜像操作指南
arm开发·docker·架构