• 进程,线程,协程


    进程:

    对于操作系统来说,一个任务就是一个进程(process).进程是程序的基本执行实体.进程是资源分配的基本单位

    每个进程相互独立,不影响主程序的稳定性,子进程崩溃没关系;

    通过增加CPU,就可以容易扩充性能;

    可以尽量减少线程加锁/解锁的影响,极大提高性能

    进程有独立的地址空间

    一个进程是无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等.

    线程:

    在一个任务中,需要运行多个子任务,我们把这些任务内的子进程称为'线程'. 线程是处理器调度的基本单位

    所以说一个进程至少有一个线程.

    线程是最小的执行单元,而进程至少由一个线程组成.

    线程没有独立的地址空间,同一进程内多个线程共享其资源

    一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间,每个线程拥有自己的寄存器和栈,其他线程可以读写这些栈内存

    区别

    1地址和其他资源:进程间相互独立,同一进程的各线程间共享,某进程内的线程在其他进程内不可见.

    2 通信:进程间通信IPC(管道,信号量,共享内存,消息队列),线程间可以直接独写进程数据段(如全局变量)来进程通信--需要进程同步和互斥手段的辅助,以保护程序的一致性.

    3调度和切换:线程上下文切换比进程上下文切换快得多.

     协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制.协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先钱保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快

  • 相关阅读:
    ansible使用sudo
    shell中命令作为变量使用
    for循环使用
    移动多个文件
    获取ip
    if、elif 条件判断
    python安装二进制k8s 1.11.0 一个master、一个node 查看node节点是主机名---apiserver无法启动,后来改了脚本应该可以
    (转)《黑客帝国完全解析》
    关于敏捷开发方法(Agile Software Development)的阅读笔记
    关于软件工程结对编程作业 PairProject : Elevator Scheduler(电梯调度算法的实现与测试)的总结
  • 原文地址:https://www.cnblogs.com/aln0825/p/11961881.html
Copyright © 2020-2023  润新知