1:什么是操作系统?
操作系统是管理和控制计算机系统资源方便用户使用程序和数据结构的集合
2:操作系统分类
特点:功能的分布
坚强性
高可靠性
3:操作系统的功能
(1)处理机管理
(2)存储管理(内存分配、存储保护,内存扩充)
(3)设备管理(通道、控制器、输入输出设备的分配与管理,设备独立性)
(4)信息管理(文件系统管理)
(5)用户接口(通道、控制器、输入输出设备的分配与管理,设备独立性)
4:通道
用于控制I/O设备与内存之间的数据传输。启动以后可以独立与CPU的运行,实现CPU与I/O的并行。
通道有专用的I/O处理器,可以与CPU并行运行
实现I/O联机处理
5:中断技术(极其重要)
(1)什么是中断技术?
CPU接到外部中断信号以后,停止原来的工作,转去处理中断事件,完毕后回到原来的断点继续工作。
(2)中断处理过程
中断请求——中断响应——中断点(暂停当前任务并保存现场)——中断处理例程——中断返回(恢复中断点的现场并继续原有任务)。
(3)中断与轮询的特点?
轮询——效率低,处理事件长,CPU利用率低
中断——CPU利用率高,但是容易遗漏一些问题。
6:进程与线程管理(进程同步的核心)
(1)进程与线程的区别
进程是系统资源分配的最小单位,线程是作为调度的最小单位。创建一个新的进程时,系统会给他们分配独立的地址空间,建立更多的数据来维护它的代码段、堆栈段与数据段。但是线程不需要。
线程间彼此切换所需要的时间远远小于进程间切换所需要的时间。
(2)简述进程的三态。
运行态,就绪态,等待。
(3)IPC的方式有哪几种?
管道(有名管道、无名管道):以文件系统为基础
信号量
共享内存
消息队列
(4)例举几种进程同步的机制。
在说明进程间同步的问题,不得不提一下并发和竞态的问题。
并发:多个执行单元同时被执行
竞态:并发的执行单元对共享资源的访问导致竞争状态。
常用的处理机制有如下几种:
信号量是一种睡眠锁,如果有一个想要获得已经被占用的信号量时,信号量会将此进程放入一个等待队列,然后让其睡眠。
特点:“忙等”,如果一个执行线程试图获得一个已被持有的自旋锁,那么线程会一直进行忙循环,一直等待下去,在那里看是否该自旋锁的保持已经释放。
(5)为什么要进行IPC?
数据传输:一个进程需要将它的数据发送给另一个进程
资源共享:多个进程之间共享一个资源
通知事件:一个进程需要向另一个进程发送消息,通知它们发生了某事件。
进程控制:有些进程希望完全控制另一个进程的执行。
(6)线程间同步的几种方式?
信号量的同步操作是重中之重。
信号量主要作用是保护临界资源,用于访问控制和进程同步。
信号量实质是一个整数。
例如:A、B进程均希望使用S资源。若S为临界资源,同一时刻只允许一个进程访问。
S资源的信号量为M,当M=1时,S可以访问。
A首先获取信号量,此时M=1,当A获得信号量时,把M-1;
B想要获得信号量时,判断M的值,发现此时信号量不可用,那么就把进程进行阻塞。
当释放信号量时,M+1;
上述提到的是使用二值信号量的方法。
但是实际过程中运用的是计算信号灯 的方法:
S表示资源,信号量的值与资源的使用情况相关。当它的值大于0时,表示可用资源的数量。当它的值小于0时,其绝对值表示等待使用该资源的进程个数。信号量值的改变由PV操作来实现。
一般来说当S>=0时,执行一次P操作,意味着请求分配一个单元资源,因此S值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。
而执行一次V操作,意味着释放一个单元的资源,因此S值加1.如果S<0表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。(关于PV原语的相关操作在专门的章节中详细分析,包括生产者—消费者模型的问题)。
(7)内核线程与用户线程之间的区别
用户线程:指的是不需要内核支持而运行在应用程序的线程。其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。不需要用户态/核心态的切换。速度快,操作系统内核不需要知道多线程的存在。因此一个线程阻塞将导致整个进程的阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间相对减少。
内核线程:由操作系统内核创建、撤销。内核维护进程及线程的上下文信息以及线程切换。一个内核线程由于I/O操作而阻塞,不会影响其它线程的运行。Windows NT和2000/XP支持内核线程。
(8)什么是死锁?产生死锁的条件是什么?
死锁是指,在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它们现在保持着的资源,否则就不能向前推进.此时,每个进程都占用了一定的资源但是又不能向前推进,称这一组进程产生了死锁。多个进程因竞争资源而形成一种僵局。若无外力的作用,谁也无法继续往前。
死锁产生的条件有:
互斥:存在着某种资源,在某个时刻只能被一个执行绪持有
持有:当请求的资源被占有,从而导致执行绪被阻塞时,资源占有者不仅不需要释放资源,而且还在不停的请求资源。
不可剥夺:简单的来说资源占有者只能自己才能释放资源
环路:若干执行绪以不同的次序获取互斥资源,从而在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。
(9)死锁的原因。
一是由于进程推进的顺序非法,另一个是由于系统资源的竞争。
(10)预防死锁的方法?避免死锁的方法?
对于死锁形成的原因,死锁产生的四个必要条件缺一不可。因此只要让上述四个必要条件有一个不满足即可预防死锁的出现。
死锁处理策略有: 鸵鸟策略、预防策略、避免策略、检测与解除死锁策略。
(12)常见的进程调度算法有哪些?