并发、线程、进程与多线程

| |
[不指定 2015/09/22 10:58 | by admin ]
一、  什么是并发
     在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。


     这里需要注意并发和并行是不同的两个概念。并发是指一个时间段内同时运行,这是个区间;而并行是指在同一个时间点上运行,这个是一个点。而且并发在同一个时间点上只能是一个程序在运行。


二、  什么是进程
     Windows系统下我们打开任务管理器,点击“进程”,就会出现一个表格,表格的每一行都是一个进程,比如说QQ.exe,NOTEPAD.exe等;通俗的说法就是每打开一个应用程序,如QQ、暴风影音,系统就打开了一个进程。系统为这个进程分配相关的资源,比如cpu、内存。


     进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。


  进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。


三、   什么是线程
       线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。


      通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。
  
    线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU
 
四、什么是多线程技术
      可以把一个正在运行的软件看做一个进程,就像一个大的管道,这个管道不运送什么东西,但里面有很多个小的管道,每个小管负责的东西不同,而这些小管道就可以看做是一个个线程。       如果运行的是一个单线程的程序的话,而这个线程需要连续运行几个功能时,如果正在运行的那个功能因碰到一个等待或者睡眠的指令的话,他就会停在那里不做任何事,此是这个CPU就空闲在那里,同时还会等待直到程序重新继续运行。      如果使用多线程技术,那么可以把这几个功能同时(并不是绝对意义上的同时)运行,当其中一个功能遇到睡眠指令的时候,其他没有睡眠的继续运行,这个可以花更短的时间,让CPU更充分的被利用来完成需要的事情~线程通常共享一个代码区,但有各自独立的数据存储区 。五、  总结      电脑里面最宝贵的资源就是CPU,现代电脑里面往往是其他硬件的瓶颈如网络IO慢,内存数据读取慢导致了cpu资源的浪费(因为cpu需要等待),多线程技术的提出解决了cpu等待的难题,当某个线程由于别的原因需要挂起的时候cpu可以马上分配给别的线程。     单核cpu系统永远不可能实现并行,cpu只能是异步的分配给进程更进一步的说应该是线程。    多核cpu的话就有可能实现并行了,既同一个时间点运行两个进程。    单线程技术由于是顺序执行,内存、cpu等核心资源占据时间过长、执行效率低下,当高访问量、高并发的情况下就有点捉襟见肘了。
技术文摘 | 评论(0) | 引用(0) | 阅读(3174)