操作系统第二章-(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组织起来,形成线程表。

相关推荐
REDcker17 小时前
软件开发者需要关注CPU指令集差异吗?
linux·c++·操作系统·c·cpu·指令集·加密算法
技术小甜甜21 小时前
[电脑疑难档案] WSL 无法连接 MySQL 的解决方案:127.0.0.1 不管用?试试这个方法!
操作系统·开发·wsl
不穿格子的程序员1 天前
操作系统篇3——深入理解操作系统:Linux 常用命令、系统中断与用户态/内核态详解
linux·服务器·操作系统·内核态·用户态·中断
海棠蚀omo1 天前
Linux信号保存的核心:未决信号集与阻塞信号集——探秘内核如何实现信号的阻塞、暂存与派发
linux·操作系统
不穿格子的程序员2 天前
操作系统篇4——深入理解操作系统:僵尸进程、孤儿进程与进程调度算法详解
操作系统·僵尸进程·孤儿进程·进程调度
代码AC不AC2 天前
【Linux】计算机的基石:从冯·诺依曼体系结构到操作系统管理
linux·操作系统·冯诺依曼体系结构
序属秋秋秋3 天前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
阿巴~阿巴~3 天前
自定义协议设计与实践:从协议必要性到JSON流式处理
服务器·网络·网络协议·json·操作系统·自定义协议
海棠蚀omo5 天前
解读Linux进程的“摩尔斯电码”:信号产生的原理与实践,掌控进程的生死时速
linux·操作系统
ZhengEnCi8 天前
P3H0-Python-os模块完全指南-操作系统接口与文件路径处理利器
python·操作系统