线程和进程的理解
背景
对于CPU,它需要把所有的任务(程序)一个个轮流执行,具体轮流的方法:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。。。。
进程
进程就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文
所以,进程可以说是上面定义的这个时间段,也可以认为是程序执行时,系统进行资源分配的一个实体。因为有上下文的限制,一个进程一般无法访问另一个进程的资源。
线程
某一个程序A(线程)得到cpu的时候,便加载A的上下文,但是A里面不止一个任务啊:当你打开qq,你一边和小红在视频聊天,一边还能收到小丽给你发来的消息。所以每个程序(进程)分为多个程序小段,这里的每个小段代表一个线程
但是这里的每一个小段都是属于A程序的,他们共用了A的上下文。
总结来说:
- 线程和进程都是一个晓得程序,也都可以说成是一个时间段的描述。
- 一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。
- 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。
- 同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存。
待更新:
- 进程调度算法
- 先来先服务和短作业(进程)优先调度算法
- 高优先权优先调度算法
- 基于时间片的轮转调度算法
- Windows内存管理的方式(块式、页式、段式、段页式).
- 死锁的概念,导致死锁的原因,导致死锁的四个必要条件,预防死锁的方法、避免死锁的方法
- 内存池、进程池、线程池。
- 进程通信的几种方式
- 管道通信
- 信号
- 报文队列
- 共享内存
- 信号量
- 套接口