[408 操作系统]第二章 进程与线程 更新中

科技资讯 投稿 23700 0 评论

[408 操作系统]第二章 进程与线程 更新中

第二章 进程与线程

2.1.1 进程的概念、组成与特征

本节总览

    PCB + 程序段(指令序列) + 数据段(数据、变量)
  1. 特征:动态、并发、独立(独立获得资源、独立接受调度) 异步、结构
    进程是系统进行资源分配和调度的一个独立单位
  1. PCB 记录进程信息:status,envs context,cpu info,res
  2. 特征:五大特性,重要的有动态性,独立性,异步性

程序是静态的,进程是动态的

进程的组成 —— PCB + 程序段 + 数据段

程序段、数据段 给进程用

程序或数据属于某个进程?
严格来说,进程是动态的;进程实体(映像)是静态的,相当于快照

再次反思,PCB 是给系统用的,程序段和数据段是给进程本身用的
PCB 是进程存在的唯一标志

2.1.2 进程的状态与转换、进程的组织

本节总览

    进程有几种状态? 5 = 3+ 2
  1. 就绪态和阻塞态的区别:就绪态万事俱备,只欠cpu;阻塞态,缺其他资源或事件
  2. 进程状态间的转换:
    1. 就绪态 -> 运行态。 进程被调度,cpu 竭诚为您服务!
    2. 运行态 -> 就绪态。服务结束,请您先暂作休息。
    3. 运行态 -> 阻塞态。 没有系统资源,或主动等待一个事件发生。
    4. 阻塞态 -> 就绪态。 就等你pua了。不对,就等你cpu了
    进程正在被创建,那就是创建态 New
  1. 进程被创建完成,其他资源也分配给它了,但CPU资源还不能给它,便进入“就绪态”Ready

Are you ready? Come on~~

运行态 Running
cpu 正在为您服务

    等待系统其他资源的分配,或等待其他进程的效应 (有CPU资源,但却一些其他的系统资源)

终止态 terminated

一鲸落万物生。不带走一片尘土。

    正在创建的 EMBRYO
  1. 整装待发的 RUNNABLE
  2. 正在运行的 RUNNING
  3. 晚高峰堵车的 SLEEPING
  4. 即将逝去的 ZOMBIE

5 = 3 + 2

    为什么分成3 + 2
  1. state 记录进程状态

像不像线性表??像不像队列?

有点像hash 表

2.1.3 进程控制

本节总览

    进程控制,控制的是什么? 控制的是进程的转态转换。
  1. 为什么原语那么重要?原语的应用场景?原语的实现原理 ?
    1. 原语,一气呵成,不可被中断,所以其具备可靠性。
    2. 原语的重要应用场景就包括本节要学的,进程的状态转换。
    3. 原语的实现原理—— 关中断与开中断之间的程序执行 不可被打扰

答:原语执行后将一气呵成,不可中断;原语利用了开、关中断

答:原语一气呵成;如果不用原语,有可能会存在 进程状态字被修改,但所处队列还没改过来的情况。

答:“关中断”到“开中断”之间的所有指令都不会被中断所干扰,这些指令会被cpu一气呵成地执行。期间接受的中断,会在开中断指令执行后才被处理。

创建原语

答:
用户登陆:分时系统,用户登陆成功。(java 中学过多线程,用户登陆会创建一个新的线程,可以类比一下)
作业调度:多道批处理系统,为进入内存的新作业创建新进程
提供服务:操作系统创建新的进程为用户提供服务
应用请求:创建子进程

撤消原语

答:
正常结束:exit
异常结束:exception 整数除以0等异常
外界干预:用户主动杀死进程 ctrl + alt + del

阻塞与唤醒原语

阻塞原语干了啥?
找到pcb
保护进程的现场,将state 设置成 阻塞态
将pcb 插入相应事件的等待队列
引起阻塞的原因
等待系统分配资源
配合其他进程
等待事件
进程的唤醒要干啥?
在阻塞队列中找到pcb
state 改为就绪态
将pcb 挪到就绪队列,等待被调度
何时被唤醒?
等待的事件发生了!

切换原语
:切换原语,是在运行态和就绪态之间的切换。前面的阻塞与唤醒,是在阻塞态和就绪态之间转换。
切换原语要保存运行环境的上下文。例如,切换前一时刻的PSW,PC 等寄存器 的值。

2.1.4 进程通信 IPC

编程笔记 » [408 操作系统]第二章 进程与线程 更新中

赞同 (112) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽