操作系统第二章-(2.1进程与线程)

1.进程

1.1进程的概念、组成、特征

1.1.1进程的概念

(1)区分程序和进程

程序:是静态的,就是存放在磁盘的可执行文件:如:QQ.exe

进程:是动态的,是程序执行的一次过程:如可同时启动多次QQ程序。

同一个程序多次执行对应多个进程

问题:怎么区分各个进程? ->当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的"身份证"PID

操作系统对进程还要进行做如下的事:

这些信息就都会保存在一个数据结构PCB中,即进程控制块

1.1.2进程的组成(PCB)

**重点:**PCB是进程存在的唯一标志-操作系统对进程进行管理工作所需的信息都存在PCB中。

1.1.3进程组成(程序段、数据段)

PCB是给操作系统用的。程序段、数据段是给进程自己用的。

1.1.4程序是的运行

平时的程序是存放硬盘的,当我们想执行就要将可执行文件调入内存,同时操作系统为他建立一个PCB,操作系统操作就是CPU从内存中取指令。

进程实体(静态)是进程的快照-某一瞬间。

进程是进程实体的运行过程,是系统进行资料分配和调度的一个独立单位。

一个进程被"调度",就是指操作系统决定让这个进程上CPU运行。

1.1.5进程的特点

需要注意的是:进程是独立获得资源的基本单位,到时候会和线程进行对比。

1.2进程的状态与转换

1.2.1进程状态的转换(丁字裤模型)

运行态转换成组塞态是主动的过程。

阻塞态转换成就绪态是被动的过程。

运行态也可以直接到就绪态,是因为时间片到,或主动让出CPU。

1.2.2进程的状态

单CPU,同一时刻只会有一个进程处于运行态。

问题:那操作系统怎么确定该进程处于那种状态?->进程PCB中,会有一个变量state来表示进程的当前状态。

1.2.3进程的组织

大致了解即可:进程的组织方式回答了,操作系统怎样把各个PCB组织起来的问题。

................1.3进程控制和1.4进程通信见下一个专题...........................................................................

2.线程

2.1线程的概念与特点

2.1.1什么是线程,为什么引入线程?

首先说:在最开始的时候,有两个程序,QQ聊天和QQ音乐,当没有引入进程时,两者不能同时运行,当引入进程时,就可以边进行QQ聊天和边听QQ音乐。

有的进程需要同时处理很多事情,如可以QQ可以继续文字聊天和视频。

线程是"轻量级进程"。

线程是一个基本的CPU执行单元,是程序执行流的最小单位。

引入线程后的变化:

  • 资源分配调度方面:线程是一个基本的CPU执行单元,是程序执行流的最小单位。而进程只是当作资料分配的基本单位。
  • 并发性:引入线程后,不就是进程直接可以并发,进程内的各线程之间也可以并发,从而提升了系统的并发度。
  • 系统开销:传统的进程间并发,需要切换进程的运行环境。如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小。

2.1.2线程的属性

TCB相当于进程中的PCB的作用。

2.2线程的实现方式和多线程模型

2.2.1线程的实现方式

(1)用户级线程

在用户级进程中回答问题:

1.线程的管理工作时由谁完成的?

答:是由应用程序完成的,这时候不需要操作系统进行的。、

2.线程切换是否需要CPU变态?

答:这里的线程同属于一个进程,所以不需要CPU变态。

3.操作系统是否能意识到用户级线程的存在?

答:意识不到,只只知道是一坨代码,不知道。所以这个叫做用户级线程。

4.优缺点

优点:用户级线程的切换在用户空间即可完 成,不需要切换到核心态,线程管理的系统 开销小,效率高。

缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞, 并发度不高。多个线程不可在多核处理机上并行运行。

(2) 内核态线程(KLT)

现代大多数使用的是内核级线程。

问题

  1. 内核级线程的管理工作由操作系统内核完成。

  2. 线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。

  3. 操作系统会为每个内核级线程建立相应的TCB(Thread Control Block,线程控制块), 通过TCB对线程进行管理。"内核级线程"就是"从操作系统内核视角看能看到的线程"

  4. 优缺点

优点:当一个线程被阻塞后,别的线程还可 以继续执行,并发能力强。多线程可在多核 处理机上并行执行。

缺点:一个用户进程会占用多个内核级线程, 线程切换由操作系统内核完成,需要切换到 核心态,因此线程管理的成本高,开销大。

(3)多线程模型

第一种

第二种

第三种

可以更人性化,如果视频聊天用的内存比较多时,就分配一个内核级线程给它。

综合了一对一和多对一的优点。

这一节还要区分在各个模型下的线程阻塞问题。

2.3线程的状态与转换

2.3.1线程的状态与转化

与进程的状态与转化分析一样,不过线程的状态与转化主要针对三个状态。

2.3.2线程的组织与控制

PC:指明现在这个线程执行到哪里了,如果这个线程要下处理机,就要把PC的值保存在PCB中;

如果这个线程要上处理机,就要将PCB中的值放到PC中。

多个TCB组织起来,形成线程表。

相关推荐
小宇子2B1 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
触底反弹3 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页3 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统
壮Sir不壮3 天前
GO语言——GMP调度模型
linux·开发语言·golang·go·操作系统·线程·协程
Surest3 天前
OpenHarmony 技术拆解(二):从 capability 看懂分布式软总线与任务迁移
操作系统
OpenAnolis小助手4 天前
如何利用 AI Agent 实现热补丁的自动化生成
人工智能·安全·ai·操作系统·agent·龙蜥
小宇子2B5 天前
缺页中断不是“出错”,是内核最忙的一条正常路径
操作系统
小宇子2B5 天前
内存不够时,内核怎么把"冷"页踢出去——swap 与页面回收
操作系统
磊 子5 天前
二.内核讲解
开发语言·操作系统·系统
下午写HelloWorld6 天前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统