进程线程基础知识

进程线程基础知识

pcb 包含的具体信息

进程描述信息(进程标识符,用户标识符)

进程管理状态(进程当前的状态,进程的优先级)

资源分配清单

cpu信息

pcb通过链表的方式来进行组织,把具有相同状态的进程链在一起组成队列。

进程的上下文切换

一个进程切换到另一个进程运行,称为进程的上下文切换

进程是由内核管理和调度的,所以进程的切换只能发生在内核态。

通常,会把交换的信息保存在进程的 PCB,当要运行另外一个进程的时候,我们需要从这个进程的 PCB 取出上下文,然后恢复到 CPU 中。

发生上下文切换的场景

时间片耗尽进程由运行态变成就绪态,CPU从就绪态选择其他的进程运行。

进程资源不足被挂起

被sleep函数主动挂起

为保证更高优先级的进程运行,当前进程被挂起

发生硬件中断,CPU上的进程会被挂起,转而执行内核中的终端服务程序

线程

为什么使用线程

为了解决多线程系统开销大,通信共享数据麻烦的问题

线程之间可以并发运行且共享相同的地址空间

线程的优点

一个进程可以同时运行多个线程

各个线程可以并发执行

各个线程之间可以共享地址空间和文件资源等

线程的缺点

一个线程崩溃回导致其他所有同进程的线程崩溃

线程与进程的比较

线程与进程的比较如下:

  • 进程是资源(包括内存、打开的文件等)分配的单位,线程是 CPU 调度的单位;
  • 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈;
  • 线程同样具有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系;
  • 线程能减少并发执行的时间和空间开销;

对于,线程相比进程能减少开销,体现在:

  • 线程的创建时间比进程快,因为进程在创建的过程中,还需要资源管理信息,比如内存管理信息、文件管理信息,而线程在创建的过程中,不会涉及这些资源管理信息,而是共享它们;
  • 线程的终止时间比进程快,因为线程释放的资源相比进程少很多;
  • 同一个进程内的线程切换比进程切换快,因为线程具有相同的地址空间(虚拟内存共享),这意味着同一个进程的线程都具有同一个页表,那么在切换的时候不需要切换页表。而对于进程之间的切换,切换的时候要把页表给切换掉,而页表的切换过程开销是比较大的;
  • 由于同一进程的各线程间共享内存和文件资源,那么在线程之间数据传递的时候,就不需要经过内核了,这就使得线程之间的数据交互效率更高了;

所以,不管是时间效率,还是空间效率线程比进程都要高。

线程是调度的基本单位,而进程是资源拥有的基本单位

线程的上下文切换,若是同一个进程内只需要切换线程的私有数据,寄存器等不共享的数据,若不在同一个进程内,则和进程上下文切换一样。

posted @ 2024-04-26 12:01  紫冰凌  阅读(3)  评论(0编辑  收藏  举报