单核处理器、多核处理器、多处理器与多线程编程,cpu调度

news/2024/11/16 21:30:34/

进程的概念:

  1. 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。
  2. 程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程的概念:

  1. 线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。
  2. 一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。
  3. 线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

线程和进程各自有什么区别:

  1. 进程是资源分配的最小单位,线程是程序执行的最小单位。
  2. 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
  3. 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据。
    进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
  4. 多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

每一个进程至少有一个主执行线程,它无需由用户去主动创建是由系统自动创建的用户根据需要在应用程序中创建其它线程多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。

        多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的操作系统教材中的单处理器都是指的单核处理器。对于单核单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了抢夺对CPU的控制权,在线程切换时会消耗很多的CPU资源,反而会降低系统的性能。

        最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身支持多个处理器那么每个线程都可分配给一个不同的处理器,真正进入“并行运算”状态。从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器,程序员只需将程序编写成多线程模式即可。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理非常简单。但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台打印机。为解决这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入锁定状态。所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的资源。

        多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。
        最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。

注:单核处理器并不是一个长久以来存在的概念,在近年来多核心处理器逐步普及之后,单核心的处理器为了与双核和四核对应而提出。

单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑,上下文的切换更影响效率。

CPU的多核和应用程序的多线程的关系:

多核就是系统同时可以运行多个线程,比如双核可以同时执行两个线程。单核只能一次执行一个线程,线程最终肯定是在核心上执行的。多核指的是CPU有多个核心,多线程是程序有多个线程在同时执行,多核也要用多线程才能发挥优势,同样多线程要在多核上才能真正有优势。

进程的状态转换:

  1. 执行态run:进程正在使用CPU。
  2. 等待态wait:进程正在等待I/O完成,不在使用也不能使用CPU。
  3. 就绪态ready:进程不在使用CPU,但已经纯备好用使用CPU。

在这里插入图片描述
就绪->执行, 当前运行进程阻塞,调度程序选一个优先权最高的进程占有处理机;

执行->就绪, 当前运行进程时间片用完;

执行->等待,当前运行进程等待键盘输入,进入了睡眠状态。

等待->就绪,I/O操作完成,被中断处理程序唤醒。


刚从其他状态进入就绪态的进程需要置入调度队列,该队列不一定按进入队列的时间先后顺序排列。

从等待态中出来的进程通常不直接进入运行态,而要进入就绪态。如果需要直接进入运行态,这属于抢先式调度,通过抢先式中断完成。

从执行态到就绪态的转换发生在抢先式终端处理中,例如I/O或分时下的时间片。分时是在多个用户同时以交互方式使用计算机时采用的一种技术。

CPU调度方法:

  1. FIFO算法:一般应用于实时性系统中,最先进入就绪态的进程最先进入运行态。
  2. 轮转调度法:根据系统给与的时间片,进行进程的轮询访问CPU,若时间片结束,该进程还在运行,就会被强制撤出。该方法通常和FIFO或优先级算法一起使用。
  3. 优先级调度法:根据不同进程的重要程度和紧急程度,来赋予每个进程一个优先级,带有最高优先级的进程最先执行。优先级调度算法分为静态优先级和动态优先级两种。动态优先级可以防止优先级高的进程不停地执行。
  4. 最短作业优先:最先执行占用CPU时间最短的进程。最短的进程第一个执行总是产生最小的平均相应事件。
  5. 最短剩余时间优先:剩余运行事件最短的进程最先运行。
  6. 最高相应比优先:最先执行相应比最高的进程。相应比的计算公式为1+等待时间/估计运行时间。
  7. 多级反馈法:是目前最常用的算法!它结合了FIFO、RR、优先级算法和SJF算法。该算法有多个队列,同一队列中的进程优先级相同,不同队列中进程优先级不同,不同队列拥有不同的时间片。
  8. 策略驱动法:基于对各个用户的承诺。
  9. 最晚时间限调度:保证在每个进程必须完成的最晚时间限钱运行完该进程。
  10. 二级调度算法:在系统负载很重时,不是所有的进程建立就立即进入就绪态,有些进程建立起来后,进入后备队列。操作系统采用一个二级调度程序来决定进程在后备队列和就绪队列之间的转换。其中一级调度是从后备队列中选择进程使其转换为就绪态;另一级调度则是在就绪队列中选择一个执行。

http://www.ppmy.cn/news/244146.html

相关文章

操作系统与多核处理器

这篇文章解答了我心中的疑问,那就是操作系统会自动调度cpu资源来处理多进程,多线程的并发。 早在上世纪90年代末,就有众多业界人士呼吁用CMP( 单芯片多处理器)技术来替代复杂性较高的 单线程CPU。IBM、惠普、Sun等高端服务器厂商,…

多个处理器和多核处理器的区别

最近遇到了一个让人很是疑惑的问题,然后写出来供大家解疑: 多个处理器&多核处理器? 多个处理器:多个单核处理器,就是说电脑和处理器有多个,但是这个电脑的处理器是单核的; 多核处理器&…

大屏拼接处理器(一)

概括 在大屏幕拼接系统中,我们很容易将焦点聚集在拼接单元上,而作为整个系统“神经中枢”的处理器往往被人忽视。对于大屏幕厂商来说,处理器是加强对大屏核心技术把控,打造差异化的关键。大屏处理器的优劣直接决定着整个大屏幕显示…

PC_多处理器

文章目录 多处理器单指令单数据流SISD结构单指令流多数据流SIMD结构向量处理器 多指令流单数据流MISD结构多指令多数据流MIMD结构小结 硬件多线程细粒度多线程粗粒度多线程同时多线程 多核处理器共享内存多处理器 多处理器 常规的单处理器属于SISD常规多处理器属于MIMD 单指令…

内核/逻辑处理器/线程/多线程/多CPU/多核CPU

文章目录 1. 逻辑CPU2. 线程数和逻辑CPU个数,内核个数3.线程/进程/多核CPU3.1 线程3.2 多核cpu3.3 进程和线程 1. 逻辑CPU 先查看电脑cpu信息,可以看到,是8个逻辑cpu 2. 线程数和逻辑CPU个数,内核个数 在任务管理器中&#xf…

解决数据可视化大屏拼接处理器4大需求的方案及产品分析

图像/视频拼接处理器是大屏显示系统不可或缺的部分,负责将一个完整的信号画面划分为数个等分部分,分配给同样数量的画面显示单元,通过多个普通画面显示单元组成大规模的信号图像显示屏。对于现代控制室来说,大屏拼接显示系统已经与…

Arrays源码

介绍 java.util中的工具类,提供数组相关的常用操作,排序、比较、填充、二分查找等功能 该类还包含一个静态内部类ArrayList,其中add、remove、clear方法都是没有实现的。 常量&变量 /*** The minimum array length below which a para…

常见的数据泄露隐患有哪些,该如何防范?

随着我国互联网的发展和普及,工作生活中数据窃取、数据泄露事件时有发生。所以,我们需要了解数据泄露有哪些安全隐患及防范措施。 社交软件泄密严重。 我国互联网社交应用软件的发展及普及,成为了境外黑客间谍的温床,他们通过开…