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

相关推荐
周珂呀4 天前
Linux 命令行学习:数据流控制、文本处理、文件管理与自动化脚本 (第二天)
linux·前端·chrome·操作系统·终端·基础知识
编程老船长5 天前
献给刚入学的大学生-如何使用微PE工具箱或其他工具制作 Windows 11 U 盘启动盘
windows·操作系统
Eloudy5 天前
关注 dlopen(handle, mode) 中的 mode,dlsym dlclose示例
操作系统·动态库
_小猪沉塘6 天前
【哈工大_操作系统理论】L26&27 IO与显示器&键盘
操作系统
昵称p6 天前
lvgl
mcu·mqtt·操作系统·lvgl·任务创建
Harper. Lee6 天前
【OS】2.1.2 进程的状态与转换_进程的组织
笔记·操作系统·os·1024程序员节
tt5555555555556 天前
操作系统学习笔记2.3互斥
笔记·操作系统·1024程序员节
碳苯6 天前
【rCore OS 开源操作系统】Rust trait 特性快速上手
开发语言·人工智能·后端·rust·操作系统·trait
李贺梖梖7 天前
第4章 文件管理
操作系统