美文网首页
操作系统--进程和线程、协程

操作系统--进程和线程、协程

作者: LittleTrue | 来源:发表于2018-10-06 18:18 被阅读0次

操作系统(OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。其主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。

进程的定义:

1)进程是程序的一次执行

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

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


线程的定义:

线程是操作系统可识别的最小执行和调度单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。

假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。

线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性

引入线程的好处

(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。


进程与线程:

1)进程是基本资源分配单位,而线程是基本调度和执行单位;线程不拥有系统资源,但线程可以访问所属进程的资源。

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

3)进程之间可以并发执行,同一进程内的多个线程也可以并发执行。

4)创建和撤销进程的系统开销远大于创建和撤销线程的系统开销。

5)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。

注意:

不同进程的线程间可以利用消息通信的办法实现同步。
数据段中(全局变量和静态变量)是指在开辟进程时创建的, 不一定是指类中的全局和静态变量。


协程:

协程是一种用户态的轻量级线程,又称微线程,英文名Coroutine,本质上还是一个线程, 拥有线程的共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。协程的调度完全由用户控制。人们通常将协程和子程序(函数)比较着理解。

子程序调用总是一个入口,一次返回,一旦退出即完成了子程序的执行。
协程的起始处是第一个入口点,在协程里,返回点之后是接下来的入口点。在python中,协程可以通过yield来调用其它协程。通过yield方式转移执行权的协程之间不是调用者与被调用者的关系,而是彼此对称、平等的,通过相互协作共同完成任务。其运行的大致流程如下:

  • 第一步,协程A开始执行。
  • 第二步,协程A执行到一半,进入暂停,通过yield命令将执行权转移到协程B。
  • 第三步,(一段时间后)协程B交还执行权。
  • 第四步,协程A恢复执行。1234

协程的特点在于是一个线程执行,与多线程相比,其优势体现在:

协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
由于是程序自身控制, 所以协程不需要多线程的锁机制。在协程中控制共享资源不加锁,只需要判断状态就好了。

相关文章

  • GO学习笔记(18) - 并发编程(1) - 理解gorouti

    目录 进程、线程与协程 并发模模型介绍 GO并发编程介绍 进程、线程与协程 进程和线程 进程是程序在操作系统中的一...

  • Go 协程调度的个人理解

    1.1 协程与进程的区别 首先,我理解的操作系统调度等级为 进程 —— 线程 —— 协程。其中进程和线程的区别是本...

  • 理解协程

    一、进程、线程、协程的区别 进程:操作系统中分配资源的基本单位 线程:操作系统中调度资源的基本单位 协程:比线程更...

  • 线程和Unity协程

    进程、线程、协程 线程thread和进程process是操作系统层的概念,是操作系统以一定的策略分配cpu资源来模...

  • Python中的进程、线程和协程

    前言: 进程和线程对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。 协程(Coroutines)是...

  • 协程

    1.概念协程/纤程, 从概念上讲,属于 语言层面的支持,操作系统本身仅仅支持 进程和线程的概念,进程是操作系统进行...

  • Python - 进程、线程与协程

    Python - 高级教程 - 进程、线程与协程 进程与线程 在操作系统中,每一个独立运行的程序,都占有 操作系统...

  • 2018-05-08

    线程、进程、协程的区别 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。 线程拥有自己独立的...

  • unity 进程和协程原理与线程的区别(转)

    说到协程,我们首先回顾以下线程与进程这两个概念。在操作系统(os)级别,有进程(process)和线程(threa...

  • Python Asyncio

    大纲 操作系统任务调度 进程、线程 协程 Asyncio4.1 定义一个协程(Coroutine)4.2 定义一个...

网友评论

      本文标题:操作系统--进程和线程、协程

      本文链接:https://www.haomeiwen.com/subject/ojmhaftx.html