美文网首页
另一篇进程与线程的关系[转]

另一篇进程与线程的关系[转]

作者: 且听枫吟 | 来源:发表于2013-05-01 10:45 被阅读0次

从应用程序角度讲:

1、在单核计算机里,有一个资源是无法被多个程序并行使用的:cpu。

没有操作系统的情况下,一个程序一直独占着全都cpu。

如果要有两个任务来共享同一个CPU,程序员就需要仔细地为程序安排好运行计划--某时刻cpu和由程序A来独享,下一时刻cpu由程序B来独享

而这种安排计划后来成为OS的核心组件,被单独名命为“scheduler”,即“调度器”,它关心的只是怎样把单个cpu的运行拆分成一段一段的“运行片”,轮流分给不同的程序去使用,而在宏观上,因为分配切换的速度极快,就制造出多程序并行在一个cpu上的假象。

2、在单核计算机里,有一个资源可以被多个程序共用,然而会引出麻烦:内存。

在一个只有调度器,没有内存管理组件的操作系统上,程序员需要手工为每个程序安排运行的空间 -- 程序A使用物理地址0x00-0xff,程序B使用物理地址0x100-0x1ff,等等。

然而这样做有个很大的问题:每个程序都要协调商量好怎样使用同一个内存上的不同空间,软件系统和硬件系统千差万别,使这种定制的方案没有可行性。
为了解决这个麻烦,计算机系统引入了“虚拟地址”的概念,从三方面入手来做:

2.1、硬件上,CPU增加了一个专门的模块叫MMU,负责转换虚拟地址和物理地址。
2.2、操作系统上,操作系统增加了另一个核心组件:memory management,即内存管理模块,它管理物理内存、虚拟内存相关的一系列事务。
2.3、应用程序上,发明了一个叫做【进程】的模型,(注意)每个进程都用【完全一样的】虚拟地址空间,然而经由操作系统和硬件MMU协作,映射到不同的物理地址空间上。不同的【进程】,都有各自独立的物理内存空间,不用一些特殊手段,是无法访问别的进程的物理内存的。

3、现在,不同的应用程序,可以不关心底层的物理内存分配,也不关心CPU的协调共享了。然而还有一个问题存在:有一些程序,想要共享CPU,【并且还要共享同样的物理内存】,这时候,一个叫【线程】的模型就出现了,它们被包裹在进程里面,在调度器的管理下共享CPu,拥有同样的虚拟地址空间,同时也共享同一个物理地址空间,然而,它们无法越过包裹自己的进程,去访问别一个进程的物理地址空间。

4、进程之间怎样共享同一个物理地址空间呢?不同的系统方法各异,符合posix规范的操作系统都提供了一个接口,叫mmap,可以把一个物理地址空间映射到不同的进程中,由不同的进程来共享。

5、PS:在有的操作系统里,进程不是调度单位(即不能被调度器使用),线程是最基本的调度单位,调度器只调度线程,不调度进程,比如VxWorks

相关文章

  • 另一篇进程与线程的关系[转]

    从应用程序角度讲: 1、在单核计算机里,有一个资源是无法被多个程序并行使用的:cpu。 没有操作系统的情况下,一个...

  • java基础-多线程

    转 1. 简述线程,程序、进程的基本概念。以及他们之间关系是什么? 线程与进程相似,但线程是一个比进程更小的执行单...

  • java面试3

    1. 进程与线程的区别? 进程和线程的关系: 进程与线程的区别: 2.struts2和springMVC的区别? ...

  • linux多进程与多线程

    linux多进程与多线程。 一,线程与进程的对应关系 先回答一个大家比较关心的问题,就是线程和进程的对应关系。 第...

  • 进程(procress)和线程(Thread)的简单解释

    进程(procress)和线程(Thread)是操作系统的基本概念,看到一篇文章比较具体的描述了进程与线程的关系,...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • Java并发编程之线程篇之线程简介(二)

    前言 在上一篇文章中Java并发编程之线程篇-线程的由来已经主要讲解了线程的由来,以及进程与线程的关系。接下来我们...

  • iOS - 多线程

    1.线程与进程的关系 线程: 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行 进程要向执行任务,必须得...

  • Swift多线程编程总结

    在开始多线程之前,我们先来了解几个比较容易混淆的概念。 概念 线程与进程 线程与进程之间的关系,拿公司举例,进程相...

  • 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行

    一进程, 线程 1.?进程 2.?线程 3.?进程与线程的关系 4.?总结 二.并行, 并发, 串行 四.任务运行...

网友评论

      本文标题:另一篇进程与线程的关系[转]

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