zoukankan      html  css  js  c++  java
  • 进程与线程(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. 进程拥有自己独立的地址空间(一个进程崩溃后,在保护模式下不会对其他进程产生影响);而线程没有,线程必须依赖于进程而存在,线程有自己的堆栈和局部变量,线程之间没有独立的地址空间,线程之间共享地址空间(一个线程死掉就等于整个进程死掉)。因此,多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率差一些。
  • 相关阅读:
    nyist 541最强DE 战斗力
    nyist 231 Apple Tree
    nyist 543 遥 控 器
    nyist 233 Sort it
    nyist 517 最小公倍数
    hdu 1sting
    nyist A+B Problem IV
    nyist 522 Interval
    nyist 117 求逆序数
    nyist 600 花儿朵朵
  • 原文地址:https://www.cnblogs.com/sunshine-blog/p/10072331.html
Copyright © 2011-2022 走看看