文件系统的相关知识:*
文件分为两大类:有结构文件(即记录式文件),无结构文件(即流式文件)。 大量的数据结构和数据库采用有结构文件,大量的源程序,可执行程序,库函数等采用无结构文件 其长度以字节为单位,对流式文件的访问是利用读写指针来指出下一个要访问的字符。 有结构的文件分为定长和不定长两类: 定长又分为:定长记录 变长记录两种 变长记录文件根据文件组织方式的不同又分为: 顺序文件,索引文件,索引顺序文件

文件目录结构一般有一级目录结构、二级目录结构和多级目录结构。 一级目录结构的优点是简单,缺点是文件不能重名,限制了用户对文件的命名。 二级目录结构实现了文件从名字空间到外存地址空间的映射:用户名—>文件名à文件内容。其优点是有利于文件的管理、共享和保护;适用于 多用户系统;不同的用户可以命名相同文件名的文件,不会产生混淆,解决了命名冲突问题。缺点是不能对文件分类;当用文件较多时查找速度慢。 多级目录结构的优点是便于文件分类,可为每类文件建立一个子目录;查找速度快,因为每个目录下的文件数目较少;可以实现文件共享;缺点是比较复杂。

文件索引

为了提高文件的检索效率,可以采用索引方法组织文件。采用索引这种结构,逻辑上连续的文件可以存放在若干不连续的物理块中,但对于每个文件,在存储介质中除存储文件本身外,还要求系统另外建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。索引表也以文件的形式存储在存储介质中,索引表的物理地址则由文件说明信息项给出。

在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过了一个物理块,可以采用间接索引(多重索引),也就是在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。这样,如果一个物理块可装下n个物理块地址,则经过一级间接索引,可寻址的文件长度将变为n×n块。如果文件长度还大于n×n块,还可以进行类似的扩充,即二级间接索引。

不过,大多数文件不需要进行多重索引,也就是说,这些文件所占用的物理块的所有块号可以放在一个物理块内。如果对这些文件也采用多重索引,则显然会降低文件的存取速度。因此,在实际系统中,总是把索引表的头几项设计成直接寻址方式,也就是这几项所指的物理块中存放的是文件信息;而索引表的后几项设计成多重索引,也就是间接寻址方式。在文件较短时,就可利用直接寻址方式找到物理块号而节省存取时间。
索引结构既适用于顺序存取,也适用于随机存取,并且访问速度快,文件长度可以动态变化。索引结构的缺点是由于使用了索引表而增加了存储空间的开销。另外,在存取文件时需要至少访问存储器两次以上,其中,一次是访问索引表,另一次是根据索引表提供的

物理块号访问文件信息。由于文件在存储设备的访问速度较慢,因此,如果把索引表放在存储设备上,势必大大降低文件的存取速度。一种改进的方法是,当对某个文件进行操作之前,系统预先把索引表放入内存,这样,文件的存取就可直接在内存通过索引表确定物理地址块号,而访问存储设备的动作只需要一次。当文件被打开时,为提高访问速度将索引表读入内存,故又需要占用额外的内存空间。

索引结构指一个文件的信息存放在若干不连续的物理块中,系统为每个文件建立一个专用的数据结构——索引表,并将这些块的块号存放在索引表中。有点是保留了链接结构的优点,同时解决了其缺点,即能顺序存取,又能随机存取,满足了文件动态增长,插入删除的需求,也能充分利用外存空间。缺点是索引表本身带来的系统开销。

文件物理结构分类:

连续分配 链接分配 索引分配

链接分配的分类:

隐式链接分配 显式链接分配

记录式文件的逻辑结构:

[I]有结构文件:记录的长度可分为定长和不定长两类:定长记录:变长记录。根据用户和系统管理上的需要,可采用多种方式来组织这些记录,形成下述的几种文件:顺序文件;索引文件;索引顺序文件。

[2]无结构文件:流式文件,其长度以字节为单位
文件的逻辑结构有:连续结构、多重结构、转置结构、顺序结构

物理结构有:
连续文件、串联文件、索引文件

文件的目录结构主要有

(1)一级目录结构 (2)二级目录结构 (3)树形结构 (4)无环图

各种级别的安全管理

(1)系统级安全管理的主要任务是不允许未经授权的用户进入系统,从而也放置了他人非法使用系统中各类资源(包括文件)。系统级管理的主要措施有注册与登陆。

(2)用户级安全管理是通过对所有用户分类和对指定用户分配访问权。不同的用户对不同文件设置不同的存取权限来实现。例如,在Unix系统中将用户分为文件主、组用户和其他用户。有的系统将用户分为超级用户、系统操作员和一般用户。

(3)目录级安全管理是为了保护系统中各种目录而设计的,它与用户权限无关。为保证目录的安全规定只有系统核心才具有写目录的权利。

(4)文件级安全管理是通过系统管理员或文件主对文件属性的设置来控制用户对文件的访问。是有效权限和文件属性的交集。

管程 用户态核心态

管程中的过程是原语,是不能中断的

  1. 管程可以看做一个软件模块,它是将共享的变量和对于这些共享变量的操作封装起来,形成一个具有一定接口的功能模块,进程可以调用管程来实现进程级别的并发控制。
  2. 进程只能互斥得使用管程,即当一个进程使用管程时,另一个进程必须等待。当一个进程使用完管程后,它必须释放管程并唤醒等待管程的某一个进程。
  3. 在管程入口处的等待队列称为入口等待队列,由于进程会执行唤醒操作,因此可能有多个等待使用管程的队列,这样的队列称为紧急队列,它的优先级高于等待队列。

管程的特点

  1. 模块化。

管程是一个基本的软件模块,可以被单独编译。

  1. 抽象数据类型。

管程中封装了数据及对于数据的操作,这点有点像面向对象编程语言中的类。

  1. 信息隐藏。

管程外的进程或其他软件模块只能通过管程对外的接口来访问管程提供的操作,管程内部的实现细节对外界是透明的。

  1. 使用的互斥性。

任何一个时刻,管程只能由一个进程使用。进入管程时的互斥由编译器负责完成
内核态=核心态=系统态=管态,只能由内核态执行的指令是特权指令。如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;如果系统中有内核态线程,则操作系统可以按线程进行调度

特权指令:是指只能提供给操作系统的核心程序使用的指令,如启动I/O设备、设置时钟、控制中断屏蔽位、清主存、建立存储键,加载PSW等。也就是说,必须在管态下执行的指令,即特权指令。非特权指令:供应用程序使用的指令。

cpu工作状态分为系统态(或称管理态,管态)和用户态(或称目态)。 引入这两个工作状态的原因是:为了避免用户程序错误地使用特权指令,保护操作系统不被用户程序破坏。具体规定为:当cpu处于用户态时,不允许执行特权指令,当cpu处于系统态时,可执行包括特权指令在内的一切机器指令

用户级线程是指有关线程的所有管理工作都由用户态运行的线程库(如POSIX的pthread库)完成,系统内核并不知道线程的存在。应用程序可以根据需要,在同一个进程中创建线程,自己设计调度单位,调度指定线程运行。由于内核是单线程,仍以进程为单位进行调度。核心级线程(系统支持线程)是指有关线程的所有管理工作都是由系统内核完成的。
用户态切换到内核态的3种方式

a. 系统调用

这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。

b. 异常

当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。

c. 外围设备的中断

当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

这3种方式是系统在运行时由用户态转到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。

特权执行包括:

(1)有关对I/O设备使用的指令 如启动I/O设备指令、测试I/O设备工作状态和控制I/O设备动作的指令等。

(2)有关访问程序状态的指令 如对程序状态字(PSW)的指令等。

(3)存取特殊寄存器指令 如存取中断寄存器、时钟寄存器等指令

存取特殊寄存器指令,如存取中断寄存器、时钟寄存器等指令是特权指令;存取普通的寄存器是非特权指令,如C语言中有register(寄存器)变量,用户通过寄存器变量即可操纵普通寄存器的存取

有几种I/O控制方式?各有何特点?

答:I/O控制方式有四种:程序直接控制方式、中断控制方式、DMA方式和通道控制方式。

(1) 程序直接控制方式:优点是控制简单,不需要多少硬件支持。但CPU和外设只能串行工作,且CPU的大部分时间处于循环测试状态,使CPU的利用率大大降低,因此该方式只适用于那些CPU执行速度较慢且外设较少的系统。

(2) 中断处理方式:优点是能实现CPU与外设间的并行操作,CPU的利用率较程序直接控制方式大大提高。由于在一次数据传送过程中CPU通常以字节为单位进行干预,中断次数较多而耗去大量的CPU时间。

(3) DMA方式:与中断方式相比,DMA方式是在一批数据传送完成后中断CPU,从而大大减少CPU进行中断处理的次数,且DMA方式下的数据传送实在DMA控制下完成的。但DMA方式仍有一定的局限,如对外设的管理和某些操作仍由CPU控制,多个DMA控制器的使用也不经济。在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束4个步骤。

(4) 通道控制方式:CPU只需发出I/O指令,通道完成相应的I/O操作,并在操作结束时向CPU发出中断信号;同时一个通道还能控制多台外设。但是通道价格较高,从经济角度出发不宜过多使用。

小结

程序I/O控制方式:适用于结构简单,只需少量硬件的电路;

②中断驱动I/O控制方式:适用于高效场合;

③直接存储访问DMA I/O控制方式:适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合;

④I/O通道控制方式:适用于以字节为单位的干预,同时实现CPU,通道和I/O设备三者并行操作的场合。

----- 虽然DMA方式比起中断方式来已经显著地减少了CPU的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预。但CPU每发出一条I/O指令,也只能去读/写一个连续的数据块。而当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反时,则需由CPU分别发出多条I/O指令及进行多次中断处理才能完成。

通道的出现则进一步提高了CPU的效率.这是因为通道是一个特殊功能的处理器.它有自己的指令和程序专门负责数据输入输出的传输控制.而CPU将“传输控制”的功能下放给通道后只负责“数据处理”功能.

通道是独立于CPU的、专门负责数据共享以及传输工作的处理单元,它对外部设备实现统一管理,代替CPU对I/O操作进行控制,坚守I/O设备对CPU的中断次数,从而使I/O操作可以与CPU并行工作,通道是实现计算和传输并行的基础,以提高整个系统的效率。

通道,主要有主存储器读写通道和输入、输出通道。能接收处理机的命令,独立执行通道程序,协助处理机控制与管理外部设备。一个独立于CPU的专门I/O控制的处理机,控制设备与内存直接进行数据交换。它有自己的通道命令,可由CPU执行相应指令来启动通道,并在操作结束时向CPU发出中断信号。通道指令的格式一般由:操作码,记数段,内存地址段,结束标志组成。一个系统中可设立三种类型的通道:字节多路通道、数组多路通道、选择通道.

1、通道控制方式的引入 ---- 通道控制方式与DMA控制方式类似,也是一种以内存为中心,实现设备与内存直接交换数据的控制方式。 ---- 与DMA控制方式相比,通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。 ---- 通道本质上是一个简单的处理器,专门负责输入、输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作。 ---- 通道的指令系统比较简单,一般只有数据传送指令、设备控制指令等。 ---- I/O通道控制方式是对DMA控制方式的发展,它进一步使CPU参与到数据传输的控制减少,即把对一个数据块的读/写为单位的干预,减少为对一组数据块的读/写及有关的控制和管理为单位的干预。同时,又可实现CPU、通道和I/O设备的并行操作,从而更有效地提高整个系统的资源利用率。在通道控制方式中,CPU只需发出启动指令,指出要求通道执行的操作和使用的I/O设备,该指令就可以启动通道并使该通道从内存中调出相应的通道程序执行。 ---- 以数据输入为例:当用户进程需要数据时,CPU发出启动指令指明要执行的I/O操作、所使用的设备和通道。当对应通道接收到CPU发来的启动指令后,把存放在内存中的通道程序读出,并执行通道程序,控制设备将数据传送到内存中指定的区域。在设备进行输入的同时,CPU可以去做其他工作。当数据传送结束时,设备控制器向CPU发送一个中断请求。CPU收到中断请求后转中断处理程序执行,中断结束后返回被中断程序。

在操作系统中,引入缓冲的主要原因:

1、改善CPU与I/O设备间速度不匹配的矛盾

缓冲是为了解决速度相差过大的问题的。CPU不能对外存上的数据进行直接访问,必须先将外存上的数据调入内存。例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机.由于打印机的速度跟不上CPU,而使得CPU长时间的等待.如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出.这时,CPU不必等待,可以继续执行程序.实现了CPU与I/O设备之间的并行工作.事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾.众所周知,通常的程序都是时而计算,时而输出的.

2、可以减少对CPU的中断频率,放宽对中断响应时间的限制。
如果I/O操作每传送一个字节就要产生一次中断,那么设置了n个字节的缓冲区后,则可以等到缓冲区满才产生中断,这样中断次数就减少到1/n,而且中断响应的时间也可以相应的放宽

3、提高CPU和I/O设备之间的并行性
缓冲的引入可显著提高CPU和设备的并行操作程度,提高系统的吞吐量和设备的利用率

缓冲的实现

根据I/O控制方式,缓冲的实现方法有两种:一种是采用专用硬件缓冲器;一种是在内存划出一个具有n个单元的专用缓冲区,以便存放输入/输出的数据,内存缓冲区又称软件缓冲。

SPOOLing技术的特点: (1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾. (2)设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表. (3)实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

设备分配主要考虑以下几个因素:

1.设备的使用性质

2.设备的分配算法

3.设备的安全性

4.设备的独立性

设备分配方式有静态分配和动态分配两种
其中动态设备的分配算法主要有两种算法:先请求先服务、优先级高者优先

进程中的通信方式:

管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。速度慢,容量有限

有名管道:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信

消息队列:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少但是容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题。

信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段,但是不能传递复杂消息,只能用来同步

信号 : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了一块内存的

套接字:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

线程同步

互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。

事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

**虚拟内存 **

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存 (一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片, 还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易, 对真正的物理内存(例如RAM)的使用也更有效率。

**缺页中断 **
一个页(Page)是一个固定容量的内存区块,是物理内存和外部存储(如硬盘等) 传输的单位。当一个程序访问一个映射到地址空间却实际并未加载到物理内存的页(page)时, 硬件向软件发出的一次中断(或异常)就是一个缺页中断或叫页错误(page fault)。

抖动
在分页存储管理系统中,内存中只存放了那些经常使用的页面,而其它页面则存放在外存中,当进程运行需要的内容不在内存时,便启动磁盘读操作将所需内容调入内存,若内存中没有空闲物理块,还需要将内存中的某页面置换出去。也就是说,系统需要不断地在内外存之间交换信息。若在系统运行过程中,刚被淘汰出内存的页面,过后不久又要访问它,需要再次将其调入。而该页面调入内存后不久又再次被淘汰出内存,然后又要访问它。如此反复,使得系统把大部分时间用在了页面的调入/换出上,而几乎不能完成任何有效的工作,这种现象称为抖动。

**磁盘缓冲区 **
磁盘的缓冲区是硬盘与外部总线交换数据的场所。硬盘的读数据的过程是将磁信号转化为电信号后,通过缓冲区一次次地填充与清空,再填充,再清空,一步步按照PCI总线的周期送出,可见,缓冲区的作用是相当重要的。它的作用也是提高性能,但是它与缓存的不同之处在于:一、它是容量固定的硬件,而不像缓存是可以由操作系统在内存中动态分配的。二、它对性能的影响大大超过磁盘缓存对性能的影响,因为如果没有缓冲区,就会要求每传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘。磁盘缓冲区和磁盘缓存是两个概念,前者是主机的一部分,后者是磁盘的一部分。

分页与分段

分页系统中,CPU每次要存取一个数据,都要两次访问内存(访问页表、访问实际物理地址)。为提高地址变换速度,增设一个具有并行查询能力的特殊高速缓冲存储器,称为“联想存储器”或“快表”,存放当前访问的页表项。

分页式存储管理可能将连续的指令放置在不同的页中,会发生换页中断,而分段、段页都是逻辑分配空间,段长可变,逻辑上相对连续的指令放在同一段中,不会像分页那样频繁换页操作,因此在硬件和环境相同的条件下,一个作业在分页存储管理系统中运行的时间最长

(1)页式存储,你直接给一个逻辑地址就行,所以是一维的。

虽然这个逻辑地址包含(页号,偏移量),但是,分页那是系统自己完成的事,我们不知道也不用关心最终地址到底在哪个页上。

(2)段式存储,你必须给出(段号,偏移量),所以是二维的。

因为分段的好处就是程序模块化,不同的段权限不同,所以在哪个段上,是我们关心的。

常见的页面调度算法

(1)随机算法rand(Random Algorithm)。

利用软件或硬件的随机数发生器来确定主存储器中被替换的页面。这种算法最简单,而且容易实现。但是,这种算法完全没用利用主存储器中页面调度情况的历史信息,也没有反映程序的局部性,所以命中率较低。

(2)先进先出调度算法(FIFO)

先进先出调度算法根据页面进入内存的时间先后选择淘汰页面,本算法实现时需要将页面按进入内存的时间先后组成一个队列,每次调度队首页面予以淘汰。它的优点是比较容易实现,能够利用主存储器中页面调度情况的历史信息,但是,它没有反映程序的局部性,因为最先调入主存的页面,很可能也是经常要使用的页面。

(3)最近最少调度算法LFU(Least Frequently Used Algorithm )

先进先出调度算法没有考虑页面的使用情况,大多数情况下性能不佳。根据程序执行的局部性特点,程序一旦访问了某些代码和数据,则在一段时间内会经常访问他们,因此最近最少用调度在选择淘汰页面时会考虑页面最近的使用,总是选择在最近一段时间以来最少使用的页面予以淘汰。算法实现时需要为每个页面设置数据结构记录页面自上次访问以来所经历的时间。

(4)最近最不常用调度算法LRU(Least Recently Used Algorithm)

由于程序设计中经常使用循环结构,根据程序执行的局部性特点,可以设想在一段时间内经常被访问的代码和数据在将来也会经常被访问,显然这样的页面不应该被淘汰。最近最不常用调度算法总是根据一段时间内页面的访问次数来选择淘汰页面,每次淘汰访问次数最少的页面。算法实现时需要为每个页面设置计数器,记录访问次数。计数器由硬件或操作系统自动定时清零。

(5)最优替换算法OPT(Optimal replacement Algorithm)

前面介绍的几种页面调度算法主要是以主存储器中页面调度情况的历史信息为依据的,他假设将来主存储器中的页面调度情况与过去一段时间时间内主存储器中的页面调度情况是相同的。显然,这种假设不总是正确的。最好的算法应该是选择将来最久不被访问的页面作为被替换的页面,这种算法的命中率一定是最高的,它就是最有替换算法。要实现OPT算法,唯一的方法就是让程序先执行一遍,记录下实际的页地址流情况。根据这个页地址流才能找出当前要被替换的页面。显然,这样做是不现实的。因此,OPT算法只是一种理想化的算法,然而,它也是一种很有用的算法。实际上,经常把这种算法用来作为评价其它页面调度算法好坏的标准。在其它条件相同的情况下,哪一种页面调度算法的命中率与OPT算法最接近,那么,它就是一种比较好的页面替换算法

OS的四个特性:

井发性、共享性,虚拟性和异步性。

所谓异步性: 在多道程序环境下,允许多个进程并发执行。但由于资源等因素的限制,进程的执行通常并非一气呵成,而是以走走停停的方式运行。内存中的每个进程在何时执行,何时暂停,以怎样的速度向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。故而作业完成的先后次序与进入内存的次序并不完全一致,亦即进程是以异步方式运行的。所以异步性就是OS不确定性的原因,会导致 1. 程序的运行结果不确定 2. 程序的运行次序不确定 3. 程序多次运行的时间不确定

操作系统分类

实时系统 所谓“实时”,是表示“及时”,而实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。其应用需求主要在实时控制和实时信息处理。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。提供及时响应和高可靠性是实时操作系统主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

网络操作系统 通常运行在服务器上的操作系统,是基于计算机网络的,其目标是相互通信及资源共享。

分布式操作系统 是为分布计算系统配置的操作系统。大量的计算机通过网络被连结在一起,可以获得极高的运算能力及广泛的数据共享。分布式操作系统是网络操作系统的更高形式,它保持了网络操作系统的全部功能,而且还具有透明性、可靠性和高性能等。网络操作系统和分布式操作系统虽然都用于管理分布在不同地理位置的计算机,但最大的差别是:网络操作系统知道确切的网址,而分布式系统则不知道计算机的确切地址;分布式操作系统负责整个的资源分配,能很好地隐藏系统内部的实现细节,如对象的物理位置等。这些都是对用户透明的

分时系统 分时系统与多道批处理系统之间有着截然不同的性能差别,它能很好地将一台计算机提供给多个用户同时使用,提高计算机的利用率。分时系统是指,在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。
分时系统具有多路性、交互性、“独占”性和及时性的特征。多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性指,系统对用户提出的请求及时响应

多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。

交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。

“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。

及时性指,系统对用户提出的请求及时响应。

分时操作系统具有以下特征: | 实时操作系统基本特征:

1.多路性 | 1.及时性

2.交互性 | 2.可靠性

3.独占性 |

4.及时性 |

批处理操作系统,它的特点是:多道和成批处理。 分 时 操作系 统 (Time Sharing Operating System, 简 称 TSOS)

多道批处理 系统 在单道批处理系统中,内存中仅有一道作业,它无法充分利用系统中的所有资源,致使系统性能较差。批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行,这种采用批量处理作业技术的操作系统称为批处理操作系统。
多道:作业的调度由系统控制,并允许多道程序同时投入运行,吞吐量大

在多道批处理系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”。然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。

多道程序并发执行是指有的程序正在CPU上执行,而另一些程序正在I/O设备上进 行传输,即通过CPU操作与外设传输在时间上的重叠必须有中断和通道技术支持,其原因如下: 1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于CPU运行,因而做到了输入/输出操作与CPU并行工作。但早期CPU与通道的联络方法是由CPU向通 道发出询问指令来了解通道工作是否完成的。若未完成,则主机就循环询问直到通道工作结 束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。 2)在硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故 障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。 因此,通道技术和中断技术结合起来就可以实现CPU与I/O设备并行工作,即CPU启 动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工 作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出巧的 中断进行处理,处理完后再继续原来的工作。这样,就真正做到了 CPU与I/O设备并行工 作。此时,多道程序的概念才变为现实。

采用多道程序设计减少了CPU时间的浪费,增加了系统吞吐量,提高了系统的效率。多道程序并发执行是指有的程序正在CPU上执行,而另一些程序正在I/O设备上进行传输,即通过CPU操作与外设传输在时间上的重叠减少CPU时间的浪费,并提高了系统的效率。实现CPU操作与外设传输在时间上的重叠必须有中断和通道技术支持,其原因如下:

(1) 通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立与CPU运行,因而做到了输入输出操作与CPU并行工作。但早期CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。

(2) 在硬件上引入了中断技术。所谓中断,就是在输入输出结束时,或硬件发生某种故障时,由相应硬件(即中断机构)向CPU发出信号。这时CPU立即停下手头的工作而转向处理中断请求,道处理完中断后再继续原来手头的工作。 因此,通道技术和中断技术结合起来就可实现CPU与I/O设备并行工作,即CPU启动通道传输数据后便去执行其他程序的计算工作,而通道则进行输入输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后则继续原来的工作。这样,就真正做到了CPU与I/O设备并行工作。此时,多道程序的概念才变为现实

流水线阻塞的情况有三种:

  1. 结构相关:指令重叠执行的过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突,这时将产生结构相关。解决的办法是增加硬件资源,如解决访存冲突就采用指令Cache和数据Cache分离的哈弗结构。
  2. 数据相关:当一条指令需要前面某条指令的执行结果,而两者正在并行执行的情况下,将产生数据相关。解决方式:数据重定向,或称为旁路技术。
  3. 控制相关:有跳转语句、分支指令,或其他改变IP值的指令,将产生控制相关。解决方法:分支预测技术,投机执行,延迟分支。

空闲分区分配算法

1.首先适应算法:当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法简单,可以快速做出分配决定。

2.最佳适应算法:当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为“碎片”。

3.最坏适应算法:当接到内存申请时,查找分区说明表,找到能满足申请要求的最大的空闲区。该算法的优点是避免形成碎片,而缺点是分割了大的空闲区后,在遇到较大的程序申请内存时,无法满足的可能性较大。

首次适应算法总是顺序查找未分配表,直到找到第一个满足长度要求的空闲区,所以是按地址从小到大排列的;

最佳适应算法把空闲区按大小递增顺序排列,查找时总是从最小的一个区开始;

最坏适应算法是挑选一个最大的空闲区分割给作业使用,将空闲区按大小递减顺序排列,查找时总是从最大的一个区开始。

虚拟页式存储管理中的页面置换算法

1.理想页面置换算法(OPT):这是一种理想的算法,在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

2.先进先出页面置换算法(FIFO):选择最先进入内存的页面予以淘汰。

3.最近最久未使用算法(LRU):选择在最近一段时间内最久没有使用过的页,把它淘汰。

4.最少使用算法(LFU):选择到当前时间为止被访问次数最少的页转换。

磁盘调度

1.先来先服务(FCFS)

2.最短寻道时间优先(SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题

3.扫描算法(SCAN)或电梯调度算法:总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

4.循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的哪个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求。

大端模式和小端模式

所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

所谓小端模式(Little-endian), 是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内在的低地址中,这种存储模式将地址的高低和数据位 权有效结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致