大话操作系统之进程与线程

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)多对多模型

    将多个用户线程多路复用到同样数量或更小数量的内核线程上。

    内核线程的数量与特定应用程序或特定机器有关。

    允许操作系统根据资源配置情况控制创建内核线程的数目 


以上是关于大话操作系统之进程与线程的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]编程思想之多线程与多进程——以操作系统的角度述说线程与进程

编程思想之多线程与多进程:以操作系统的角度述说线程与进程

1.多线程学习笔记之进程与线程的概念

6Python全栈之路系列之线程与进程

Linux进阶之进程与线程

编程思想之多线程与多进程——Java中的多线程