【操作系统】 Operation System 第七章:进程和线程

7.2 进程的组成

  • (1)一个进程应该包括

    • 程序的代码
    • 程序处理的数据
    • 程序运行位置(程序计数器的值,指示下一条将运行的指令)
    • 一组通用寄存器的值,堆、栈
    • 一组系统资源,如文件等。
      总之,进程包含了正在运行的一个程序的所有状态信息。
  • (2)进程与程序的联系

    • 程序是产生进程的基础
    • 程序的每次运行构成不同的进程
    • 进程是程序功能的体现
    • 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
  • (3)进程与程序的区别

    • 进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态
    • 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存
    • 进程与程序的组成不同:进程的组成包括程序,数据和进程控制块(进程的状态信息

7.3 进程的特点

  • 动态性:可动态创建,结束进程
  • 并发行:进程可被独立调用并占用处理机运行
  • 独立性:不同进程的工作不互相影响
  • 制约性:因访问共享数据、资源或进程间同步而产生制约

7.4进程控制块(PCB)

  • 定义:process control block, PCB。操作系统管理控制进程运行所用的信息集合。操作系统用PCB来描述进程的基本情况以及运行变化的过程。PCB是进程存在的唯一标志

  • PCB含有以下三大类信息

    • 1. 进程标志信息: 如本进程的标识,本进程的产生者标识(父进程标识);用户标识。
    • 2. 处理机状态信息保存区:保存进程的运行现场信息:
      • ->用户可见寄存器:用户程序可以使用的数据,地址等寄存器
      • ->控制和状态寄存器:如程序寄存器(PC),程序状态字(PSW)
      • ->栈指针: 过程调用/系统调用/中断处理和返回时需要用到它。
    • 3. 进程的控制信息
      • ->调度和状态信息:用于操作系统调度进程并占用处理机使用;
      • ->进程间通信信息:为支持进程间的与通信相关的各种标识,信号,信件等,这些信息存在接收方的PCB中;
      • ->存储管理信息:包含有指向本进程映像存储空间的数据结构;
        进程所用资源:说明由进程打开,使用的系统资源,如打开的文件等;
      • ->有关数据结构等连接信息:进程可以连接到一个进程队列中,或连接到相关的其它进程的PCB。
  • PCB的组织方式

    • 链表: 统一状态的进程其PCB成一脸表,多个状态对应多个不同的链表,各状态的进程形成不同的链表,例如就绪链表和阻塞链表
    • 索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index,各状态的进程形成不同的索引表,例如就绪索引表,阻塞索引表。

7.5 进程的生命周期管理

全周期:进程创建-进程运行-进程等待-进程唤醒-进程结束

  • 进程创建:引起进程创建的三个主要事件:(1)系统初始化;(2)用户请求创建一个新进程;(3)正在运行的进程执行了创建进程的系统调用
  • 进程等待(阻塞) :以下情况下,进程等待:(1)请求并等待系统服务,无法马上完成;(2)启动某种操作,无法马上完成;(3)需要的数据没有到达。(进程只能自己阻塞自己)
  • 进程唤醒:唤醒进程的原因如下:(1)被阻塞进程需要的资源可被满足;(2)被阻塞进程等待的事件到达;(3)将该进程的PCB插入到就绪队列中。(进程只能被别的进程或操作系统完成)
  • 进程结束:(1)正常退出(自愿性);(2)错误导致(自愿性);(3)致命错误(强制性);(4)被其他进程所杀(强制性)

7.6 进程的状态变化模型

进程的三种基本状态:

  • ->创建状态(new),一个进程正在被创建,还没被转到就绪状态之前的状态。
  • ->运行状态(running):当一个进程正在处理机上运行时;
  • ->就绪状态(ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行;
  • ->等待状态(或阻塞状态blocked):一个进程正在等待某一事件而暂停运行时的状态,如等待资源,等待I/O完成。
  • ->结束状态(exit),一个进程正在从系统中消失时的状态,这是因为进程结束或由于其它原因所导致。
进程状态变化模型.png

7.7 进程挂起suspend

  • 概念:进程挂起是一种合理且充分地利用系统资源的方式。挂起时,进程没有占用内存空间,处于挂起状态的进程映像在磁盘上。挂起就是把一个进程从内存转到外存。挂起的两种状态:(1)阻塞挂起状态(blocked-suspend): 进程在外存并等待某事件的出现。(2)就绪挂起状态(ready-suspend): 进程在外存,但只要进入内存,即可运行。
  • 挂起/解挂状态变化
    • 阻塞->阻塞挂起:没有进程处于就绪状态;或者就绪进程需要更多的内存资源;
    • 就绪->就绪挂起:当 高优先级阻塞(系统认为会很快就绪的)进程 和 低优先级就绪进程 冲突时,系统会挂起低优先级就绪进程;
    • 运行->就绪挂起:对于抢先式分时系统,当有高优先级阻塞挂起进程 因为事件而变成 就绪挂起 时,系统可能会把正在运行的进程转到就绪挂起状态。
    • 阻塞挂起->就绪挂起:当阻塞挂起的进程因为相关事件出现时,系统会 阻塞挂起进程转化为就绪挂起状态。
    • 就绪挂起->就绪:现在没有就绪进程;当前的就绪挂起进程的优先级高于就绪进程;
    • 阻塞挂起->阻塞:当一个进程释放足够的内存时,系统会把一个高优先级的阻塞挂起进程(系统认为会很快出现所等待的事件发生) 转为阻塞进程。
  • 状态队列
    • 状态队列是由操作系统来维护的一组队列,用来表示系统当中所有进程的当前状态;
    • 不同的状态分别用不同的队列来表示(就绪队列,各种类型的阻塞队列等);
    • 每个进程的PCB都根据它的状态加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离,加入到另一个状态队列里。

7.8 线程

  • 提出背景:需要新的实体,有以下特性:(1)实体间能够并发地执行;(2)实体之间共享相同的地址空间
  • 重新理解线程:进程 = 资源管理+线程
    线程所需资源.png
  • 线程优点
    (1)一个进程中可以同时存在多个线程;
    (2)各个线程之间可以并发的执行;
    (3)各个线程之间可以共享地址空间和文件等资源。
  • 线程缺点
    一个线程崩溃,该进程的所有线程崩溃。
  • 线程与进程比较
    (1)进程是资源分配的单位,线程是CPU调度单位;
    (2)进程拥有完整的资源平台,而线程只占有必须的资源,如寄存器,栈。
    (3)线程同样由就绪,阻塞,执行三种基本状态,同样具有状态之间的转换关系。
    (4)线程能减少并发执行的时间和空间开销:(线程的创建时间/终止时间/(同一进程内)切换时间更小;同一进程内各线程共享内存和文件资源,可直接进行不通过内核的通信)。

7.10 线程的实现

有三种线程实现的方法
用户线程:在用户空间实现,例如POSIX Pthreads, Mach C-threads, Solaris threads。
内核线程:在内核中实现,例如Windows, Solaris, Linux。
轻量级线程:在内核中实现,支持用户线程,例如Solaris

用户线程

在用户空间实现的线程机制,不依赖于操作系统的内核;由一组用户级的线程库来完成线程的管理,包括创建/终止/同步/调度;


用户线程.png
  • 优点
    (1)不需要操作系统内核了解用户线程的存在,可用于不支持线程技术的多进程操作系统;
    (2)每个进程都需要它私有的线程控制块TCB列表,来跟踪记录它各个线程的状态信息(PC/栈指针/寄存器),TCB由线程库函数来维护;
    (3)用户线程的切换由线程库函数实现,无需用户态/核心态切换,所以速度快;
    (4)允许每个进程有自定义的线程调度算法。
  • 缺点
    (1)如果一个线程发起系统调用而阻塞,则整个进程都在等待;
    (2)如果一个线程开始运行,除非它主动交出CPU,否则该线程所在进程的其它线程都无法运行;
    (3)由于时间片分配给的是进程,所以与其它进程相比,在多线程执行时,每个线程得到的时间片较少,执行会较慢。

内核线程

是指在操作系统的内核中实现的一种线程机制,由操作系统的内核来完成线程的创建,终止和管理。


内核线程.png
  • 由内核维护进程和上下文信息,也就是进程/线程控制块PCB/TCB;
  • 线程的创建/终止/切换都是通过系统调用或内核函数来实现(内核实现),所以系统开销大;
  • 在一个进程中,如果某个内核线程发起系统调用而阻塞,不会影响其它内核线程的运行;
  • 时间片分配给线程,多线程的进程能获得更多的CPU时间;
  • Windows NT/2000/XP 支持内核线程。

轻量级进程

他是内核支持的用户线程。一个进程可以有一个或多个轻量级进程,每个轻量级进程由一个单独的内核线程来支持(Solaris/Linux)


轻量级进程.png

7.11 上下文切换

  • 概念:停止当前运行的进程(从运行态改变成其它状态),并且调度其它进程(转变成运行态)。
  • 要求
    (1)->必须在切换之前储存许多部分的进程上下文;
    (2)->必须能够在之后恢复他们,所以进程不能显示它曾经被暂停过;
    (3)->必须快速(因为上下文切换非常频繁)。
  • 上下文切换需要储存的内容:
    (1)->例如寄存器(PC/SP/…),CPU状态,…
    (2)->一些时候可能会费时,所以需要尽量避免。

参考资料

原视频课程
其他课程笔记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容