进程和线程

并发和并行

并发和并行的区别

意思不同

  • 并发:并发是指两个或多个事件在同一时间间隔发生。

  • 并行:并行是指两个或者多个事件在同一时刻发生。

侧重不同

  • 并发:并发侧重于在同一实体上。

  • 并行:并行侧重于在不同实体上。

处理不同

  • 并发:并发在一台处理器上“同时”处理多个任务。

  • 并行:并行在多台处理器上同时处理多个任务。

程序和进程

  • 程序:存放在磁盘上的可执行文件。

  • 进程:运行在内存中的程序的执行实例。

程序和进程的区别

  • 程序是静态的,而进程是动态的。

  • 程序是永久的,而进程是暂时存在的。

  • 进程是程序的一次执行,而进程总是对应至少一个特定的程序。

进程

进程的定义

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础

  • 进程是程序的一次执行过程。

  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单元。

进程的本质:PCB(Process Control Block,进程控制块),每一个PCB对象就代表着一个实实在在运行着的程序,也就是进程。

PCB中包含了:

  • PID:进程ID,是进程的唯一身份标识,但是它不是固定不变的,是每次启动进程时动态分配的。

  • 进程状态:①新建状态(NEW) ②就绪状态 ③运行状态 ④阻塞状态 ⑤销毁状态

  • 优先级:决定进程的执行顺序

  • 记账信息:保证进程执行的公平性,它记录CPU调用次数和执行间隔,为进程调度器提供数据支持,规避进程饿死。

  • 上下文信息:保存本次的执行状态,以便下次执行。

  • 一组内存:指定进程需要使用的资源

进程的特征

  • 动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。

  • 并发性:指多个进程实体同时存于内存中,能在一段时间内同时运行。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。

  • 独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单元。凡未建立PCB的程序都不能作为一个独立的单元参与运行。

  • 异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。

  • 结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。

进程的调度机制

时间片轮转,上下文切换。

进程的状态和转换

进程全部可分为五种状态分别是:创建状态、就绪状态、运行状态、阻塞状态、终止状态。在运行期间主要是三种状态:就绪、运行、阻塞状态。

  1. 创建状态:进程正在被创建,尚未转到就绪状态。创建进程通常需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息,然后由系统为该进程分配运行时所必须的资源,最后把该进程转入就绪状态。

  2. 就绪状态:进程获得了除处理机外的一切所需资源,一旦得到处理机,便可立即运行。系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,成为就绪队列。

  3. 运行状态:进程正在处理机上运行。在单机处理机环境下,每个时刻最多只有一个进程处于运行状态。

  4. 阻塞状态:又称等待状态。进程正在等待某一事件而暂定运行,如等待某资源为可用或等待输入/输出完成。即使处理机空闲,该进程也不能运行。

  5. 终止状态:进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行。进程需要结束运行时,系统首先必须置该进程为终止状态,然后再进一步处理资源释放和回收等工作。

进程状态转换图:
进程状态转换图

进程间的通信方式

  • 管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

  • 消息队列(message queue):消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。

  • 共享内存(shared memory):可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

  • 信号量(semaphore):主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。

  • 信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。

  • 套接字(socket):这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

线程

线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。

进程和线程

进程和线程的关系

  • 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源。

  • 处理机分给线程,即真正在处理机上运行的是线程。

  • 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

进程与线程的区别

  • 根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。

  • 从属关系不同:进程中包含了线程,线程属于进程。

  • 开销不同:进程的创建、销毁和切换的开销都远大于线程。

  • 拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。

  • 控制和影响能力不同:子进程无法影响父进程,而子线程可以影响父线程,如果主线程发生异常会影响其所在进程和子线程。

  • CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。

  • 操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。

互斥和同步

互斥和同步的区别

  • 互斥:是指散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。

  • 同步:是指散布在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。

互斥和同步的联系

同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要按照某种次序来运行相应的线程(也是一种互斥)。

  • 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

  • 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值