进程与线程(1)-基本概念

进程与线程



参考链接: http://python.jobbole.com/87760/

从下面几个方面解析进程与线程:

  • 单核CPU是怎么执行多任务的?

操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。

  • 什么是真正的并行执行任务?

真正的并行执行多任务只能再多核CPU上实现。但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

  • 什么是进程?

对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。

  • 什么是线程?

有些进程不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。

  • 由于每个进程至少要干一件事,所以,一个进程至少有一个线程。同时,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。
  • 进程与线程的区别?

  1. 进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径
  2. 进程是系统资源分配的单位;线程是系统调度的单位
  3. 进程之间不能共享资源;线程共享所在的进程的地址空间和其他资源
  4. 进程拥有自己独立的地址空间(一个进程崩溃后,在保护模式下不会对其他进程产生影响);而线程没有,线程必须依赖于进程而存在,线程有自己的堆栈和局部变量,线程之间没有独立的地址空间,线程之间共享地址空间(一个线程死掉就等于整个进程死掉)。因此,多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率差一些。

原文地址:https://www.cnblogs.com/sunshine-blog/p/10072331.html

时间: 2024-10-09 05:12:23

进程与线程(1)-基本概念的相关文章

Linux 下进程与线程的基本概念

2019-10-01 关键字:进程.线程.信号量.互斥锁 什么是程序? 程序就是存放在磁盘上的指令和数据的有序集合,就是源代码编译产物. 它是静态的. 什么是进程? 进程就是操作系统为执行某个程序所分配的资源的总称.进程是程序的一次执行过程,因此它与程序不同,它是动态的.它的生命周期包括创建.调度.执行和消亡. 进程的内容主要包括以下三个部分: 1.正文段: 2.用户数据段: 3.系统数据段. 其中正文段与用户数据段两部分是从程序当中来的.而系统数据段则是操作系统分配的用来管理这个进程用的. 系

进程和线程之间的概念以及多线程的优点

进程: 进程可以理解为一个正在运行的程序,每一个运行的程序都是一个进程. 线程: 线程可以为在进程中运行的子任务,一个进程可以有N个线程(N <= 1). 多线程的优点: 举个例子,一个人两天可以完成的刚工作(一条线程工作两天),那么两个人一天就可以完成了(两条线程工作一条).很明显,工作效率翻倍,下面画个图,可以看一下: 当然这只是在广义上的讲解,其实底层的CPU的运行也是单线程的,只不过如果一个程序是多线程的话,CPU会以非常快的速度在不同线程之间来回切换,让人误以为是多线程. 原文地址:h

有关进程和线程的小概念

# 1.线程与进程的区别是什么?(怎么理解怎么写)'''进程是程序运行的状态和过程.进程会占用内存中的一块空间,消耗资源.每个进程最少会有一个线程(主线程),可以有多个线程.pyyhon在运行的过程中最多只能有一个线程调用CPU资源,那是因为在每个进程前面有GIL全局解释器锁.多个线程通过全局解释器锁是靠操作系统分配的,同一时刻只能有一个线程获得CPU资源 ,如果该线程遇到IO操作,操作系统会将CPU分配给别的线程做运算,直到该线程IO操作结束继续计算.如果多线程计算过程调用了全局变量就需要注意

进程 、线程的基本概念

19 多线程 ①基础 什么是进程 · 进程是指在系统中正在运行的一个应用程序 · 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 · +什么是线程 · 1个进程想要执行任务,必须得有线程(每一个进程至少要有一条线程) · 一个进程(程序)的所有任务都在线程中执行 · 线程的串行 · 一个线程中的任务执行是串行的 ? 如果要在一个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务 ? 也就是说,同一时间内,一个线程只能执行一个任务 ? 也可是说线程是进程中的执行路径 什么是

全面理解进程和线程的概念、区别和联系

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 进程与线程的一个简单解释 在这个简单易懂的类比下,了解一下进程和线程的宏观概念: 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空间,即进程空间或(虚空间).进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216

进程与线程浅析(一)

首先,介绍一下两者的基本概念. 进程:1.程序或者说任务的执行过程.(动态性) 2.持有资源(共享内存,文件)和线程(是资源和线程的载体) 线程:1.线程是系统中最小的执行单元 2.同一个进程中可以有多个线程 3.线程共享进程的资源 综上,进程和线程的关系可以类比为班级和学生的关系,学生是组成该班级的最小单元,班级是学生的载体,学生可以利用该班级的资源,比如桌椅板凳等. 其次,介绍一下线程的交互. 线程之间的关系可以分为两种,互斥与同步. 互斥:即线程对相同的资源进行持有,则必须等前一个线程释放

任务、进程和线程

http://www.cnblogs.com/duguguiyu/archive/2010/02/22/1671547.html 任务.进程和线程 关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的. Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多

android 中 任务、进程和线程的区别

任务.进程和线程 关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的. Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家更好的进行开发和配置. 任务 在SDK中关于Task(guide/topics/fu

Android任务、进程和线程

任务.进程和线程    关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的.Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家更好的进行开发和配置. 任务    在SDK中关于Task(guide/topi

理解Linux的进程,线程,PID,LWP,TID,TGID

在Linux的top和ps命令中,默认看到最多的是pid (process ID),也许你也能看到lwp (thread ID)和tgid (thread group ID for the thread group leader)等等,而在Linux库函数和系统调用里也许你注意到了pthread id和tid等等.还有更多的ID,比如pgrp (process group ID), sid (session ID for the session leader)和 tpgid (tty proce