美文网首页PHP高级技能php面试题
深入理解:并发、并行、高并发,程序、线程、进程

深入理解:并发、并行、高并发,程序、线程、进程

作者: AISpider | 来源:发表于2018-12-22 17:09 被阅读50次
并发

并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点只有一个程序在处理机上运行
注意:这里所说的处理机指的是含有一个cpu的服务器。
也就是说,在某一个时间段内,多个程序都处于运行状态中,那么他们就形成了并发。
为什么在任一个时刻点上只有一个程序在处理机上运行呢?
因为并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。

就像一个餐厅,很多人在哪里排队,然后到收银台去点餐。每个人都可以看做事不同的线程,收银员就相当于cpu。只有当前面的用户付完款离开后,后面的人才能点餐付款。当一个人点餐付款的时候,其他人只能在哪里挂起等待。

并行

并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

类似上面餐厅排队的例子,并行解决的问题就相当于有两个收银台,客户可以分两队去排队,两个收银员之间互不干扰,自己处理自己的工作,并且无需等待,同时进行。

并行和并发的异同:
并行是指两个或者多个事件在同一时刻发生,并发是指多个事件在同一时间段内发生

高并发

定义:高并发通常指的是单位时间内服务器处理很多的请求。
注意:
对于网上很多定义为:同时并行处理很多请求的定义有异议,本人觉得并行和并发属于不同的概念。上面有并行的定义。并发的定义也是再时间段内,所以我认为单位时间内服务器处理很多的请求更合适!

线程

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流最小单元, 一个标准的线程由线程ID当前指令指针(PC)寄存器集合堆栈组成。

线程的特点:
  • 轻型实体
    线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
  • 独立调度和分派的基本单位。
    在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。
  • 可并发执行。
    在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
  • 共享进程资源。
    在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配调度的基本单位,是操作系统结构的基础。

  • 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器
  • 程序是指令、数据及其组织形式的描述,进程是程序的实体。
  • 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
进程和线程的区别
  • 线程是程序执行的最小单元,进程是系统进行资源分配和调度的基本单位;
  • 线程之间的通信方便(因为资源是共享的),进程之间的通信复杂。
  • 进程比线程稳定健壮。一个进程的死亡一般不会影响其他进程,而同一个进程中的线程中,一个线程死亡很可能导致整个进程中的所有线程死亡。
  • 进程比线程更耗资源。因为进程独占资源,线程共享资源。

php在线面试题集:http://cainiaophp.com/
php面试讨论群:536633782

相关文章

  • 深入理解:并发、并行、高并发,程序、线程、进程

    并发 并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上...

  • 线程的事你知道多少

    java高并发程序设计 - 网易云课堂 一、线程与进程 进程是线程的容器;开发并行程序用线程而不用进程,是因为线程...

  • java并发编程学习

    参考资料:Av86373641:黑马程序员 - 全面深入学习java并发编程 进程和线程 并行并发并发:同一个时间...

  • 并发编程

    1.并发、进程、线程 1.1 并发 VS 并行 并发(Concurrency)是程序本身的一种特性,程序被分为多个...

  • 进程和线程(1)

    (一)并发和并行的深入理解 1、并发和并行 (1)并发:在同一段时间中多个进程和进程在运行,并且这些进...

  • [OS] 进程管理 内存管理

    并发和并行 高并发: 提高了系统的利用率 并行: 多核计算机同时运行多个进程或线程, 提高了性能 进程和线程 进程...

  • 进程和线程的区别 同步异步的区别 并行和并发的区别

    线程 进程 同步 异步 并行 并发

  • 多线程

    单线程进程结构缺点: 并发程序存在问题 进程切换开销大 进程通信开销大 限制了进程并发的力度 降低了并行计算的效率...

  • python网络爬虫:多任务-进程、线程

    一 、实现多任务的方式 多线程多进程协程多线程+多进程 并行,并发 并行:同时发起同时执行,(4核,4个任务)并发...

  • Python多线程与多进程

    内容简述: 线程与进程的相关概念1、程序,进程,线程,多进程,多线程2、线程的生命周期3、并行与并发,同步与异步4...

网友评论

    本文标题:深入理解:并发、并行、高并发,程序、线程、进程

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