操作系统常见题目

进程间关系

第一种是竞争关系

  • 进程的互斥(mutual exclusion )是解决进程间竞争关系( 间接制约关系) 的手段。 进程互斥指若干个进程要使用同一共享资源时,任何时刻最多允许一个进程去使用,其他要使用该资源的进程必须等待,直到占有资源的进程释放该资源。

第二种是协作关系

  • 某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协 调各自的工作。当合作进程中的一个到达协调点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,直到其他合作进程发来协调信号或消息后方被唤醒并继续执行。这种协作进程之间相互等待对方消息或信号的协调关系称为进程同步。进程间的协作可以是双方不知道对方名字的间接协作,例如,通过共享访问一个缓冲区进行松散式协作;也可以是双方知道对方名字,直接通过通信机制进行紧密协作。允许进程协同工作有利于共享信息、有利于加快计算速度、有利于实现模块化程序设计。
  • 进程的同步(Synchronization)是解决进程间协作关系( 直接制约关系) 的手段。进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于另一个协作进程的消息或信号,当一个进程没有得到来自于另一个进程的消息或信号时则需等待,直到消息或信号到达才被唤醒。不难看出,进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,也是对进程使用资源次序上的一种协调。
  • 进程通信的概念下面是根据《操作系统教程》3.5 中的介绍,整理的进程通信的概念。并发进程之间的交互必须满足两个基本要求:同步和通信。进程竞争资源时要实施互斥,互斥是一种特殊的同步,实质上需要解决好进程同步问题,进程同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作。但是信号量与PV操作只能传递信号,没有传递数据的能力。有些情况下进程之间交换的信息量虽很少,例如,仅仅交换某个状态信息,但很多情况下进程之间需要交换大批数据,例如,传送一批信息或整个文件,这可以通过一种新的通信机制来完成,进程之间互相交换信息的工作称之为进程通信IPC (InterProcess Communication)(主要是指大量数据的交换)。
    参考自
    https://blog.csdn.net/weixin_41413441/article/details/80548683

1、进程和线程区别

  • 资源:进程是资源分配的基本单位,线程不拥有资源,线程可以访问进程的资源
  • 调度:线程是独立调度的基本单位,在同一进程内,线程的切换不会引起进程的切换,当一个进程的线程切换到另一个进程的线程时,会引起进程切换。
  • 系统开销:进程的创建和销毁开销远大于线程的开销。进程创建和销毁系统都要为其分配或回收资源,如内存空间、IO设备。进程切换时,涉及到当前执行进程CPU环境的保存及新进程CPU环境的设置,线程切换只涉及到少量寄存器内容,开销很小。
  • 通信方面:进程间通信(IPC)需要进程同步和互斥手段的辅助,以保证数据的一致性。线程间可以直接通过读写同一个进程内的数据段进行通信。

2、线程同步的方式

  • 信号量
  • 互斥量
  • 临界区
  • 事件

3、进程通信的方式

  • 信号量:使用PV操作来实现的。
  • 消息队列:消息队列是由消息组成的链表,存放在内核中 并由消息队列标识符标识。消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 共享内存
  • 信号:使用信号处理器进行,用于通知接收进程某一事件已经发生。
  • 管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程关系。

4、死锁

  • 互斥条件:一个资源一次只能被一个进程使用
  • 请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放
  • 不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺
  • 循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系

5、进程状态

  • 就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源
  • 运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数
  • 阻塞状态: 进程等待某种条件,在条件满足之前无法执行

6、分页和分段

  • 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
  • 段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定
  • 段向用户提供二维地址空间;页向用户提供的是一维地址空间
  • 段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

7、进程调度策略

批处理系统:

批处理系统没有太多的用户操作,在该系统中,调度算法目标是保证吞吐量和周转时间(从提交到终止的时间)。

  • 先来先服务(FCFS)
  • 短作业优先SJF
  • 最短剩余时间剩余(SRTN)

交互式系统

交互式系统有大量的用户交互操作,在该系统中调度算法的目标是快速地进行响应。

  • 时间片轮转

8、进程同步机制

转自https://blog.csdn.net/weibo1230123/article/details/82011429
(1)信号量机制

一个信号量只能置一次初值,以后只能对之进行p操作或v操作。 由此也可以看到,信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。

(2)自旋锁

旋锁是为了保护共享资源提出的一种锁机制。 调用者申请的资源如果被占用,即自旋锁被已经被别的执行单元保持,则调用者一直循环在那里看是否该自旋锁的保持着已经释放了锁,自旋锁是一种比较低级的保护数据结构和代码片段的原始方式,可能会引起以下两个问题;

(1)死锁

(2)过多地占用CPU资源

(3)管程

信号量机制功能强大,但使用时对信号量的操作分散,而且难以控制,读写和维护都很困难。因此后来又提出了一种集中式同步进程——管程。其基本思想是将共享变量和对它们的操作集中在一个模块中,操作系统或并发程序就由这样的模块构成。这样模块之间联系清晰,便于维护和修改,易于保证正确性。

(4)会合

进程直接进行相互作用

(5)分布式系统

由于在分布式操作系统中没有公共内存,因此参数全为值参,而且不可为指针。

优缺点:

(1)信号量(Semaphore)及PV操作

优:PV操作能够实现对临界区的管理要求;实现简单;允许使用它的代码休眠,持有锁的时间可相对较长。

缺:信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。信号量机制功能强大,但使用时对信号量的操作分散,而且难以控制,读写和维护都很困难。加重了程序员的编码负担;核心操作P-V分散在各用户程序的代码中,不易控制和管理;一旦错误,后果严重,且不易发现和纠正。

(2)自旋锁

优:旋锁是为了保护共享资源提出的一种锁机制; 调用者申请的资源如果被占用,即自旋锁已经被别的执行单元保持,则调用者一直循环在那里看是否该自旋锁的保持者已经释放了锁; 低开销;安全和高效;

缺:自旋锁是一种比较低级的保护数据结构和代码片段的原始方式,可能会引起以下两个问题;

(1)死锁

(2)过多地占用CPU资源

传统自旋锁由于无序竞争会导致“公平性”问题

(3)管程

优: 集中式同步进程——管程。其基本思想是将共享变量和对它们的操作集中在一个模块中,操作系统或并发程序就由这样的模块构成。这样模块之间联系清晰,便于维护和修改,易于保证正确性。

缺:如果一个分布式系统具有多个CPU,并且每个CPU拥有自己的私有内存,它们通过一个局域网相连,那么这些原语将失效。而管程在少数几种编程语言之外又无法使用,并且,这些原语均未提供机器间的信息交换方法。

(4)会合

进程直接进行相互作用

(5)分布式系统

消息和rpc ,由于在分布式操作系统中没有公共内存,因此参数全为值参, 而且不可为指针.

你可能感兴趣的:(操作系统)