考研复试常见问题(操作系统)

操作系统的作用有哪些?

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

        处理机管理

        内存管理

         文件管理

        设备管理

    2、操作系统提供了使用计算机硬件系统的接口

        命令接口

        图形接口

        程序接口

    3、操作系统扩充了计算机

        使得计算机不仅有硬件,还有软件的支持,操作更加方便,功能更加强大

 

内核是什么?

        内核是计算机底层软件,是计算机功能的延伸,内核程序可以管理用户程序,可以执行一些特权指令,包括以下四个方面:

        1、时钟管理。用于对计算机的各个部件进行同步,向用户提供标准的系统时间。

        2、中断机制。使得CPU与I/O程序可以并行执行,提高了CPU的运行效率

        3、原语。原语属于计算机底层可以被调用的公用功能部件,他们各自完成一个操作。

        4、系统控制的数据结构及处理。系统中的数据结构比较多,例如进程控制块、作业控制块、设备控制块等。系统需要一些基本操作来管理这些数据结构,例如进程管理、设备管理、内存管理等。

 

中断与异常

        中断也叫外中断,是指CPU执行指令以外发生的事件,例如I/O请求。异常也叫内中断,是CPU执行指令期间发生的事件,内中断不能被屏蔽,一旦出现需要立即处理,例如算数溢出、地址越界等。

        中断执行的过程:关中断、保存断点、引出中断服务程序、保存现场及屏蔽字、开中断、执行中断服务程序、关中断、恢复现场和屏蔽字、开中断和中断返回其中前三项是由中断隐指令完成的,后面的是由中断服务程序完成的。 

 

进程与线程的区别:

        1、进程是拥有系统进行资源分配与调度的基本单位,线程是CPU调度和分配的基本单位

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

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

        4、进程拥有独立的系统资源,而线程一般不拥有资源,而是共享使用所属进程的资源

        5、线程之间可以通过共享资源来进行通信,而进程通信需要以其他方式来进行

        6、一个线程崩溃时,进程也随之崩溃了。但在多进程程序中,一个进程崩溃不影响其他进程

 

进程与程序的区别:

        1、进程是程序在数据集上的一次执行,是一个动态的过程,是暂时的。而程序是静态的、永恒的

        2、进程具有并发性,而程序没有

        3、一个进程只能属于一个程序,但一个程序可以拥有多个进程。

        4、进程可以拥有系统资源,但程序没有

 

进程的特性与状态:

        进程具有动态性、并发性、结构性、独立性、异步性

        进程的状态有:运行、就绪、阻塞、创建、结束。且阻塞态不能直接转换为运行态,必须先在就绪队列中等待调度。

 

典型的调度算法:

        1、先来先服务算法,即可用于作业调度,也可以用于进程调度。每次都选择最先进入后备队列中的作业,将其调入内存。这种算法简单,但是效率低下,有利于CPU繁忙性作业、不利于I/O繁忙性作业。

        2、短作业优先算法。是每次都从后备队列中选取一个预计运行时间最短的作业,将其调入内存。该算法对长作业不利,可能出现饥饿现象,但他的平均等待时间和平均周转时间最少。

        3、优先级调度算法,既可用于作业调度,也可用于进程调度。这种算法会为每个作业或进程设置优先级,每次从后备队列中选取优先级最高的调入内存。

         4、高响应比优先调度算法,主要用于作业调度。首先要计算每个作业的响应比,计算方法为:等待时间+要求服务时间 / 要求服务时间。分析计算方法可知,在要求服务时间相同时,等待时间越久优先级越高;在等待时间相同时,要求服务时间最少, 优先级越高。兼顾了短作业和等待很久的长作业。

        5、时间片轮转算法。还是按照先来先服务的原则,对每个进程只分配一个时间片的CPU时间,运行完一个时间片后自动让出CPU,并排到后备队列的末尾。

        6、多级反馈队列调度算法。设置多个等待队列1、2、3,优先级递减,时间片递增。只有等更高优先级的队列为空时,才会调度当前队列中的进程。如果进程用完了一个时间片但还没有完成任务,则会被移到下一级的队列中。

 

同步与互斥:

        同步是由于进程间需要相互合作,所以进程的推进需要按照一定的顺序来进行。同步遵守四个原则:空闲让进、忙则等待、有限等待、让权等待

        互斥是因为进程间竞争临界资源而发生的。

 

死锁:

        死锁是指两个以上的进程在执行过程中,应竞争临界资源而产生的一种互相等待的状态,若无外力作用,他们都将永久地等待下去。死锁产生的原因为主要是系统资源不足和进程推进顺序不合理。

        死锁的必要条件:

        互斥条件:一个资源在同一时间只能被一个进程使用

        请求和保持条件:进程在请求其他资源的阻塞过程中,仍然不释放自己拥有的资源。

        不可剥夺条件:指进程在未使用完时,不可被其他进程剥夺。

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

        处理死锁的基本方法:

        预防死锁。破坏死锁产生的四个必要条件中的一个或几个

        避免死锁。主要使用银行家算法,在资源的动态分配过程中实时检测系统的状态,避免进入不安全状态。

        检测及解除死锁。允许在进程推进过程中出现死锁,及时检测出死锁的发生,然后采取措施去解除死锁。

 

饥饿与死锁:

        饥饿是进程长期得不到调度产生的现象,饥饿并不代表系统产生了死锁。

        死锁需要起码两个进程,饥饿不需要。死锁的进程一定都是阻塞进程,但饥饿的进程都是就绪进程。

 

内存管理的作用:

        存储器管理的主要任务就是为多道程序运行提供良好的内存环境,提高储存器效率、从逻辑上扩大存储器的地址空间。

        1、内存的分配和回收。为将要运行的程序分配内存,并回收运行完的程序的内存。

        2、地址变换。将逻辑地址转化为物理地址

        3、扩充内存。借助虚拟技术,从逻辑上扩大内存的地址空间。

        4、内存保护。使多个程序在自己的内存空间中运行,互不干扰、

 

将用户编写的程序转换为可在内存中运行的程序的步骤:

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

        2、链接。将程序编译生成的目标模块与运行所需的库函数链接在一起,形成一个完整的装入模块。

        3、装入。将装入模块装入内存中运行

 

程序的链接方式:

        1、静态链接:在程序运行前,将所有需要用到的库函数与目标模块链接在一起。

        2、装入时链接:将编译得到的目标模块在装入内存是,边装入边链接。

        3、运行时链接:直到程序运行需要用到一些模块时,才对这些模块进行链接。

 

程序的装入方式:

        1、绝对装入:适用于单道程序运行环境,在编译时就知道了程序的内存地址,编译产生含有物理地址的目标代码。

        2、可重定位装入:根据内存状态选取一块内存分配给程序,我们只需知道该块区域的起始地址,重定位时,将该起始地址加上偏移量就得到了物理地址,一般只能重定位一次。

        3、动态运行装入:运行程序在装入内存后改变位置,模块装入内存后都是相对地址,当程序执行时,才将逻辑地址转化为物理地址。动态重定位需要有地址变换机构的支持。

 

覆盖和交换:

        覆盖技术是将内存空间划分为覆盖区和非覆盖区,并且将程序划分为一系列覆盖,将程序中活跃的部分装入到非覆盖区中。先把将要执行的部分装入覆盖区,其余放在外存,当有外存中的程序段要执行时,调入到内存中的覆盖区中,覆盖掉原本存在的程序段。这种方式下,内存中能更新的只有覆盖区,不在覆盖区的程序段将会常驻内存。

        交换技术的基本思想是将处于等待状态的程序从内存中换到辅存中,将需要CPU的程序从辅存换到内存中。

        覆盖与交换的区别主要在于覆盖作用于统一进程或程序中,而交换体现在不同进程或作业之间。

 

内存连续分配方式:

        1、单一连续分配,只适用于单用户单任务的操作系统。这种分配方式将内存分为系统区和用户区,系统区只存放系统程序,用户区中只能存放单个程序,可使用覆盖技术,简单,无外部碎片,但有内部碎片且效率低下。

        2、固定分区分配,这种方式将内存划分为若干固定大小的区域,每个区域只能装入一个程序。分区的大小可相同可不同,但不可改变。这种方式是多道程序设计的最简单方式,无外部碎片,但有内部碎片,且如果程序过大,每个分区都装不下,只能采用覆盖技术。

        3、动态分区分配。这种方式并不预设分区的大小,而是在程序装入内存时才建立分区,使分区正好适合进程的需要。但当一些程序结束,分区被回收后,就会产生一些很难被利用的小的内存区,这种现象称为外部碎片,可通过紧凑来解决。动态分区在分配分区时会采取以下几种的算法:

        首次适应算法:空闲分区以首地址递增的顺序排列,选取第一个可以满足空间大小要求的分区。这种算法最简单,且通常也是效率最佳。

        最佳适应算法:空闲分区以空间大小递增的顺序排列,选取第一个可以满足空间大小要求的分区。这种算法虽然叫最佳,但是在分配过程中,很容易产生一些难以被利用的小的空闲分区,即外部碎片,性能通常比较差。

        最坏适应算法:空闲分区以空间大小递减的顺利排列,选取第一个可以满足空间大小要求的分区,即挑一个最大的分区。这种算法虽然不易产生外部碎片,但是大的分区被不断切分,容易造成没有大的内存块来装入较大型的程序。

        邻近适应算法:又称循环首次适应算法,由首次适应算法演变而来,不同的是,分配内存时从上次查找结束的位置开始继续查找。

 

内存非连续分配方式:

        即分页存储管理方式、分段存储管理方式和段页式管理方式。

        分页存储管理方式主要原理是:将主存和进程都划分为大小相同的块,内存中的块称为页框,进程中的块成为页。进程在执行时要申请内存,即进程中的每个页要申请内存中的可用页框,页与页框一一对应,记录这种对应关系的都是页表。

        分段存储管理方式主要原理是:将用户进程划分为不同的段,每个段连续装入内存中的一块空间中,段表中记录段的大小和在所分配内存的首地址。

 

页面置换算法:

        1、最佳置换算法:选择最长时间内不再使用的页面调出内存。然而由于我们无法预知哪个页面会在未来最长时间内不被用到,所以这个算法仍然无法实现。

        2、先进先出算法:选择内存中最早进入内存的页面调出内存。这种算法会造成Belady现象,即分配的物理块数目增大,而页故障数反而增加的现象。

        3、最近最久未使用算法:选择内存中最长时间为访问过的页面调出内存。

        4、时钟置换算法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值