程序和进程
程序和进程的区别就在于:
程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。
在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。就是这样的设计,大大提高了CPU的利用率。进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。
进程和线程
进程和线程算是操作系统内两个很基本、很重要的概念:
进程是操作系统中进行保护和资源分配的基本单位,操作系统分配资源以进程为基本单位。而线程是进程的组成部分,它代表了一条顺序的执行流。
系统中的进程线程模型是这样的:
线程与进程的区别可以归纳为以下4点:
1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
3)调度和切换:线程上下文切换比进程上下文切换要快得多。
4)在多线程操作系统中,进程不是一个可执行的实体。
线程和进程的关系:
1、线程 - 轻量级(轻型)进程,比进程的开销小很多
2、线程是进程的一部分,线程是属于进程
3、一个线程必须依赖进程存在,一个进程之内至少有一条线程
4、进程中默认存在的线程 主线程,也可以在一个进程中开启多个子线程来完成更多的事情
进程是计算机中最小的 资源分配单位
线程是计算机中能被CPU调度的最小单位,计算机中最小的执行单位
多个进程之间的多条线程可不可以利用多核:理论上可以的,但是cpython下GIL锁的存在,同一时刻只有一个线程执行
同一个进程中的多条线程可不可以利用多核:可以利用多核,进程数跟主机的核心数一致
正常的进程和线程之间的区别
# 进程 : 数据隔离\开销大
# 线程 : 数据共享\开销小