《操作系统》王道笔记

---------------------------------------------------------------------------------------------------------------------------------

声明 ①极简

        ②可能有误

        ③持续更新中

---------------------------------------------------------------------------------------------------------------------------------

一、计系

1.1、OS的基本概念

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

操作系统——功能
1️⃣系统资源的管理者
①处理机管理
②存储器管理
③文件管理
④设备管理
          
2️⃣向上层提供服务
①GUI图形用户界面
②命令接口
联机命令接口=交互式命令接口(cmd)(人说一句,系做一句)
脱机命令接口=批处理命令接口(bat)(人说一堆,系统做一堆)
③程序接口
系统调用(广义指令),通过代码间接调用程序接口
(系统调用,是应用程序请求OS服务的唯一方式)
                 
3️⃣对硬件机器的扩展
①裸机,无任何软件支持的计算机
②扩充机器(虚拟机),覆盖了软件

操作系统——特征
①并发(最基本)
②共享(最基本)(并发和共享互为存在条件)
③虚拟
④异步


并发
≥2个事件在同一时间间隔内发生。这些事件宏观上同时发生,微观上是交替发生

并行
≥2个事件在同一时刻发生

OS和程序并发一起诞生

单核CPU,同一时刻,just执行一个程序,各个程序只能并发执行
多核CPU,同一时刻,可同时执行多个程序,多个程序可以并行执行

共享
即资源共享,指系统中的资源,可供内存中多个并发执行的进程共同使用

互斥共享方式:系统中的某些资源,然可提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
同时共享方式:系统中的某些资源,允许一个时间段内,由多个进程“同时”对它们进行访问

虚拟
把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的

时分复用技术(虚拟处理器)(无并发性,无虚拟性)
空分复用技术(虚拟存储器)

异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性

有并发性,才可能有异步性

1.2、OS的发展历程

1️⃣手工操作阶段

①用户独占全机
②人机速度矛盾,导致资源利用率低

2️⃣批处理阶段——单道批处理系统
引入脱机输入出技术,由监督程序控制作业输入出
①外围机,把程序存到磁带
②计读取磁带,磁带的读写速度>纸带机

        


①缓解人机速度矛盾
②资源利用率↑

           


①内存中,just一道程序运行
②CPU大量时间,在空闲等待IO完成
③资源利用率依然低

2️⃣批处理阶段——多道批处理系统

①多道程序并发执行,共享计算机资源
②资源利用率大幅↑

      


①用户响应时间长
②无人机交互

3️⃣分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互
         

①用户请求可被及时响应
②解决人机交互
③允许多用户使用一台计算机
④用户对计算机的操作相互独立
           

①完全公平
②不能优先处理紧急任务

4️⃣实时操作系统

①优先相应紧急任务
②及时性
③可靠性
        
硬实时系统,必须在严格规定时间内完成处理
软实时系统,可偶尔违反时间规定

1.3、OS运行环境

1,OS的运行机制

指令
处理器CPU,能识别、执行的最基本命令

(操作系统)内核
由很多内核程序组成

内核
①OS最重要、最核心的部分
②最接近硬件的部分

程序运行
CPU执行一条一条的机器指令

CPU——判断指令类型
①内核态,运行内核程序,可执行特权指令
②用户态,运行应用程序,just执行非特权指令

CPU——程序状态字寄存器PSW
1,内核态=核心态=管态
0,用户态=目态

CPU——状态切换
①内—>用,执行一条特权指令,修改PSW=0
②用—>内,中断,硬件自动变态,OS强行夺回CPU使用权

2,中断

中断——定义
1️⃣内中断
①与当前指令有关
②中断信号来源于CPU内部
③也称异常、例外
(系统调用,通过陷入指令)
       
2️⃣外中断 
①与当前指令无关
②中断信号来源于CPU外部
③也称中断

中断——类型
1️⃣内中断
①陷阱、陷入,应用程序故意引发
②故障,错误条件引起,内核程序可修复
③终止,致命错误引起,内核程序不可修复
       
2️⃣外中断 
①时钟中断
②I/O中断请求

中断——基本原理
不同的中断信号,要用不同的中断处理程序
①CPU检测到中断信号
②根据信号类型,查中断向量表
③找到中断处理程序的位置

3,系统调用

系统调用——定义
①OS提供给应用程序,使用的接口
②一种可供应用程序,调用的特殊函数
③应用程序,可通过系统调用,来请求OS内核的服务

系统调用——功能——why
①应用程序通过系统调用,请求OS的服务,而共享资源all由OS内核管理
②凡是共享资源,影响其他进程,需要OS介入,必须通过系统调用实现

系统调用——过程
①传参
②执行陷入指令(=trap指令、访管指令)(在用户态下)(非特权指令)
③内核程序,处理系统调用
④返回应用程序

4,OS结构

0,基本概念

    

原语
①一种特殊的程序,有原子性
②不可中断

            

CPU状态转换
①有成本
②耗时
③频繁变态,会降低系统性能

1,分层结构

思想
①内核分多层,每层可单向调用更低一层提供的接口
②最底层是硬件,最高层是用户接口


①自底向上逐层调试、验证
②易扩充和维护,各层之间调用接口清晰固定


①just可调用相邻低层,难定义各层的边界
②效率低,不可跨层调用,系统调用时间长

2,模块化

思想
①将内核划分为多个模块,各模块之间相互协作
②内核=主模块+可加载内核模块


①模块间逻辑清晰、易维护,确定模块间接口后即可多模块同时开发
②支持动态加载新模块到内核,而无需重新编译整个内核,增强OS适应性
③任何模块可直接调用其他模块,无需通信,效率高


①接口未必合理、实用
②模块间相互依赖,更难调试和验证

3,大内核

(也称宏内核、单内核)

思想
all系统功能放在内核


性能高,内核内部各种功能都可直接相互调用


①内核功能复杂,难维护
②大内核中某个功能出错,可能导致整个系统崩溃

4,微内核

思想
内核,只放入(中断、原语、进程通信)等最核心功能


①内核小功能少,易维护,可靠性高
②内核外,某功能出错,不会导致整个系统崩溃


①性能低,需频繁变态
②用户态下,各功能模块,不可直接相互调用,只能通过内核的消息传递来间接通信

5,外核

思想
①内核负责进程调度、进程通信
②外核负责为用户进程分配未经抽象的硬件资源
③外核负责保证资源使用安全


①外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源
②用户进程可灵活使用硬件资源
③减少虚拟硬件资源的映射层,效率↑


①系统一致性 ↓
②系统更复杂

5,操作系统引导

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

6,虚拟机

虚拟机——定义

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

虚拟机——别称

①虚拟机管理程序
②虚拟机监控程序
③Virtual Machine Monitor
④Hypervisor
⑤Virtual Machine, VM

虚拟机——分类

虚拟机——区别

        

二、进程与线程

2.1、进程与线程

1,进程的概念

程序:静态,就是个存放在磁盘里的可执行文件
进程:动态,是程序的一次执行过程
同一个程序多次执行会对应多个进程

PID(Process ID,进程ID):当进程被创建时,OS为该进程分配一个唯一的、不重复的身份证号

UID:进程所属用户ID

OS需记录
①PID、UID——>区分各进程
②给进程分配的资源——>管理资源
③进程的运行情况——>对进程的控制、调度

上面一坨,即OS对进程管理所需的信息,all存在一个数据结构PCB (Process Control Block)(进程控制块)中

PCB——存的东西
①进程描述信息
②进程控制和管理信息
③资源分配清单
④处理机相关信息

PCB是进程存在的唯一标志

进程实体(进程映像)——组成
①PCB——>给OS用
②程序段
③数据段

进程——定义
是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程调度——定义
OS让这个进程在CPU上运行

进程实体(静态),是进程(动态)的快照

进程——特征
①动态性
②并发性
③独立性
④异步性
⑤结构性

2,进程的状态

进程——状态转换

PCB中,变量state表示进程当前状态

进程——组织方式
①链接
②索引

3,进程的控制

原语的执行有原子性,执行过程只能一气呵成,不能中断

原子性,用关/开中断指令两个特权指令实现

正常
CPU执行完一条指令,检查有无中断信号,执行中断程序

     

关中断
CPU不检查中断信号,开中断后,才恢复检查

进程上下文(进程运行环境)
进程在运行过程中,寄存器存的中间结果

进程控制——原语
①创建,创建态—>就绪态
②撤销,就绪态/阻塞态/运行态—>终止态
  
③阻塞,运行态—>阻塞态
④唤醒,阻塞态—>就绪态(③④要成对出现)
  
⑤切换,运行态—>就绪态
             就绪态—>运行态

进程控制原语——共性
①更新PCB的信息
②把PCB插入合适队列
③分配、回收资源

4,进程的通信

进程间通信——定义

(Inter-Process Communication, IPC)
指两个进程之间产生数据交互

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

为了保证安全,一个进程不能直接访问另一个进程的地址空间

进程通信——方式
1️⃣共享存储

互斥地访问共享空间,由通信进程自己实现

①基于数据结构的共享
例,int a[3]
速度慢、限制多,低级
②基于存储区的共享
OS在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是OS

速度快,高级

2️⃣消息传递

进程间的数据交换以格式化消息为单位
进程通过OS提供的“发送消息/接收消息”两个原语进行数据交换

格式化消息(Message)——组成

①直接通信,消息发送进程,要指明接收进程的ID
②间接通信,信箱

3️⃣管道通信

管道(pipe文件)
一个特殊的共享文件,在内存中开辟一个大小固定的内存缓冲区(循环队列)


①管道只能半双工通信,某一时间内只能单向传输
(if要双向同时通信,设两管道)
②各进程,要互斥地访问管道(由OS实现)
③当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程
④当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程

问题
管道中的数据被读出,就彻底消失。so多进程读同一管道时,会错乱
       
解决
(1)一个管道允许多个写进程,一个读进程(标准答案)
(2)允许多个写进程,多个读进程,但系统让各个读进程,轮流从管道中读数据(Linux)
⑥写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
⑦读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值