大话操作系统之进程与线程
Posted 叁研良语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话操作系统之进程与线程相关的知识,希望对你有一定的参考价值。
本节内容的管程与线程它们之间并没有直接联系,我们放在一起是作为进程管理的补充内容。管程的引入是为了解决进程同步问题。而线程主要是为了解减少并发执行的时间与空间开销。
一、管程的基本概念
利用信号量实现进程同步,大量的同步操作分散在各个进程中使系统管理麻烦,同步操作使用不当会引起死锁,于是我们引入进程同步的工具,管程,用来解决同步与互斥问题。
1. 管程的组成
管程由四部分组成:
(1)管程的名称
(2)局部于管程的共享变量说明
(3)对该数据结构进行操作的一组过程
(4)对管程中数据设置初值的语句
2. 管程的特性
(1) 任何管程外的过程都不能访问管程内的数据结构。管程相当于围墙,将共享变量和对它进行操作的若干过程围了起来,进程只要访问临界资源就必须通过管程。
(2) 管程每次只允许一个进程进入管程,实现了互斥。
(3) 使用信号量的效率比管程高。
(4) 管程结构在一些程序设计语言中得到实现。如并发Pascal和Java,C#等,它还被作为一个程序库实现。
(5) 管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程,改变管程中的数据。
二、线程
进程的引入提高了计算机资源的利用率,在进一步提高进程的并发性时,进程切换开销的比重越来越大,同时进程通信的效率也受到限制。
因此人们开始引入线程—更小的独立运行的基本单位,也叫轻量进程,提高系统内程序的并发程度,提高系统效率,增大系统作业的吞吐量。
1. 什么是线程
我们可以从两个方面来重新理解一下进程。
从运行的角度:代码在这个资源平台上一条执行流程(线程)。线程是处理机调度中最接近硬件的部分,是最低级的调度。
因而,线程,简单的来说可以理解为进程当中的一条执行流程。
2. 线程的基本概念
线程的属性:
(1)共享进程资源。
(2)轻型实体
每个线程只拥有少量资源:
1、线程标识符
2、线程控制块TCB。TCB用于保存PC,一组寄存器(存放少数状态参数)
4、用于存放线程局部变量和用户栈的私有存储区
(3)线程是处理机调度的单位区别于进程是资源分配的单位
(4)线程可并发执行
3.线程的优缺点
线程的优点:
一个进程中可以同时存在多个线程;
各个线程之间可以并发地执行;
线程的创建和终止时间比进程短;
各个线程之间可以共享内存和文件资源,因此可进行直接通信而不需要通过OS的内核。
线程的缺点:
一个线程崩溃,会导致其所属进程的所有线程崩溃
4.进程与线程的比较
他们有一比较形象的公式比较:线程 = 进程 — 共享资源
具体的区别如下表总结
进程 |
线程 |
多线程系统中进程是资源分配的单位 |
线程是处理机调度单位,只拥有必不可少的资源,如:线程状态、寄存器上下文和栈。 |
进程的引入提高了计算机资源的利用率,但大量进程并发执行,进程切换开销大 |
线程减少了并发执行的时间和空间开销 |
进程间通信复杂 |
线程间可以直接读写进程数据段来进行通信, 需要进程同步和互斥手段的辅助,以保证数据的一致性 |
就绪、阻塞和执行三种基本状态 |
就绪、阻塞和执行三种基本状态 |
5.操作系统对线程的支持
用户级线程 |
内核线程 |
仅存在于用户空间中,线程使用无需内核的支持 |
由OS支持,无论是用户进程中的线程,还是系统进程中的线程,其创建、撤销和切换等,都是依靠内核实现的。 |
应用进程利用线程库函数来控制用户线程。调度由应用软件内部进行,采用非抢先式和更简单的规则,无需用户态/核心态切换,速度快 |
线程的创建和管理慢于用户级线程。 |
一个线程发起系统调用而阻塞,则整个进程都要等待。 |
一个线程执行了阻塞系统调用,整个进程不会阻塞。能在多处理机上并行执行。 |
时间片分配给进程,进程内有多线程时,则每个线程执行时间相对就少。 |
6. 多线程模型
许多系统都提供对内核和用户线程的支持。因而有不同的多线程模型:
(1)多对一模型
多个用户级线程对应一个内核线程。
线程管理是在用户空间进行的,效率高。
如果一个线程执行了阻塞系统调用,那么整个进程阻塞,因为任一时刻只有一个线程能访问内核。多个线程不能并行运行在多处理机上。
(2)一对一模型
每个用户级线程都对应一个内核线程。
如果一个线程执行了阻塞系统调用,能允许另一个线程继续执行,具有较好的并发性,多个线程能并行运行在多处理机上。
缺点:创建一个用户线程,系统就要创建一个对应的内核线程,创建内核线程的开销会影响应用程序的性能,因而限制了系统所支持的线程数量。
(3)多对多模型
将多个用户线程多路复用到同样数量或更小数量的内核线程上。
内核线程的数量与特定应用程序或特定机器有关。
允许操作系统根据资源配置情况控制创建内核线程的数目
以上是关于大话操作系统之进程与线程的主要内容,如果未能解决你的问题,请参考以下文章