• CPU的运行与其对线程的影响


    CPU的运行与其对线程的影响

    什么是线程

    线程(英语:thread)是操作系统能够进行运算调度的最小单位.大部分情况下,它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程. 线程是独立调度和分派的基本单位.线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows的线程,进行混合调度

    线程有4个状态:产生(spawn)中断(block)非中断(unblock)结束(finish)

    International线程

    SUN Solaris操作系统使用的线程叫做UNIX International线程,支持内核线程、轻权进程和用户线程.一个进程可有大量用户线程;大量用户线程复用少量的轻权进程,轻权进程与内核线程一一对应.用户级线程在调用核心服务时(如文件读写),需要“捆绑(bound)”在一个LWP上.永久捆绑(一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外)和临时捆绑(从LWP池中临时分配一个未被占用的LWP).在调用系统服务时,如果所有LWP已被其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP.如果LWP执行系统线程时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞.
    如果是它的话头文件是Thread.h

    POSIX的线程

    POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准.该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其移植版pthreads-win32.
    如果是POSIX的话,头文件是pThread.H
    而windows就比较简单了,只有一个Win32线程,包含:寄存器,核心栈,线程环境块与用户栈.

    CPU是如何理解线程的

    线程是CPU的实际调度和分派的基本单位,比如说你写的.NET程序.每一个进程至少得有一个线程.这个是必须.

    而硬件呢?假设我只有一个核.那也有:叫做超线程技术的多线程.
    比如:我计算偶数的命令是一个,计算奇数的命令是另外一个,利用一些命令模式来拆分指令集或者一些其他的方式来区分运作的内容,达到类似多线程的目的,这叫做超线程,是硬件的多线程技术.

    所以:就算是一个核也有多线程,但是并不是完全并行的,因为时间尺度上,它真的做不到了.

    1.单CPU中的进程只能并发,多CPU的才能并行.
    2.单核中线程只能并发,多核才能并行

    进程:

    进程这东西非常神奇,如果程序不控制,它可以把CPU跑到断电.
    由于有操作系统调度器的关系,进程被弱化到了调度单位.
    进程好玩的点在于它是N多资源的集合,例如各种外设.

  • 相关阅读:
    Python代码的编写运行方式
    React中插槽处理机制
    C# 常用数据类型转换
    ISO9001体系咨询需要准备什么?
    Python究竟属不属于嵌入式语言?
    Go语言Web开发入门指南
    【JavaSE】内部类
    [免费专栏] Android安全之利用ADT获取内存中的敏感信息
    机器学习-决策树算法
    【Unity程序技巧】公共Update管理器
  • 原文地址:https://blog.csdn.net/huan13479195089/article/details/127575660