博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《系统架构师》——操作系统和硬件基础
阅读量:5860 次
发布时间:2019-06-19

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

考点一般分布在以下几个部分,考分在3~5分左右。

 

 

 

 

 

 

 

 

 

 

 

 

产生死锁的原因主要是:

(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。

产生死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。

 

有序资源分配法和银行家算法都是可以避免死锁的算法。

有序资源分配法:

  将资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。

系统要求申请进程:  

  1、对它所必须使用的而且属于同一类的所有资源,必须一次申请完;  

  2、在申请不同类资源时,必须按各类设备的编号依次申请。

例如:进程PA,使用资源的顺序是R1,R2;进程PB,使用资源的顺序是R2,R1;若采用动态分配有可能形成环路条件,造成死锁。  

采用有序资源分配法:R1的编号为1,R2的编号为2;  

PA:申请次序应是:R1,R2  

PB:申请次序应是:R1,R2  

这样就破坏了环路条件,避免了死锁的发生。

 

 

银行家算法:

  以银行借贷系统的分配策略为基础,判断并保证系统的安全运行,只分配给能够立即执行完并返还资源的进程。

  如下,分配资源给那些能够完成任务的进程,当任务完成后立即回收其所有资源(包括之前已分配的资源)

 

页式存储,是离散存储方式的一种,每页的大小是相同的。逻辑地址由页号+页内地址组成,物理地址由块号&块内地址组成。页的大小和块的大小是相同的,所谓的页内地址和块内地址其实就是相对本页或本块的偏移地址,与逻辑地址对应的物理地址,其偏移量也必须相同。

给出一个逻辑地址、页大小和页表,就可以计算出相对应的物理地址:根据页大小将逻辑地址分成页号和页内地址两部分(页大小其实就是页内地址的大小),然后查页表,根据页号查到对应的物理块号,再将物理块号&页内地址(等同于块内地址)即是对应的物理地址。

 

 

段式存储与页式存储的区别是,段式存储的段长是不固定的,它是按程序的结构来分段的。段内地址表示相对基址的偏移地址。

逻辑地址由段号&段内地址组成,物理地址由基址+段内地址组成。给出一个逻辑地址、段大小和段表,就可以计算出相对应的物理地址,计算过程与页式基本相同,但需要注意的是,通过段号找到基址后,基址本身是一个完整的地址,是直接加上段内地址得出物理地址,而不同于页式的拼接。

 

段页式存储,会增加一个快表,一般将其存储在调整存储器中,是按内容进行存取的。

逻辑地址分为三部分:段号、段内页号、页内地址,物理地址由块号&页内地址组成,先根据段号和段内页号找到对应的块号,再由块号&页内地址即是物理地址。

 

一般是13个索引结点,从0开始

 

 

 

 

 

注意图中,越下面的方式,效率越高。程序控制方式又叫程序查询方式,就是轮询方式;程序中断方式,当传输完毕后会主动发送一个中断通知;DMA方式有一个DMA控制器。

 

Spooling技术:开辟一个缓冲区进行排队 

 

 微内核是把用户态的部分从内核中剥离,只保留最为核心的部分作为微内核,这样用户态的部分出现问题不影响内核的稳定,可用于分布式系统。

 

嵌入式操作系统:

 

Flynn分类法: 注意MISD是不实际的。

 

先出现的是复杂指令集,那时候计算机都是定制的;精简指令集是发展通用CPU使用的。现在的x86体系使用cisc是历史遗留问题,表面上接受 cisc 指令,然后通过译码器转化成 risc,底层运行的都是 risc 指令。

 

 

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

你可能感兴趣的文章
找回使用Eclipse删除的文件
查看>>
盘点5款Ubuntu监控工具解决CPU暴增问题
查看>>
移动开发Html 5前端性能优化指南
查看>>
《系统架构师》——操作系统和硬件基础
查看>>
如何看待一本图书
查看>>
Linux 中如何通过命令行访问 Dropbox
查看>>
开发进度——4
查看>>
JS里验证信息
查看>>
Akka actor tell, ask 函数的实现
查看>>
windows10 chrome 调试 ios safari 方法
查看>>
Hello , Ruby!
查看>>
Netty 4.1.35.Final 发布,经典开源 Java 网络服务框架
查看>>
详解Microsoft.AspNetCore.CookiePolicy
查看>>
SCDPM2012 R2实战一:基于SQL 2008 R2集群的SCDPM2012 R2的安装
查看>>
SQL SERVER中字段类型与C#数据类型的对应关系
查看>>
Linux lsof命令详解
查看>>
SVG path
查看>>
js判断checkbox是否选中
查看>>
多系统盘挂载
查看>>
MySQL函数怎么加锁_MYSQL 函数调用导致自动生成共享锁问题
查看>>