线程上下文的切换

线程上下文的切换巧妙的利用了时间片轮转的方式,CPU给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一个任务;线程状态的保存及其再加载,就是线程的上下文切换。时间片轮询保证CPU的利用率:
线程上下文的切换_第1张图片
对于线程切换的几个关键词的解释:

  • 进程
    进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。

  • 线程
    线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。而进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。

进程和线程的区别:
a.线程是程序执行的最小单位,进程是资源分配的最小单位;
b.一个进程由一个或多个线程组成,各个线程之间共享进程的内存空间;
c.线程上下文切换速度高于进程切换;

  • 上下文
    是指再某一时间CPU寄存器和程序计数器的内容;

  • 寄存器
    是CPU内部数量少但是速度很快的内存。寄存器通常对常用值的快速访问来提高计算机程序运行的速度;

  • 程序计数器
    是一个专门的寄存器,用于表明系统中CPU的执行位置,存的值为正在执行的指令或者下一个需要被执行的指令的位置;

  • PCB(Process Control block)
    上下文切换可以认为是内核再CPU上对于进程(包括线程)进行切换,上下文切换的信息是保存在进程控制块PCB中的;

  • 上下文切换的活动
    a.挂起一个线程,将这个进程在CPU中的状态存储于内存中的某处;
    b.在内存中检索下一个进程的上下文并将其CPU的寄存器恢复;
    c.跳转到程序计数器所指定的位置;

  • 什么是多线程?什么是多进程?
    多进程:Windows 应用程序中消息有两种送出途径;直接和排队。事件驱动不是由时间的顺序来决定,而是由时间的发生来控制;多进程就是多个事件同时发生;
    多线程:指从软件或硬件的基础上实现多个线程的并发执行的技术,进而提升整体处理性能;

  • 多进程和多线程的优缺点分析:

| 多进程

优点 缺点
进程之间相互独立,不影响主程序的稳定 逻辑控制复杂,需要与主程序交互
通过增加CPU可提升性能 需要跨边界传输,调度开销比加大
尽量减少线程加锁解锁的性能消耗
总体能够达到的性能上限非常大

|多线程

优点 缺点
无需跨边界,线程直接可实现共享 每个线程与主程序共享内存,内存受限2GB
逻辑控制方便,JDK有自带的控制方法 线程之间的同步和控制麻烦
消耗的总资源比进程小

你可能感兴趣的:(理论)