操作系统知识点

 

一、进程管理

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

进程由两部分组成: 内存映像进程控制块。进程控制块, 可以把进程的状态数据, 上下文等都放入其中,来记录进程的外部特征,描述进程的运动变化过程。系统根据进程控制块来对并发执行的进程进行控制和管理。进程控制块(PCB )是由系统为每个进程分别建立的,PCB是一个进程存在的标志,进程控制块中包含一系列信息,其中进程名即进程标识符唯一标识对应进程,系统根据该标识符来识别一个进程。一个进程只有唯一的进程控制块,不可和其他进程共用一个进程控制块。

1、进程和线程的区别:

进程是资源分配的基本单位,所有与该进程有关的资源,都被记录在进程控制块PCB中,以表示该进程拥有这些资源或正在使用它们。不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。

线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。

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

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

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

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

5)通信。进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

   多线程与多进程的比较  http://blog.csdn.net/hairetz/article/details/4281931/

2、程序与进程的区别

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

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

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

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

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

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

产生死锁的必要条件:

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

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

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

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

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

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

二、内存管理

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

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

分级调度分为4级:

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

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

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

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

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

Windows消息调度机制是(C)

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

中断和轮询的特点

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

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

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

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

三、编译

编译:进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件。
连接:把程序中各个文件编译生成的目标文件连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,得到可执行文件。三种链接方式:1.静态链接方式(Static Linking)2.装入时动态链接(Load-time Dynamic Linking)3.运行时动态链接(Run-time Dynamic Linking)
运行:执行连接好的程序。
重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。
原文地址:https://www.cnblogs.com/hesier/p/5820284.html