.NET面试准备(一)——进程与线程

一 、概念

1. 进程(process)

  • 操作系统进行资源调度和分配的一个独立单位
    联想:假设CPU是一个工厂,工厂内有多个车间(进程),工厂电力有限,一次只能运行一个车间。
  • 进程有独立的地址空间,在保护模式下,一个进程崩溃不会影响其他进程
    联想:A车间出故障,不会影响B车间。不同应用程序之间占用不同的进程,当Excel崩溃时,不会影响Google浏览器的使用
  • 进程的地址空间:文本区域、数据区域、堆栈。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程中调用的指令和本地变量。

2.线程(thread)

  • 线程是进程的一个实体,由线程ID,当前指令指针(PC),寄存器集合和堆栈组成,是CPU资源调度和分配的基本单位,一个进程可以包括多个线程
    联想:线程是车间里的工人, 一个车间内可以有多个工人
  • 同一进程的资源和内存是共享的,但线程拥有独立的栈空间,独立的执行序列
    联想: 车间的空间是工人们共享的,但每个工人是独立进行工作的,

3.上下文切换(thread)

  • CPU从一个进程切换到另一个进程,或从一个线程切换到另一个线程
    联想:线程是车间里的工人, 一个车间内可以有多个工人

4. 互斥锁(Mutex)

  • 某些共享内存只支持一个线程使用,其他线程必须等它结束,才能使用
    联想:车间内的厕所只能一个人使用,使用时,加上锁,使用完,打开锁,后到的人等打开锁再进去

5.信号量(Semaphore)

  • 某些共享内存只支持固定数目的线程使用

6.进程调度

进程的基本状态

在这里插入图片描述

  • 就绪
  • 执行
    • 等待/阻塞/挂起

调度种类

  • 高级调度:也称作业调度,将外存中处于后备队列中的作业调入内存
  • 低级调度:也称线程调度,由分派程序把处理机分派给某个进程
  • 中级调度:将暂时不能运行的进程调至外存中,此时状态称为挂起;当内存空闲时,再将他们调回内存,放入就绪队列上,此时状态称为就绪

非抢占式调度与抢占式调度

  • 非抢占式:调度程序一旦把资源分配给某个进程后,直到进程结束,才会释放资源
  • 抢占式:调度程序将正在进行的程序强行暂停,并将CPU资源分配给其他就绪程序

进程的优先级

  • 普通进程:优先级低,更长执行时间的进程。例如文本编译器、批处理文档、图形渲染
  • 实时进程:优先级高,需要尽快被执行的进程,不能被普通进程阻挡,如视频播放、各种监测系统

调度策略

  • CPU利用率:
  • 系统吞吐量:单位时间内CPU完成作业的数量
  • 周转时间:从任务开始到任务结束的时间。包括作业等待、在就绪队列中排队、在处理机上运行、输入输出花费的时间的总和。
  • 响应时间:从用户提交请求到系统首次产生响应所用的时间

调度算法

  • 先来先服务(FCFS):
    • 按照任务到达就绪队列的顺序
    • 非抢占式、算法简单、对短作业不利,对I/O繁忙性不利
  • 短作业(进程)优先调度(SJ§F):
    • 短作业优先调度:从后备队列中选择一个或多个估计运行时间最短的作业,调入内存运行
    • 短进程优先调度:从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某件事件阻塞时,才释放处理机
  • 优先级调度:从后备队列中选择优先级最高的作业,调入内存
    • 非剥夺式优先级调度:当某一个进程正在处理机上运行时,即便有更紧迫的进程进入就绪队列,仍让当前运行的进程继续运行,直到主动让出处理机(任务完成或等待事件),才把处理机分配给更为紧迫的进程。
    • 剥夺式优先级调度:当一个进程正在处理机进行,若某个更为紧迫的进程进入就绪队列,则立即停止当前进行的进程,将处理机分配给更紧迫的进程
  • 基于时间片的轮转调度

参考

【1】:阮一峰 进程与线程的一个简单解释
【2】:腾讯面试题

猜你喜欢

转载自blog.csdn.net/hhhhhhenrik/article/details/91398407
今日推荐