操作系统基础知识-面向面试

-线程和进程的关系

-进程间的通信

  1. 信道(匿名的/有名的)
  2. 信号:用于通知进程某个事件已经发生
  3. 消息队列:一方放,一方拿
  4. 信号量:同步的标识
  5. 内存共享:
  6. 套接字:用于客户端和服务器之间的网络套接字

-线程间的同步方式

  1. 互斥量
  2. 信号量
    3.事件: wait/notify保证同步

-进程的调度算法

  1. 先到先服务(FCFS)
  2. 短作业优先(SJF):
  3. 时间片轮转:
  4. 多级反馈队列优先:
  • 应设置多个就绪队列,并为各个队列赋予不同的优先级,第1级队列的优先级最高,第2级队列次之,其余队列的优先级逐次降低。
  • 赋予各个队列中进程执行时间片的大小也各不相同,在优先级越高的队列中,每个进程的运行时间片就越小。例如,第2级队列的时间片要比第1级队列的时间片长一倍, ……第i+1级队列的时间片要比第i级队列的时间片长一倍。
  • 当一个新进程进入内存后,首先将它放入第1级队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2级队列的末尾,再同样地按FCFS原则等待调度执行;如果它在第2级队列中运行一个时间片后仍未完成,再以同样的方法放入第3级队列……如此下去,当一个长进程从第1级队列依次降到第 n 级队列后,在第 n 级队列中便釆用时间片轮转的方式运行。
  • 仅当第1级队列为空时,调度程序才调度第2级队列中的进程运行;仅当第1 ~ (i-1)级队列均为空时,才会调度第i级队列中的进程运行。如果处理机正在执行第i级队列中的某进程时,又有新进程进入优先级较高的队列(第 1 ~ (i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i级队列的末尾,把处理机分配给新到的更高优先级的进程。
  1. 优先级调度
  2. 高响应比优先:
    根据比率:R=(w+s)/s (R为响应比,w为等待处理的时间,s为预计的服务时间)

地址转化

将逻辑地址转化为物理地址

-内存管理机制

  1. 连续分配方式
    将内存分为固定大小的几个块,每一块由一个进程负责
  2. 非连续分配方式
  • 页式管理
    把主存分为较小的页,通过“页表”对应逻辑地址和物理地址,提高内存利用率。
  • 段式管理
    段比页更小,每个段定义一组逻辑信息,例如主程序段main,子程序段X,数据段D,栈段S,通过“段表”对应逻辑地址和物理地址。
  • 段页式管理
    每个段分成若干页

分页和分段的比较
共同点:都是为了提高内存利用率,减少内存碎片。都是离散存储的,页内、段内都是连续的。
区别:页大小固定,由操作系统决定,段大小不固定,取决于当前运行的程序。段式逻辑单位,分为代码段、数据段等。

-多级页表和块表

多级页表

页目录号找到页目录-》页目录找到页-〉页找到想找的那块偏移

一个逻辑地址用10bits的页目录号+10bits的页号+12bits的偏移组成。页目录表的每一项对应一个页表,然后再根据页表找到对应的页。这种思想就类似与书本,目录的地方有一个章目录(页目录表)和节目录(页表),如果要查找某一节的内容首先找到这一章的地方,然后再查具体的某一节。我如果要找第五章的第4节,那么前面四章都不用看,直接找第五章就行了,这样除了第五章之外的页号对应的页框号的就不用存了。能节省大量内存;并且保证了章目录和节目录都是连续的,这就意味着可以使用偏移量的形式查找对应的章节。如下图:
在这里插入图片描述

快表

相当于缓存了一些页面和页框的对应关系

  • 在CPU与内存访问之间加一层TLB,TLB是一组寄存器,用来存放最近使用过的页对应的页框号;
  • 这样如果CPU需要访问某一页首先在TLB里面找,如果TLB里面有就不用访问内存了,因为TLB是寄存器,cpu访问寄存器的速度远大于对内存的访问速度。这样就可以提升时间性能了。可以看到提升时间性能最主要的因素就是可以在TLB里面直接找到该页对应的页框号。
  • 那么如何提升命中率的,首先TLB肯定是越大越好,但是TLB材料很贵,不会做得很大。TLB的大小大概是[64,1024]。为什么TLB里面存放这么少的项就能实现“近似访存1次”?因为程序的局部性原理。程序的局部性原理在用户程序里面对应的就是循环。TLB也被称为快表。

虚拟内存

虚拟内存使得应用程序认为它拥有连续的可用的内存,实际上它拥有的是被分割成多个的物理内存碎片,还有部分暂存在外部磁盘存储器上,在需要时进行数据交换。
好处:

  1. 可以使用相邻的虚拟地址访问物理内存中不相邻的大内存缓冲区
  2. 不同进程使用的虚拟地址彼此隔离,一个进程无法修改由另一进程或操作系统使用的物理内存。

局部性原理

1.** 时间局部性**

  • 因为程序中存在着大量循环操作。某条指令一旦执行,不久后可能再次执行;
  • 某数据被访问过,不久之后可能再次被访问。
    2.** 空间局部性**
    因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚存储的。一旦程序访问了某个单元,不久以后其附近的存储单元也将被访问。
    局部性原理使得只需要装入部分程序到内存就可以开始运行。

页面置换算法

缺页中断:需要访问的页不再主存,需要操作系统将其调入主存后访问。
如果此时主存已满,就需要删除一个页面,删除页面的规则就是页面置换算法。

  • opt页面置换算法:选择“以后将永不使用”的页面,过于理想无法实现,成为衡量其他算法的标准。
  • fifo置换算法,先进先出。
  • lru置换算法,least currently used,最近没被使用过的先出
  • lfu置换算法,least frequently used,最少使用的先出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值