进程、线程和管程
这是三个看起来似乎比较容易混淆的概念,所以在复习的时候一定要牢记其定义和相互之间的区别。
*进程
进程是一个可并发执行的程序在一个数据集合上的运行过程。也就是说,它是运行中的程序,是程序的一次运行活动。在操作系统中,进程是进行系统资源分配、调度和管理的最小单位。
*线程
对于一些多线程程序来讲,其包含两条或两条以上并发运行的部分,每个部分就称作一个线程,每个线程都有独立的执行路径。线程是处理器分配资源的最小单位。
*管程
管程是一种并发性的构造,它包括用于分配一个共享资源或一组共享资源的数据和过程。为了完成分配资源的功能,进程必须调用特定的管程入口。
操作系统中,多任务处理一般有两种方式:基于进程和基于线程。基于进程的多任务处理的特点是允许计算机同时运行两个或更多的程序。而基于线程的多任务处理是指一个程序可以同时执行两个或者多个任务的功能。
多线程程序比多进程程序需要更少的管理费用。进程是重量级的任务,需要分配它们自己独立的地址空间。进程间的通信和相互转换需要很多的开销。而线程是轻量级的任务,它们共享相同的地址空间并且分享同一个进程。线程间的通信和转换开销要小很多。
二、信号量处理:
信号量和P-V操作
为了解决进程同步的问题,提出了信号量机制。这一机制取得了很大的发展,从整型信号量到记录型信号量,再进而发展为“信号量集”机制。不过,在原理上和考试中,一般我们都只涉及整型信号量机制。
对于互斥临界区的管理要求:
n 有空则进
n 无空等待
n 两者择一
n 有先等待
在整型信号量机制中,信号量被定义为一个整型变量,除初始化外,仅能通过两个标准的原子操作wait(s)和signal(s)来访问。其通常被分别称作P、V操作。描述如下:
P操作
I. S-1→S
II. 如果S<0,则该进程进入等待状态;否则继续进行
V操作
I. S+1→S
II. 如果S≥0,则唤醒队列中的一个等待进程
进程互斥的情况初值是1,而同步的初值是0
进程同步的问题相对来说是比较复杂的,这其中一些比较经典的进程同步问题,如:
*生产者—消费者问题
*读者—写者问题
*哲学家进餐问题
三、各种调度算法:
操作系统中,涉及到的调度比较多,如进程调度、作业调度、磁盘调度等。但是其调度算法的原理都大致相同。进程调度是比较典型的一类调度,其调度算法较多。包括:
*先来先服务
*优先数调度
*轮转法
*短作业优先
通过对这些调度算法的复习,对我们掌握其他种类调度的调度算法也会很有帮助。
例题: 一台 PC 计算机系统启动时,首先执行的是__(42)__,然后加载__(43)__。在设备管理中,虚拟设备的引入和实现是为了充分利用设备,提高系统效率,采用__(44)__来模拟低速设备(输入机或打印机)的工作。
例题:设有 7 项任务,分别标记为 a、b、c、d、c、f 和 g,需要若干台机器以并行工作方式来完成,它们执行的开始时间和完成时间如下表所示:
信号量例题:
在某超市里有一个收银员,且同时最多允许有n个顾客购物,我们可以将顾客和收银员看成是两类不同的进程,且工作流程如下图所示。为了利用PV操作正确地协调这两类进程之间的工作,设置了三个信号量S1、S2和Sn,且初值分别为0、0和n。这样图中的a应填写__C__,图中的b1、b2应分别填写__D_,图中的c1、c2应分别填写__A。 (操作系统)?
分享到:
相关推荐
某网络系统有N个工作线程和1个调度服务进程,作线 星初始化时 守候队列中等待;当用户请求到达时,由服务进程唤醒工作线程执;若工线程守候队列为空则则检查请求等待队列是否已满(最多可存放M个用户请求),未满则将...
进程和线程 本章主要讲述了操作系统中进程和线程的概念、特征、状态转换、管理、同步和互斥、通信等方面的知识。 一、进程概念 进程是程序的一次执行过程,具有动态性、并发性、调度性和异步性四个基本特征。进程...
临界区是访问临界资源的代码段,而管程是一种高级同步机制,提供数据结构和相关操作,帮助进程同步和管理共享资源。 进程控制块(PCB)是操作系统维护进程状态的关键数据结构,包含进程的所有相关信息。原语是操作...
- **线程管理**:线程的创建、销毁、同步与通信机制(如互斥量、信号量、条件变量、管程等),以及线程安全问题和临界区的概念。 - **内存管理**:理解虚拟内存、分页、分段、页表、地址映射等概念,以及内存的分配...
9. **试题解析**:资料中的试题可能涉及对进程线程的理解、同步互斥的实现、死锁的预防与检测,以及多线程编程的实际应用等,通过解答这些题目可以巩固理论知识并提高实践能力。 华清的这份资料结合代码实例和试题...
总结来说,要在C语言和Linux环境下使用管程的概念来实现子进程和父进程的互斥访问,我们可以利用信号量或互斥锁作为基础工具,构建出类似管程的逻辑,从而保证并发环境下的数据一致性。这不仅涉及到进程同步的基本...
本章主要介绍操作系统中的进程和线程概念,详细讲解了进程的概念、特征、状态和组成,线程的概念和实现,以及进程的同步和互斥、经典进程同步问题、管程、进程通信、信号机制、客户-服务器系统中的通信等重要知识点...
在操作系统中,线程和进程是执行程序的基本单位。它们在多任务环境下并行运行,使得计算机能够同时处理多个任务。然而,线程和进程之间的交互可能会引发一些问题,如同步和互斥,这两个概念是并发编程中的核心概念。...
某网络系统有N个工作线程和1个调度服务进程,作线 星初始化时 守候队列中等待;当用户请求到达时,由服务进程唤醒工作线程执;若工线程守候队列为空则则检查请求等待队列是否已满(最多可存放M个用户请求),未满则将...
常见的进程同步工具包括信号量(Semaphore)、管程(Monitor)和消息传递等。 **线程同步**: 线程是进程中执行的单一顺序控制流,线程同步是针对同一进程中的多个线程。在同一进程中,线程间共享内存,使得线程...
3. **管程(Monitor)**:通过wait()和notify()方法实现线程间通信,保证线程安全。 4. **信号量(Semaphore)**:控制同时访问特定资源的线程数量,可以用来解决限流问题。 **互斥锁** 互斥锁是一种同步机制,确保...
管程,作为一种高级同步构造,由P.B.Hansen和C.A.R.Hoare等人提出,旨在集中管理进程的临界区,以数据结构抽象共享资源,并通过管程结构确保同一时间只有一个进程在管程内执行,实现了互斥。然而,管程本身并不直接...
线程是进程内的执行单元,轻量级进程,共享进程的资源,但有自己的栈和局部变量。管程是并发控制的软件结构,用于管理公共资源,解决并发进程的同步和互斥问题。实现管程需要解决创建、销毁和调度等问题。进程通信是...
- **局部数据**:管程内的共享变量对外部进程不可见,只能通过管程内部的过程进行访问和修改。 - **互斥进入**:一次只有一个进程可以在管程内执行,其他请求进入的进程会被阻塞,直到当前活动进程退出或阻塞。 - **...
允许多个Reader进程(或线程)同时读一个共享对象,不允许一个Writer进程(或线程)和其他Reader进程(或线程)或者Writer进程(或线程)同时访问共享对象。所谓读者—写者问题是指保证一个Writer(或线程)进程必须...
【管程】是计算机科学中一种高级的同步机制,它由1973年Brinch Hansen在Pascal编程语言中首次引入,旨在简化进程互斥和同步的编程难度,从而减少因错误的PV操作顺序导致的死锁问题。管程通过提供一种结构化的环境来...
本教程将深入讲解Java线程的相关知识,包括进程与线程的基本概念、线程的创建和启动、多线程的互斥与同步、线程状态和线程控制以及死锁的概念。 首先,我们要理解进程与线程的区别。进程是操作系统资源分配的基本...
4. **管程(Monitor)**:Java中的`synchronized`关键字和`wait()`, `notify()`, `notifyAll()`方法其实就是一个简单的管程实现,它提供了线程安全的共享数据访问。 5. **事件(Event)**:Java的`java.util....
在现代操作系统中,进程和线程是实现并发执行和资源共享的关键抽象。本章主要探讨了以下几个方面: 1. **进程的概念**: - **并发执行**:多道程序设计允许多个程序同时在内存中,并通过处理器的快速切换在宏观上...
- **线程**:是进程内的一个执行单元,同一进程内的多个线程共享进程的地址空间和资源,如内存和文件描述符。 2. **资源分配**: - 进程:拥有独立的地址空间和资源。 - 线程:共享同一进程的资源,包括内存空间...