计算机操作系统

什么是操作系统

操作系统(Operation System)简称OS,是管理计算机【硬件】与【软件】资源的计算机程序

在这里插入图片描述

计算机系统的构成

用户、应用程序、操作系统、硬件(裸机)
在这里插入图片描述

操作系统(OS)的作用
  • 管理与配置内存
  • 决定系统资源供需的优先次序
  • 控制输入设备与输出设备
  • 操作网络与管理文件系统等基本事务
  • 提供一个让用户与系统交互的操作界面

操作系统(OS)的目标与功能

目标
  • 有效性
    管理系统资源,提高系统资源利用率提高系统的吞吐量

  • 方便性
    方便用户使用

功能
  • 处理机管理
    1.进程控制
    2.进程同步
    3.进程通信
    4.调度
  • 存储器管理
    1.内存分配
    2.内存保护
    3.地址映射
    4.内存扩充
  • I/O设备管理
    1.缓冲管理
    2.设备分配
    3.设备处理
  • 文件管理
    1.文件存储空间的管理
    2.目录管理
    3.文件的读/写管理和保护

操作系统的特征

  • 并发
  • 共享
  • 虚拟
  • 异步
OS的并发性(Concurrent)

什么是并发?
同一时间间隔内执行和调度多个程序的能力(同一个时间段内执行多个任务的能力
宏观上,同时执行多个程序;微观上,多个程序之间高速切换(分别交替执行),主要关注的是单个处理机同一时间段内处理任务数量的能力

与并行的区别?
并行是多个CPU处理,并发是单个CPU的处理

用户空间和内核空间

在这里插入图片描述

  • 用户态
    多少应用程序,可以写在的程序

  • 内核态
    由内核管理的系统 例如文件系统进程(线程)调度

进程

进程(Process),是一个具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的独立单位

进程的结构

在这里插入图片描述

  • 控制块(PCB):进程的唯一标识
  • 数据段
  • 程序段

进程的特征

  • 动态性:由创建而生,由撤销而亡
  • 并发性:多个进程同时运行
  • 独立性:独立资源分配
  • 异步性:相互独立、互补干扰

进程与线程区别

进程:CPU分配资源的最小单位
线程:CPU执行资源的最小单位
线程相当于进程,降低了创建、撤销和切换可执行实体的成本和难度

什么是线程

Thread,进程的轻型实体,也叫“轻量级进程”,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合

为什么进程中要有线程?
提高OS(操作系统)的并发性

线程的特性
独立调度和分派的基本单位;可并发执行;共享进程资源

进程的生命周期

创建(New)
就绪(Ready)
执行(Running)
阻塞(Blocked)
终止(Terminated)
在这里插入图片描述

进程控制

OS对进程实现有效的管理,包括创建新进程、撤销已有进程、阻塞和唤醒、进程切换等多种操作。OS通过原语(Primitive)操作实现进程控制。

原语

由若干条指令组成,完成特定的功能,是一种原子操作(Action Operation)

原子操作,要么全做,要么全不做,执行过程不会被中断
在管态/系统态/内核态下执行,常驻内存
是内核三大支撑功能(中断处理/时钟管理/原语操作)之一

创建原语:create
阻塞原语:block
唤醒原语:wakeup
撤销原语:destroy

在这里插入图片描述

处理机调度(进程调度)

根据一定的算法和原则将处理机资源进行重新分配的过程
前提:作业/进程数远大于处理机(进程)数
目的:提高资源利用率,减少处理机空闲时间
调度程序:一方面要满足特定系统用户的需求(快速响应),另一方面要考虑系统整体效率(系统平均周转时间)和调度算法本身的开销

在这里插入图片描述

处理机(进程)调度过程

保存镜像:记录进程现场信息
调度算法:确保分配处理机的原则
进程切换:分配处理机给其他进程
处理机回收:从进程收回处理机

调度算法指标

CPU利用率 ↑ 忙碌时间/总时间
系统吞吐量 ↑ 完成作业数/总时间
周转时间 ↓ 作业完成时间-提交时间
带权周转时间:周转时间/实际运行时间

等待时间 ↓ 作业等待处理机调度时间 关注平均值
响应时间 ↓ 提交请求到首次响应间隔
(一个页面正常响应时间是3s,最多不超过7s)

常见的进程调度算法

作业调度算法

先来先服务(FCFS,First Come First Served)
短作业优先(SJF,Shortest Job First)
高响应比优先调度(HRRN,Highest Response Ratio Next)
优先级调度(PSA,Priority-Scheduling Algorithm)

进程调度算法

时间片轮转调度(RR,Round-Robin)
多级反馈队列调度(MFQ,Multileveled Feedback Queue)

先来先服务(FCFS,First Come First Served)

算法内容:调度作业/就绪队列中最先入队者,等待操作完成或阻塞
算法原则:按作业/进程到达顺序访问(执行)
调度方式:非抢占式调度
适用场景:作业/进程调度
优缺点:
有利于CPU繁忙型作业:充分利用CPU资源
不利于I/O繁忙型作业,操作耗时,其他饥饿
在这里插入图片描述

短作业优先(SJF,Shortest Job First)

算法内容:所需服务时间最短的作业/进程优先执行
算法原则:追求最少的平均(带权)周转时间
调度方式:SJF/SPF非抢占式
适用场景:作业/进程调度
优缺点:
平均等待/周转时间最少
长作业周转时间会增加或饥饿
估计时间不准确,不能保证紧迫任务及时处理
在这里插入图片描述

高响应比优先调度(HRRN,Highest Response Ratio Next)

算法内容:结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,高的优先调度
算法原则:综合考虑作业/进程的等待时间和服务时间
调度方式:非抢占式
适用场景:作业/进程调度
响应比计算:
响应比=(等待时间+服务时间)/服务时间>=1
只有当前进程放弃执行权(完成/阻塞)时,重新计算所有进程响应比
长作业等待越久响应比越高,更容易获得处理机

优先级调度(PSA,Priority-Scheduling Algorithm)

算法内容:优先权调度,按作业/进程的优先级(紧迫程度)进行调度
算法原则:优先级最高(最紧迫)的作业/进程先调度
调度方式:抢占/非抢占式(并不能及时获得执行)
适用场景:作业/进程调度
优先级设置原则:
静态/动态优先级
系统>用户;交互型>非交互型;I/O型>计算型
低优先级进程可能会产生“饥饿”
在这里插入图片描述

时间轮转调度(RR,Round-Robin)

算法内容:按进程到达就绪队列的顺序,轮流分配一个时间片去执行,时间用完则剥夺
算法原则:公平、轮流为每个进程服务,进程在一定时间内都能得到响应
调度方式:抢占式,由时钟中断确定时间到
适用场景:进程调度
有缺点:
公平、响应快,适用于分时系统
时间片决定因素:系统响应时间、就绪队列进程数量、系统处理能力
时间片太大,相当于FCFS;太小,处理机频繁切换,开销增大
在这里插入图片描述

多级反馈队列调度(MFQ,Multileveled Feedback Queue)

算法内容:设置多个按优先级排序的就绪队列,优先级由高到低,时间片从小到大,新进程采用队列降级法

进入第一级队列,按fcfs分时间片
没执行完,移到第二级,第三级。。。

前面的队列不为空,不执行后续队列的进程

算法原则:集前几种算法优点,相当于PSA+RR
调度方式:抢占式
使用场景:进程调度
优缺点:
对各类型相对公平;快速响应;
终端型作业用户;短作业优先
批处理作业用户;周转时间短
长批处理作业用户:在前几个队列部分执行
在这里插入图片描述

进程之间的协作

进程通信

进程通信即进程间的信息交换
进程是资源分配的最基本单位,各进程内存空间彼此独立
一个进程不能随意访问其他进程的地址空间(无法访问其他进程)

方式
共享存储(Shared-Memory)
消息传递(Message-Passing)
管道通信(pipe)
在这里插入图片描述

进程通信:共享存储

基于共享数据结构的通信方式

基于共享存储区的通信方式

在这里插入图片描述

进程通信:消息传递(message-Passing)

直接通信:点到点发送
发送和接受时指明双方进程的ID(保存在请求报文或请求头中)
每个进程维护一个消息缓存队列

接受通信:广播信箱
以信箱为媒介,作为中间实体
发进程将消息发送到信箱,收进程从信箱读取
可以广播,容易建立双向通信链
在这里插入图片描述

进程通信:管道通信(pipe)

管道(channel)
用于连接读/写进程的共享文件pipe文件
管道的本质是内存中固定大小的缓冲区

半双工通信
同一时段只能单向通信,双工通信需要两个管道
以先进先出(FIFO)方式组织数据传输
通过系统调用read()/write()函数进行读写操作
在这里插入图片描述
读时不写,写时不读,读写两个操作是互斥的

进程同步

协调进程间的相互制约关系,使其按照预期的方式执行

前提
进程是并发执行的,进程间存在着相互制约的关系
并发的进程对系统共享资源进行竞争
进程通信,过程中相互发送的信号称之为消息事件

两种互相制约形式
间接相互制约关系(互斥):进程排他性地访问共享资源
直接相互制约关系(同步):进程间的合作,比如管道通信

在这里插入图片描述

进程同步:互斥访问临界资源的过程

进入区:尝试进入临界区,成功则加锁(lock)
临界区:访问共享资源
退出区:解锁(unlock),唤醒其他阻塞进程
剩余区:其他代码

访问原子
空闲让进:临界区空闲,允许一个进程进入
忙则等待:临界区已有进程,其他进程等待(阻塞状态)
有限等待:处于等待的进程,等待时间有限
让权等待:等待时应让出CPU执行权,防止“忙等待”

(进入临界区加锁,退出临界区解锁并唤醒其他阻塞进程)类似于WC坑位
在这里插入图片描述
在这里插入图片描述

互斥的访问临界资源软件实现方法

(正常生产环境使用的是信号量)
单标志法:违背“空闲让进”
在这里插入图片描述
双标志法先检查:违背“忙则等待”
在这里插入图片描述
双标志法后检查:违背“空闲让进、有限等待”
在这里插入图片描述
皮特森算法:违背“让权等待”,会发生“忙等”
在这里插入图片描述

互斥的访问临界资源硬件实现方法

中断屏蔽方法:关中断/开中断
禁止一切中断,CPU执行完临界区之前不会切换
关中断可能会被滥用
关中断时间长影响效率
不适合用于多处理机,无法防止其他处理机调度其他进程访问临界区
只适合内核进程(该指令运行在内核态)
在这里插入图片描述
Test-And-Set(TS指令/TSL指令)
读出标志并设置为true,返回旧值,原子操作
也被称之为TSL指令(Test-And-Set-Lock)
违背“让权等待”,会发生忙等
在这里插入图片描述
Swap指令( EXCHANGE,XCHG指令)
交换两个变量的值,原子操作
违背“让权等待”
在这里插入图片描述

信号量(Semaphore)

实现临界区进程同步的方法
类似于停车场、餐厅排队

PV操作
P操作:wait原语,进程等待
V操作:signal原语,唤醒等待进程
整型信号量:违背“让权等待”,会发生忙等

原语可以理解为原子操作的函数
在这里插入图片描述
记录型信号量:进程进入阻塞状态,不会忙等
在这里插入图片描述

管程

进程同步:管程(monitor,监视器)
“管理进程”,即用于实现进程同步的工具。是由代表共享资源的数据结构一组过程(进行PV操作的函数)组成的管理程序(封装)

管程是一种并发控制机制,本身就是负责管理共享资源以及对共享资源进行操作,并提供多线程环境下的互斥与同步,以支持并发的安全访问
(synchronized基于管程)

管程的组成:
管程名称
局部管程内部的共享数据结构
对该数据结构操作的一组过程(函数)
管程内共享数据的初始化语句
在这里插入图片描述
基本特征

  • 是一个模块化的基本程序单位,可以单独编译
  • 是一种抽象数据类型,包含数据和操作
  • 信息掩蔽,共享数据只能被管程捏的过程访问

条件变量/条件对象
进入管程的进程可能由于条件不满足而阻塞
此时进程应释放管程以便于其他进程调用管程
进程被阻塞的条件(原因)
进程被移入条件队列后,应释放管程
在这里插入图片描述

死锁

多个进程由于竞争资源而造成的阻塞现象,若无外力作用,这些进程将无法继续推进。

产生原因:
系统资源的竞争
进程推进顺序有问题

死锁产生的必要条件
互斥条件:共享资源的排他性访问
不剥夺条件:访问时该共享资源不会被剥夺
请求并保持条件:保持当前资源时请求另一个资源
循环等待条件:存在共享资源的循环等待链

死锁的预防

破坏互斥条件:
将只能互斥访问的资源改为同时共享访问
将独占锁改成共享锁
不是所有资源都能改成共享的

破坏不剥夺/不可抢占条件:
请求新资源无法满足时必须释放已有资源
由OS协助强制剥夺某进程某进程持有的资源
实现复杂,代价高
此操作过多导致进程任务无法推进

破坏请求并保持条件:
进程开始运行时一次性申请所需资源

资源浪费
进程饥饿

阶段性请求和释放资源

破坏循环等待条件:
对所有资源现行排序,按序号请求资源

请求时先低再高
释放时先高再低

对资源的编号应相对稳定,限制了新设备增加
进程使用资源的顺序可能与系统编号顺序不同
限制了用户编程

内存管理

存储器的多层结构

在这里插入图片描述
寄存器
高速缓存
主存储器
硬盘缓存
固定磁盘
可移动存储介质

进程运行原理

用户程序 -->进程
编译
链接
装入

在这里插入图片描述

链接

静态链接
装入时动态链接
运行时动态链接

装入

绝对装入
可重定位装入
动态运行时装入

细节
逻辑地址与物理地址(地址重定位)
内存保护

内存扩充的两种方式
覆盖
交换

内存管理方式

连续分配管理方式

单一连续分配
优点:实现简单,无外部碎片,不一定需要内存保护
缺点:只能用于单用户、单任务OS,有内部碎片,存储器利用率低

固定分区分配
动态分区分配

内存管理方式

连续分配管理方式

非连续分配管理方式

文件

以计算机硬盘为载体的存储在计算机上的信息集合

属性:
描述文件状态的一组信息,比如名称、标识符、类型、大小、位置、保护、时间、日期和用户标识等

基本操作:
创建文件;读文件;写文件;文件重定位(寻址);删除文件;截断文件;打开与关闭

文件的结构

无结构文件(流式文件)
以字节(byte)为单位
没有具体结构
采用穷举方式搜索(穷举:从第一个字节到最后一个字节)

有结构文件(记录式文件)
顺序文件
索引文件
索引顺序文件
直接文件或散列文件(hash file)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件的目录结构

文件控制块(FCB):
基本信息
存储控制信息
使用信息
在这里插入图片描述
索引节点
在这里插入图片描述

目录结构

在这里插入图片描述
目录本质上是多层次的一个树型结构,删除只是只是计数器减少,断开其连接
在这里插入图片描述

文件共享和保护

文件共享
硬链接(索引节点)
软链接(符号链)

区别:
硬链接使用索引节点计数器实现的
软连接就是创建了一个新的link文件,就是常说的快捷方式

在这里插入图片描述
文件保护:
口令保护
加密保护
访问控制

文件系统的实现

文件系统层次结构:
用户调用接口
文件目录系统
存取控制验证模块
逻辑文件系统与文件信息缓冲区
物理文件系统
辅助分配模块
设备管理程序模块

在这里插入图片描述

目录实现

目录的本质是一个数据结构,FCB的集合,有结构的文件

线性列表
哈希表
在这里插入图片描述

输入输出管理(IO)

什么是管道

ps -aux| grep 8080
head -8 文件名 | tail -f 输出第8行的文件内容
“|” 这个就是管道

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值