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组织起来,形成线程表。