操作系统精髓与设计原理chap_第1页
操作系统精髓与设计原理chap_第2页
操作系统精髓与设计原理chap_第3页
操作系统精髓与设计原理chap_第4页
操作系统精髓与设计原理chap_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.1

Why

thread

is

introduced?Process

Resource

ownership

-

process

isallocated

a

virtual

address

space

tohold

the

process

image

Scheduling/execution-

follows

anexecution

path

that

may

beinterleaved

with

other

processes第1页/共52页实例考察文件服务器的例子,当它接受一个文件服务请求后,由于等待磁盘传输而经常被阻塞,假如不阻塞可

继续接受新的文件服务请求并进

行处理,则文件服务器的性能和

效率便可以提高。处理这些请求

时要共享一个磁盘缓冲区,程序

和数据要处于同一个地址空间,基于同数据区的同时多请求服务,单线程结构的进程难以达到这一

目标,需要寻第求3求页/共新52页概念、提出新机制。

进程的局限性

进程切换的开销大,频繁的进程调度将耗费大量处理器时间。

进程之间通信的代价大,每次通信均要涉及通信进程之间以及通信进程与操作系统之间的切换。

进程之间的并发性粒度较粗,并发度不高,过多的进程切换和通信使得细粒度的并发得不偿失。

不适合并行计算和分布并行计算的要求。对于多处理器和分布式的计算环境来说,进程之间大量频繁的通信和切换,会大大降低并行度。

不适合客户/服务器计算的要求。对于C/S结构来说,那些需要频繁输入输出并同时大量计算的服务器进程(如数据库服务器、事务监督程序)很难体现效率。第4页/共52页

操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,

操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好。

第5页/共52页解决问题的基本思路:把进程的两项功能--"独立分配资源”与"被调度分派执行”分离开来,进程作为系统资源分配和保护的独立单位,不需要频繁地切换;线程作为系统调度和分派的基本单位,能轻第6页装/共52运页

行,会被频繁地调度和切换,在这种指导思想下,产生了线程的概念。

传统操作系统一般只支持单线程进程,如MS-DOS支持单用户进程,进程是单线程的;

传统的Unix支持多用户进程,每个进程也是单线程的。

目前,很多著名的操作系统都支持多线程(结构)进程,如:Solaris、Mach、SVR4.OS/390、OS/2、WindowNT、Chorus等;JAVA的运行引擎则是单进程多线程的例子。

许多计算机公司都推出了自己的线程接口规范,如SolarisThread接口规范、OS/2Thread接

口规范、WindowsNTThread接口规范等;IEEE也推出了多线程程序设计标准POSIX1003.4a,可以相信多线程技术在程序设计中将会被越来越广泛地采用。

第7页/共52页第8页/共52页生活中的例子1:假设在一个公司中,不分部门,大家一起工作。好比一个进程,如果因为一个资源不足,比如今天没打印纸了,所有人都要休息。如果分了很多部门,哪个部分缺少资源,哪个部门休息,其他部门可以继续工作。这样就提高了整体的效率。生活的例子2:某大厦的装璜工程可作为一个"进程”运行,下有许多工程队,如瓦工队、木工队、水电工队、油漆工队等,每个工程队作为一个"线程”运行。"进程”负责采购资源(源料)和工程管理,有源料时这些工程队可以按进度齐头并进同时工作(多线程并行执行),以加快装璜进度。缺少源料时,如缺少水泥、木材、水管、油漆之一时,相应工程队等待(线程被阻塞),而可以调度其他工程队(线程)工作。从而,提高了整个系统(装璜工程)的并发性,加快了工程进度。

第9页/共52页OutlineWhy

thread

is

introduced?Process

and

thread

in

the

multiple

threaenvironmentHow

to

realize

the

thread?Windows

thread

managementSolaris

thread

and

SMP

managementLinux

process

and

thread

management第10页/共52页4.2

Process

and

thread

in

the

multiple

threadenvironment1.Processandthread Dispatchingisreferredtoasathread Resourceofownershipisreferredtoasaprocessortask第11页/共52页Process

Have

a

virtual

address

spacewhich

holds

the

process

image

Protected

access

to

processors,other

processes,

files,

and

I/Oresources第12页/共52页ThreadAn

execution

state

(running,

ready,

etc.)Saved

thread

context

when

not

runningHas

an

execution

stackSome

per-thread

static

storage

for

local

v

Access

to

the

memory

and

resources

of

itsprocessall

threads

of

a

process

share

this第13页/共52页线程定义

线程是进程中的一个实体,是被系统独立调度和分配的基本单位,故又称为轻权(轻型)进程(LightWeightProcess),它由线程控制表、存储线程上下文的用

户栈以及核心栈组成。{传统的进程称为重型进程(HeavyWeightProcess)。}第14页/共52页线程特点

线程是进程的一个实体,可作为系统独立调度和分派的基本单位。

线程自己基本不拥有系统资源,只拥有少量必不可少的资源:程序计数器、一组寄存器、栈。

它可与同属一个进程的其它线程共享进程所拥有的全部资源。

一个线程可以创建和撤消另一个线程;同一进程中的多个线程之间可以并发执行。

系统开销小、切换快。(进程的多个线程都在进程的地址空间活动)第15页/共52页第16页/共52页 TCB:每个线程有一个Thread结构,即线程控制块,用于保存自己私有的信息,主要由以下4个基本部分组成:一个唯一的线程标识符一组寄存器:程序计数器、状态寄存器、通用寄存器两个栈指针:一个指向核心栈(核心态下运行时),一个指

向用户栈(用户态下运行时)。

第17页/共52页一个私有存储区:存放私有数据和其它与该线程相关的统计Benefits

of

ThreadsTakes

less

time

to

create

a

new

thread

than

a

processLess

time

to

terminate

a

thread

than

a

processLess

time

to

switch

between

two

threads

within

the

same

process

Since

threads

within

the

same

process

share

memory

and

files,

thcommunicate

with

each

other

without

invoking

the

kernel第18页/共52页线程与进程的比较

调度:在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,将会引起进程切换。

并发性:在引入线程的系统中,进程之间可并发,同一进程内

的各线程之间也能并发执行。

第19页/共52页因而系统具有更好的并发性。

拥有资源:进程是拥有资源的独立单位,线程一般不拥有系统资源,但它可以访问隶属进程的资源。即一个进程的所有资源可供进程内的所有线程共享。

第20页/共52页

系统开销:进程的创建和撤消的开销要远大于线程创建和撤消的开销,进程切换时,当前进程的CPU环境要保存,新进程的CPU环境要设置,线程切换时只须保存和设置少量寄存器,并不涉及存储管理方面的操作,因此进程切换的开销远大于线程切换的开销。

由于它们拥有相同的地址空间,它们之间的同一进程内的各第21页线/共52程页线程的适用范围

服务器中的文件管理和进程通信控制;LAN中的一个文件服务器,在一段时间内需要处理几个文件请求因此有效的方法是:为每一个请求创建一个线程。在一个SMP机器上:多个线程可以同时在不同的处理器上运行。前后台处理;第22页/共52页在表处理进程中,一个线程显示菜异步处理;考虑一个应用:由几个独立部分(如打印、显示、计算)组成,这几个部分不需要顺

序执行,则每个部分可以以

线程方式实现。

当一个线程因I/O阻塞时,可以切换到同一应用的另一个线程。

第23页/共52页2.ThreadStatesThread

StatesRunningReadyBlockedOperations

associated

with

a

change

in

threadSpawnScheduleBlockedUnblockedFinish第24页/共52页

Suspending

a

process

involves

suspending

athreads

of

the

process

since

all

threads

shsame

address

space

Termination

of

a

process,

terminates

all

twithin

the

process第25页/共52页OutlineWhy

thread

is

introduced?Process

and

thread

in

the

multiple

threaenvironmentHow

to

realize

the

thread?Windows

thread

managementSolaris

thread

and

SMP

managementLinux

process

and

thread

management第26页/共52页4.3

How

to

realize

the

thread?1、User-LevelThreads2、Kernel-LevelThreads3.CombinedApproaches第27页/共52页1.User-LevelThreadse

of

The

kernel

isnot

aware

ofthe

existencthreads

The

kernelschedule

theprocess

as

aunit

All

thr第e28a页/d共52页management

isdone

by

the

任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行来实现多线程。

线程库是一个ULT管理的例行程序包,实质上线程库是线程的运行支撑环境。

第29页/共52页进程开始只有一个线程,它可以孵化新线程,通过过程调用把控制权传送给"孵化”过程,由线程库为新线程创建一个TCB,并置为就绪态,按一定的调度算法把控制权传递给进程中处于就绪态的一个线程。当控制权传送到线程库时,当前线程的现场信息应被保存,而当线程库调度一个线程执行时,要恢复它的现场第30页/共52页第31页/共52页Advantage

The

thread

switching

does

not

require

kernel

moprivilegeScheduling

can

be

application

specificULTs

can

run

on

any

OS第32页/共52页DisadvantageMany

System

calls

are

blockingCannot

take

advantage

of

multiprocessing第33页/共52页2.Kernel-LevelThreadsis

W2K,

Linux,and

OS/2

areexamples

of

thapproach

Kernelmaintainscontext

informa第t34i页/o共5n2页forthe

process

and优点第35页/共52页多处理器上,内核能同时调度同一进程中多个线程并行执行。进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行。内核线程数据结构和堆栈很小,KLT切换快,内核自身也可用多线程技术实现,能提高系统的执行速度和效率。

缺点第36页/共52页应用程序线程在用户态运行,而线程调度和管理在内核实现,在同一进程中,控制权从一个线程传送到另一个线程时需要用户态-内核态-用户态的模式切换3.CombinedApproachesExample

is

Solaris

Thread

creation

done

in

theuser

space

Bulk(most)

of

scheduling

andsynchronization

of

threadsdone

in

the

user

space

Some

ULTs

are

mapped

ontosome

KLT第3s7页/共52页第38页/共52页4.4

Windows

2000Process

Object(类型)第39页/共52页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论