ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

操作系统小记

2021-09-16 20:00:10  阅读:106  来源: 互联网

标签:操作系统 算法 死锁 线程 内存 进程 页面 小记


进程与线程

  • 进程是资源分配的基本单位,线程是独立调度的基本单位

  • 一个进程中可以有多个线程,他们共享进程资源

  • 线程与进程的区别:

    • 资源:线程不拥有资源,线程可以访问隶属进程的资源。
    • 调度:线程是独立调度的基本单位,线程切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程会引起进程切换。
    • 系统开销:进程的创建和撤销资源消耗更大。
    • 通信:线程间通信可以通过读写同一进程中的数据进行通信,但是进程间通信需要借助IPC。

进程调度算法

  • 就绪状态的进程通过进程调度算法获得cpu时间片

  • 不同环境的调度算法目标不同,主要分两种环境讨论:批处理系统和交互式系统

  • 批处理系统(要求有较大的吞吐量)

    • 先来先服务

    • 短作业优先

    • 最短剩余时间优先

  • 交互式系统(要求有较快的反应速度)

    • 时间片轮转

    • 优先级调度

    • 多级反馈队列(时间片轮转和优先级调度的结合)

进程间通信

  • 进程同步与进程通信的关系:进程同步是指控制多个进程按照一定顺序执行,进程通信是指进程间传输信息,其中进程通信是一种手段,而进程同步是它的目的,为了达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。

  • 进程通信的概念:任何一个进程的全局变量在另一个进程中都看不到,所以进程间交换数据必须通过内核,在内核中开辟一块缓冲区,进程1将数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据从数据读走,

  • 进程间通信的几种方法:

    • 管道:半双工的,只能用于具有亲缘关系的进程,只存在于内存中

    • 命名管道:提供了一个路径名与之关联,不存在亲缘关系的进程也可以使用,存在于磁盘中

    • 消息队列:存放在内核中,只有操作系统重启或者显示的删除一个消息队列的时候,该消息队列才会被真的删除,可以实现消息的随机读取,不一定要以先进先出的次序读取

    • 信号:信号由某个进程产生,选择要传递的对象,可以选择阻塞接收

    • 信号量:是一个计数器,用于多进程对共享数据的访问,信号量的意图在于进程间同步

    • 共享存储:内核中的一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间,进程可以读取这一块内存而不需要进行数据的拷贝,要注意进程间的同步和互斥

    • 套接字:用于不在同一台计算机上的进程通信,有3个属性:域,端口号和协议类型

死锁

  • 死锁的四个条件:互斥,占有和等待,不可抢占,环路等待

  • 死锁有四种处理方法:鸵鸟策略,死锁检测和死锁恢复,死锁预防,死锁避免

  • 死锁恢复:利用抢占恢复,利用回滚恢复,通过杀死进程恢复

  • 死锁预防:

    • 破坏互斥条件

    • 破坏占有和等待条件,一种实现方式是进程在开始之前请求所需要的全部资源

    • 破坏不可抢占条件

    • 破坏环路等待,给资源编号,进程只能按照编号顺序请求资源

  • 死锁避免:

    • 安全状态:即使所有进程突然请求对资源的最大需求,也依然存在某种调度次序能够是的每一个进程运行完毕,这种状态是安全状态

内存管理

  • 虚拟内存:虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,允许程序不用将地址空间中的每一页都映射到物理内存

  • 分页系统地址映射:内存管理单元管理者地址空间和物理内存的转换,其中的页表存储着页(程序地址空间)和页框(物理内存空间)的映射

  • 页面置换算法:

    • 什么情况发生页面置换:要访问的页面不在内存中,并且内存已经没有空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间

    • 类似于缓存淘汰策略,可以将内存看做磁盘的缓存

  • 几种页面置换算法

    • 最佳:最长时间不再被访问,理论上的算法,因为无法知道一个页面多长时间不再被访问

    • 最近最久未使用:LRU,用链表实现代价会很高

    • 最近未使用:给每个页面两个状态位

    • 先进先出:会导致缺页率升高

    • 第二次机会算法:解决先进先出会替换频繁使用的页面的问题,依旧给每个页面两个状态位,每次检查队首页面的状态位,如果R==0,说明这是一个又老又没有被访问的页面,如果R==1,将R置为0,放入队尾

    • 时钟:第二次机会算法需要在链表中移动页面,降低了效率,时钟算法使用环形链表将页面连接起来,使用一个指针指向最老的页面

  • 分段:防止动态增长的表导致覆盖问题的出现,将每个表分成多个段,每个段分配一个独立的地址空间

  • 段页式:程序的地址空间划分为多个具有独立地址空间的段,每个段上的地址空间划分为大小相同的页,这样拥有分段系统的共享和保护和分页系统的虚拟内存功能

  • 分页和分段的比较:体现在四个方面:

    • 对程序员的透明性,分页透明,分段需要程序员显示划分

    • 地址空间的维度:分页是一维地址空间,分段是二维的

    • 大小是否可以改变:页的大小不能改变,段的大小可以改变

    • 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间,分段主要是为了使程序可以被划分为逻辑上独立的地址空间并且有助于共享和保护

设备管理

  • 读写一个磁盘块的时间的影响因素有:旋转时间(找扇区),寻道时间(找磁道),实际的数据传输时间

  • 其中寻道时间最长

  • 磁盘调度算法:

    • 先来先服务

    • 最短寻道时间优先

    • 电梯算法:保持一个方向运行,直到该方向没有请求为止

标签:操作系统,算法,死锁,线程,内存,进程,页面,小记
来源: https://blog.csdn.net/vilin_FHSI/article/details/120335821

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有