博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统之进程调度与内存管理
阅读量:4113 次
发布时间:2019-05-25

本文共 1276 字,大约阅读时间需要 4 分钟。

1.进程间的通信与调度

1.1进程间的通信(Inter Process Communication)

生产者消费者问题

数据存到有界缓冲区bounded-buffer中,设置count记录缓冲区的数据量,如果缓冲区满count=size,让生产者睡眠;如果缓冲区为空count=0,让消费者睡眠。

 

解决方法:

(1)用信号量(semaphore)

需要三个信号量:full记录充满缓冲区数目,empty记录空的缓冲区数目。mutex用来保证任意时刻只有一个进程读写缓冲区变量。

(2)用互斥量(mutex)

是没有信号量基数能力的简化版,仅适用于管理共享资源或一小段代码。互斥量处于两态之一的变量:解锁和加锁

(3)用消息传递(message passing)

(4)用屏障(barrier)

1.2 程序/进程的调度

临界资源:一次只能被一个进程访问的共享资源。

衡量调度的标准:吞吐量(系统每小时完成的作业量)和周转时间(批处理作业用时)

进程调度算法

(1)实时系统一般用非抢占式——先来先服务

交互式系统用抢占式:

(2)轮传时间片:时间片设置太长会让短交互的时间过长,时间片设置太短切换开销大,降低CPU效率

(3)优先级调度

(4)多级队列

(5)最短进程优先

(6)彩票调度

2. 操作系统的内存管理

2 .1 内存管理之内存分配方法

 2.1.1 单一连续分配

单用户单进程时把内存分为系统区和用户区两部分。

  2.1.2 固定分区分配法

给不同程序固定大小的内存空间

2.1.3 动态分区分配算法

动态分区空闲链:双向链表,节点需记录可

(1)首次适应(FF算法)

   每次都从头开始顺序查找适合的内存区(容易造成表头碎片化,后期优化成循环适应,每次分配都从上次检索结束的位置开始查内存)

(2)最佳适应(BF算法)

把分区空闲链的节点按大小排序,每次选大小最相近的内存区

(3)快速适应(QF算法)

把整个内存分成多个空闲链表,每个空闲链表存储一种容量的空闲区。每次都能快速找到空闲链表。

操作系统如何管理进程的内存空间?

 

2.2 内存管理之虚拟内存

虚拟内存为何出现?程序/进程内存超过了物理内存的容量,且一台机器往往要跑多个程序/进程。

虚拟内存技术实现前提——程序的局部性原理:CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋向于聚集在一个较小的连续区域中。

高速缓存的替换时机 VS 主存缺页的替换时机:

虚拟内存的置换算法(和高速缓存的置换算法一样)

2.2.1 FIFO

 利用一个双向链表保存数据,当来了新的数据之后便添加到链表末尾,如果Cache存满数据,则把链表头部数据删除,然后把新的数据添加到链表末尾。

   在访问数据的时候,如果在Cache中存在该数据的话,则返回对应的value值;否则返回-1。如果想提高访问效率,可以利用hashmap来保存每个key在链表中对应的位置。

2.2.2 LFU(least recently used)

2.2.3 LRU(least recently used)

 

转载地址:http://ibrsi.baihongyu.com/

你可能感兴趣的文章
web.py 0.3 新手指南 - 如何用Gmail发送邮件
查看>>
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
web.py 0.3 新手指南 - 使用db.query进行高级数据库查询
查看>>
web.py 0.3 新手指南 - 多数据库使用
查看>>
一步步开发 Spring MVC 应用
查看>>
python: extend (扩展) 与 append (追加) 的差别
查看>>
「译」在 python 中,如果 x 是 list,为什么 x += "ha" 可以运行,而 x = x + "ha" 却抛出异常呢?...
查看>>
谷歌阅读器将于2013年7月1日停止服务,博客订阅转移到邮箱
查看>>
浅谈JavaScript的语言特性
查看>>
LeetCode第39题思悟——组合总和(combination-sum)
查看>>
LeetCode第43题思悟——字符串相乘(multiply-strings)
查看>>
LeetCode第44题思悟——通配符匹配(wildcard-matching)
查看>>
LeetCode第45题思悟——跳跃游戏(jump-game-ii)
查看>>
LeetCode第46题思悟——全排列(permutations)
查看>>
LeetCode第47题思悟—— 全排列 II(permutations-ii)
查看>>
LeetCode第48题思悟——旋转图像(rotate-image)
查看>>
驱动力3.0,动力全开~
查看>>
记CSDN访问量10万+
查看>>
Linux下Oracle数据库账户被锁:the account is locked问题的解决
查看>>
记CSDN访问20万+
查看>>