进程与线程的关系

什么是进程?

一段程序的执行过程。——百度百科

什么是线程?

操作系统能够进行运算调度的最小单位。——百度百科

进程与线程的关系?

  1. 进程是资源分配的基本单位。
  2. 线程是独立调度和分配的基本单位。
  3. 一个进程可以有多个线程,每个线程并行执行不同的任务。
  4. 一个程序至少有一个进程,一个进程至少有一个线程。
进程

内存:逻辑内存,内存的寻址空间。每个进程的内存彼此独立。
文件、网络句柄:所有线程共有。


线程

栈:调用栈。从主线程的入口main函数,会不断的进行函数调用,每次调用会把所有的参数和返回地址压入到栈。
PC:Program Counter程序计数器,操作系统真正运行的是一个个线程,进程只是个容器。PC指向当前的指令,这个指令是放在内存中的,每个线程都有一串自己的指针,指向自己当前所在内存的指针。
TLS:thread local storage。线程独立的内存,存储线程独有的数据。

线程之间如何交互?

通过TCP/IP端口实现。

线程之间如何交互?

指针。

多线程原理?

  1. 单核CPU,同一时间,仅能处理一个线程。
  2. 多线程同时执行:CPU快速的在多个线程之间切换,CPU调用线程的时间足够快,就造成了多线程的“同时”执行效果。
  3. 如果线程数非常多时,CPU会在N个线程之间切换,消耗大量的CPU资源,每个线程调度的次数会降低,线程的执行效率降低。

多线程优点?

  1. 能够适当提高程序的执行效率。
  2. 能够适当提高资源的利用率。
  3. 线程上的任务执行完成后,线程会自动销毁。

多线程缺点?

  1. 开启线程需要占用内存空间,默认情况下,每一个线程占512KB。
  2. 开启大量的线程,会占用大量的内存空间,降低程序的性能。
  3. 线程越多,CPU在调用线程上的开销就越大。
  4. 程序设计更加复杂。

你可能感兴趣的:(进程与线程的关系)