操作系统复习笔记1——进程与线程

314 阅读4分钟

2021年12月8日开始复习 考试时间12.15 考试占60分 所有章节:

image.png

image.png

第一章:进程与线程

一、进程

1、进程的概念和特征

进程的描述

image.png 进程控制块PCB的概念

image.png 进程由PCB和程序与数据组成 PCB的内容有

image.png 一个进程的整个存储器映像包括用户及上下文和系统及上下文; 用户及上下文包括进程的程序块、数据块、运行时堆栈的信息; 系统及上下文包括进程标识信息、进程现场信息、进程控制信息和系统内核栈; 进行上下文切换时,换下进程的寄存器上下文信息保存在进程现场信息中; 进程的上下文是进程的代码和数据已经进程运行环境;

进程的五个基本特征

image.png

2、进程的状态、转换和控制

进程的状态

进程状态概念
就绪状态进程获得除CPU外的所有资源
运行状态CPU上运行
阻塞状态等待某一时间而暂停运行,即使CPU空闲,没有等到资源也不能运行

状态变化规则

image.png 只有从运行态到就绪态是反序; 子进程继承父进程拥有的资源,子进程被撤销时将资源归还; fork函数子进程返回0,父进程返回子进程的PID; 不能预测父子进程的执行顺序; 阻塞是进程自身主动的行为; 上下文切换是在内核态完成的:

image.png 僵尸进程:终止未回收 孤儿进程:父进程未回收子进程就终止

wait函数,阻塞父进程,等待子进程结束,子进程结束则返回子进程的PID,否则返回-1;

exceve函数调用一次永不返回,发生错误则抛出异常;

fork和exceve的分离使得shell可以利用文件描述符实现重定向和管道(父子进程之间通信);

3、异常控制流

CPU控制流

低层次机制

image.png

高层次机制

image.png

异常事件

image.png

异常类型

image.png 如果是当前执行指令导致的异常就是同步异常;中断异常是由处理器外部的事件产生的; 其中中断异常有时钟中断和IO中断;

image.png

故障异常:缺页(可恢复)、保护故障(不可恢复)、浮点异常、无效内存引用;重新执行当前指令或者终止;

终止:不合法指令、奇偶校验错误、机器检查;

4、进程间通信

共享内存系统:申请内存映射到自己进程,进行数据读写;把共享内存映射到不同进程的地址空间中

消息传递系统:消息缓冲队列、信箱通信 消息缓冲队列机制(直接通信)

image.png

信箱通信(间接通信)

image.png

管道严格遵循先进先出,不支持文件定位,一次性读取,读过的就释放了,单向流动

image.png

二、线程

线程和进程:

image.png

线程定义:进程内一个相对独立的可调度的执行单元;

image.png

没有自己的地址空间 进程作为除了CPU之外的资源分配的单元, 线程成了CPU的分配单元;

进程=线程+code+data+kernenl context 线程有自己的堆栈和寄存器;不同进程的线程切换是在内核态完成的,同一进程的线程切换不需要内核支持; 属于同一个进程的所有线程共享所属进程的地址空间; 有自己的局部变量的堆栈,但是对其他线程来说不被保护,共享进程的data、code和堆;

多线程模型

线程的两种实现方式:

用户级线程:位于内核之上、管理无需内核支持,应用程序负责线程的创建、撤销和切换,内核意识不到线程的存在;

内核级线程:线程管理的工作由内核完成,应用程序只有一个到内核线程的接口;

有的是二者组合的方式来实现线程,其模型有一下三种:

多对一:

image.png

一对一:

image.png

多对多:

image.png

双层模型:多对多模型中,允许某个用户级线程绑定到一个内核级线程;

进程之间的切换是必须要内核支持的,因为要切换地址空间;

王道考研题记录

image.png

答案:A C项,可能死锁,此时没有进程处于运行态;

image.png

image.png

image.png

image.png 答案:C 同一进程的线程切换时不需要内核支持 进程是资源分配的单位,线程是调度和分派的单位

image.png

答案:D 分配cpu是进程调度的工作

image.png

答案:B 操作系统为每个用户级线程建立一个线程控制块是一对一模型 用户级线程的切换比内核级线程的切换效率高

image.png

image.png