进程和线程关系

进程是系统进行资源分配的基本单位,有独立的内存地址空间;
线程是CPU调度的基本单位,没有单独地址空间,有独立的栈,局部变量,寄存器,程序计数器等

只有进程有自己的 address space,而这个 space 中经过合法申请的部分叫做 process space。Process space 之外的地址都是非法地址。

当一个线程向非法地址读取或者写入,无法确认这个操作是否会影响同一进程中的其它线程,所以只能是整个进程一起崩溃。

 

现代操作系统对于线程的支持方式不同,导致题主的问题在不同的操作系统下有不同的结果。
所谓现代的操作系统,是指支持多用户,支持并行处理的操作系统。鉴于此因,操作系统一般都设计成支持两种工作模式,user mode和kernel mode,这两种模式相互隔绝无法直接访问,避免用户程序对于底层资源的直接访问,通过system call的调用实现交互目的,从而实现操作系统对资源分配的公平和系统的高效率。
对于linux而言,其对线程的支持是在user mode内实现的,而linux的scheduler(任务调度器)却是工作在kernel mode的,对于linux的job scheduler而言,他的调度对象还是进程,线程这个概念对他而言是透明的。就像一个大公司的老板,他的管理单元是部门,不会细究部门内某个人的事情。所以,对于题主的问题在linux下,线程异常退出的结果就是其父进程也跟着退出,即使这个线程的父进程下的其他多个兄弟线程都工作正常。我们在平常的工作中应该经常遇到过由于某个java线程异常退出而导致整个tomcat进程重启或退出,就是由于这个原因。

而信奉扁平式管理的fans MS windows(win 2000?以后)以后及SUN的solaris 8(?)以后版本,他们的scheduler是可以直接对线程操作的,他们不仅像linux一样,为每一个进程维护相应的PCB(process control block),针对线程还维护了一套相应的Thread Control Block - TCB, 以实现context switch。 solaris甚至突破了一个进程调用多个线程的思路,衍生了多个进程对应更多个线程执行同一个任务的实现方式。在这种情况下是可以出现某个线程异常退出,但是没有影响其父进程和其他兄弟线程的工作状态的情况发生。

 https://www.zhihu.com/question/22397613

时间: 2024-08-02 19:23:08

进程和线程关系的相关文章

进程与线程的关系和区别 CPU调度简介

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同步.

CPU进程与线程的关系和区别

  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同

进程和线程的区别和关系

问题描述 进程和线程的区别和关系 进程和线程的区别和关系,网上和书上说的都很专业,不是很好理解. 解决方案 进程:一个正在运行的程序就叫一个进程 比如说手机打开的一个应用就是一个进程 多进程:多个程序同时运行 叫多进程 比如手机同时打开这多个程序 听着歌上着QQ 线程:一个程序 或者说 一个进程 都会有一个 或多个线程 比如说听歌 你进应用之后一直在点击听歌 更换模式这些按钮 处理你点击按钮产生的作用的就是线程 你能看见的都是操作都是主线程在完成 你看不见的比如你虽然在听歌 但是歌曲也正在缓存这

1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点

 1线程概念 1.1什么是线程 1.1.2线程和进程的关系         1.轻量级进程(light-weightprocess),也有PCB,创建线程使用底层函数和进程一样,都是clone. 2.从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表示相同的 3.进程可以蜕变成线程 4.在美国人眼里,线程就是寄存器和栈 5.在Linux下,线程是最小的执行单位:进程是最小的分配资源的单位   查看LWP号(通过这个命令可以查看到线程号),命令是: ps –

Java中的进程与线程的实现

概述 进程与线程,本质意义上说, 是操作系统的调度单位,可以看成是一种操作系统 "资源" .Java 作为与 平台无关的编程语言,必然会对底层(操作系统)提供的功能进行进一步的封装,以平台无关的编程接口供程序员使用,进 程与线程作为操作系统核心概念的一部分无疑亦是如此.在 Java 语言中,对进程和线程的封装,分别提供了 Process 和 Thread 相关的一些类.本文首先简单的介绍如何使用这些类来创建进程和线程,然后着重介绍这些类是如何和操作系统本 地进程线程相对应的,给出了 J

MFC教程(9)-- MFC的进程和线程(1)

MFC定义了多种状态信息,这里要介绍的是模块状态.进程状态.线程状态.这些状态可以组合在一起,例如MFC句柄映射就是模块和线程局部有效的,属于模块-线程状态的一部分. 模块状态 这里模块的含义是:一个可执行的程序或者一个使用MFC DLL的DLL,比如一个OLE控件就是一个模块. 一个应用程序的每一个模块都有一个状态,模块状态包括这样一些信息:用来加载资源的 Windows实例句柄.指向当前CWinApp或者CWinThread对象的指针.OLE模块的引用计数.Windows对象与相应的MFC对

Linux多任务编程(一) 任务、进程、线程

Linux下多任务介绍 首先,先简单的介绍一下什么叫多任务系统?任务.进程.线程分别是什么? 它们之间的区别是什么?,从而可以宏观的了解一下这三者,然后再针对每一个仔细的讲解. 什么叫 多任务系统?多任务系统指可以同一时间内运行多个应用程序,每个应用程序被称作一个任务. 任务 定义:任务是一个逻辑概念,指由一个软件完成的任务,或者是一系列共同达到某一目的的操作. 进程 定义:进程是指一个具有独立功能的程序在某个数据集上的一次动态执行过程,它是系统进行资源分配和调度 的最小单元. 线程定义:线程是

Linux进程和线程的基础与管理

  一.进程的基本概念 程序是为了完成某种任务而设计的软件,比如vi是程序.什么是进程呢? 进程就是运行中的程序.一个运行着程序,可能有多个进程.比如Web服务器是Apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户同时请求httpd,Apache服务器将会创建多个httpd进程来对其进行服务. 首先我们看看进程的定义.进程是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序.进程作为构成系统的基本细胞,不仅是系统内部独立运行

我有点不太懂,进程和线程的有什么样的区别?

问题描述 我有点不太懂,进程和线程的有什么样的区别?还请哪为大虾帮帮忙.... 解决方案 解决方案二:进程包含线程解决方案三:那么懒,自己不会baidu?解决方案四:线程可以说是进程的最小组成单位.通俗的说法解决方案五:进程可以理解为一个物理概念,它里面包含了该程序要执行所需的资源,而线程是用来执行进程的,一个进程里面最少有一个线程,但也可以有很多线程解决方案六:一对多的关系吧解决方案七:如果想深入学习进程和线程的话,可以看操作系统方面的书解决方案八:线程是一种操作系统对象,代表着一个进程中要被