进程与线程概念

进程的定义

进程是指一个具有一定独立功能的程序,在一个数据集合上的一次动态执行过程。

如下图所示,源代码文件经过编译链接形成可执行文件,将可执行文件加载进内存进行执行。为什么要加载进内存呢?这是因为负责解析和运行程序的CPU需要通过内部的程序计数器来指定内存地址,然后才能读出程序;并且,加载进内存,能对数据进行处理,让程序能够运行。那CPU不能直接读取外部磁盘的数据和程序吗?可以。但是访问磁盘的速度远远低于访问内存,速度很慢。
这里写图片描述
进程就体现了,计算机在执行程序,处理数据时,操作系统是如何对这个过程进行维护的。

进程包含了正在运行的一个程序的所有状态信息:
代码;数据;通用寄存器;进程占用系统资源(打开文件,已分配内存等), 组成进程控制块。

进程的特点
动态性:可动态的创建,结束进程
并发性:进程可以被独立调度并占用CPU
独立性:不同进程的工作互不影响
制约性:因访问共享数据/资源或进程间同步而产生制约

进程是操作系统中处于执行状态程序的抽象。
程序 = 文件(静态的可执行文件)
进程 = 执行中的程序 = 程序 + 执行状态
同一个程序的多次执行过程对应为不同的进程。

进程执行需要的资源:
内存,CPU

进程与程序的区别:
进程的动态的,程序是静态的
进程是暂时的,程序是永久的
进程与程序的组成不同,进程包括程序,数据和进程控制块

进程控制块:(PCB,process control block)?
操作系统管理控制进程运行所用的信息集合。
操作系统用PCB来描述进程的基本情况以及运行变化的过程
PCB是进程存在的唯一标识(每个进程在操作系统中都有一个对应的PCB)

进程创建时生成PCB,进程中止时回收PCB,进程的组织管理通过对PCB的组织管理来实现。

PCB具体包含了哪些信息呢?
进程标识信息,处理机现场保护,进程控制信息
(PC,SP,寄存器,PID,UID,调度优先级,打开文件列表)
控制信息:
调度和状态信息(调度进程和处理机使用情况)
进程间通信信息(进程间通信相关的标识)
存储管理信息(指向进程映像存储空间数据结构)
进程所用资源(进程使用的系统资源,如打开的文件等)
有关数据结构连接信息(与PCB相关的进程队列)

怎么组织进程控制块?
链表;索引表。。
链表:同一状态的进程PCB组成一个链表,多个状态对应不同的链表(就绪链表,阻塞链表。。。)
索引表:同一状态的进程归入一个索引表(由索引指向PCB)多个状态对应多个不同的索引表(指向PCB的指针放入表中)

进程的生命周期:
进程创建,进程执行,进程等待,进程抢占,进程唤醒,进程结束

进程状态转换:
(三状态进程模型)
这里写图片描述
(挂起进程模型)

处于挂起状态的进程映像在磁盘上,目的是减少进程占用内存。
这里写图片描述

线程

为啥会有线程这种东西?
因为有并发进行并且共享数据的这种需求;进程不能满足这种需求吗?进程可以!但是进程来做这样的事情的话,它的开销很大(创建进程,进程结束,进程切换… …)。
多线程的解决思路:
在进程内部增加一类实体,满足以下特性:(1)实体之间可以并发执行 (2)实体之间共享相同的地址空间

线程的概念:

线程是进程的一部分,描述指令流执行状态。它是进程中的指令执行流的最小单位,是CPU调度的基本单位。
这个时候,进程就是资源分配的角色:进程由一组相关资源构成,包括地址空间(代码段,数据段),打开的文件等资源
这里写图片描述
线程 = 进程 - 共享资源
线程优点:1.一个进程中可以同时存在多个线程。2.各个线程之间可以并发的执行。3.各个线程之间可以共享地址空间和文件等资源
线程缺点:一个线程崩溃,会导致其所属进程的所有线程崩溃

线程与进程比较:
进程是资源分配单位,线程是CPU调度单位
进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈
线程具有就绪,等待和运行三种基本状态和状态间转换关系
线程能减少并发执行的时间和空间开销:线程的创建时间比进程短;线程的终止时间比进程短;同一进程内的线程切换时间比进程短;由于同一进程的各线程间共享内存各文件资源,可以不通过内核进行直接通信

线程的实现方式:
1.用户线程:在用户空间实现
POSIX Pthreads,Mach C-threads,Solaris threads
由一组用户级的线程库函数来完成线程的管理,包括线程的创建,终止,同步和调度等
特征:不依赖于操作系统内核(内核不了解用户线程的存在;可用于不支持线程的多进程操作系统)。在用户空间实现的线程机制(每个进程有私有的线程控制块列表;TCB由线程库函数维护)。同一进程内的用户线程切换速度快(无需用户态/内核态的切换)。允许每个进程拥有自己的线程调度算法
缺点:线程发起系统调用而阻塞时,整个进程进入等待;不支持基于线程的处理机抢占;只能按进程分配CPU时间
2.内核线程:在内核中实现
Windows,Solaris,Linux
进程由内核通过系统调用实现的线程机制,由内核完成线程的创建,终止和管理(内核中PCB中有指针指向线程控制块TCB)
特征:由内核维护PCB和TCB。线程执行系统调用而被阻塞不影响其他线程。线程的创建,终止和切换开销相对较大(通过系统调用/内核函数,在内核实现)。以线程为单位进行CPU时间分配(多线程的进程可获得更多的CPU时间)
3.轻量级进程:在内核中实现,支持用户线程
Solaris (LightWeight Process)
内核支持的用户线程。一个进程可有一个或多个轻量级进程,每个轻权进程由一个单独的内核线程来支持(Solaris/Linux)

用户线程与内核线程的对应关系:
1.N个用户线程对应N个内核线程;2.N个用户线程对应一个内核线程;3.N个用户线程对应M个内核线程
三种当中,现在的操作系统以第一种为主。

  • 24
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值