漫谈并行,串行,流水线,线程和进程

在说并行串行流水线时,我们先要说一个概念双核四程,四核八程代表什么。

双核四程 指处理器中有两个核心, 但是利用了超线程技术,一个核心就有2个线程,所以两个核心就有4个线程。一般来说,两个核心就只有2线程。
超线程技术 就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。因此支持Intel超线程技术的cpu,打开超线程设置,允许超线程运行后,在操作系统中看到的cpu数量是实际物理cpu数量的两倍,就是1个cpu可以看到两个,两个可以看到四个。有超线程技术的CPU需要芯片组、软件支持,才能比较理想的发挥该项技术的优势。

上述是一种减少命令执行时间的一种方式,Linux自从2.6内核开始,就会把不同的线程交给不同的核心去处理。Windows也从NT.4.0开始支持这一特性。

然后说下:并行,串行,流水线
并行: 时间片机制(也有其他的机制,自己百度),让每个进程占用相同的cpu时间,在宏观上,可以实现多个进程同时完成。
串行: 一个进程完成,在执行下一个进程
流水线: 在A命令在执行时,B命令在解析,C命令在读取。这样子循环。

再说下线程和进程关系

我们开发应用程序,基本上分为2种进程:io消耗(文件读写);cpu消耗(图像视频压缩)。
线程就是轻量化的进程。为什么有了进程还要线程呢?
进程执行时间:事件的触发到响应时间、申请处理器的等待时间、数据的处理时间、申请设备的时间,以及写数据的时间。这只是单任务情况下,并没有考虑多任务引起的中断。
进程:需要独立堆栈空间,在进程切换时,需要申请堆栈等时间消耗。不同进程通讯复杂一点。
线程:共享同一个进程的堆栈,所以相对切换速度跟快,不同线程通讯简单。
每一个进程(线程)都有一个task_struct结构体。
进程:资源分配单位。
线程:调度单位。

综合上述:
1.并行,串行,流水线:是cpu的底层指令执行逻辑,是cpu核心对编译完成的二进制指令的一种读取,解释,执行方法。
2.多核多线程:是cpu的硬件概念,多个指令执行的硬件单元。
3.多线程和多进程:是系统概念,软件的概念,是用户概念。是系统层对多个进程的一种切换逻辑。

linux内核调度算法

快速找到最高优先级进程
内核调度的内核源码在kernel/sched.c的schedule函数中。内核为每一颗CPU分配了一个runqueue(优先级队列),用于维护这颗CPU可以运行的进程。LINUX默认配置(如果你用默认选项编译内核的话)MAX_PRIO是140,就是说一共内核对进程一共定义了140种优先级。等待某个CPU来处理的进程中,可能包含许多种优先级的进程,但,LINUX是个抢占式调度算法的操作系统,就是说,需要调度时一定是找到最高优先级的进程执行。
对于相同的优先级的进程 LINUX是一个时间多路复用的系统,就是说,通过把CPU执行时间分成许多片,再分配给进程们使用,造成即使单CPU系统,也貌似允许多个任务在同时执行。
多核系统的负载均衡
如果我们没有对进程做过特殊处理的话,LINUX内核是有可能把它放到多个CPU处理器上运行的,这是内核的负载均衡。上文说过,每个处理器上有一个runqueue队列,表示这颗处理器上处于run状态的进程链表,在多处理器的内核中,就会有多个runqueue,而如果他们的大小很不均衡,就会触发内核的load_balance函数。这个函数会把某个CPU处理器上过多的进程移到runqueue元素相对少的CPU处理器上。
发生负载均衡的时机:
1、当cpu1上的runqueue里一个可运行进程都没有的时候;在cpu0上还有许多进程等待运行,那么它会从cpu0上的可运行进程里找到优先级最高的进程,拿到cpu1上的runqueue里开始执行。
2、但是当cpu0上一直有10个可运行进程,cpu1上一直有1个可运行进程,显然,cpu0上的进程们得到了不公平的对待,它们拿到cpu的时间要小得多。所以,实际上,每经过一个时钟节拍,内核会调用scheduler_tick函数,而这个函数会做许多事,例如减少当前正在执行的进程的时间片,在函数结尾处则会调用rebalance_tick函数,该函数保证不同CPU的运行队列包含数量基本相同的可运行进程。

并行,串行,流水线,线程和进程傻傻分不清楚相关推荐

  1. FPGA之VGA转HDMI之并行串行转换模块编写

            上节我们使用编码模块可解决图像数据的编码问题,而这次使用的并行转串行模块的主要功能就是实现并行串行转换.单端信号转差分信号.单沿采样转双沿采样.         并行转串行模块框图如下 ...

  2. java并发 并行 串行

    并发: 并发是指允许多个任务互相干扰,在一个时间点上,只有一个任务在执行.交叉时间段只能选择一个任务来完成. 并行: 并行是在同一时刻互不干扰的进行任务.多个事件在同一时刻发生 串行: 串行在时间上不 ...

  3. py编程技巧-2.5-如何在一个for语句中迭代多个可迭代队象(并行串行)?

    实际案例: 某班学生期末考试成绩,语文,数学,英语分布存储在三个列表当中 同时迭代三个列表,计算每个学生的总分 某年级有四个班,某次考试每班英语成绩分布存储在4个列表中,依次迭代每个列表,统计全年级成 ...

  4. meo学习笔记3:并行与并发,线程与进程的区别

    并发与并行,线程与进程到底有啥区别呀?? 1.前言 最近有为了工作简单看一下操作系统的相关基础问题,看到并发和并行以及线程和进程,感觉可以记录区分一下,以下内容来自网上的文章和我自己的一些理解: 2. ...

  5. promise实现多个请求并行串行执行

    早上查资料,偶然发现这个话题,发现自己并不会,于是乎,下来研究了一下. 想想之前我们用jquery写请求的时候,要实现请求的串行执行,我们可能是这么做的. $.ajax({url: '',data: ...

  6. 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:cnblogs.com/songhaixing/p/1 ...

  7. 并发、并行、线程、进程与CPU基本概念

    转载自: https://blog.csdn.net/qq_21480607/article/details/100135524 首先我们需要了解一些基础概念: 串行,并发与并行 串行 多个任务,执行 ...

  8. iOS学习笔记-106.多线程05——CGD同步、异步函数和并行、串行、主队列示例

    多线程05CGD同步异步函数和并行串行主队列示例 一说明与图示 二异步函数 并发队列 1 代码 2 结果 三异步函数 串行队列 1 代码示例 2 结果 四同步函数 并发队列 1 代码示例 2 结果 五 ...

  9. [并发概念] 串行、并行与并发

    串行和并行 串行是排队一个一个处理任务,并行是同时处理多个任务. 并发和并行 概念非常相似,难以区分.分别体现在两个方面. 并发(Concurrency),体现在(1)单个处理器:(2)逻辑上同步运行 ...

最新文章

  1. 安装好的苹果系统部分截图
  2. RT-Thread移植到STM32F103ZET6具体操作步骤(利用keil5新建工程,添加RT-Thread源码到工程)
  3. Lua应用——tables应用,查找是否为保留字
  4. 使用redis incr计数来控制单位时间内对某接口的访问量
  5. 如何提升代码可读性?阿里发布16条设计规约
  6. itext设置pdf的尺寸_如何获取pdf文档iText 7的页面大小-问答-阿里云开发者社区-阿里云...
  7. 《互联网人如厕报告》,厕所竟成互联网人的 “最后净土”
  8. python开源项目2019_2019年6月Github上最热门的Python开源项目
  9. Java中的引用数据类型-BigDecimal
  10. PowerDesigner逆向工程,从SQL Server数据库生成Physical Model
  11. 4号线地铁站点列表_7/4号线大连路地铁站:合租主卧家具齐全~
  12. 小米路由器R1C或R1CM小米R1C 原厂Bootloader和epproom
  13. Spring源码分析一:容器篇—refresh()
  14. 华为数字化转型之道第二讲
  15. python search函数 中文,Python-re中search()函数怎么用
  16. Python——爬虫抓取图片
  17. 小米8刷入Magisk24.0并安装riru和EdXposed之刷机篇
  18. 五行Python代码实现春节微信祝福神器(基于itchat)
  19. 到月宫上挖土-嫦娥五号背后的航天系统工程
  20. 链人亮相纽约纳斯达克,力作国人骄傲区块链创新品牌

热门文章

  1. SAS软件介绍单元测验
  2. python编程语言与html5-派森(Python)编程有什么用?
  3. CCS使用教程05:CCS8.0常用菜单
  4. 区块链隐私保护:MimbleWimble 和 Grin 简介
  5. XX系统XX版本 测试报告
  6. 北风网web前端开发培训课程 web前端开发实例视频教程下载
  7. 移动端前端抓包神器详解(whistle+weinre)
  8. html5魔塔编辑器安卓版,Mota: 纪元魔塔前传。童年魔塔记忆。使用手机编写的5000行代码...
  9. 离线安装vs2019
  10. 医疗器械管理系统-医疗器械进销存管理系统-盘谷医疗