预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第一章操作系统定义:操作系统是控制和管理计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。操作系统功能:(1)存储管理功能:内存分配(策略)、地址映射(转换)、内存保护(不干扰不越界)、内存扩充(逻辑扩充:虚拟存储器与置换)。(2)处理机管理功能:作业和进程调度(创建进程,算法)、进程控制(创建、撤销、唤醒、挂起等)和进程通信(依赖和制约:同步和互斥)。(3)设备管理功能:缓冲区管理(速度匹配),设备分配(请求、策略),设备驱动(通道)和设备无关性(逻辑设备名、物理设备名)。(4)文件管理功能:文件存储空间的管理(分配与回收),文件操作的一般管理(创建、删除、打开、关闭),目录管理,文件的读写管理和存取控制(防止越权与破坏)。(5)用户接口:命令界面:这是指由OS提供了一组联机命令(语言),用户可通过键盘输入有关命令,来直接操纵计算机系统。程序界面:OS提供了一组系统调用,用户可在自己的应用程序中通过相应的系统调用,来操纵计算机。图形界面:用户通过屏幕上的窗口和图标来操纵计算机系统和运行自己的程序。并发:是指两个或多个活动在同一给定的时间间隔中进行。宏观概念。如CPU共享。共享:是指计算机系统中的资源被多个进程所共用。如CPU、硬盘、内存、数据等。互斥地共享:某进程申请资源、若空闲、分配、运行,下一个进程只能等待,直到前一进程释放资源。宏观上同时访问、微观上并发执行的共享:如硬盘上文件的访问。不确定性:是指系统中各种事件发生顺序的不可预测性。多道程序设计:基本思想是在内存中同时存放多道程序,在管理程序的控制下交替地执行。这些作业共享CPU和系统中的其他资源。分时系统:操作系统多个用户终端,分时共享主机资源。时间片、交互性。实时系统:系统及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。实时性、高可靠性。第二章进程:进程最根本的属性是动态性和并发性,指程序在并发环境中的执行过程。进程队列的连接方式:线性队列,链接,索引。进程和线程的关系:①一个进程可以有多个线程,但至少要有一个线程;而一个线程只能在一个进程的地址空间内活动。②资源分配给进程,同一进程的所有线程共享该进程的所有资源。③处理机分配给线程,即真正在处理机上运行的是线程。④线程在执行过程中需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。进程的同步:同步进程通过共享资源来协调活动,在执行时间的次序上有一定约束。在协调动作的情况下,多个进程可以共同完成一项任务。虽然彼此不直接知道对方的名字,但知道对方的存在和作用。进程的互斥:逻辑上这两个进程本来完全独立,不知对方的存在,毫无关系,只是由于竞争同一个物理资源而相互制约。信号量:用于解决进程同步、互斥问题的通用工具。PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:P(S):①将信号量S的值减1,即S=S-1;②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。V(S):①将信号量S的值加1,即S=S+1;②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。一般来说,信号量S³0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。【例1】生产者-消费者问题在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮助。(1)一个生产者,一个消费者,公用一个缓冲区。定义两个同步信号量:empty——表示缓冲区是否为空,初值为1。full——表示缓冲区中是否为满,初值为0。生产者进程while(TRUE){生产一个产品;P(empty);产品送往Buffer;V(full);}消费者进程while(True){P(full);从Buffer取出一个产品;V(empty);消费该产品;}(2)一个生产者,一个消费者,公用n个环形