线程和进程的理解



被阿里暴躁的面试官哥哥问到,瞬间原地爆炸

背景

对于CPU,它需要把所有的任务(程序)一个个轮流执行,具体轮流的方法:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。。。。

进程

进程就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文


所以,进程可以说是上面定义的这个时间段,也可以认为是程序执行时,系统进行资源分配的一个实体。因为有上下文的限制,一个进程一般无法访问另一个进程的资源。

线程

某一个程序A(线程)得到cpu的时候,便加载A的上下文,但是A里面不止一个任务啊:当你打开qq,你一边和小红在视频聊天,一边还能收到小丽给你发来的消息。所以每个程序(进程)分为多个程序小段,这里的每个小段代表一个线程
但是这里的每一个小段都是属于A程序的,他们共用了A的上下文。

总结来说:

  • 线程和进程都是一个晓得程序,也都可以说成是一个时间段的描述。
  • 一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。
  • 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。
  • 同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存。

待更新:

  • 进程调度算法

    • 先来先服务和短作业(进程)优先调度算法
    • 高优先权优先调度算法
    • 基于时间片的轮转调度算法
  • Windows内存管理的方式(块式、页式、段式、段页式).
  • 死锁的概念,导致死锁的原因,导致死锁的四个必要条件,预防死锁的方法、避免死锁的方法
  • 内存池、进程池、线程池。
  • 进程通信的几种方式

    • 管道通信
    • 信号
    • 报文队列
    • 共享内存
    • 信号量
    • 套接口

声明:高翔的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 线程和进程的理解


高翔的博客