操作系统入门-进程与内存管理

操作系统的演进
无操作系统->批处理系统->分时系统
早期的操作系统一次只能处理一个任务
多道程序设计使得批处理系统一次就可以处理多个任务
那么什么是多道程序设计呢?
多道程序设计是指在计算机内存中存放多个程序
多道程序在计算机的管理下相互穿插运行
简而言之,多道程序设计在计算机管理下处于关键地位,是计算机系统中的重要功能。
操作系统的五大功能?
文件管理,进程管理,设备管理,存储管理,作业管理
为什么要操作系统?
我们不能直接操作硬件,
设备复杂多样,需要统一界面
操作系统的简易性让人们更容易的去操作计算机。
操作系统的基本功能是什么?
处理器的资源,IO设备资源,存储器资源,文件资源
操作系统的基本功能
图像窗口形式,命令形式,系统调用形式

并发性

并行性和并发性
并行的意思是两个进程同事运载,比如说,我眼睛看着屏幕的同时我在敲键盘,这就是并行
并发的意思是我在喝水,突然停止喝水这个动作我要去解手
并发通常是指在一个线程下进行的操作
并行是两个事件在同一时刻进行发生
并发是指两个或多个事件在同一时间间隔下发生、

共享性

互斥共享形态
当A占用资源时,其他进程想使用就必须等待,只有当A结束运行时,其他进程才能够抢占资源 。
同时访问形式
某种资源在一段时间内被多个程序访问。
这种同时是“”宏观的“”,宏观的去看该资源可以被同时访问。

虚拟性

虚拟性表现为物理实体转变为若干个逻辑实体
物理实体是真实存在的,逻辑实体是虚拟的
虚拟技术分为时分复用和空分复用

进程与线程的比较
比较类型进程线程
资源资源分配的基本单位不拥有资源
调度独立调度的基本单位独立调度的最小单位
系统开销系统开销大系统开销小
通信进程IPC读写统一进程数据通信
进程的三态

就绪,执行,阻塞

就绪状态
  • 当进程被分配到除cpu所有必要的资源之后
  • 只要在获得cpu使用权限就可以立刻运行 其他资源已经准备好
  • 就差cpu资源的状态为就绪状态
    通俗来讲,就绪状态就相当于吃饭,饭做好了,菜炒出来了,但是一发现,筷子还没拿呢,筷子被别人占着了,你就得等。
执行状态
  • 当进程获得cpu资源之后,其程序正在执行称为执行状态
  • 在单处理机中,某个程序正在执行称为执行状态
    执行状态就相当于你的筷子拿到手了,你就可以吃饭了
阻塞状态
  • 进程因某种原因如其他设备就绪无法继续执行,从而放弃cpu状态称为阻塞状态
    你吃饭慢啊,这顿吃一半呢,结果突然服务器来了一大波流量,吃不消了,宕机了,一看是某某明星结婚了,你就得放下饭碗去修服务器,这饭给谁吃呢,谁愿意吃谁吃呗.
进程的五态

进程除了就绪,执行,阻塞还有两态,分别是创建态和终止态,一头一尾

创建状态

创建进程拥有PCB但其他资源尚未就绪的状态称为创建态
创建态相当于你饭都没做呢,菜也没炒,你没法吃,你得用火去做。

终止状态

系统清理,PCB归还
你吃完饭得把东西收拾了,结算一下,比如你朝老王家借了俩鸡蛋,你得还人家俩鸡蛋,归还

进程的同步

进程同步有四个规则

名称解释
空闲让进资源无占用,允许使用
忙则等待资源有占用,请求进程等待
有限等待保证有限等待时间能够使用资源
让权等待等待时,进程需要让出cpu
  • 比如说,六个人吃饭,但是只有五个碗筷,但是其余五个人要么洗澡,要么看电视,要么玩游戏,就你吃饭,你就可以上桌了(空闲让进)
  • 最后打游戏的人来了,发现人坐满了他就得等(忙则等待)
  • 还有个人吃饭数着米粒吃的,一粒一粒的吃,这闹着玩呢?占着资源不好好利用,这时候就得有个机制去制止他,不行,他不能从中午饭吃到晚饭在这坐着一直耗下去(有限等待)
  • 你退席的时候不能把碗筷都拿走吧,因为第六个人吃饭得用碗筷(让权等待)
进程同步的方式
  • 消息队列
  • 共享存储
  • 信号量
死锁

死锁(DeadLock),就是资源分配不当导致的相互对峙(资源竞争)货币价值在于流通,但是我没有商品或者物品给我流通,我只好就这样等着。

打印机传真机
进程1进程2

再举个例子,比如进程1控制传真机,进程2控制打印机,进程1说我要打印机资源,但是进程二说我要传真机资源,这样形成了僵持,从而造成了死锁。(等待请求的资源被释放,自身占有的资源不释放)
解决的方法可以是先让进程1获取打印机资源,然后获取传真机资源,释放资源,进程2获取资源,接着执行,这样解决了死锁问题。

内存的回收与分配
动态分区分配
- 首次适应算法

在这里插入图片描述

  • 分配内存时从开始顺序查找适合内存区
  • 若没有合适内存区,则该次分配失败
  • 每次都从头部开始,使得头部地址空间不断被划分
- 最佳适应算法

在这里插入图片描述

  • 最佳适应算法按照要求空闲区链表按照容量大小排序

  • 遍历空闲区链表找到最佳合适空闲区

内存回收

内存回收有四个讨论点
在这里插入图片描述
这种就是回收区和空闲区合并,新空闲区使用新空闲区的地址
在这里插入图片描述
回收区和空闲区合并,新地址用回收区地址
在这里插入图片描述
回收区和空闲区合并,形成新的空闲区,新的空闲区使用空闲区1的地址
在这里插入图片描述
创建新的空闲链表节点,将节点插入该链表中。
通俗的来讲就是谁在上面,谁就吞谁。

段页式存储管理
页式存储管理

我们先看下空闲节点的示意图
在这里插入图片描述

  • 页面大小应该适中,过大难以分配,过小碎片过多
  • 页面大小通常是512B-8K

在这里插入图片描述
我们用上面的图可以整理出下面的表

页码字块
12
24
35
47
58
69
711
812
913

这个很像数据结构映射关系对不对?就像一个map一样,一个key保存的是页码,value保存的是字块所处的位置,一一对应。

段式存储

段式存储就是一段段的去存储,如图所示
在这里插入图片描述
段式存储的表里面有段号,基址,段长表示。
段号就是段的编号
基址就是一开始那个地址
段长就是这一段的长度

段式和页式存储管理的共同点
  • 段式和页式都离散地管理了进程的逻辑空间
页 VS 段
物理单位逻辑单位
合理利用空间满足用户需求
页大小固定段长可以变化
页表的信息是一维的(页号)段表的信息是二维的(基址,段长)
段页式存储管理

段页式存储管理就是内层页面存储,分成几段几段,外部用段进行存储。

虚拟内存

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中

虚拟内存的置换算法

下图展示的是高速缓存的替换时机
在这里插入图片描述
下图展示的是主存页面的替换时机
在这里插入图片描述

Linux系统下的存储管理

Buddy内存管理算法
  • 页内碎片
    内部碎片是已经被分配出去的内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片
  • 页外碎片
    外部碎片是指还没有分配出去,但是由于大小而无法分配给申请内存空间的新进程的内存空闲块。
    Buddy算法的例子:
    比如我要100K内存,buddy每一个空闲的块都是2的幂次方
    我有1M,过程如下
  1. 先分512K进去,有空余,剩下的512K分配出去
  2. 剩下512K再进行划分,256k+256k
  3. 取256k,剩余的256k分配出去
  4. 256k再划分,128k+128k
  5. 取128k下来,剩下的128k划分出去
    那回收呢?
  6. 128k有伙伴吗?有!变成了256k
  7. 256k有伙伴吗?有!变成了512k
  8. 512k有伙伴吗?有!变成了1M
    这样,刚刚分配的内存就回收回来了。
    伙伴算法在内存管理方面还是比较重要的,主要解决了内存外碎片的问题。
虚拟内存与Swap空间的比较
Swap空间虚拟内存
Swap空间存在于磁盘虚拟内存存在于磁盘
swap空间与主存发生置换虚拟内存与主存发生置换
swap空间是操作系统概念虚拟内存是进程概念
swap空间解决系统物理内存不足的问题虚拟内存解决进程物理内存不足的问题
辅存存储空间分配
链接分配

在这里插入图片描述
从上图来看

  • 隐式存储的下一个访问块地址存储到当前访问块中
  • 隐式访问适合顺序访问,随机访问的效率相当低
  • 隐式访问的容错率相当的低,中间有一个节点发生故障,存储的文件就要出错
    链式分配可以形成一个表,每个字块对应下一个访问块的地址,这个就是FAT(File Allocation Table)格式
索引分配

索引分配就相当于,每个块中有个索引记录那些块一起访问,比如2这个块记录了N个块,1,3,4,5,6,7,8.。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值