什么是操作系统?操作系统的功能?

1.操作系统是计算机资源的管理者

处理机管理(进程控制、进程同步、进程通信、死锁处理、处理机调度)

存储器管理(提高内存利用率,内存的分配与回收、地址映射、内存保护与共享、内存扩充)

文件管理(计算机中的信息都是以文件的形式存在的)

设备管理(完成用户的I/O请求,方便用户使用设备、并提高设备的利用率

2.操作系统为用户提供使用计算机硬件系统的接口

命令接口(用户通过控制台或终端输入操作命令,向系统提供各种服务要求)

程序接口(由 系统调用 组成,用户在程序中使用这些系统调用来请求操作系统为其提供服务)

图形接口 最常见的 图形用户界面GUI (最终还是通过调用程序接口实现的)

3.操作系统用作扩充机器

没有任何软件支持的计算机称为裸机,实际呈现在用户面前的计算机系统是经过若干层软件改造

的计算机。操作系统将裸机改造成功能更强、使用更方便的机器。我们将覆盖了软件的机器称为

扩充机器或虚拟机

操作系统的特征?

并发:两个或以上进程在同一时间间隔内发生,并发性是通过分时实现的。

共享:操作系统的资源科供内存中多个并发执行的进程共同使用。分为互斥共享方式、同时访问方式。

虚拟:把一个物理上的实体变成若干逻辑上对应物。

异步:多道程序环境中允许多个程序并发执行,但资源能有限,进程的执行并不是一贯到底,而是走走停停,以不可预知的速度前进。这可能会导致出现与时间相关的错误。

并发和共享之间的关系?

并发共享是操作系统两个最基本的特性,两者互为存在条件。

资源共享是以程序的并发为条件的,没有并发就没有共享;

如果系统不能对共享资源进行有效的管理,会影响并发的效率。

单道批处理系统和多道批处理系统

单道批处理系统对作业的处理是成批进行的,但是内存中始终保持一道作业

多道:1.同时存放多道相互独立的程序 2.宏观上并行 3.微观上串行
优点:资源利用率高,从而使各种资源得到充分利用,系统吞吐量大,cup和其他资源保持忙碌的状态。
缺点:不提供人机交互能力


 

原语的特点

1、都处于操作系统的底层,最接近硬件的地方。

2、有原子性,操作一气呵成;

3、运行时间短,调度频繁。

原语操作系统底层是一些可被调用的公用小程序,它们各自完成一个规定的操作

定义原语的直接方法是关闭中断,让它的所有动作不可分割地进行完再打开中断。

中断和异常的概念

1.中断的引入——为了支持CPU和设备之间的并行操作

中断也叫外中断,来自CPU指令以外的时间的发生,例如设备发出的IO结束中断,表示设备输入输出处理已经完成。中断的发生与当前指令无关。

2.异常的引入——表示CPU执行指令本身时出现的问题

异常也称内中断、例外或陷入,指源自CPU执行指令内部的事件,如程序的非法操作码、地址越 界、算术溢出、缺页异常等。对异常的处理一般要依赖与当前程序的运行现场,不能被屏蔽。

硬中断和软中断的区别:

硬中断是由硬件产生的。可以直接中断cpu。
软中断是由当前正在运行的进程产生的,不能中断cpu。

系统调用?

计算机系统的各种硬件资源是有限,为了更好的管理这些资源,进程是不允许直接操作的,所有

对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这

个入口就是操作系统提供的系统调用一般地,系统调用都是通过中断实现的,比如,linux下中

断号0x80就是进行系统调用的

大内核和微内核

大内核是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。

微内核是将操作系统主要功能留在核心态(如进程管理),其余模块运行在用户态。 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。

什么是管态 什么是目态,区分管态和态目的的什么

管态又叫特权态,cpu在管态下可以执行指令系统的所有指令,如果程序在管态下,可以访问计算机的所有资源,通常操作系统在管态下运行。
目态又叫常态,cpu在目态下只能执行非特权指令,不能直接使用系统资源。
应用程序有时会需要一些危险的、权限很高的指令,如果把这些权限放心地交给用户程序是很危险的(比如一个进程可能修改另一个进程的内存区,导致其不能运行),但是又不能完全不给这些权限。区分的目的是为了保护操作系统程序。

怎么从目态切换到管态?系统调用(用户态进程主动请求),异常(被动,比如缺页异常),IO中断(被动)。

进程是什么?与程序的区别?

程序:完成特定任务的一系列指令集合

         代码段+数据段

         -----放在磁盘中的程序

进程:进行就是正在进行中的程序

         1、用户角度: 进程是程序的一次动态执行过程

         2、操作系统: 进程是操作系统分配资源的基本单位,也是最小单位

进程和程序的区别

1) 程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

2)程序是静态的观念,进程是动态的观念;

3)进程具有并发性,而程序没有;

4)进程是竞争计算机资源的基本单位,程序不是。

5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序;

一个进程可以执行一个或几个程序 。

线程的定义是什么?

线程可以理解为轻量级的进程,它是基本的CPU执行单元。由线程id、程序计数器、寄存器集合、和堆栈组成。线程不独立拥有资源。

线程的两种实现方式

用户级线程中,线程的管理都在应用程序中进行,系统会提供一个多线程的函数库,系统感知不到用户定义的多线程的存在。

内核级线程:线程的管理都在操作系统中完成,用户只有一个到内核级线程的编程接口。

线程与进程的区别

1.进程(Process)是系统进行资源分配和调度的基本单位,线程(Thread)是CPU调度和分派的基本单位;

2.线程依赖于进程而存在,一个进程至少有一个线程;

3.进程有自己的独立地址空间,线程共享所属进程的地址空间;

4.进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),和其他线程共享本进程的相关资源如内存、I/Ocpu等;

5.在进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换只需保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,可见,进程切换的开销远大于线程切换的开销;

6.线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信(IPC)的方式进行;

7.多线程程序只要有一个线程崩溃,整个程序就崩溃了,但多进程程序中一个进程崩溃并不会对其它进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮

常见的进程通信方式

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

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

消息队列:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

共享存储:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

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

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

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

操作系统之进程通信:高级通信机制四大类

高级通信机制可归结为四大类:共享存储器系统、管道通信系统、消息传递系统以及客户机-服务器系统

共享存储器系统

共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程间能够通过这些空间进行通信

1、基于共享数据结构的通信方式这种通信方式仅适合传递相对较少的数据,通信效率低下,属于低级通信。

2、基于共享存储区的通信方式:属于高级的通信方式。

管道(pipe)通信系统

管道:指用于连接一个读进程和一个写进程,以实现它们之间通信的一个共享文件,又名pipe文件。

为了协调双方的通信,管道机制必须提供以下三方面的协调能力:互斥、同步、确定对方是否存在(确定存在才能通信)

消息传递系统

该机制,进程不必借助任何共享存储区或数据结构,而是以格式化的消息为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。该方式属于高级通信方式。

其实现方式有两种

直接通信方式:指发送进程利用OS所提供的发送原语,直接把消息发送给目的进程

间接通信方式:指发送和接收进程,都通过共享中间实体(邮箱)的方式进行消息的发送和接收,完成进程间的通信。

客户机-服务器系统

该机制是网络环境的各种应用领域当前主流的通信实现机制,主要实现放肆有:套接字远程过程调用远程方法调用

套接字

套接字的优势在于,不仅使用与一台计算机内部的进程通信,也适用于网络环境中不同计算机间的进程通信。并且每个套接字拥有唯一的套接字号,确保了通信双方之间逻辑链路的唯一性。

远程过程调用和远程方法调用:

远程过程(函数)调用 RPC:是一个通信协议,用于通过网络连接的系统。该协议允许运行于一台主机(本地)系统上的进程调用另一台主机(远程)系统上的进程(例如在公司,远程调用关闭家里的空调),而对程序员表现为常规的过程调用,无需额外地为此编程。如果涉及的软件采用面向对象编程,那么远程过程调用也可称作远程方法调用。

进程的调度算法有哪些?

1、先来先服务。有利于CPU繁忙作业,不利于IO繁忙作业。有利于长作业,不利于短作业。

2、短作业优先。不利于长作业,未考虑作业的紧迫程度;平均等待时间和平均周转时间最少。

3、优先级调度算法。可以设置紧迫程度、参照以下原则设计:系统进程大于用户进程、交互进程大于非交互进程、IO进程大于计算进程。

4、高响应比优先算法。克服饥饿,兼顾了场作业。

5、时间片轮转。用于分时系统,需要选择合适大小的时间片。

6、多级反馈队列调度算法。优点如下:终端型作业,短作业优先;短批处理作业,周转时间短;长批处理作业,经过前几个队列得到部分执行,不会长期不执行。

会产生饥饿的进程调度算法?

短作业优先优先级调度算法多级反馈队列调度算法

为什么要进行处理机调度

如果没有处理机调度,意味着当前进程运行完之后,下一个进程才能执行,进程运行的时候通常会等待IO设备,就造成了出来及资源的浪费。有了处理机调度,可以在IO等待的时候,让处理机处理其它的就绪进程,提高了系统效率

不能进行进程调度与切换的情况

1、处理中断的过程中;2、进程在操作系统内核临界区;3、其它完全需要屏蔽中断的原子操作过程中。

处理机的三级调度

作业调度(高级调度)、内存调度(中级调度)、进程调度(低级调度)。

高级调度:把作业从外存中取出,给它分配内存和其它资源,让它称为一个进程,是其能具备竞争处理机的条件。它是主存和辅存之间的调度。一个作业只调入一次调出一次。

中级调度作用是提高内存利用率和系统吞吐量。将那些不能运行的进程挂起到外存,如果他们已经具备运行条件,有稍微有些空闲,由中级调度决定外存上的进程重新调入内存,并修改为就绪态。

进程调度:是操作系统最基本的调度。按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。调度频率非常高。

三者的关系①作业调度为进程活动做准备,进程调度使进程被执行,中级调度将不能运行的进程挂起,将具备条件的进程设置就绪。②作业调度、内存调度、进程调度频率递增;③进程调度使最基本的不能缺少。

同步和互斥?临界资源和临界区?

1.同步 多个进程因为合作而使得进程的执行有一定的先后顺序。比如某个进程需要另一个进程提供的消息,获得消息之前进入阻塞态;

2.互斥 多个进程在同一时刻只有一个进程能进入临界区

3.临界资源:每次只允许一个进程访问的资源称为临界资源。

4.临界区:访问临界资源的那段代码称为临界区

在生产者消费者问题中,实现互斥的p操作一定要在实现同步的p操作之后

v操作不会导致进程阻塞,因此两个v操作顺序可以交换

同步机制的4个准则

1.空闲让进 :当无进程处于临界区,可允许一个请求进入临界区的进程立即进入自己的临界区

2.忙则等待 :当已有进程进入自己的临界区,所有企图进入临界区的进程必须等待

3.有限等待 :对要求访问临界资源的进程,应保证该进程能在有限时间内进入自己的临界区

4.让权等待 :当进程不能进入自己的临界区,应释放处理机

实现临界区互斥的基本方法

单标志法、双标志先检查、双标志后检查、皮特森算法。硬件方法。信号量法。

关于互斥与同步的几个问题,以及如何解决

生产者消费者问题(互斥问题)   用管程的方法解决生产者消费者问题

读者-写者问题(同步问题)

抽烟者-供应者问题

哲学家进餐问题

死锁

1.死锁的定义

是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力

作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等

待的进程称为死锁进程。

2.死锁原因: 

① 系统资源不足(对不可剥夺资源的竞争)

② 进程推进顺序不当(P1拥有A申请BP2拥有B申请A

3.产生死锁的必要条件: 

① 互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占

用。

② 请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其

它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

③ 不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释

④ 环路等待条件:指在发生死锁时,必然存在一个进程资源的环形链。

4.处理死锁的基本方法:

① 预防死锁:这是一种较简单和直观的事先预防的方法。方法是通过设置某些限制条件,去破坏

产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一种较易实现的方

法,已被广泛使用。但是由于所施加的限制条件往往太严格,可能会导致系统资源利用率和系统

吞吐量降低。

② 避免死锁:该方法同样是属于事先预防的策略,但它并不须事先采取各种限制措施去破坏产生

死锁的的四个必要条件,而是在资源的动态分配过程中,用 某种方法去防止系统进入不安全状

态,从而避免发生死锁。

③ 检测死锁:这种方法并不须事先采取任何限制性措施,也不必检查系统是否已经进入不安全

区,此方法允许系统在运行过程中发生死锁。但可通过系统所设置的检测机构,及时地检测出死

锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死

锁清除掉。

④ 解除死锁:是与检测死锁相配套的一种措施。当检测到系统中已发生死锁时,须将进程从死

锁状态中解脱出来。常用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源

分配给已处于阻塞状态的进程,使之转为就绪状态,以继续运行。

什么是饥饿?与死锁有什么差别?活锁?

饥饿:当线程需要某些资源比如CPU,却始终得不到 

饥饿并不代表系统已经死锁,但至少有一个程序的执行被无限期地推迟。

差别:

① 进入饥饿的进程可以只有一个,但是死锁必须大于等于两个;

② 出于饥饿状态的进程可以是一个就绪进程,但是死锁状态的进程必定是阻塞进程。

活锁:是指线程1可以使用资源,但它很礼貌,让其他线程先使用资源,线程2也可以使用资源,但它很绅士,也让其他线程先使用资源。这样你让我,我让你,最后两个线程都无法使用资源。

描述银行家算法

主要思想是避免系统进入不安全状态,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先试行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则拒绝分配上述资源。这样就保证系统始终处于安全状态,从而避免死锁现象的发生

存储器管理应具有的功能?

存储管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的

利用率以及从逻辑上扩充存储器,故应具有以下功能:

① 内存的分配和回收:实施内存的分配,回收系统或用户释放的内存空间。

② 地址变换:提供地址变换功能,将逻辑地址转换成物理地址。

③ 扩充内存:借助于虚拟存储技术活其他自动覆盖技术,为用户提供比内存空间大的地址空间,从逻辑上扩充内存。

④ 存储保护:保证进入内存的各道作业都在自己的存储空间内运行,互不干扰。

将用户程序变为可在内存中执行的程序的步骤?

1.编译:由编译程序将用户源代码编译成若干目标模块

2.链接:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。

3.装入:由装入程序将装入模块装入内存中运行。 

程序的链接方式有哪些?

静态链接:在程序运行之前,先把各个目标模块及所需库链接为一个完整的可执行程序,以后

不再拆开。

② 装入时动态链接:将应用程序编译后所得到的一组目标模块在装入内存时采用边装入边链接的

链接方式。

③ 运行时动态链接:知道程序运行过程中需要一些模块时,才对这些模块进行链接。

程序的装入方式有哪些?

① 绝对装入在编译时就知道程序将要驻留在内存的物理地址,编译程序产生含有物理地址的目标代码,不适合多道程序设计。

② 可重定位装入:根据内存当前情况,将装入模块装入到内存的适当位置,地址变换通常在装入时一次完成,之后不再改变,也称静态重定位。当操作系统为程序分配一个以某地址为起始地址的连续 主存区域后,重定位时将程序中指令或操作数的逻辑地址加上这个起始地址就得到了物理地址。

③ 动态运行装入:允许程序运行时在内存中移动位置,把装入模块装入到内存后的所有地址都是相对地址,在程序执行过程中每当访问到相应指令或数据时,才将要 访问的程序或数据的相对地址转换为物理地址。动态重定位的实现要依靠硬件地址变换机构。

内存连续分配方式有哪些?

单一连续分配:将内存分成系统区和用户区。

优点:简单、无外部碎片;缺点:适用于单道程序,有内部碎片,内存利用率非常低。

固定分区分配:将内存空间划分成大小固定的分区,每个分区只装入一个作业。分区大小可以相等也可以不等。

优点:可以多道程序;缺点是:分区固定不变,程序不能太大,否则放不进去,有内部碎片;内存利用率低。

动态分区分配:不预先划分分区,而是等程序装入内存时再划分。

优点是:可以使分区大小刚好合适。缺点是:会产生较小的外部碎片分配不出去。

动态分区有哪些策略?首次适应算法、最佳适应、最坏适应、邻近适应算法

分段和分页的区别?

页是信息的物理单位分页是为了实现离散分配方式,以减少内存的外零头,提高内存的利用率。分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。段的目的是为了能更好的满足用户的需要。

      分段会有外部碎片,分页会有内部碎片。

  页的大小固定且由系统确定,把逻辑地址分为页号和页内地址两部分,由机器硬件实现的。因此一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编写程序在对源代码进行编辑时,根据信息的性质来划分。

  分页的作业地址空间是一维的,即单一的线性空间。

  分段的作业地址空间是二维的,程序员在标识一个地址时,既需要给出段名,又需要给出段内地址。

页面置换算法有哪些?

1.最佳(OPT)置换算法

2.先进先出(FIFO)置换算法

3.最近最久未使用(LRU)算法

4.时钟(CLOCK)置换算法

什么是页表和快表,有什么作用?

页表指出逻辑地址中的页号与所占主存块号对应关系

作用:页式存储管理在用动态重定位方式装入作业时,要利用页表做地址转换工作

快表就是存放在高速缓冲存储器的部分页表。它起页表相同的作用。由于采用页表做地址转换,读写内存数据时CPU要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度

Windows下的内存是如何管理的

1.虚拟内存:最适合用来管理大型对象或者结构数组

2.内存映射文件:最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据

3.内存堆栈:最适合用来管理大量的小对象

虚拟存储器的定义和特性

定义:基于局部性原理,只需要把程序的一部分装入内存就可运行起来。在执行过程中,程序要访问的信息不在内存,由操作系统将所需的部分调入内存执行。操作系统将暂时不用的内容换出到外存上,空闲空间存放从外存换入的信息。这样操作系统就好像为用户提供了一个比实际内存大得多的存储器。

特性:多次性、对换性、虚拟性

虚拟内存技术的实现需要的硬件支持

1、一定容量的内存和外存 ;

2、页表机制;

3、中断机构,产生中断;

4、地址变换机构

为什么引入动态重定位,如何实现?

动态重定位:实现逻辑地址和物理地址之间的转换。
具体方法是加入一个重定位寄存器,用来装入程序在内存中的起始地址。

什么是物理内存?什么是虚拟内存?

物理内存(内存条):当打开程序时,系统会自动的加载到物理内存上。

虚拟内存(硬盘):虚拟内存是代替物理内存行驶存储的功能,但无法代替物理内存行驶加载程序的功能。

关系:当运行程序过多时,物理内存不够时,系统会将一部分的硬盘空间当内存使用,这就变成了虚拟内存。

常用的存储保护方法

(1)界限寄存器 上下界寄存器方法 基址、限长寄存器方法

(2)存储保护键:给每个存储块分配一个单独的存储键,它相当于一把锁

什么叫拼接技术?

在分区管理方式下,系统运行一段时间后,内存中会出现相当一部分的碎片,拼接技术是解决碎片问题的 方法。 即将存储器中所有已分配分区移动到主存的一端,使本来分散的多个小空闲区连成一个大的空闲区,这种 通过移动把多个分散的小分区拼接成一个大分区的方法即为拼接技术。

什么是局部性原理? 什么是虚拟存储器?

(1) 时间局部性:如果程序的某条指令一旦执行,不久后可能再次执行,如果数据被访问过,不久后可能该数据再次被访问,原因是由于程序中存在大量的循环操作;

(2)空间局部性:一旦程序访问了某个存储单元,不久之后其附近的存储单元也会被访问,原因是指令通常是顺序存放的,顺序执行的。

(3)虚拟存储器是指具有调入和置换的功能,能从逻辑上对内存的容量加以扩充的一种存储器系统。基于局部性原理,在程序装入时,可以只将程序的一部分装入内存,就可以启动程序。在执行过程中,当所访问得信息不再内存时,由操作系统将所需的内容调入内存,使程序继续执行。

文件逻辑结构和文件物理结构有何区别?

文件逻辑结构是从用户观点出发看到的文件的组织形式,就是说在文件的内部,数据逻辑是如何组织起来的。

文件物理结构是指文件在外存上的存储组织形式

按照逻辑结构,文件可划分为哪两种?

按照逻辑结构,文件可划分为无结构文件有结构文件

有结构文件又可分为顺序文件、索引文件、索引顺序文件。

顺序文件有顺序存储和链式存储两种方式,顺序存储可直接访问,链式存储不可直接访问但是易扩展(这里可回忆一下数据结构顺序表和链表知识)。

索引文件,即建立一个索引表。文件的每条记录对应一个索引项。索引表本身就是一个顺序文件,支持直接访问。

索引顺序文件同样会建立一个索引表,不同的是,文件的一组记录对应一个索引项。

文件目录结构指的是什么,由什么组成?

文件目录结构指多个文件之间在逻辑上是如何组织的。文件目录结构由文件控制块(FCB)组成,一个FCB就是一个文件目录项。FCB包括文件的基本信息和存取控制信息、使用信息等。

有些系统将文件描述信息和文件名分开。文件描述信息单独形成一个称为索引节点的数据结构。因此文件目录项中只包含了文件名和索引节点指针,使文件目录项长度大幅减小,磁盘空间能放更多的目录项。

文件目录结构有哪些?

文件目录结构有单级目录结构两级目录结构树级目录结构无环图目录结构

在树级目录结构中,从根目录出发的是绝对路径,从当前目录出发的是相对路径。无环图目录结构方便的实现了文件共享。(在共享结点处设置一个count,增加共享时,count+1,删除结点时,count-1)

目前采用的广泛的文件目录结构是哪种?

多级目录结构(树型目录结构):
优点:(1)能有效的提高对目录的检索速度
(2)允许文件重名
(3)便于实现文件共享

文件共享的方式?

硬链接软链接方式

硬链接指文件的索引指针指向索引节点,即用户目录项链接到共享文件上。

软链接是指,只有文件的拥有者才索引节点指针指向索引节点。而共享该文件的其他用户只有该文件的路径名,并不拥有指向其索引节点的指针。

硬链接的查找速度比软链接快。

文件分配方式有哪几种?

连续分配。即要求每个文件在磁盘上占有一组连续的块。

链接分配。(显式链接和隐式链接)隐式链接可理解为链表,中间的指针对用户透明。显示链接把链接指针显示地存放在一张表中,称为文件分配表FAT。(注意:一个磁盘仅设置一张FAT,开机时将FAT读入内存,并常驻内存)

索引分配。系统会为每个文件建立一张索引表索,索引表记录了文件各个逻辑块对应的物理块。如果文件太大导致索引表太长。可以采取链接方案、多层索引和混合索引的方式。

文件存储空间的管理有哪些?

1.空闲表法(把空闲块组织成表)

2空闲链表法(把空闲块组织成链表)

3.位示图法(利用二进制的每位记录空闲块)

4.成组链接(空闲表和空闲链表相结合的方法)

 磁盘调度算法有哪些?

先来先服务算法,最简单最公平,少量请求性能好,大量请求接近随机调度。

最短寻找时间优先:比先来先服务性能好,但会饥饿

扫描算法:性能好,避免了饥饿,但对远离磁头的一端不公平

循环扫描:消除了两段请求的不公平。

I/O控制方式有哪些?

1.程序 I/O 方式 

早期的计算机系统中, 没有中断系统,所以CPUI/O设备进行通信,传输数据时CPU速度远快于I/O设备,于是CPU需要不断测试I/O设备,看其是否完成了传输。

2.中断驱动方式

当某进程要启动某个 I/O 设备工作时,便由 CPU 向相应的设备控制器发出一条 I/O 命令,然后立即返回继续执行原来的任务。仅当输完一个数据时,才需 CPU 花费极短的时间去做些中断处理。

3.DMA方式(直接存储器访问) 

通过在I/O设备内存之间开启一个可以直接传输数据的通路,采用DMA控制器来控制一个数据块

的传输,CPU只需在一个数据块传输开始阶段设置好传输所需的控制信息,并在传输结束阶段做进一步处理。

4.I/O通道控制方式

通道本质上是一个简单的处理器,专门负责输入、输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作。 通道的指令系统比较简单,一般只有数据传送指令、设备控制指令等

描述spooling技术和特点假脱机技术

为了缓和CPU的高速性和IO设备的低速性矛盾,引入了脱机输入输出技术。该技术利用专门的外围控制机,将低速IO设备的数据传送到高速磁盘上或者相反。

利用这种技术可把独占设备转变成共享的虚拟设备,从而提高独占设备的利用率和进程的推进速度。

特点:提高了IO的速度,将独占设备改造成共享设备,实现了虚拟设备的功能

spooling的结构

输入井和输出井、输入缓冲区和输出缓冲区、输入进程和输出进程。

补充:

为什么引入多道程序技术?

因为引入多道程序技术后,可以进一步提高了CPU 利用率(阻塞),提高内存和I/0设备利用率(小作业把内存浪费了),增加系统吞吐量(两都提高后的必然)。

父子进程是否可以并发运行

可以,父进程创建子进程后,子进程也成为了一个可以独立运行的单位

虽然子进程继承了父进程的全部资源,但是只要两个进程创建的程序和数据没有冲突,则它们可以并发运行。

为什么引入缓冲

  1. 可以协调CPU 与I/0设备之间速度不匹配的矛盾;
  2. 可以减少对CPU的中断频率;
  3. 提高设备的利用率。

(总的来说,提高CPU利用率,提高并行度)。

抖动是什么?工作集是什么?

抖动:刚换出的块又被换出到外存中。主要因为频繁访问的页面数高于可用的物理页数目。

工作集:某段时间间隔内,程序要访问的页面集合

什么是Belady异常?

在页面置换算法中,仅先来先服务置换算法会发生Belady异常,指的是,分配更多的物理块时,缺页次数不减小反而增大的异常情况。

覆盖与交换的区别。

覆盖技术用于同一个程序或者进程中,交换技术用于不同进程或者作业之间进行。

覆盖思想是,将内存分为一个固定区若干个覆盖区,将需要常驻内存的短放在固定区,而不常用的段放在覆盖区。在需要调用时,将外存中的段调入覆盖区,覆盖原有的段。覆盖技术的缺点是,对用户和程序员不透明,该技术已经逐渐淘汰。

交换技术是指,内存空间紧张时,系统将某些进程暂时换出内存,并把外存中已经具备运行条件的进程换入内存。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐