操作系统基础知识一

1.进程和线程的区别

  1. 调度方面。在传统操作系统中,拥有资源和独立调度的基本单位都是进程。而在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程的切换。在不同的进程中进行线程切换,将会引起进程切换。
  2. 拥有资源。进程是拥有资源的基本单位。而线程不拥有系统资源,但线程可以访问其隶属进程的系统资源。
  3. 并发行。在引入线程的操作系统中,不仅进程之间可以并发执行,而且同一个进程内的多个线程也可以并发执行。
  4. 系统开销。由于创建进程或者撤销进程时,系统都要为之分配或者回收资源,操作系统付出的开销远大于线程创建或撤销的开销。在进行进程切换时,涉及整个当前进程cpu环境的保护和新调度到新进程的cpu环境设置。而线程切换时,只需要保护和设置少量的寄存器内存,因此开销很小。另外,由于同一进程内的多个线程共享进程的地址空间。因此,多线程之间的同步于同i性能非常容易实现,甚至无需操作系统的干预。

2.程序与进程的区别

  1. 进程是一个动态概念,而程序是一个静态概念。
  2. 进程具有并行特性,而程序不反映执行,所以没有并行特征。
  3. 进程是竞争计算机系统资源的基本单位,而程序不反映执行也不会竞争计算机系统资源。
  4. 不同的进程可以包含同一程序,只要该程序所对应的数据集不同。

3.进程是并发过程中程序的执行过程。

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

5.什么是临界区、如何解决冲突?

临界区是指每个进程中访问临界资源的那段代码。每次只准许一个进程进入临界区,进入后不允许其他进程进入。

如果有若干个进程要求进入空闲的临界区,一次仅允许一个进程进入,任何时候,处于临界区的进程不可多于一个。如果已有进程进入自己的临界区,则其他试图进入临界区的进程必须等待。进入临界区的进程要在有限的时间内退出,以便于其他进程及时进入自己的临界区,如果不能进入自己的临界区 ,就应该让出CPU,避免进程出现忙等等现象。

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

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

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

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

10.若系统采用轮转法调度进程系统采用的是剥夺式调度。

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

内存管理

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

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

14.段页式存储管理中的地址映射表是每个作业或进程一张段表,每个段一张页表。

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

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

分段和分页的区别:

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

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

  • 页的大小固定且有系统确定。吧逻辑地址分为页号和页地址两部分,由机器硬件实现。段的长度不定,决定于用户所编写的程序。
  • 分页的作业地址空间是一维的(即线性空间)。分段的作业地址是二维的,程序员在标记一个地址时,急需要给出段名又需要给出段内地址。

17.不使用中断机构的I/o控制方式是程序I/o方式

18.spooling技术能独占设备改造成可以共享的虚拟设备。(SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,)

19.DMA方式(成组数据传送方式

20.WIndows下的内存是如何管理地?

  • 虚拟内存:最适合用来管理大型对象或者结构数组
  • 内存映射文件:最适合管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据
  • 内存堆栈: 适合用来管理大量的小对象。

21.中断和轮询的特点:

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

轮询I/o方式(程序控制I/o方式):是让CPU以一定周期按一次查询每一个外设,看它是否有数据输入或者输出的要求,若有则进行相应的输入/输出服务,若无,或者I/o处理完毕,CPU就接着查询下一个外设。

速度:

中断处理方式和程序控制方式本身的速度指标一致(软件、总线的传输速度、端口的响应速度),没有太大差别。

可靠性:
程序控制方式:

由于硬件不支持中断方式,因此操作系统把CPU控制权交给应用程序后,只要应用程序不交还CPU控制权,操作系统就始终不能恢复对CPU的控制(无定时中断)。应用程序与操作系统都是软件模块,操作系统属于核心模块,它们之间存在交接CPU控制权的关系。正是由于这样的关系,一旦使用对外设的“程序控制方式”时,应用程序出现死锁,则操作系统永远无法恢复对系统的控制。应用程序的故障通过外设控制方式波及到作为核心模块的操作系统,因此,根据关联可靠性指标的计算可知,“程序控制方式”的关联可靠性指标很低。

中断处理方式:

由于提供定时中断,操作系统可以在应用程序当前时间片结束后通过中断服务程序重新获得对CPU的控制权。应用程序的故障不会波及到操作系统,因此,中断处理方式的关联可靠性指标高。

可扩展性

程序控制方式:

由于所有应用程序中都包含对端口的操作,一旦硬件接口的设计发生变化,则所有应用程序都必须进行修改,这会使修改费用升高很多倍。因此,程序控制方式会使相关硬件模块的局部修改指标相对较低。

中断处理方式:

应用程序不直接操作端口,对端口的操作是由中断服务程序来完成的。如果某个硬件接口的设计发生了变化,只需要修改它相关的中断服务程序即可。因此,中断处理方式使得相关硬件模块的局部修改指标较高。

生命期:

“中断处理方式”(外设请求方式)能够协调CPU与外设间的速度差异,能够协调各种外设间的速度差异,提高系统的工作效率(速度指标)。使应用程序与外设操作基本脱离开来,降低了程序的设备相关性(关联可靠性指标、局部修改指标)。虽然目前某些快速设备相互间的通信没有通过CPU,也没有使用中断处理方式,但是对于慢速设备、设备故障的处理来说,中断处理方式仍然是最有效的。无论将来计算机系统中的元件怎样变化,只要存在慢速设备与快速CPU之间的矛盾,使用中断处理方式都是适合的。即便不使用中断服务程序,中断的概念也会保持很久。在短时期内,计算机系统还无法在所有领域离开人工交互操作,人的操作速度一定比机器的处理速度慢,因此慢速设备将仍然保持存在(但这不是慢速设备存在的唯一原因)。正因为存在这样的需求,中断处理方式具有较长的生命期。

程序控制方式”(CPU查询方式)在早期的计算机系统中能够满足应用需求;到8位机出现以后,这种外设控制方式(体系结构)被淘汰。

22.进程间的通信方式?它们的区别?

IPC方式:7种

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

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

3.信号(signal):是一种比较复杂的通信方式,用于通知接受进程某一事件已经发生。

4.信号量(semophere):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它作为一种锁机制,防止某进程正在访问共享资源时,其他进程也在访问该资源。因此主要作为进程间以及同一进程内的不同线程之间同步手段。(两个标准的原语wait(S)和singal(S)来访问,即P操作和V操作)

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

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

7.套接字(socket):套接口也是进程间的通信机制,与其他通信机制不同,它可用于不同以及其间的进程通信。

几种方式的比较:

管道:速度慢、容量有限

消息队列:容量受到限制,且第一次读数据时,要考虑上一次没有读完数据的问题。

信号量:不能传递复杂信息,只能用来同步。

共享内存:能够很容易控制容量,速度快,但要保持同步。比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全。

23.线程间的通信机制

1.锁机制:互斥锁、条件变量、读写锁

互斥锁:提供了以排他方式数据结构被并发修改的方法。

读写锁:允许多个线程同时读取共享数据,而对写操作是互斥的。

条件变量:可以以原子的方式进行阻塞进程,知道某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的,条件变量始终与互斥锁一起使用。

2.信号量机制:包括无名信号量和命名线程信号量

3.信号机制:类似进程间的信号处理

线程间通信的目的主要是用于线程的同步,所以线程没有像进程通信中的用于数据交换的通信机制

24.进程的调度算法有哪些?

1.先来先服务(FCFS):此算法的原则是按照作业到达后备作业队列(或者进入就绪队列)的先后次序选择作业(或者进程)。

2.短作业优先(SJF):主要用于作业调度,它从作业的后备序列中选中挑选所需运行时间最短的作业进入贮存运行。

3.时间片轮转调度算法:当某个进程执行的时间片用完时,调度程序便终止该进程的执行,并将它送到就绪队列的末尾,等待分配下一时间片再执行。然后把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证队列中的所有进程,在已给定的时间内,均能获得一时间片处理机执行时间。 

4.高响应比优先:按照高响应比(已等待时间+要求运行时间)/要求运行时间优先的原则,在每次选择作业投入运行时,先计算此时后备作业队列中每个作业的响应比RP。选择最大的作业投入运行。

5.优先权调度算法:按照进程的优先权大小来调度。使高优先全进程得到优先处理的调度策略。

6.多级队列调度算法:根据作业的性质和类型的不同,将就绪队列再分成若干个队列,所有的作业(进程)按其性质排入相应的队列中,而不同的就绪队列采用不用的调度算法。

猜你喜欢

转载自blog.csdn.net/Program_life_1/article/details/85217549