1.两级存储器的理论基础是:局部性原理。
局部性原理:
程序的局部性原理是指程序总是趋向于使用最近使用过的数据和指令,也就是说程序执行时所访问的存储器地址分布不是随机的,而是相对地簇集;这种簇集包括指令和数据两部分。
程序局部性包括程序的时间局部性和程序的空间局部性。
1. 程序的时间局部性: 是指程序即将用到的信息可能就是目前正在使用的信息。
2. 程序的空间局部性: 是指程序即将用到的信息可能与目前正在使用的信息在空间上相邻或者临近。
2.计算机系统体系结构分为:单处理器系统、多处理器系统以及集群系统。
3.操作系统最重要的是要有多道程序的处理能力。操作系统应该有双模式操作:用户模式和系统模式(执行特权指令)。
4.分布式系统是将一组物理上分开来的、各种可能异构的计算机系统通过网络连接在一起,为用户提供系统所维护的各种资源的计算机的集合。
进程:
5.多个进程可以运行同一个程序:
只是文本段是相同的,其数据段、堆和栈都是不相同的。
6.一次只能有一个进程被执行,可以有多个进程就绪或者等待。
7.进程的状态包括 创建、就绪、运行、等待、终止。
8.进程控制块是进程的唯一标示,记录了操作系统所需的用于描述进程以及操作进程的全部信息。
9.进程进入系统时,会被加到作业队列中,该队列包括系统中所有的进程以进行进程调度。
10.进程选择由调度程序来执行:分为长期调度程序(作业调度程序)或者短期调度程序(CPU调度程序)。
长期调度为将进程从缓冲池(磁盘中)调度到内存中等待执行(就绪)。
短期调度为将进程从内存中选出放在CPU中进行执行。
有些分时系统中加入中期调度程序,用于将进程从内存或者CPU竞争中换出到外存,从而缓解内存的压力。
11.将CPU从一个进程切换到另一个进程,需要保存当前进程的状态并恢复另一个进程的状态,这一任务称为上下文切换。
上下文切换的时间与硬件支持是密切相关的。
12.Unix中进程创建,父进程不需要向子进程传递参数。而windows进行子进程的创建时,需要向子进程传递参数。
13.级联终止:说的是进程的父进程终止了,则该进程的所有子进程也会跟着终止掉。
14.Unix系统中父进程终止了,则子进程会以init为父进程。因此,子进程仍然有一个父进程来收集状态和执行统计。
15.进程间通信机制(interprocess communication , IPC)进程间通信有两种基本模式:共享内存与消息传递。
共享内存比消息传递快。
线程:
16.线程是CPU使用的基本单元,它由线程ID、程序计数器、寄存器集合和栈组成。与进程中的其他线程共享代码段、数据段和其他操作系统资源。
17.有两种方法可以实现线程库:一种是在用户空间建立的没有操作系统内核支持的线程库,所有库的代码和数据和结构都是在用户空间中运行。
另一种方法是执行一个由操作系统直接支持的内核级的线程库。
18.对于Java的线程实现来说,一般JVM实例运行在宿主机的操作系统之上,所以Java线程API通常采用宿主系统上的线程库来实现。如Java线程
通常用Win32 API 来实现。
19.在线程中执行fork时会创建一个新的进程,这时会复制进程的所有资源,包括所有的线程都会复制。
如果一个线程调用了系统调用exec(),则整个进程会被exece所指定的程序全部替换。
20.线程池:在进程开始创建时就创建一些线程,并放入池中等待工作。
通常用现有线程处理请求要比等待创建新的线程要快。
线程池限制了在任意时刻可用线程的数量。有利于那些难以承载过多线程并发的系统。
21.线程分为内核级线程以及用户级线程。其中内核级线程能够在多处理器系统中发挥作用,而用户级线程是在用户程序层面的多线程,其实质是
在用户级层面实现的线程的管理以及调度,当进程的一个线程阻塞时,整个进程就会阻塞。
进程同步:
22.临界资源:两个或者两个以上的进程不能同时使用的资源叫做临界资源。
23.临界区问题:分为进入区、临界区、退出区与剩余区。 该问题必须满足:互斥、前进、有限等待的要求。
24.有两种方法解决操作系统内的临界区问题:抢占内核与非抢占内核。
25.软件解决进程同步问题,使用peterson算法。但是该算法只能解决2个进程的同步问题。
26.信号量解决同步问题:
信号量分为二进制信号量以及计数信号量。
二进制信号量用来解决互斥问题。计数信号量用来解决同步问题。
二进制信号量称为互斥锁,因为他们能够提供互斥。
27.经典的问题如生产者消费者、读者写者、哲学家问题等。
28.互斥信号量必定成对出现在一个程序中。而同步信号量未必会成对出现在一个进程中。
一般互斥信号量紧邻程序的临界区。而v操作的顺序无关紧要。
29.管程:管程实际上是定义了一个数据结构和在该数据结构上的能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
死锁:
30.某系统中只有11台打印机,N个进程共享打印机,每个进程要求3台,当N取值不超过()时,系统不会发生死锁?
最坏情况下,N个进程每个都得到2台打印机,都去申请第3台,为了保证不死锁,此时打印机的剩余数目至少为1台,则:
11-2N >= 1
N <= 5
31.产生死锁的基本原因是(系统资源不足)和(进程推进顺序不当)。
32.死锁产生的必要条件是:互斥(资源是互斥的,即一个资源不能同时被多个进程使用)、占有并等待(一个进程必须占有一个资源并等待另一个
资源)、非抢占(资源不能被抢占,必须是进程完成后自动释放)、循环等待(进程之间等待资源必须是循环等待的)。
33.主要有三种方法可以处理死锁:
死锁预防和死锁避免:采用某种协议预防或避免死锁,确保系统不会进入死锁状态。
死锁恢复:允许系统进入死锁状态,然后检测并恢复。
完全忽视死锁并假设系统中不会发生死锁。包括 UNIX 在内的大多数操作系统采用了这种方法。
34.其中死锁预防是采取措施使得死锁的必要条件不成立。
而死锁避免是要求系统能够通过预测判断系统是否处于安全状态。 //其中银行家算法就是用于死锁避免的算法。
可参照博客:http://blog.csdn.net/windowseight/article/details/8309862