操作系统复习摘要。。。

进程:本质上是正在执行的程序,与每个进程相关的是进程的地址空间。进程基本上容纳运行一个程序所需要所有信息的容器。

 

在一个进程被挂起之后,所有的指针都必须保存起来,这样进程重新启动后,所执行的读调用才能读到正确的数据。

 

进程表:存放于一个进程相关的所有信息,是一个数组或者链表结构,当前存在的进程都要占用其中的一项。

 

 

文件:

目录,层次目录——文件系统

特殊文件:

1.块特殊文件:可随机存取的块组成的设备,如磁盘。

2.字符特殊文件:用于打印机、调制解调器和其他接收或输出字符流的设备。

 

fork() 创建一个原有进程的精确副本,包括所有的文件描述符,寄存器等全部内容。

进程的存储空间

1.正文段(程序代码)

2.数据段(变量)

3.堆栈段

 

 

link 利用某个已有文件的i-节点编号,创建一个新的目录项,从而指向同一个文件。

mount 允许将两个文件系统合并为一个。

进程

某个瞬间,cpu 只能运行一个进程,多处理器系统可以实现真正的硬件并行 。

 

一个进程就是一个正在执行的程序的实例,包括程序计数器,寄存器和变量的当前值。

 

多道程序设计,单个处理器被多个进程共享CPU,处理器通过调度算法决定何时停止一个进程的工作,并转向执行另外一个进程。

 

进程的三种状态

1.就绪(可运行,但因其他进程正在运行需要暂时停止)

2.运行(进程实际占用CPU)

3.阻塞(除非某种外部事件发生,否则进程不能运行)

 

为了实现进程模型,操作系统维护着一张表格(一个结构数组),即进程表。每个进程占用着一个进程表项(进程控制块)

进程等待I/O操作的时间与其停留在内存的时间比为p。

当内存中有n个进程的时候,则有n个进程都在等待 I/O的概率为,CPU利用率为

CPU利用率=。

n称为多道程序设计的道数

 

线程

每个进程有一个地址空间和一个控制线程。

同一个地址空间可以存在多个线程,这些线程共享地址空间

 

多进程模型:具有不同的地址空间

多线程模型:具有相同的地址空间

 

多线程:并行实体共享同一个地址空间和所有可用数据的能力

线程是轻量级的进程,比进程更容易创建和更容易撤销。

 

进程是把资源集中在一起,线程是CPU上被调度执行的实体。进程中不同线程不像不同进程之间那样存在很大的独立性。所有线程有完全一样的地址空间,共享同样的全局变量。

 

线程表:跟踪该进程中的线程。记录线程的属性,包括线程的程序计数器、堆栈指针、寄存器和状态。

 

进程间的通信IPC (InterProcess Communication)

在一些操作系统中,协作的进程可能共享一些彼此都能读些的公共存储区域。

两个或多个进程读取某些共享数据,而最后的结果取决于进程运行的精确时序成为竞争条件。

 

互斥:确保当一个进程在使用一个共享变量或文件时,其他进程不允许做同样的操作。

 

共享内存进行访问的程序片段称为临界区域临界区

 

信号量

一个信号量的取值可以为0(表示没有保存下来的唤醒操作)或者正直(表示一个或多个唤醒操作)

 

Down 和up 操作(sleep 和wakeup)

 

原子操作:一组相关联的操作要么都不间断的执行,要么都不执行。

供两个或多个进程使用的信号量,初始值为1, 保证同时只有一个进程可以进入临界区,称作二元信号量。

 

互斥信号量

同步信号量

 

 

死锁

一个进程集合中的每个进程都等到只能由进程集合中的其他进程才能引发的事件,改进程集合就是死锁


l  死锁形成的条件

1.   互斥条件

2.   占有和等待条件

3.   不可抢占条件

4.   环路等待条件

四个条件必须同时满足,才会发生死锁。

 

l  进程调度算法

批处理系统

1.   先来先服务

2.   最短作业优先

3.   最短剩余时间优先

 

交互式系统

1.   轮转调度

2.   优先级调度

3.   多级队列

4.   最短进程优先

5.   保证调度

6.   彩票调度

7.   公平分享调度

 

存储管理

1.   由程序产生的地址是虚拟地址,他们构成了虚拟地址空间

2.   虚拟地址不是被直接发送到内存总线上的,而是被发送到内存管理单元MMU,MMU将虚拟地址映射为物理内存地址

3.    虚拟地址空间按照固定大小划分的单元叫做页面,物理内存对应的单元叫做页框,页面和页框的大小通常是一样的

4.    虚拟地址被分为虚拟页号(高位部分)和偏移量(低位部分)两部分

 

从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进程执行的是操作系统指令。  

       区分特权指令的原因:避免用户使用而使系统陷于混乱; 方便用户,不必了解硬件细节。

       特权指令:只能由操作系统内核部分使用,不允许用户直接使用的指令。如,I/O指令、置终端屏蔽指令、清内存、建存储保护、设置时钟指令。

       非特权指令:所有程序均可直接使用。

       引入系统态和核心态的原因:

       系统态(核心态、特态、管态):执行全部指令。

       用户态(常态、目态):执行非特权指令。

 

3.工作机理(按图1 来阐述)

   3.1 当执行到某一条指令(逻辑地址)时,检查该指令所在页表中的标志位(一共16页,所以有16个表项)

   3.2 若为1,即将图中的页表号放到寄存器的高3位,将逻辑地址的低12为放到寄存器的低十二位,然后将寄存器的内容作为物理地址送到内存总线。

   3.3 若为0,引起缺页中断,转到操作系统核心态。核心态根据页面淘汰算法淘汰掉一个页框,然后在页表处理映射关系,将标志位置位。然后转回

用户态,程序从3.1从新开始,此时标志位已经为1,所以能成功执行。




posted @ 2012-09-24 17:13  Leeforall  阅读(208)  评论(0)    收藏  举报