操作系统:个人总结

何为操作系统?
操作系统是一个大型的程序系统,他负责计算机的全部软硬件资源的分配,调度工作,控制和协调并发活动,实现信息的存取和保护。本质是如软件
操作系统的概述

在这里插入图片描述

操作系统目标:
1,方便性:如果没有OS用户面对的只是一个裸机,想象一下当用户使用计算机是没有了图形化的界面将会发生什么
2,有效性:第一,OS可以进行资源的分配可以管理资源,提高了系统资源的利用率,第二,OS可以让计算机有条不紊的运行下去提高了系统的吞吐量
3.可扩成性:

4,开放性

OS的作用:
1,OS作为用户和计算机硬件系统之间的接口:因为在硬件之上的第一层是OS然后用户才能在OS之上安装一些程序
2,OS作为计算机资源的管理者:我们可以打开我们的应用管理器我们可以看到我们的计算机中运行很多的程序,但我们的计算机还可以正常运转这就是我们的OS在其中的管理
3,OS实现了对计算机资源的抽象(这是虚拟性的体现):我们计算中本来资源就是一堆资源需要OS对资源进行抽象给不同的设备使用

单道批和多道批系统啥区别:单道批内存只能有一个作业在运行时独占系统所用资源一次只能执行一个程序,而多道批内存可以有多个作业,一次可以执行多个程序。但无论是单道批还是多道批CPU只能一次处理一个进程,所以多道批处理是走走停停交替执行

下面我们以一个在笔记本上如何运行绝地求生游戏为例来探究操作系统的智慧(运行环境是windows操作系统)

如果我们在裸机上想运行这个游戏那是不可以的,想一想如果没有操作系统我们就玩不了游戏了
在这里插入图片描述

所以我们赶快装一个OS系统,装啥系统了我们可以选择装windows系统这样我们就可以开启我们的吃鸡之路了
但当我们打开时我们的笔记本上并没有开始运行吃鸡这个游戏(我默认是笔记本中已经有了吃鸡这个程序)那我们可能会有一些疑问那我的游戏那去了?这个时候你并没有运行你的游戏,吃鸡还在辅存(磁盘中)
在这里插入图片描述

存储结果示意图
从这个图中越往上越靠近CPU其被访问的时间越短,我想你们在玩吃鸡的时候会期待越丝滑越好吧,操作系统也是这样想的所以要把这个程序调度到离CPU比较近的地方可见CPU的智慧。既然OS系统这么聪明,我们就因该向它学习,我们先来看一下磁盘吧
在这里插入图片描述

我们可以通过这个图看到磁盘是由盘面和主杆组成,而在每一个磁盘上通过不同的扇区和磁道过程数据就存在磁道中。
磁盘如何存储这些数据的?
1,连续组织方式
2,链式组织方式
1,隐式链接
2,显示链接
3,索引组织方式
为了让我们的数据可以准确的存入到磁盘中我们可以用位示图来反映位示图可以描述为二维数组map[m,n]
在这里插入图片描述

盘块磁盘的基本单位
盘块的分配:
1,顺序扫描位示图,从中找出一个或一组其值为0的二进制
2,将所找到的一个或一组二进制转化成对应的盘块号,假定找到的其值为0的二进制位位示图的第i行,第j列:
P = n * (i - 1) * j
n表示每一行的位数这个图是16位
3,修改位示图
令map[i,j] = 1
盘块回收
1,将回收盘块的盘块号转换成位示图中的行号和列号
i = (b - 1) / n + 1
j = (b - 1) % n + 1
2,修改位示图
令map[i,j] = 0

。那磁盘又是如何把这些数据的这就有四种磁盘的调度算法,看了这么多的字一定很累了吧来算算题换换脑子
在这里插入图片描述

1,先来先服务:就好比看病排队先到的排在前面先给你看病
2,最短寻道时间:就好比你要回家在你回家的路上又书店,有菜市场。如果你刚好要买书和菜那你肯定是去离你最近的地方去买对应的东西
3,扫描算法(电梯算法):就好比你现在是从10层坐电梯刚好到达12层,你还要去1层,5层,15层这个算法告诉你先去15层再去5层再去1层
4,循环扫描算法:就好比你现在是从10层坐电梯刚好到达12层,你还要去1层,5层,15层这个算法告诉你先去15层,再去1层再去5层,因为他是循环的最大值再循环回来时从最小值开始的

我们现在知道了磁盘如何寻找这些数据了,但我们如何让磁盘找到我们想要的数据了?这个时候就是文件大显身手了,我们无法直接操作磁盘,但我们从刚才的安装目录中可以找到一个.exe文件只要双击就可以运行我们的吃鸡了,文件:建立字符流到盘块集合的映射关系,通过调度我们的吃鸡就可以进入内存了
在这里插入图片描述

程序装入内存的方法
1,绝对装入方式:环境单道批
2,可重定位装入方式:需要重定位寄存器
3,动态运行时装入
内存中的如何分配空间
1,固定分区分配
(1)分区大小相等
(2)分区大小不相等
2,动态分区分配
(1),空闲分区表:把空闲的分区的起始地址记录下来,还要记一下这个空闲分区有多大
(2),空闲分区链:把各个空闲分区用单链表的形式来链接起来
内存中也是有分配空闲分区的算法(基于顺序搜索的动态分区分配算法)
1,首次适应算法:按地址的升序
2,循环首次适应算法:从循环这个词我们可以知道每次查找不是从首地址查找而是从该地址的下一个地址查找
3,最佳适应算法:按其容量大小升序排列但会产生很多碎片,因为每次找到都是最适合的但会有多的空间会被其舍弃这个时候产生的碎片的容量非常的小,只能是碎片
4,最坏适应算法:按容量从大到小排序
但是如果系统中所有的进程被阻塞了没有运行就浪费了内存空间也让CPU停下来不工作。这样是我们不愿看到的因为我们花大价钱买来的CPU竟然不工作,我们不能忍受这个时候对换技术产生了
对换的方式:
1,整体对换:作为中级调度来使用,中级调度中对换的是以整个进程为单位的
2,页面(分段)对换
程序是连续存储再内存中,那内存中就会产生很多的空闲的碎片如何处理了??我们可以通过紧凑的方法将小的空闲分区组成大的空闲分区操作系统还可以把他们分散的装入许多不相邻的分区(作业全部内容装入内存后才可以执行)中极大的利用了内存空间
离散分配又有2种
1,分页存储管理方式:将用户程序的地址空间分为若干个固定大小的区域,称为页或者页面也将内存空间分为若干个物理块页块大小相同,这样可将用户程序的任意一页放入到入一个物理块中
2,分段存储管理方式:和分页类似
3,端页式存储管理系统
那我们既然已经知道了分配方式我们就来一探究竟吧
首先我们来看分页存储管理
1页面:对逻辑空间进行的大小划分的且有计算机硬件来决定通常大小是1KB - 8KB
2,分页的地址结构
在这里插入图片描述

页号是该页的编号便于查找,位移量是相对于开始位置的距离
如果我们知道一个逻辑空间的地址为A页面大小为L
页号p = int(A / L) 位移量d = A % L
3,我们知道分页中的各个页是分散在内存中的任意一个物理块中。的当我们要查找某个页面对应的物理块就很麻烦,所以OS有为每一个进程建立一张页面映像表俗称页表
在这里插入图片描述

当程序运行时我们知道逻辑地址和和页面大小如何才能找到我们再内存1中物理块里的数据???
这就用到了地址变换机构
在这里插入图片描述

第一步:页号和页表长度比较如果超过了就进行中断处理
第二步:查找页号对应的块号(块号 * 页面大小 + 页内地址 = 物理地址)
注意:这个过程需要两次访问内存第一次是查找页表第二次是按物理地址取数据

分段存储管理方式
分段存储管理方式中,作业的地址空间被划分为若干个段,每一个段定义了一组逻辑信息。段的长度有相应的逻辑信息组的长度决定。
1,分段地址中的地址结构
在这里插入图片描述

2,同样分页有页表,分段也有段表段表有段长和基址组成
注意:段表中没有段号,段号是隐含的

3,地址变换机构

在这里插入图片描述

第一步:比较段号和段表长度,是否越界
第二步:比较段内地址是否大于段号对应的段长,大于越界
第三步:基址 + 段内地址 = 物理地址
例题:
某虚拟机存储器用户空间共有32个页面,每页32个页面,每页1KB,主存16KB假定某时刻为用户的第0,1,2,3页分别分配的物理块号为:5,10,4,7试将虚拟地址0A5C变换成物理地址
方法一:我们知道了虚拟地址但我们要注意这里是16进制无法直接计算要转为10进制
虚拟地址(10) / 页面大小 = 页号
虚拟地址(10) % 页面大小 = 偏移量
再用页号和页表长度比较没有越界再找对应的块号,再用:块号 * 页面大小 + 偏移量 = 物理地址
再把这个物理地址转化成16进制
方法二:我们可以把虚拟地址的16进制转化成进制
0 A 5 C
0000 1010 0101 1100
通过题意我们知道可以假定页面大小 = 页内偏移量
2^10 所以页内偏移量占用10位
0000 1010 0101 1100
页号 偏移量
000010 = 2
页表
0 5
1 10
2 4
3 7
通过查表我们知道对应的块号是4
再用4替换掉2得到的就是物理地址 :虚地址 = 页号 + 偏移量
物理地址 = 块号 * 页面大小 + 偏移量
00 0100 10 0101 1100
1 2 5 C

分页和分段的区别:

(1),页是信息的物理单位,采用分页存储管理系统是为了实现离散分配方式,减少内存的外碎片,提高内存利用率,其行为是系统的行为对用户不可见。而分段则是信息的逻辑单位,它通常包含是一组意义相对完整的信息,分段的目的主要是更好的满足客户
(2),页的大小固定且用系统的硬件来决定。而段的长度却不固定
(3),分页的地址空间是一维,分段的地址空间是二维的
这些些方法都要求作业全部装入内存程序才能运行但有些数据对程序来说没啥用,就白白浪费了内存空间。而且当有大量作业需要运行时内存就显得力不从心了所以我们又有了虚拟存储器
虚拟存储器
是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其逻辑内存容量是由外存容量和内存容量之和来共同决定
特征:
1,多次性
2,对换性
3,虚拟性
虚拟性是以多次性和对换性为基础的
实现方法
1,请求分页存储管理系统
在分页的基础上增加了请求分段和页面调入功能
(1)硬件支持
请求分页的页表机制
缺页中断机构
地址变换机构

2,请求分段存储管理系统
(1)硬件支持
请求分段的段表机制
缺页中断机构
地址变化机构
请求分页存储管理方式
1,请求分页的页表机制
2,缺页中断机构:
(1),在指令执行期间产生和处理中断信号
(2),一条指令的执行期间可能产生多次缺页中断
在请求分页中内存的的分配
(1),固定分配
(2),可变分配全局置换
(3),可变分配局部置换
页面置换算法
1,最佳置换算法(很理想的一种算法)
:我们看再后面最后使用的就可以置换,那我们如何知道下一步要执行啥了这就是一种理想的算法
2,先进先出(FIFO)算法
:先进来的先出来,我们可以按顺序把他们排成一个单链表根据题目中的物理块数来确定单链表的长度
3,最近最久未使用(向前看)
:我们引入了栈,在栈底的页就是一直未被使用的,因为如果用到该页,该页就会又回到栈顶
4,最少使用
5,Clock算法

我们这样做的目的是增加进程的数量提高内存利用率,是不是内存中进程数越高越好??
不是的,如果内存中的进程越多那系统分配给每个进程的物理块就越少,那再进程运行时会频繁的发生缺页,必须请求系统进行页面置换。这就造成了每个进程大量的时间都在页面的换入换出
经过了重重困难程序进入了内存OS为这些作业创建了进程
创建过程:
1,申请空白的PCB
2,为新进程分配器运行所需的资源
3,初始化PCB
4,如果新进程被就绪队列接纳可以进入就绪队列

在多道批环境下为了更好的管理每一个程序就引入了进程
为了管理进程又引入了进程控制块
进程控制块是进程在内存中的唯一标志
当我们打开资源管理器时我们可以看到有很多的进程正在CPU中运行
在这里插入图片描述

进程是如何从存在在内存中,又如何出现在CPU中?
首先通过作业调度算法将在外存中的作业调度到内存中然后OS为改作业创建进程再经过进程调度算法将进程调入到内存中
进程 = 进程控制块(PCB) + 程序段 + 数据段
进程和程序的关系
程序 进程
概念 静态 动态
存储位置 外存 内存
存在时间 永久 有生命周期
组成 有序指令 程序段,数据段,PCB
对应关系 一个程序对应多个进程
一个进程对应多个程序

进程的特征:
1,动态性:最基本的特征
2,并发新: 最重要的特征
3,独立性
4,异步性
进程的三种状态
![](https://img-blog.csdnimg.cn/20201227161850749.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzI4ODYy,size_16,color_FFFFFF,t_70)

进程控制块的组织方式
1,线性方式
2,链接方式
3,索引方式

进程控制是进程管理中最基本的功能

在这里插入图片描述

同步关系:进程之间的协作
异步(互斥):多个进程不能同时使用同一个资源
死锁:进程互不相让都得不到足够的资源

临界资源:同一时刻不能被同时访问的资源
临界区:进程中访问临界软硬件资源的代码称为临界区

进程同步的机制:
1,空闲让进
2,忙则等待
3,有限等待
4,让权等待

如何实现同步我们引入了信号量即wait()[p --]和signal()[v ++]操作
信号量例题:
例题1:某寺庙,有小和尚和老和尚若干,有一个水缸,由小和尚提水,入缸共老和尚饮用,水缸可以容纳10桶水,水取自同一口井中由于井口窄每次只能容纳1个水桶打水,水桶总数为3个,每次取水,入水仅为1个桶且不可同时进行是给出取水,入水的PV算法的描述
我们先来分析一下,这个题的临界资源水缸(每次只能放入一个桶老和尚喝水和小和尚的打水不能同时进行),打水的水井,
定义一下互斥变量mutex1 = 1(水缸),mutex2(水井) = 1
定义一下其他变量:empty = 10 full = 0 cunt(桶) = 3
在这里插入图片描述

A()

{
While(){
P(empty)
P(count)
P(mutex2)
打水
V(mutex2)
P(mutex1)
到水
V(mutex1)
V(count)
V(full)

}

}

B(){
While(){
P(full)
P(count)
P(mutex1)
取水
V(mutex1)
V(count)
V(empty)

}

}
P 表示申请资源 v表示释放资源

例题二:某小型超级市场,可容纳30个人同时购物。入口处备有篮子,每个购物者可持一只篮子入内购物。出口处结账,并归还篮子(出入口仅允许一个人通过)。
分析:出口和入口是同一个地方且只能有一个人通过
Metux1(出入口) = 1
Nanzi = 30
ru(){
P(nanzi)
P(metux1)
进入
V(metux1)

}
Chu(){

P(metux1)

V(nanzi)
V(metux1)

}

了解了进程的基本情况再来说一下进程或作业的调度
我们先来来了解一下作业
作业:作业是一个比程序更为广泛的概念 作业 = 程序 + 数据 + 作业说明书
进程有PCB
作业有JCB

调度算法
1,先来先服务
2,短作业优先(需要预知作业或进程的运行时间)
3,优先级调度算法
4,高响应比优先调度算法:优先权 = (等待时间 + 要求服务时间) / 要求服务时间
5,轮转调度算法:时间片的选取:略大于一次典型的交互所需要的时间
调度例题:
1,假设有4道作业,它们的提交时刻及执行时间如表:
计算在单道程序环境下,采用先来先服务调度算法和最短作业优先调度算法时的平均周转时间和平均带权周转时间,并指出它们的调度顺序。
在这里插入图片描述

先来先服务
作业号 提交时间 开始时间 执行时间 完成时间 周转 平均周转

平均周转时间 = (2 + 2.8 + 3.1 + 3.3) / 4
平均带权周转时间 = (1 + 2.8 + 6.2 + 11) / 4
短作业优先
在这里插入图片描述

2,有一个多道程序设计系统,采用不允许移动的可变分区方式管理主存中的用户空间,设用户空间为100K,主存空间的分配算法为最先适应分配算法,进程调度算法采用短作业优先算法,今有如表所示作业序列:
在这里插入图片描述

假定所有作业都是计算型作业且忽略系统调度时间,请写出采用"计算时间短的作业优先算法"时作业的装入主存时间、开始执行时间、完成时间、周转时间以及它们的平均周转时间
内存大小100k第一次只能让A,B,D进入当A,B都运行完后让C,E进入
在这里插入图片描述

3,有五个作业按照A,B,C,D,E的顺序几乎同时到达同一个计算中心,他们估计运行时间为10,6,2,4,8分钟以4个时间片的调度算法

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

可以调度算法有了进程可以执行了的那执行需要资源但有些资源是临界资源如果多个进程争抢可能会陷入死锁
死锁
为啥会产生死锁:1,竞争资源.2,进程间推进不合理
产生死锁的必要条件:1,互斥条件.2,请求和保持条件.3,不可抢占条件.4,循环等待条件
产生了死锁如何处理?
1,预防死锁
2,避免死锁
3,检测死锁
4,解除死锁
如何避免死锁
银行家算法
几个名词解释:
Available是可利用资源向量,Max最大需求矩阵,Allocation已经拥有的资源向量,Need需求矩阵
关系:
Need[i,j] = Max[i,j] - Allocation[i,j]
银行家算法的步骤
背景是进程P请求向量
1,request[j] <= Need[i,j]
2,Reques[j] <= available[i,j]
3,修改值
Avaiable[i,j] = avaiable[i,j] - request[j]
Allocation[i,j] = allocation[i,j] + request[j]
Need[i,j] = need[i,j] - request[j]
4,找安全序列
Work = avaiable ,Finish
例题
假设系统中有五个进程{p0,p1,p2,p3,p4}和三类资源{a,b,c},各种资源的数量分别为10,5,7,再t0时刻的资源分配情况如图所示
在这里插入图片描述

我们先要检查这个系统是否安全

在这里插入图片描述

查找安全序列循环查找比较:该系统存在安全序列:p1,p3,p4,p0,p2

2,p1请求资源,p1发出请求向量Request1(1,0,2)
1,Request1(1,0,2) <= need(1 2 2)
2,Request1(1,0,2) <= avaiable(3,3,2)
3,avaiable(2,3,0) = avaiable(3,3,2) - request1(1,0,2)
Allocation(3,0,2) = allocation(2,0,0) + request1(1,0,2)
Need(0,2,0) = need(1,2,2) - request1(1,0,2)
再检查是否存在安全序列
在这里插入图片描述

存在安全序列:p1,p3,p4,p0,p2

那死锁的检测
1,资源分配图
在这里插入图片描述

当该资源分配图可以完全化简则不会死锁,否则死锁
例题
在这里插入图片描述

这个图中的点就代表一个资源
p3进程运行完后释放R2资源,P2获得R2资源也可以运行之后释放R1和R2资源之后P1可以正常进行,存在安全序列:p3,p2,p1
注意:这种题我们可以从后往前分析
我们就可以再吃鸡大陆上驰骋了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值