实验并发与调度.ppt
《实验并发与调度.ppt》由会员分享,可在线阅读,更多相关《实验并发与调度.ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统原理实验操作系统原理实验安全性安全性安全性安全性 输入输入输入输入/输出输出输出输出管理管理管理管理 调度调度调度调度 存储器管理存储器管理存储器管理存储器管理进程描述进程描述进程描述进程描述与控制与控制与控制与控制 并发性并发性并发性并发性 文件管理文件管理文件管理文件管理 联网联网联网联网 操作系统的各个主题操作系统的各个主题操作系统的各个主题操作系统的各个主题 粗线表示从设计和实现粗线表示从设计和实现粗线表示从设计和实现粗线表示从设计和实现的角度考虑关系非常紧密的角度考虑关系非常紧密的角度考虑关系非常紧密的角度考虑关系非常紧密实验实验4 并发与调度并发与调度通过对事件和互斥体对象
2、以及对文件和文件映通过对事件和互斥体对象以及对文件和文件映通过对事件和互斥体对象以及对文件和文件映通过对事件和互斥体对象以及对文件和文件映射对象的了解,来加深对操作系统进程同步、射对象的了解,来加深对操作系统进程同步、射对象的了解,来加深对操作系统进程同步、射对象的了解,来加深对操作系统进程同步、线程同步的理解;通过线程同步的理解;通过线程同步的理解;通过线程同步的理解;通过LinuxLinuxLinuxLinux并发程序的调试,并发程序的调试,并发程序的调试,并发程序的调试,学习操作系统并发程序的工作方式学习操作系统并发程序的工作方式学习操作系统并发程序的工作方式学习操作系统并发程序的工作方
3、式 实验实验实验实验4.1 Windows 2000 4.1 Windows 2000 线程同步线程同步线程同步线程同步 实验实验实验实验4.2 Windows 2000 4.2 Windows 2000 线程间的通讯线程间的通讯线程间的通讯线程间的通讯 实验实验实验实验4.3 Linux 4.3 Linux 并发程序设计并发程序设计并发程序设计并发程序设计实验估计时间:实验估计时间:实验估计时间:实验估计时间:120120分钟分钟分钟分钟,难度系数:,难度系数:,难度系数:,难度系数:4 44.1 Windows 2000 线程同步线程同步 Windows 2000 Windows 2000
4、提供的常用对象可分成三类:核心提供的常用对象可分成三类:核心提供的常用对象可分成三类:核心提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中,开发人应用服务、线程同步和线程间通讯。其中,开发人应用服务、线程同步和线程间通讯。其中,开发人应用服务、线程同步和线程间通讯。其中,开发人员可以使用线程同步对象来协调线程和进程的工作,员可以使用线程同步对象来协调线程和进程的工作,员可以使用线程同步对象来协调线程和进程的工作,员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括以使其共享信息并执行任务。此类对象包括以使其共享信息并执行任务。此类对象包括以使其
5、共享信息并执行任务。此类对象包括 互锁数据互锁数据互锁数据互锁数据 临界段临界段临界段临界段 事件事件事件事件 互斥体互斥体互斥体互斥体 信号信号信号信号背景知识背景知识多线程编程中关键的一步是保护所有的共享资源,多线程编程中关键的一步是保护所有的共享资源,多线程编程中关键的一步是保护所有的共享资源,多线程编程中关键的一步是保护所有的共享资源,工具主要有互锁函数、临界段和互斥体等;另一个工具主要有互锁函数、临界段和互斥体等;另一个工具主要有互锁函数、临界段和互斥体等;另一个工具主要有互锁函数、临界段和互斥体等;另一个实质性部分是协调线程使其完成应用程序的任务,实质性部分是协调线程使其完成应用程
6、序的任务,实质性部分是协调线程使其完成应用程序的任务,实质性部分是协调线程使其完成应用程序的任务,为此,可利用内核中的事件对象和信号为此,可利用内核中的事件对象和信号为此,可利用内核中的事件对象和信号为此,可利用内核中的事件对象和信号在进程内或进程间实现线程同步的最方便的方法是在进程内或进程间实现线程同步的最方便的方法是在进程内或进程间实现线程同步的最方便的方法是在进程内或进程间实现线程同步的最方便的方法是使用事件对象,这一组内核对象允许一个线程对其使用事件对象,这一组内核对象允许一个线程对其使用事件对象,这一组内核对象允许一个线程对其使用事件对象,这一组内核对象允许一个线程对其受信状态进行直
7、接控制受信状态进行直接控制受信状态进行直接控制受信状态进行直接控制背景知识背景知识而互斥体则是另一个可命名且安全的内核对象,其而互斥体则是另一个可命名且安全的内核对象,其而互斥体则是另一个可命名且安全的内核对象,其而互斥体则是另一个可命名且安全的内核对象,其主要目的是引导对共享资源的访问。拥有单一访问主要目的是引导对共享资源的访问。拥有单一访问主要目的是引导对共享资源的访问。拥有单一访问主要目的是引导对共享资源的访问。拥有单一访问资源的线程创建互斥体,所有想要访问该资源的线资源的线程创建互斥体,所有想要访问该资源的线资源的线程创建互斥体,所有想要访问该资源的线资源的线程创建互斥体,所有想要访问
8、该资源的线程应该在实际执行操作之前获得互斥体,而在访问程应该在实际执行操作之前获得互斥体,而在访问程应该在实际执行操作之前获得互斥体,而在访问程应该在实际执行操作之前获得互斥体,而在访问结束时立即释放互斥体,以允许下一个等待线程获结束时立即释放互斥体,以允许下一个等待线程获结束时立即释放互斥体,以允许下一个等待线程获结束时立即释放互斥体,以允许下一个等待线程获得互斥体,然后接着进行下去得互斥体,然后接着进行下去得互斥体,然后接着进行下去得互斥体,然后接着进行下去与事件对象类似,互斥体容易创建、打开、使用并与事件对象类似,互斥体容易创建、打开、使用并与事件对象类似,互斥体容易创建、打开、使用并与
9、事件对象类似,互斥体容易创建、打开、使用并清除。利用清除。利用清除。利用清除。利用CreateMutex()APICreateMutex()API可创建互斥体,创建可创建互斥体,创建可创建互斥体,创建可创建互斥体,创建时还可以指定一个初始的拥有权标志,通过使用这时还可以指定一个初始的拥有权标志,通过使用这时还可以指定一个初始的拥有权标志,通过使用这时还可以指定一个初始的拥有权标志,通过使用这个标志,只有当线程完成了资源的所有的初始化工个标志,只有当线程完成了资源的所有的初始化工个标志,只有当线程完成了资源的所有的初始化工个标志,只有当线程完成了资源的所有的初始化工作时,才允许创建线程释放互斥体
10、作时,才允许创建线程释放互斥体作时,才允许创建线程释放互斥体作时,才允许创建线程释放互斥体背景知识背景知识为了获得互斥体,首先,想要访问调用的线程可使为了获得互斥体,首先,想要访问调用的线程可使为了获得互斥体,首先,想要访问调用的线程可使为了获得互斥体,首先,想要访问调用的线程可使用用用用OpenMutex()APIOpenMutex()API来获得指向对象的句柄;然后,来获得指向对象的句柄;然后,来获得指向对象的句柄;然后,来获得指向对象的句柄;然后,线程将这个句柄提供给一个等待函数。当内核将互线程将这个句柄提供给一个等待函数。当内核将互线程将这个句柄提供给一个等待函数。当内核将互线程将这个
11、句柄提供给一个等待函数。当内核将互斥体对象发送给等待线程时,就表明该线程获得了斥体对象发送给等待线程时,就表明该线程获得了斥体对象发送给等待线程时,就表明该线程获得了斥体对象发送给等待线程时,就表明该线程获得了互斥体的拥有权。当线程获得拥有权时,线程控制互斥体的拥有权。当线程获得拥有权时,线程控制互斥体的拥有权。当线程获得拥有权时,线程控制互斥体的拥有权。当线程获得拥有权时,线程控制了对共享资源的访问了对共享资源的访问了对共享资源的访问了对共享资源的访问必须设法尽快地放弃互斥必须设法尽快地放弃互斥必须设法尽快地放弃互斥必须设法尽快地放弃互斥体。放弃共享资源时需要在该对象上调用体。放弃共享资源时
12、需要在该对象上调用体。放弃共享资源时需要在该对象上调用体。放弃共享资源时需要在该对象上调用ReleaseMute()APIReleaseMute()API。然后系统负责将互斥体拥有权。然后系统负责将互斥体拥有权。然后系统负责将互斥体拥有权。然后系统负责将互斥体拥有权传递给下一个等待着的线程传递给下一个等待着的线程传递给下一个等待着的线程传递给下一个等待着的线程(由到达时间决定顺序由到达时间决定顺序由到达时间决定顺序由到达时间决定顺序)背景知识背景知识在本实验中,通过对事件和互斥体对象的了解,来在本实验中,通过对事件和互斥体对象的了解,来在本实验中,通过对事件和互斥体对象的了解,来在本实验中,通
13、过对事件和互斥体对象的了解,来加深对加深对加深对加深对Windows 2000Windows 2000线程同步的理解。线程同步的理解。线程同步的理解。线程同步的理解。回顾系统进程、线程的有关概念,加深对回顾系统进程、线程的有关概念,加深对回顾系统进程、线程的有关概念,加深对回顾系统进程、线程的有关概念,加深对Windows 2000Windows 2000线程的理解线程的理解线程的理解线程的理解 了解事件和互斥体对象了解事件和互斥体对象了解事件和互斥体对象了解事件和互斥体对象 通过分析实验程序,了解管理事件对象的通过分析实验程序,了解管理事件对象的通过分析实验程序,了解管理事件对象的通过分析实
14、验程序,了解管理事件对象的APIAPI 了解在进程中如何使用事件对象了解在进程中如何使用事件对象了解在进程中如何使用事件对象了解在进程中如何使用事件对象 了解在进程中如何使用互斥体对象了解在进程中如何使用互斥体对象了解在进程中如何使用互斥体对象了解在进程中如何使用互斥体对象 了解父进程创建子进程的程序设计方法了解父进程创建子进程的程序设计方法了解父进程创建子进程的程序设计方法了解父进程创建子进程的程序设计方法实验目的实验目的在开始本实验之前,请回顾教科书的相关内容在开始本实验之前,请回顾教科书的相关内容在开始本实验之前,请回顾教科书的相关内容在开始本实验之前,请回顾教科书的相关内容需要做以下准
15、备需要做以下准备需要做以下准备需要做以下准备 一台运行一台运行一台运行一台运行Windows 2000 ProfessionalWindows 2000 Professional操作系统的计算机操作系统的计算机操作系统的计算机操作系统的计算机 计算机中需安装计算机中需安装计算机中需安装计算机中需安装Visual C+6.0Visual C+6.0专业版或企业版专业版或企业版专业版或企业版专业版或企业版工具工具/准备工作准备工作事件对象事件对象事件对象事件对象互斥体对象互斥体对象互斥体对象互斥体对象 实验内容与步骤实验内容与步骤实验估计时间:实验估计时间:实验估计时间:实验估计时间:120120
16、分钟分钟分钟分钟,难度系数:,难度系数:,难度系数:,难度系数:5 54.2 Windows 2000 线程间的通讯线程间的通讯Windows 2000Windows 2000提供的线程间通讯类内核对象允提供的线程间通讯类内核对象允提供的线程间通讯类内核对象允提供的线程间通讯类内核对象允许同一进程或跨进程的线程之间互相发送信息,许同一进程或跨进程的线程之间互相发送信息,许同一进程或跨进程的线程之间互相发送信息,许同一进程或跨进程的线程之间互相发送信息,包括文件、文件映射、邮件位和命名管道等,包括文件、文件映射、邮件位和命名管道等,包括文件、文件映射、邮件位和命名管道等,包括文件、文件映射、邮件
17、位和命名管道等,其中最常用的是文件和文件映射。这类对象允其中最常用的是文件和文件映射。这类对象允其中最常用的是文件和文件映射。这类对象允其中最常用的是文件和文件映射。这类对象允许一个线程很容易地向同一进程或其他进程中许一个线程很容易地向同一进程或其他进程中许一个线程很容易地向同一进程或其他进程中许一个线程很容易地向同一进程或其他进程中的另一线程发送信息的另一线程发送信息的另一线程发送信息的另一线程发送信息背景知识背景知识文件对象文件对象文件对象文件对象 文件对象是人们所熟悉的永久存储的传统元素。将一个文件对象是人们所熟悉的永久存储的传统元素。将一个文件对象是人们所熟悉的永久存储的传统元素。将一
18、个文件对象是人们所熟悉的永久存储的传统元素。将一个文件看作是内核对象可使开发人员获得比标准文件看作是内核对象可使开发人员获得比标准文件看作是内核对象可使开发人员获得比标准文件看作是内核对象可使开发人员获得比标准C+C+文件文件文件文件操作更为强大的功能操作更为强大的功能操作更为强大的功能操作更为强大的功能 内核允许开发人员在系统设备或网络上创建代表永久存内核允许开发人员在系统设备或网络上创建代表永久存内核允许开发人员在系统设备或网络上创建代表永久存内核允许开发人员在系统设备或网络上创建代表永久存储数据块的文件对象。这些文件对象是对永久存储数据储数据块的文件对象。这些文件对象是对永久存储数据储数
19、据块的文件对象。这些文件对象是对永久存储数据储数据块的文件对象。这些文件对象是对永久存储数据的低级访问者;用的低级访问者;用的低级访问者;用的低级访问者;用C+C+运行库或其他方法打开的所有文运行库或其他方法打开的所有文运行库或其他方法打开的所有文运行库或其他方法打开的所有文件最终都要变成对件最终都要变成对件最终都要变成对件最终都要变成对CreateFile()APICreateFile()API的调用的调用的调用的调用 CreateFile()CreateFile()函数分配一个内核对象来代表一个永久的文函数分配一个内核对象来代表一个永久的文函数分配一个内核对象来代表一个永久的文函数分配一个
20、内核对象来代表一个永久的文件。当在磁盘上创建一个新文件或当打开一个已经存在件。当在磁盘上创建一个新文件或当打开一个已经存在件。当在磁盘上创建一个新文件或当打开一个已经存在件。当在磁盘上创建一个新文件或当打开一个已经存在的文件时,就调用这个的文件时,就调用这个的文件时,就调用这个的文件时,就调用这个APIAPI背景知识背景知识 创建调用比创建事件、互斥体或信号量要复杂。首先必创建调用比创建事件、互斥体或信号量要复杂。首先必创建调用比创建事件、互斥体或信号量要复杂。首先必创建调用比创建事件、互斥体或信号量要复杂。首先必须在须在须在须在lpFilenamelpFilename中指定对象名,并且要指向
21、文件系统中中指定对象名,并且要指向文件系统中中指定对象名,并且要指向文件系统中中指定对象名,并且要指向文件系统中所访问的位置。接着必须用所访问的位置。接着必须用所访问的位置。接着必须用所访问的位置。接着必须用dwDesiredAccessdwDesiredAccess参数提供所参数提供所参数提供所参数提供所需的访问级别需的访问级别需的访问级别需的访问级别 由创建函数要求的共享模式参数由创建函数要求的共享模式参数由创建函数要求的共享模式参数由创建函数要求的共享模式参数dwShareModedwShareMode可以指定可以指定可以指定可以指定当另一进程企图同时访问数据时会发生什么。与所有其当另一
22、进程企图同时访问数据时会发生什么。与所有其当另一进程企图同时访问数据时会发生什么。与所有其当另一进程企图同时访问数据时会发生什么。与所有其他第一级内核对象一样,可以利用他第一级内核对象一样,可以利用他第一级内核对象一样,可以利用他第一级内核对象一样,可以利用lpSecurityAttributeslpSecurityAttributes参数指定所创建对象的安全性。接着,要通过参数指定所创建对象的安全性。接着,要通过参数指定所创建对象的安全性。接着,要通过参数指定所创建对象的安全性。接着,要通过dwCreationDispositiondwCreationDisposition参数告诉创建函数,
23、如果数据在参数告诉创建函数,如果数据在参数告诉创建函数,如果数据在参数告诉创建函数,如果数据在指定的永久存储介质中存在或不存在时的行为指定的永久存储介质中存在或不存在时的行为指定的永久存储介质中存在或不存在时的行为指定的永久存储介质中存在或不存在时的行为背景知识背景知识 可以使用可以使用可以使用可以使用dwFlagsAndAttributesdwFlagsAndAttributes参数来指定文件的属性参数来指定文件的属性参数来指定文件的属性参数来指定文件的属性 (如只读如只读如只读如只读),并确定对数据所执行的读写操作的行为。最,并确定对数据所执行的读写操作的行为。最,并确定对数据所执行的读写
24、操作的行为。最,并确定对数据所执行的读写操作的行为。最后一个参数后一个参数后一个参数后一个参数hTemplateFilehTemplateFile可指定另一个文件对象作为模可指定另一个文件对象作为模可指定另一个文件对象作为模可指定另一个文件对象作为模板,以便为新创建的文件复制属性或扩展属性板,以便为新创建的文件复制属性或扩展属性板,以便为新创建的文件复制属性或扩展属性板,以便为新创建的文件复制属性或扩展属性 Windows 2000Windows 2000系统中包括许多文件对象的工具函数系统中包括许多文件对象的工具函数系统中包括许多文件对象的工具函数系统中包括许多文件对象的工具函数APIAPI
25、 通常可以使用通常可以使用通常可以使用通常可以使用ReadFile()ReadFile()和和和和WriteFile()APIWriteFile()API在永久存储和在永久存储和在永久存储和在永久存储和应用程序间通过文件对象来移动数据。因为创建调用将应用程序间通过文件对象来移动数据。因为创建调用将应用程序间通过文件对象来移动数据。因为创建调用将应用程序间通过文件对象来移动数据。因为创建调用将对象的大多数复杂性封装起来了,这两个函数只是简单对象的大多数复杂性封装起来了,这两个函数只是简单对象的大多数复杂性封装起来了,这两个函数只是简单对象的大多数复杂性封装起来了,这两个函数只是简单地利用指向要交
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 并发 调度
限制150内