知识总结(9):操作系统知识

操作系统:是控制和管理计算机的软、硬件资源,合理地组织计算机的工作流程,以及方便用户的程序集合

1 概述

计算机硬件框图

                     

  • 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
  • 存储器用来存放数据和程序。
  • 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。
  • 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标、扫描仪等。
  • 输出设备可将机器运算结果转换为人们熟悉的信息系统形式,如显示器输出、打印机输出等。

中断类别

说明                 

程序中断

由指令执行的结果产生,例如算术溢出、除数为0、执行非法的机器指令以及访问非法地址。

时钟中断

由处理机的计时器产生,允许操作系统以一定规律执行函数。

I/O中断

由I/O控制器产生,用于通知处理机一个操作的正常完成或出现了错误。

硬件故障中断 由诸如掉电或存储器奇偶错误之类的故障产生。

操作系统的功能

  • 存储管理
  • 进程管理
  • 设备管理
  • 文件管理
  • 用户接口
  任务 功能
进程管理

●对处理机的分配和运行实施有效管理。

●在多道程序环境下,处理机的分配和运行以进程为单位,

●因此对处理机的管理即对进程的管理。

进程控制

进程同步

进程通信

进程调度

存储管理

●方便用户使用内存

●提高内存的利用率

●从逻辑上扩充内存

内存分配

地址映射

内存保护

内存扩充

设备管理

●完成用户程序请求的I/O操作,为用户程序分配I/O设备

●提高外部设备的利用

●尽可能地提高输入/输出的速度

●方便用户使用外部设备

设备分配

设备控制

设备无关性

文件管理 ●大量的信息以文件的形式放在外存,对信息的管理也就是对文件的管理

文件存储空间的管理

目录管理

文件的读、写管理

文件的存取控制

2 进程管理

进程状态转换图

                                                  

五种状态的进程状态转                                                                          双挂起状态的进程状态转换图

进程的组成

  • 进程控制块PCB
  • 程序段
  • 数据段
  • 堆栈

PCB的作用:引入PCB的作用:就是使程序能成为独立运行的单位,并可和其他进程并发执行。

                                     

用户级线程与内核级线程

                                

调度与切换速度

用户级线程的切换,因发生在一个应用进程之间,因此不仅无须通过中断进入OS内核,而且切换的规则也比较简单。

用户级线程比内核级线程切换速度快

系统调用

用户级线程在调用系统调用时,系统将看成是其所在进程的行为。而内核级线程的系统调用是以线程为单位。因此比较轻装。

用户级线程不如内核级线程

线程执行时间

用户级线程不如内核级线程合理

3 进程同步与通信

  • 同步:指多个进程中发生的事件存在着某种时序关系,它们必须按规定时序执行,以共同完成一项任务 。
  • 互斥:多个进程不能同时使用同一资源。
  • 临界资源:某段时间内仅允许一个进程使用的资源。
  • 临界区:每个进程中访问临界资源的那段代码。

信号量和PV操作

struct  semaphore {
   int  value;
   struct  PCB  *queue;
} 

void  wait(semaphore  s)
{   s.value = s.value - 1;
    if  (s.value < 0)
       block(s.queue);  
       /* 将进程阻塞,并将其投入等待队列s.queue */
}
void  signal(semaphore  s)
{   s.value = s.value + 1;
    if  (s.value <= 0)
       wackup(s.queue);      
       /* 唤醒阻塞进程,将其从等待队列s.queue 取出,投入就绪队列*/
}

进程通信

4 调度与死锁

调度算法

  • 先来先服务调度算法
  • 短作业(进程)优先调度算法
  • 时间片轮转调度算法
  • 优先权调度算法
  • 多级反馈队列

产生死锁的四个必要条件

  • 互斥       :一个资源一次只允许一个进程访问
  • 请求保持:请求的资源未得到满足,就等待其他进程释放该资源。
  • 不可抢占:不能把别人的资源抢过来。
  • 循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

死锁的预防-------------------------------------------------------------------------------------------------------

    优点 缺点
互斥条件不可禁止      
去掉“请求保持条件” 采用预先静态分配方法
系统要求所有进程一次性地申请其所需的全部资源
方法简单 进程延迟运行
资源浪费
用户有时提不出他要使用的全部资源
去掉“不剥夺条件” 采用资源的有序分配
令所有资源排队,并赋予不同的序号。当进程请求资源时,必须严格按递增的次序提出,从而消除了环路。
  定好序号后,增加新设备类型受到限制。
尽管定序号时考虑大多数作业使用资源的顺序。但会发生使用顺序与规定顺序不一致的情况,造成资源浪费。
限制用户简单、自主地编程 。
去掉“循环“条件 占有某些资源的进程,当它有新的资源请求被拒绝时,该进程停止运行,并释放它所占有的资源。当它再次被执行时,重新申请资源。
如果一个进程请求另一个进程占有的资源,操作系统可以剥夺后者占有的资源,要求它释放资源并将资源分配给前者使用 
  该策略实现起来比较复杂,而且要付出很大代价。
反复申请、释放,使进程执行无限延迟,不仅延迟了周转时间。还增加了系统开销,降低了系统吞吐量。

死锁的避免-------------------------------------------------------------------------------------------------------

避免死锁是通过明智的选择,确保系统永远不会 到达死锁点 。即动态地决定是否分配资源给进程!

安全状态—与—不安全状态

  • 安全状态是指系统至少存在一个安全序列<P1, P2, …, Pn>,按照这个序列为进程分配资源,直到满足最大需求,每个进程都可顺序完成。
  • 若系统不存在这样一个安全序列,则系统处于不安全状态。

银行家算法就是利用了安全序列

预防和避免的区别:

  • 预防:破坏4个必要条件
  • 避免:不去执行会产生死锁的步骤

死锁的检测

  • 超时法:超过一定时间就判断为死锁
  • 事务等待图:如果等待图有环路就存在死锁

死锁的解除

剥夺资源

  • 从其它进程剥夺足够数量的资源给死锁进程。

撤消进程:撤消的原则是

  • 为解除死锁状态所需撤消的进程数目最小。
  • 撤消进程所付出的代价最小。

鸵鸟算法

对于死锁最简单的方法就是鸵鸟算法:把头埋在沙子里,假装什么也没有发生。

就是如果发生了死锁,就不管它,让它死锁,适用于很长一段时间才会发生死锁的情况(如五年发生一次)。

5 存储管理

程序的装入与链接

  • 编译:源代码——目标代码
  • 链接:目标代码+所需库函数=装入模块
  • 装入:将装入模块装入内存,该过程也叫做地址重定位,也称地址映射

地址空间:源程序经编译后得到的目标程序,存在于它所限定的地址范围内,此范围称地址空间。地址空间是逻辑地址的集合。

存储空间:指主存中一系列存储信息的物理单元的集合,这些单元的编号称为物理地址。存储空间是物理地址的集合。

程序的装入方式

重定位(地址映射):

  • 把用户程序中的相对地址(逻辑地址)转换为主存中的绝对地址(物理地址)过程。

静态重定位:

  • 编译时产生相对地址,装入程序确定要装入模块的地址,并在装入时进行重定位,程序运行中不允许在内存移动。

动态重定位:

  • 编译时产生相对地址,装入程序在把装入模块装入内存时,不立即把装入模块中的相对地址转换为绝对地址,而是推迟到程序要真正执行时才进行。

静态重定位示意图                                                                              动态重定位示意图

  

程序的链接方式

静态链接(对应静态连接库)

  • 对相对地址进行修改 变换外部调用符号

装入时动态链接

  • 在装入内存时,边装入边链接 便于软件版本的修改和更新 便于实现目标模块共享

运行时动态链接(对应动态连接库)

  • 运行时,用到哪个模块,再链接哪个模块,用不到的模块可不装入内存。

页式存储管理————————————————————————————————

                           

基本原理

  • 将进程的逻辑地址空间分成若干个大小相等的片,称为页面或页;
  • 内存空间分成与页大小相等的若干个存储块,称为物理块或页框。
  • 在为进程分配内存时,以块为单位,将进程中的若干页分别装入多个可以不相邻的块中。

页面大小的选择

页面的大小由机器的地址结构决定的。

页面的大小的权衡

  • 页面较小----内存碎片小;页表过长,占用较大内存空间。
  • 页面较大----页表短,占用较少内存;内存碎片大。
  • 通常页面的大小要适中,在512B~4MB之间。

页式存储管理逻辑地址结构

逻辑地址被分为两部分:

  1. 页号
  2. 页内位移

例如逻辑地址1500的二进制形式为0000 0101 1101 1100 由于页的大小为1024B,故页内位移占10位,剩下6位为页号

  • 逻辑地址1500对应的页号为1(二进制为0000 01)
  • 页内位移为476(二进制为01 1101 1100)

                      

页式存储管理地址变换机构

                         

快表:由于页表放在内存,使得CPU存取一个数据时,要两次访问内存,为了提高速度,增设快表(高速缓存)。

页表的组织

现代的计算机系统都支持大的逻辑地址空间,当地址空间较大(32位或64位)如32位时,若页面大小为4KB=212B,有页表项目220=1M,又因为每个页表项占4B,故每张页表要占用4MB内存。

对页表所需地址空间采用离散分配方式来解决:两级和多级页表。

将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入内存。

两级页表结构

                                                                                                                                

段式存储管理的基本原理————————————————————————————

                           

整个作业的地址空间被分成若干个段,每个段采用一段连续的地址空间,段的长度由相应的逻辑信息的长度决定。

段式存储管理地址变换机构

                                  

分页和分段的区别

分页和分段的目的

  • 页是信息的物理单位,分页是系统管理的需要,而不是用户的需要。
  • 段是信息的逻辑单位,它含一组意义完整的信息。分段是为了更好地满足用户的要求。

页和段长度

  • 页的大小固定,由系统确定。
  • 段的长度不固定,决定于用户所编写的程序。

地址空间

  • 分页的作业地址空间是一维的,即单一的线性地址空间。
  • 分段的作业地址空间是二维的,程序员在标识一个地址时,需给出段名和段内地址。

6 虚拟存储管理

请求页式存储管理的页面置换算法

最佳置换算法OPT 置换哪些不再使用,或最长时间不使用的页。
先进先出置换算法FIFO 新进入内存的页被先置换出去。
最近最久未使用置换算法LRU 用“过去”的行为预测将来,置换哪些“最近最久未使用”的页
CLOCK置换算法 为每页设一访问位,再将内存中的所有页面链接成一循环队列。

7 设备管理

中断处理过程

  • 检查CPU响应中断的条件是否满足。
  • 如果CPU响应中断,则须关中断,使CPU进入不可再次响应中断的状态。
  • 保存被中断进程的现场。
  • 分析中断原因。
  • 执行中断处理子程序。
  • 恢复被中断进程的现场。
  • 开中断  。

8 文件管理

9 Windows 2000/XP操作系统

特点:

  • 用户态与核心态
  • 微内核设计
  • 可移植性
  • 支持对称多处理机
  • 使用面向对象的程序设计概念

微内核与单内核

微内核的优点有:

  • 方便移植
  • 便于维护
  • 便于对内核裁剪

单(宏)内核

  • 单内核的好处是简单,便于理解和实现。
  • 单内核的缺点不利于移植和维护。

Linux的内核类型

Linux继承了Unix的风格,将整个操作系统看作一个大的程序,属于单内核的风格。

Linux在单内核设计的基础上加入了微内核的设计观念,形成了特有的模块机制。Linux被组织成一组相对独立的块,称作可加载模块(loadable module)。

Linux可加载模块有两个基本点重要特征:

  1. 动态链接
  2. 模块分层

进程的状态

                                 

挂起(等待,阻塞):进程在操作系统中可以定义为暂时被淘汰出内存的进程,机器的资源是有限的,在资源不足的情况下,操作系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态,系统在超过一定的时间没有任何动作。

  • 挂起:是主动的,不是因为资源不满足,而是暂时需要停止执行
  • 阻塞:市被动的,是因为资源不满足,暂时进入等待状态

进程与线程的创建与撤消

进程与线程的创建

  • fork()
  • vfork()
  • clone()

进程与线程的撤消

  • exit ()  

资料地址

课件下载地址:http://www.tup.com.cn/upload/books/kj/077944-01.rar 
课件密码:12146

课件下载地址:http://www.tup.com.cn/upload/books/kj/079983-01.zip 
课件密码:5109

课件下载地址:http://www.tup.com.cn/upload/books/kj/071984-01.rar 
课件密码:589

课件下载地址:http://www.tup.com.cn/upload/books/kj/072523-01.rar 
课件密码:50430

课件下载地址:http://www.tup.com.cn/upload/books/kj/074702-01.rar 
课件密码:1136

课件下载地址:http://www.tup.com.cn/upload/books/kj/070661-01.rar 
课件密码:10139

课件下载地址:http://www.tup.com.cn/upload/books/kj/070662-01.rar 
课件密码:1097

课件下载地址:http://www.tup.com.cn/upload/books/kj/071594-01.rar 
课件密码:9613

课件下载地址:http://www.tup.com.cn/upload/books/kj/069311-01.rar 
课件密码:835

课件下载地址:http://www.tup.com.cn/upload/books/kj/059357-01.rar 
课件密码:794

猜你喜欢

转载自blog.csdn.net/QQ2558030393/article/details/93197717