分享

找工作笔试面试那些事儿(13)

 为你放纵一生 2016-12-01

   先占个坑,后面陆续修改

上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样,考察的知识也是不尽相同的,但是作为计算机类的学生,操作系统的知识也是必不可少的,去年参加笔试面试的时候,腾讯微软阿里等公司的笔试题都或多或少对操作系统相关的知识点进行了考察。作为一个非计算机科班出生的学僧, 当初并没有学这门课,略尴尬,只有临时啃书补一补了,这里给出的是一份操作系统常考知识点的总结,希望能给大家带来一些小小的帮助。

1、进程管理

1、进程具有独立功能程序在某个数据集合上的一次执行过程线程进程内的一个执行实体或执行单元

进程和线程的区别

(a)不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。

(b) 在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。


区别版本二

1)调度方面。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。而在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同的进程中进行线程切换,将会引起进程切换。

2)拥有资源。不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源(也有一点必不可少的资源),但线程可以访问其隶属进程的系统资源。

3)并发性。在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一进程内的多个线程之间也可以并发执行。

4)系统开销。由于创建进程或撤销进程时,系统都要为之分配或回收资源,操作系统所付出点开销远大于创建或撤销线程时的开销。在进行进程切换时,涉及到整个当前进程CPU环境的保护及新调度到新进程的CPU环境设置;而线程切换时,只需保护和设置少量寄存器内存,因此开销很小。另外,由于同一进程内的多个线程共享进程的地址空间,因此,多线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。


程序进程区别

(1)进程是一个动态概念,而程序是一个静态概念。

(2)进程具有并行特征,而程序不反映执行所以没有并行特征

(3)进程是竞争计算机系统资源的基本单位,而程序不反映执行也就不会竞争计算机系统资源

(4)不同的进程可以包含同一程序,只要该程序所对应的数据集不同。


1、进程是并发过程中程序的执行过程

2、进程的特征:结构特征、动态性、并发性、独立性、异步性

3、临界区指在每个进程中访问临界资源的那段代码

4,现在操作系统中申请资源的基本单位是进程,在CPU得到执行的基本单位是线程,进程是由程序段、数据段、PCB组成的

5,对临界资源应采取互斥访问方式来实现共享

6,P.V操作是一种低级进程通信原语

7,对于记录性信号量,在执行一次P操作时,信号量的值应当减1,当其值为小于0时进程应阻塞;在执行V操作时,信号量的值应当加1;当其值小于等于0时,应唤醒阻塞队列中的进程

9,短作业优先算法,T1<T2<T3平均周转时间为:T1+2XT2/3+T3/3

10,响应比Rp=(等待时间+要求服务时间)/要求服务器时间=响应时间/要求服务时间

24、什么是死锁?其条件是什么?怎样避免死锁?

  死锁的概念:在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。

  死锁产生的原因主要是:

   (1)系统资源不足;(2)进程推进顺序非法。

  产生死锁的必要条件:

  (1)互斥(mutualexclusion),一个资源每次只能被一个进程使用;

  (2)不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺;

  (3)占有并等待(hold andwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放

  (4)环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。

  这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

  死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源 的分配要给予合理的规划。

  死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与恢复策略

13,若系统采用轮转法调度进程系统采用的是剥夺式调度

15,资源的有序分配策略可以破坏死锁的“循环等待”

16,并非所有的不安全状态都必然会转为死锁状态,但当系统进图不安全按状态后变有可能进入死锁状态,

 

2、内存管理

17,重定位:在作业地址空间中使用的逻辑地址变为内存物理地址

19,适合多道程序运行的存储管理中,存储保护是为了防止各道作业的相互干扰

21,段页式存储管理中的地址映像表每个作业或进程一张段表,每个段一张页表

22,在虚拟页式存储管理方案中,完成将页面调入内存的工作的是缺页中断处理

23,分段管理和分页管理的主要区别是分页管理有存储保护,分段管理没有

25,不使用中断机构的I/O控制方式是程序I/O方式

26,spooling技术能独占设备改造成可以共享的虚拟设备  

28,共享设备指同一时间内运行多个进程同时访问的设备

29,虚拟设备:通过软件的功能扩充,把原来独占的设备改造成若干个可共享的设备

30,DMA方式如果I/O设备不通过CPU来完成

31,设备独立性用户程序独立于具体物理设备的一种特性

32,虚拟设备一个物理设备变换成多个对应的逻辑设备

33,通道是一种特殊的处理机,通道按传递数据的方式分为:字节多路通道,数组选择通道,数组多路通道,通道涉及的数据结构是设备控制器,控制器控制块,通道控制块,系统设备表

34,磁盘高速缓冲设在内存中,目的是提高I/O磁盘速度

35,磁盘空间的地址有盘面号,柱面号,扇区号组成。访问磁盘的时间有 寻道时间,旋转等待时间,读写时间 

36,将系统段用参数翻译成设备操作命令的工作由设备无关的操作系统完成

37,向设备寄存器写入控制命令由设备驱动程序完成

38,寻找设备驱动程序由设备无关的操作系统软件完成

39,设备管理的功能是设备分配,缓冲区管理和实现物理I/O设备的操作

40,根据设备的固有属性特点,设备可分为独占设备,共享设备和虚拟设备

41,引入缓冲区技术提高处理器执行程序设备的输入输出操作的并行程序文件管理

42,物理文件的组织方式是由操作系统确定的,文件的顺序存取是按文件的逻辑号逐一存取

43,系统通过树形目录结构来解决重名问题

44,在UNIX操作系统中,把输入输出设备看做特殊文件

45,打开文件操作的主要工作是把指定的目录复制到内存指定区域

46,文件路径名是指从根目录到该文件所经历的路径中各符号名的集合

47,按逻辑结构划分,文件主要有两类:记录是文件,流式文件,文件系统的主要目的是实现对文件的按名存取

48连续结构文件必须采用连续分配方式,而链接结构文件和索引结构文件都可采取离散分配方式

49,文件系统中,若文件的物理结构采用连续结构有关文件的物理位置的信息包括首块地址和文件长度

50,位示图可用于磁盘空间管理,在文件系统中,为实现文件保护,一般采用口令,密码和访问控制

 

4、什么是操作系统的基本功能?

1).处理机管理。在多道程序或多用户的情况下,要组织多个作业同时运行,就要解决对处理机分配调度策略、分配实施和资源回收等问题。

2).存储管理。存储管理的主要工作是对内部存储器进行分配、保护和扩充和管理。

3).设备管理。涉及到通道、控制器、输入输出设备的分配和管理以及设备独立性。

4).信息管理(文件系统管理) 是对系统的软件资源的管理。

5).用户接口。操作系统还为用户提供一个友好的用户接口。一般来说,操作系统提供两种方式的接口来为用户服务。

 

5、分级调度分为4级:

(1) 作业调度    (2) 交换调度     (3) 进程调度    (4) 线程调度。

 

7、页式管理的基本原理是什么?

(1)进程的虚拟空间被划分成长度相等的页。

(2)内存空间也按页的大小划分成长度相等的页面。

(3)采用请求调页或预调技术实现内外存储器的统一管理。

 

8、进程调度有哪些功能?

(1)记录系统中所有进程的执行情况。

(2)选择占有处理机的进程

(3)进行进程上下文切换

 

9、批处理操作系统、分时操作系统和实时操作系统的特点各是什么?

(1) 批处理操作系统的特点:成批处理,系统吞吐量高,资源利用率高,用户不能直接干预作业的执行。

(2)分时操作系统的特点:多路性、独立性、及时性、交互性。

(3)实时操作系统的特点:及时响应、快速处理;高可靠性和安全性;不要求系统资源利用率。

11、Windows消息调度机制是(C)

  A)指令队列;B)指令堆栈;C)消息队列;D)消息堆栈

解析:

  处理消息队列的顺序。首先Windows绝对不是按队列先进先出的次序来处理的,而是有一定优先级的。优先级通过消息队列的状态标志来实现的。首先, 最高优先级的是别的线程发过来的消息(通过sendmessage);其次,处理登记消息队列消息;再次处理QS_QUIT标志,处理虚拟输入队列,处理 wm_paint;最后是wm_timer。

 

12、描述实时系统基本特性

 在特定时间内完成特定的任务,实时性与可靠性。

  所谓“实时操作系统”,实际上是指操作系统工作时,其各种资源可以根据需要随时进行动态分配。由于各种资源可以进行动态分配,因此,其处理事务的能力较强、速度较快。

 

13中断轮询特点

  对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。尽管轮询需要时间,但轮询要比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此,程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。

  程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预先安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为响应的服务程序去处理。

  轮询——效率低,等待时间很长,CPU利用率不高。

  中断——容易遗漏一些问题,CPU利用率高。

14、什么是临界区如何解决冲突

  每个进程中访问临界资源的那段程序称为临界区每次只准许一个进程进入临界区进入后不允许其他进程进入

  (1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入;

  (2)任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;

  (3)进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区;

  (4)如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

 

15、说说分段分页

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

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

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

  分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内陆址。

 

16、说出你所知道的保持进程同步的方法

  进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。

 

20、什么是中断中断时CPU做什么工作

  中断指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。

 

21、你知道操作系统的内容分为几块吗?什么叫做虚拟内存?他和主存的关系如何?内存管理属于操作系统的内容吗

  操作系统的主要组成部分:进程和线程的管理,存储管理,设备管理,文件管理。虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。

 

22、线程是否具有相同的堆栈dll是否有独立的堆栈

  每个线程有自己的堆栈。

  dll是否有独立的堆栈?这个问题不好回答,或者说这个问题本身是否有问题。因为dll中的代码是被某些线程所执行,只有线程拥有堆栈。如果dll中 的代码是exe中的线程所调用,那么这个时候是不是说这个dll没有独立的堆栈?如果dll中的代码是由dll自己创建的线程所执行,那么是不是说dll 有独立的堆栈?

  以上讲的是堆栈,如果对于堆来说,每个dll有自己的堆,所以如果是从dll中动态分配的内存,最好是从dll中删除;如果你从dll中分配内存,然后在exe中,或者另外一个dll中删除,很有可能导致程序崩溃。

 

23、什么是缓冲区溢出?有什么危害?其原因是什么?

  缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

  危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

  造成缓冲区溢出的主原因是程序中没有仔细检查用户输入的参数

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多