操作系统第二章进程线程与作业

合集下载

操作系统第二章进程线程与作业

操作系统第二章进程线程与作业

相互作用
1. 直接相互作用:发生在相关进程之间
P1:
send
P2:
sync
receive
2. 间接相互作用:发生在任何进程之间
P1
P2
wait
hold
R
2.2.8 进程的创建与撤销
进程的创建
建立PCB,分配内存,加载程序,入就绪链 UNIX:pid=fork(),exec(prog,args)
2.1.3 多道程序设计的问题
处理机资源的管理
程序个数处理机个数(如何分配?)
存储资源的管理
地址空间的相对独立性、共享性 内存、外存(swap space)的分配与去配
设备资源管理
分配策略 IO控制
2.2 进程的引入
2.2.1 进程的概念 2.2.2 进程状态及状
态转换
2.2.3 进程控制块 2.2.4 进程的组成与
就绪运行:获得处理机 运行就绪:剥夺处理机 运行等待:申请资源未得到,启动IO 等待就绪:得到资源,IO中断
2.2.2.2 进程状态转换图
就绪
获得处理机 剥夺处理机
运行
事件发生
等待
等待事件
进程状态转换由操作系统完成,对用户是透明的; 进程在其生存期内经过多次状态转换,体现了进程的动态性和 并发性。
上下文切换(context switch)
– 由一个进程的上下文转到另外一个进程的上下文
系统开销(system overhead)
– 运行操作系统程序完成系统管理工作所花费的时间 和空间
2.2.5 进程的队列
PCB构成的队列:(不一定FIFO,单向或双向)
head
PCB
PCB
……
PCB

操作系统课件 第二章 进程线程与作业

操作系统课件 第二章 进程线程与作业

2.程序 程序是进程的“躯体”,其中包括代码和数 据两部分。 代码在运行期间不修改自身,以支持程序共 享。另外,在多道系统中,内存中同时存在多个 程序,这些程序在内存中的存放位置随机确定, 且在运行过程中可能会发生变化,因而代码必须 能够浮动,即不采用绝对地址。 数据一般包括静态变量、动态堆和动态栈。 堆用来保存动态变量,栈用来保存用户子程序相 互调用时的参数、局部变量、返回值、断点等。 数据一般归进程私用,当然也有系统提供进 程间数据共享功能,以实现进程间的信息交换。
2.内存资源管理问题 为使多个程序在系统中同时共存,需按某种 原则对内存进行划分,并将其分配给各个程序。 由于程序在内存中的实际存放位置在其装入 系统之前无法确定,且在其运行过程中地址可能 发生变化,因而程序只能使用相对地址。操作系 统负责存储空间的分配与管理,并在硬件支持下 将程序产生的逻辑地址映射到内存物理地址,即 实现程序的重定位。 此外,应防止内存中多道程序之间的相互干 扰或对OS的干扰,即一般不允许一个程序侵犯另 一个程序的地址空间或操作系统空间,为此操作 系统需在硬件支持下实现对存储空间的保护。
2.1.3 多道程序设计的问题
多道程序设计改善了系统资源的利用率,增 加了吞吐量,提高了系统效率,但同时也带来了 新的问题:即资源竞争。 多道程序设计的实现必须协调好运行程序与 资源之间的关系,使资源利用率尽可能提高。具 体地说,需解决如下问题: 1.处理机资源管理问题 如果可运行程序的个数多于处理机的个数, 则需解决可运行程序与处理机资源的竞争问题, 即需要对处理机资源加以管理,实现处理机资源 在各个程序之间的分配和调度。
2.内存资源利用率提高 允许多道程序同时进入系统可避免单道程序 过短而内存空间很大所造成的存储空间浪费。 3.处理机资源利用率提高

作业、进程、线程

作业、进程、线程

作业、进程、线程1. 基本概念作业:⽤户在⼀次解决或是⼀个事务处理过程中要求计算机系统所做的⼯作的集合,它包括⽤户程序、所需要的数据集控制命令等。

作业是由⼀系列有序的步骤组成的。

作业的完成要经过作业提交、作业收容、作业执⾏和作业完成4个阶段。

在执⾏⼀个作业可能会运⾏多个不同的进程。

进程:程序在⼀个数据集上的⼀次运⾏过程。

是操作系统资源分配的基本单位。

在Windows下,进程⼜被细化为线程,也就是⼀个进程下有多个能独⽴运⾏的更⼩的单位. 进程还拥有⼀个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。

线程:是进程中的⼀个实体,是被操作系统独⽴调度和执⾏的基本单位。

⼀个进程包含⼀个或多个线程。

线程只能归属于⼀个进程并且它只能访问该进程所拥有的资源。

当操作系统创建⼀个进程后,该进程会⾃动申请⼀个名为主线程或⾸要线程的线程。

主线程将执⾏运⾏时宿主, ⽽运⾏时宿主会负责载⼊CLR。

简单总结:作业是向计算机提交任务的任务实体,⽽进程是执⾏实体,是资源分配的基本单位,线程是处理机调度的基本单位。

2. 进程2.1 进程的概念主要有两点:第⼀,进程是⼀个实体。

每⼀个进程都有它⾃⼰的地址空间,⼀般情况下,包括⽂本区域(text region)、数据区域(data region)和堆栈(stack region)。

⽂本区域存储处理器执⾏的代码;数据区域存储变量和进程执⾏期间使⽤的动态分配的内存;堆栈区域存储着活动过程调⽤的指令和本地变量。

第⼆,进程是⼀个“执⾏中的程序”。

程序是⼀个没有⽣命的实体,只有处理器赋予程序⽣命时,它才能成为⼀个活动的实体,我们称其为进程。

2.2 进程特征 动态性:进程的实质是程序在多道程序系统中的⼀次执⾏过程,进程是动态产⽣,动态消亡的。

并发性:任何进程都可以同其他进程⼀起并发执⾏ 独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位; 异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成。

操作系统 第二章作业本(含答案)

操作系统 第二章作业本(含答案)

第二章作业第一次作业:1.进程有哪三种基本状态?进程在三种基本状态之间转换的典型原因是什么?答:三种基本状态:就绪状态、执行状态、阻塞状态。

(1)就绪状态→执行状态:进程分配到CPU资源(进程调度);(2)执行状态→就绪状态:时间片用完(3)执行状态→阻塞状态:I/O请求(4)阻塞状态→就绪状态:I/O完成2.在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。

main(){fork();fork();fork();}答:最多可以产生7个进程。

其家族树为:3.试从动态性、并发性和独立性上比较进程和程序。

答:1)动态性是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期;而程序只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的;2)并发性是进程的重要特征,同时也是OS的重要特征。

引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行,而程序本身(没有建立PCB)是不能并发执行的;3)独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。

凡未建立PCB的程序,都不能作为一个独立的单位来运行。

4.分析下列代码的功能:答:sleep_on实现进程的睡眠过程;wake_up实现进程的唤醒过程。

第二次作业:1.同步机制应该遵循哪些基本准则?你认为整型信号量机制遵循了同步机制的哪些基本准则?答:同步机制应遵循四个基本准则:a. 空闲让进:当无进程处于临界区时,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。

b. 忙则等待:当已有进程进入临界区时,其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问。

c. 有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态。

d. 让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态。

二章节进程线程与作业-PPT精品文档

二章节进程线程与作业-PPT精品文档
• 进程的表记
PCB PCB 数据 + 堆栈 系统空间 用户空间
程序
代码
表记1
表记2
软件教研室
2.2.4 进程的组成与上下文
进程上下文:进程的物理实体与支持进程 运行的物理环境,包括: PCB+程序 系统环境:地址空间,系统栈,打开文 件表,… 上下文切换:由一个进程的上下文转到另 一个进程的上下文 系统开销:运行操作系统程序完成系统管 理工作所花费的时间和空间
软件教研室
2.1.1 单道程序设计
t1 CPU 设备1 设备2 t2
运行程序A
t5
t6
运行程序A
t
• 处理机利用率低 • 设备利用率低 • 内存利用率低
软件教研室
2.1.2 多道程序设计的提出
t1
CPU 设备1 设备2
t2
程序A
t3
t4
程序B
t5
程序A
t6
t
• 设计目标:提高系统效率(吞吐量)
作业道数 吞吐量 全部处理时间
软件教研室
进程状态转换图
获得处理机
就绪
剥夺处理机 事件发生
运行
等待事件
等待
软件教研室
进程状态转换图2
获得处理机
就绪
创建
初创
运行
剥夺处理机 结束 等待事件
事件发生
等待
终止
软件教研室
2.2.3 进程控制块(PCB)
• 标志进程存在的数据结构,其中保 存系统管理进程所需的全部信息 • PCB 内容: – 进程标识(pid) 家族联系 – 进程状态 地址信息 – 现场信息 打开文件 – 调度参数 消息指针 – 所属用户(uid) 队列指针

OS-02进程,线程和作业

OS-02进程,线程和作业

§2.4进程的描述
进程控制块的内容(p29图2-4)
由父进程创建时决定
标识信息:进程名,标识号,用户,家族关系等
处理器状态:通信寄存器,控制和状态寄存器的
内容,PC值,栈指针等
进程控制信息:优先级,队列指针,进程状态,
程序、数据的存放位置等
资源管理信息:内存大小,设备,文件等
§2.4 进程的描述
源分配和调度
异步性:各进程按各自独立不可预知的速度向前推进。从
而导致程序执行不可再现性
其他: 交互性、结构性
§ 2.2 进程的概念
进程和程序既有密切联系又有区别
p34
联系:
程序是构成进程的要素之一,进程执行程序。 一对多关系 • 一个进程可以涉及到一个或几个程序的执行 • 一个程序可以对应一个或多个进程,即同一程序段可


§2.4 进程的描述
进程控制块队列 实现对进程的统一管理
运行队列
就绪队列 等待队列
每个队列都有一个队列的首指针; 队列末尾的PCB,其队列指针为-1
单一等待队列
就绪队列 允许进入 分派 处理器 超时 等待队列 事件发生
释放
等待事件
(五状态进程) 队列模 型
多条等待队列
就绪队列 允许进入 分派 处理器 超时 事件1队列 事件1发生 事件2队列 事件2发生 释放
问题
处理机分配问题 内存管理问题 设备资源分配与管理问题
为了更好的管理多道程序设计,必须引入新的实 体——进程
§ 2.2 进程的概念
进程的定义
进程(process)

一个正在执行的程序 计算机中正在运行的程序的一个实例 可以分配给处理器并由处理器执行的一个实体 有若干线程、一个当前状态和一组相关的系统资源所

操作系统第二章作业讲解

操作系统第二章作业讲解

操作系统第二章作业讲解第二章习题讲解1、进程之间存在着哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?(1)若干同学去图书馆借书;(2)两队举行篮球比赛;(3)流水线生产的各道工序;(4)商品生产和社会消费。

答:进程之间存在着直接制约与间接制约这两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的,而间接制约(互斥)则是由于进程间共享临界资源而引起的。

(1)若干同学去图书馆借书,是间接制约,其中书是临界资源;(2)两队举行篮球比赛,是间接制约,其中蓝球是临界资源;(3)流水线生产的各道工序,是直接制约,各道工序间需要相互合作,每道工序的开始都依赖于前一道工序的完成;(4)商品生产和社会消费,是直接制约,两者也需要相互合作:商品生产出来后才可以被消费;商品被消费后才需要再生产。

2、试写出相应的程序来描述下图所示的前趋图vara,b,c,d,e,f:semaphore:=0,0,0,0,0,0;begin S1; signal(a); signal(b);signal(c); end;begin wait(a); S2; end;begin wait(b); S3; signal(d); end; begin wait(c); S4; end;begin wait(d); S5; signal(e); signal(f); end; begin wait(e); S6; end;begin wait(f); S7; end;3、已知一个求值公式(A2+3B)/(B+5A),若A、B已赋值,试画出该公式求值过程的前趋图,并使用信号量描述这些前趋关系。

答:根据求值公式,假设:S1: X1=A*AS2: X2=3*BS3: X3=5*AS4: X4=X1+X2S5: X5=B+X3S6: X6=X4/X5var a,b,c,d,e:semaphore:=0,0,0,0,0;begin S1; signal(a); end;begin S2; signal(b); end;begin S3; signal(c); end;begin wait(a); wait(b); S4; signal(d); endbegin wait(c); S5; signal(e); endbegin wait(d); wait(e); S6; end4、桌上有一只能容纳一个水果的盘子;爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),一个儿子专等吃盘子中的桔子,一个女儿专等吃盘子里的苹果,1)试用信号量实现他们的同步关系;2)如果有两个家庭的爸爸、妈妈、儿子、女儿和二只盘子呢?会需要专门的实现吗?var empty,apple,orange:semaphore:= 1,0,0;说明:empty与apple表示盘子为空与盘子中放入了苹果,用于表示爸爸与女儿间的同步关系;empty与orange表示盘子为空与盘子中放入了桔子,用于表示妈妈与儿子间的同步关系;答案:1)使用记录型信号量father:beginrepeatproducer an apple;wait(empty);Put an apple to the dish;signal(apple);Until falseend daughter:beginrepeatwait(apple);Get an apple from dish;signal(empty);Eat an apple; Until falseendmother:beginrepeatproducer an orange;wait(empty);Put an orange to the dish;signal(orange); Until falseend son:beginrepeatwait(orange);Get an orange from dish;signal(empty);Eat an orange; Until falseend2)使用记录型信号量varmutex,empty,apple,orange:semaphore:=1,2,0,0;dish: array[0,1] of fruit;in, out:integer:= 0,0;father:beginrepeatproducer an apple;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=apple;in:=(in+1) mod 2;signal(mutex);signal(apple);Until falseend daughter:begin repeatwait(apple);wait(mutex);ifdish[out]==orange thenout:=(out+1) mod 2;get an apple from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseEndmother:beginrepeatproducer an orange;wait(empty);wait(mutex);if dish[in]==apple or dish[in]==orange thenin:=(in+1) mod 2;disk[in]:=orange;in:=(in+1) mod 2;signal(mutex);signal(orange);Until falseend son:beginrepeatwait(orange);wait(mutex);ifdish[out]==apple thenout:=(out+1) mod 2;get an orange from dish[out];out:=(out+1) mod 2;signal(mutex);signal(empty);Eat an apple; Until falseend5、试用信号量实现课件92页,司机与售票员进程的同步关系var stop, door :semaphore:=0,0;driver:beginrepeatdrive a bus; arrive at bus station; signal(stop);rest;wait(door);Until falseend conductor:begin repeatsell tickets;wait(stop);Open the door;Close the doorsignal(door); Until falseend6、试用信号量解决读者—写者问题,使得写者与读者优先级根据到达顺序确定。

第2章 进程与线程 操作系统

第2章 进程与线程 操作系统

进程与线程与线程第2章进程实验目的加深理解进程和程序、进程和线程的联系与区别 深入理解进程及线程的重要数据结构及实现机制熟悉进程及线程的创建、执行、阻塞、唤醒、终止等控制方法学会使用进程及线程开发应用程序主要内容 背景知识¾进程进程与线程基本与线程基本概念概念¾多进程编程¾多线程编程实验内容¾创建进程¾线程共享进程中的数据¾多线程实现单词统计工具进程及线程进程及线程基本定义基本定义进程(process )¾处于执行期的程序及其所包含资源的总称9程序:可执行程序代码9资源资源:打开文件:打开文件、、挂起信号、地址空间挂起信号、地址空间、数据段等、数据段等 线程(thread )¾进程中活动的对象9有独立的程序计数器、进程栈及一组进程寄存器序寄存进程与线程的区别 从形态角度¾一个进程一个进程可包含可包含一个或多个线程一个或多个线程从调度角度¾进程是资源分配的基本单位¾线程是处理器处理器调度调度的独立单位从虚拟化角度进程提供两种虚拟¾进程提供两种虚拟机制机制9虚拟处理器:进程独享处理器的假象虚拟内存进程拥有系统内所有内存资源的假象9虚拟内存:进程拥有系统内所有内存资源的假象¾线程之间线程之间可共享可共享虚拟内存,虚拟内存,但各自拥有独立虚拟处理器但各自拥有独立虚拟处理器对Linux 系统而言,线程只是一种特殊的进程!进程构成要素 正文段¾存放存放进程运行的代码,描述进程需完成进程运行的代码,描述进程需完成的的功能进程进程数据段数据段¾存放正文段在存放正文段在执行期间所需的执行期间所需的数据和数据和工作区工作区全局变量动态分配动态分配的空间(调用9包括包括全局变量全局变量、动态分配、动态分配的空间(调用的空间(调用malloc 函数函数))¾用户用户栈也在该数据段开辟栈也在该数据段开辟,存放函数,存放函数调用调用时的栈时的栈帧、局部帧、局部变量变量等等系统堆栈每个进程捆绑一个,进程在内核态下工作时¾每个进程捆绑一个,进程在内核态下工作时使用使用¾保存保存中断中断现场、执行现场、执行函数调用函数调用时的参数时的参数和返回地址和返回地址等等¾其中其中最重要的数据结构最重要的数据结构是是进程控制块进程虚拟地址结构 以Linux 系统为例(共4G 空间)¾用户空间(0x 0000 0000 ~ 0x 0x 0000 0000 ~ 0x bfff bfff ffff )9可执行映象执象9进程运行时堆栈9进程控制信息,如进程控制块进程控制信息,进程控制块¾内核空间(0x c000 0000以上)9内核被映射进程内核空间9只允许进程在核心态下访问Linux 进程描述符进程描述符¾数据结构:task_struct ¾include/include/linux linux//sched.h定义位置: 进程描述符向量结构task[NR TASKS]¾数据结构:task[NR_TASKS]¾定义位置:include/include/linux linux//sched.h¾定义格式struct task_struct *task[NR_TASKS] = {&*task[NR_TASKS] = {&init_task init_task}}#define NR TASKS 512#define NR_TASKS 512¾说明NR TASKS 记录系统可容纳进程数默认大9全局变量NR_TASKS 记录系统可容纳进程数,默认大小是512Linux 进程描述符的信息组成进程状态信息(state, flags, (state, flags, ptrace ptrace))调度信息(static_prio static_prio, , normal_proi normal_proi, , run_list run_list, array, policy), array, policy) 内存管理(mm, (mm, active_mm active_mm))进程状态位信息(binfmt binfmt, , exit_state exit_state, , exit_code exit_code, , exit_signal exit_signal)) 身份信息pid pid, , tgid tgid, , uid uid, , suid suid, , fsuid fsuid, , gid gid, , egid egid, , sgid sgid, , fsgid fsgid)(p g g g g g ) 家族信息(real_parent real_parent, parent, children, sibling), parent, children, sibling) 进程耗间信息realtime realtime, , utime utime, , stime stime, , starttime starttime)(,,,)时钟信息(it_prof_expires it_prof_expires, , it_virt_expires it_virt_expires, , it_sched_expires it_sched_expires))count link count,, fs fs, files), files)文件系统信息(_,,) IPC 信息(sysvsem sysvsem, signal, , signal, sighand sighand, blocked, , blocked, sigmask sigmask, pending), pending)进程进程标识标识成员名成员名::pid_t pid 功能¾内核内核通过通过pid 标识每个标识每个进程进程¾pid 与进程描述符之间与进程描述符之间有严格有严格的一一对应关系的一一对应关系 数据类型说明¾pid_t 实际上实际上是一个是一个int 类型¾取值范围:0 ~ 32767¾最大值修改:/proc/sys/kernel//proc/sys/kernel/pid_max pid_max ¾生成新pid :get_pid get_pid()()¾获取进程pid9ps 命令//id 9访问/proc/pid 9getpid getpid()()Åsys_getpid sys_getpid()()通过ps 命令获取进程信息功能¾查看系统中正在运行的进程语法¾ps [-ef ef][][--n name][name][--t ttys ttys][][--p pids pids][][--u users][users][--groups]用户ID进程占用CPU 的百分比进程开始的时进程号启动进程的终端号间和日期父进程号进程进程组标识组标识成员名成员名::pid t tgid p _g功能标识¾标识进程是否属于同组,组进程是否属于同组,组ID 是第一个组内线程(父进程)的ID ¾PID 线程组中的所有线程共享相同的 组ID 赋值相关操作¾tgid pid 单线程线程进程:进程:g 和p 相等¾多线程线程进程:组内所有线程进程:组内所有线程tgid 都相等,且相等,且等于父等于父进程进程pid用户相关的进程标识信息 功能:控制用户对系统资源的访问权限 分类¾用户用户标识标识uid 及组标识gid 9通常是进程创建者的uid 和gid¾有效有效用户标识用户标识euid 及有效组标识egid 9有时有时系统会赋予一般用户暂时拥有系统会赋予一般用户暂时拥有root 的uid 和gid gid((作为用户进程的euid 和egid egid)),以便于进行,以便于进行运作运作id id ¾备份用户标识suid 及备份组标识sgid 9在使用系统在使用系统调用改变调用改变uid 和gid 时,利用其保留真正uid 和gid f id f id¾文件系统标识fsuid 及文件系统组标识fsgid 9检查检查对文件系统访问对文件系统访问权限时使用,通常权限时使用,通常与与euid 及egid 相等文件系统中服务器需要作为个特殊的进程访9在NSF 文件系统中,NSF 服务器需要作为一个特殊的进程访问文件,此时只修改客户进程的fsuid 和fsgid ,而不改变获取用户相关的进程标识信息的代码示例g pgetpidtest.c¾获取用户相关的进程标识信息的方法:get XXX()Linux系统进程系统堆栈结构每个进程而都要单独分配一个系统堆栈结构组成¾内核态的进程堆栈¾进程描述符信息(task_struct)结构特点¾8192(213 )字节,两个页框¾占据连续两个页框,且第一个页框起始地址为213的倍数Linux 2.4Linux 2.4进程系统堆栈结构Linux 系统进程个数限制¾所有进程所有进程的的PCB 及系统堆栈及系统堆栈占用空间占用空间≤1/2的物理内存的物理内存总和总和内核堆栈两个连续物理页面(8K )进程描述符(约1K )Linux 2.4Linux 2.4进程系统进程系统堆栈相关数据结构堆栈相关数据结构 结构定义/include//include/linux linux//sched.h ) ()进程描述符管描述符管 进程进程描述符管理描述符管理¾分配:alloc_task_struct alloc_task_struct()()2048¾回收:free_task_struct free_task_struct()()¾访问:get_task_struct get_task_struct()()Linux 2.6Linux 2.6进程系统堆栈结构进程描述符由slab 分配器动态生成栈底用新结构struct thread_info ,指向进程描述符8K(约)进程描述符(约52字节)Linux 2.6 thread info 结构定义include/asm include/asm--x86/thread_info_32.h Linux 2.6进程系统进程系统堆栈相关数据结构堆栈相关数据结构_[__]¾thread_info (52个字节)Linux 2.6 thread uion 定义/include//include/linux linux//sched.h Linux 2.6进程系统堆栈相关数据结构定义_[]THREAD_SIZE 定义[include/asm include/asm--x86/thread_info_32.h ]Linux2.6CPULinux 2.6 CPU运行进程进程描述符的获取 由current来获取当前进程的进程描述符¾根据THREAD_SIZE大小,分别屏蔽掉内核栈的1212--bit位置,从而获得内核栈的起始位置LSB(4K)或1313--bit LSB(8K),从而获得内核栈的起始Linux 系统中的进程状态转换图current ,拥有CPUTASK ZOMBLE sys_exit()do_exit()运行TASK_ZOMBLEinterruptible sleep on()syscall_trace()d i l()interruptible_sleep_on()interruptible_sleep_on_timeout()_down_interruptble()do_signal()TASK_STOPPED创建进程do_fork()SIG_KILL|SIG_CONTwake_up_process()sleep_on ()_down()k ()wait_on()wake_up()wake_up_process()wake_up_interruptible()_up()wake_up()wake_up_process()_up()等待状态TASK_UNINTERRUPTIBLETASK_INTERRUPTIBLELinux 进程关系及系统进程关系及系统启动过程启动过程执行init()函数0号进程:系统自举过程,实质为内int 0x800号进程1)初始化内核并进行系统配置2)创建若干个用于高速缓存和虚拟主存管理的内核线程execve()核本身。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.2 进程的引入(Cont.)
多道系统中的程序: 推进,暂停,推进,暂停,…….
暂停:保存现场(PSW+PC,寄存器) 推进:恢复现场(寄存器,PSW+PC) 暂停原因:(1) 自身原因:等待资源,启动IO
(2) 剥夺CPU—给其它程序运行机会
2.2.1 进程的概念
定义:
可参与并发执行的程序称为进程。 进程是具有一定独立功能的程序关于一个数
家族联系 地址信息 打开文件 消息指针 队列指针
Process Control
Block
2.2.4 进程的组成与上下文
进程的组成
进程控制块(process control block)
建立进程建立PCB 撤销PCB撤销进程
程序
代码(code) 数据(data) 堆栈(stack+heap)
2.2.5 进程的队列
PCB构成的队列:(不一定FIFO,单向或双向)
head
PCB
PCB
……
PCB
1. 就绪队列:系统一个或若干个(根据调度算法确定) 2. 等待队列:每个等待事件一个 3. 运行指示字:每个处理机一个
进程队列模型
创建
就绪队列 时间片用完
完成 CPU
事件1发生
等待队列1
等待事件1
栈:保存返回点、参数、返回值、局部变量 堆:动态变量
2.2.4 进程的组成与上下文
进程的表记
PCB 程序
PCB
系统空间
代码
数据
+ 堆栈
用户空间
表记1
表记2
定义:进程的程序(代码和数据)称为进程影像(Process Image)。
2.2.4 进程的组成与上下文
进程上下文(process context)
2.2.6 进程的类型与特征(Cont.)
进程的特征
并发性:可以与其它进程一道向前推进; 动态性:动态产生、消亡,生存期内状态动态变化; 独立性:一个进程是可以调度的基本单位; 交往性:同时运行的进程可能发生相互作用; 异步性:进程以各自独立,不可预知的速度向前推
进; 结构性:每个进程有一个PCB。
就绪
获得处理机 剥夺处理机
运行
事件发生
等待
等待事件
进程状态转换由操作系统完成,对用户是透明的; 进程在其生存期内经过多次状态转换,体现了进程的动态性和 并发性。
2.2.3 进程控制块(PCB)
标志进程存在的数据结构,其中保存同)
进程标识(pid) 进程状态 现场信息 调度参数 所属用户(uid)
1. 直接相互作用:发生在相关进程之间
P1:
send
P2:
sync
receive
2. 间接相互作用:发生在任何进程之间
P1
P2
wait
hold
R
2.2.8 进程的创建与撤销
进程的创建
建立PCB,分配内存,加载程序,入就绪链 UNIX:pid=fork(),exec(prog,args)
事件2发生
等待队列2
等待事件2

事件n发生
等待队列n
等待事件n
2.2.6 进程的类型与特征
进程类型
系统进程
运行操作系统程序,完成系统管理(服务)功能. 例如:UNIX #0 -- sched, #1 -- init
用户进程
运行用户(应用)程序,为用户服务。 例如:UNIX vi, shell, cc
– 进程的物理实体与支持进程运行的物理环境统称为 进程上下文
PCB+程序 系统环境:地址空间,系统栈,打开文件表,…
上下文切换(context switch)
– 由一个进程的上下文转到另外一个进程的上下文
系统开销(system overhead)
– 运行操作系统程序完成系统管理工作所花费的时间 和空间
2.2.7 进程间相互联系与相互作用
相互联系
相关进程
同一家族的进程 可以共享文件,需要相互通讯,协调推进速度… 父进程可以监视子进程,子进程完成父进程交给
的任务。
无关进程
没有逻辑关系、同时执行的进程。 有资源竞争关系,互斥、死锁、饿死。
2.2.7 进程间相互联系与相互作用
相互作用
2.1 多道程序设计
2.1.1 单道程序设计的缺点 2.1.2 多道程序设计的提出 2.1.3 多道程序设计的问题
Multi-programming
多道程序设计目标
提高系统效率(吞吐量)
吞吐量
作业道数 全部处理时间
2.1.1 单道程序设计的缺点
处理机利用率低
设备利用率低
内存利用率低
2.2 进程的引入
2.2.1 进程的概念 2.2.2 进程状态及状
态转换
2.2.3 进程控制块 2.2.4 进程的组成与
上下文
2.2.5 进程的队列
2.2.6 进程的类型与 特征
2.2.7 进程间相互联 系与相互作用
2.2.8 进程的创建与 撤销
2.2.9 进程与程序间 的联系与差别
t1
t2
运行程序A
CPU 设备1 设备2
t5
t6
t
运行程序A
2.1.2 多道程序设计的提出
提高处理机、设备、内存等各种资源的 利用率,从而提高系统效率。
t1
t2 t3
t4
CPU 设备1 设备2
程序A
程序B
t5
t6
t
程序A
2.1.2 多道程序设计的提出(Cont.)
增加同时运行程序的道数可以提高资源 利用率,从而提高系统效率,但道数应 与系统资源数量相当。
道数过少,系统资源利用率低。 道数过多,系统开销(system
overhead)增大,程序响应速度下降。
2.1.3 多道程序设计的问题
处理机资源的管理
程序个数处理机个数(如何分配?)
存储资源的管理
地址空间的相对独立性、共享性 内存、外存(s)的分配与去配
设备资源管理
分配策略 IO控制
运行态(RUN): 占有CPU正在向前推进 就绪态(READY): 可以运行,但未得到CPU 等待态(WAIT): 等待某一事件发生
2.2.2.2 状态转换
就绪运行:获得处理机 运行就绪:剥夺处理机 运行等待:申请资源未得到,启动IO 等待就绪:得到资源,IO中断
2.2.2.2 进程状态转换图
据集合的一次运行活动。
定义强调两个方面:
动态:执行中的程序; 并发:可与其他进程同时执行。
并发 vs. 并行
并发:concurrent
宏观同时,“交替执行”,不要求多个CPU
并行:parallel
微观同时,要求多个CPU “并行算法”
2.2.2 进程状态及状态转换
2.2.2.1 进程状态(基本状态)
相关文档
最新文档