操作系统精髓与设计原理-第4章 线程_对称多处理和微内核
ch04_Thread-1pp 操作系统 讲义
线程的概念第4章线程n g S y s t e m s , B J U T4.1概述传统进程资源分配的单位在CPU 上执行的单位: 一个控制线索n g S y s t e m s , B J U T 为什么引入线程概念? 引入进程的目的使多个进程并发执行改善资源利用率提高系统吞吐量 问题提出一个应用程序可能需要执行多个不同的或相似的任务创建多个进程进程的创建进程的创建、、切换切换、、撤销 时空开销 引入线程的原因程序并发执行时所付出的时空开销↓n g S y s t e m s , B J U T 线程(Thread)轻量级进程(lightweight process, LWP) 使用CPU 的基本单位控制线索在CPU 上执行的单位 包含线程ID程序计数器(PC)寄存器集合栈 属于同一进程的各线程, 共享该进程的资源 代码段, 数据段, 打开的文件, ……n g S y s t e m s , B J U T多线程进程n g S y s t e m s , B J U T 多线程环境下的进程和线程 进程资源分配的单位保护的单位 线程进程中的一个实体调度和分派的基本单位只拥有运行所必须的资源 PC, 一组寄存器, 栈与同进程内的其他线程与同进程内的其他线程共享进程所拥有的资源共享进程所拥有的资源 基本状态: 运行运行、、就绪就绪、、阻塞n g S y s t e m s , B J U T 多线程的优点提高并发性响应度高共享资源 经济—降低时空开销同一进程的多个线程共享地址空间同一进程的多个线程共享地址空间、、资源 线程的创建线程的创建、、撤销撤销、、切换—开销小 易于调度线程间通信效率高 多处理器体系结构利用 一进程的多个线程可在不同处理器上并行执行n g S y s t e m s , B J U T4.2 多线程模型用户线程与内核线程 多线程模型 多对一模型 一对一模型 多对多模型 二级模型n g S y s t e m s , B J U T用户线程用户级线程库管理线程 User threads are supported above the kernel and are managed without kernel support.n g S y s t e m s , B J U T内核线程Kernel threads are supported andmanaged directly by the operating systemn g S y s t e m s , B J U Tn g S y s t e m s , B J U Tn g S y s t e m s , B J U T多对多模型n g S y s t e m s , B J U T二级模型n g S y s t e m s , B J UT Multithreaded Server Architecture (补充) 线程池n g S y s t e m s , B J U TConcurrent Execution on a Single-core Systemn g S y s t e m s , B J UT Parallel Execution on a Multicore Systemn g S y s t e m s , B J U T 本章其余内容自学 推荐编程实践。
原版的操作系统_精髓与设计原理_第5版Chapter04
Threads, SMP, and MicrokernelsChapter 4Chapter41Process•Resource ownership -process includes a R hi i l d virtual address space to hold the process image•Scheduling/execution-follows anfollows an execution path that may be interleaved with other processesith th•These two characteristics are treated independently by the operating system2Process •Dispatching is referred to as a thread or Di hi i f d h d lightweight process•Resource of ownership is referred to as a process or taskprocess or task3Multithreading •Operating system supports multipleO i l i l threads of execution within a single process•MS-DOS supports a single threadMS-DOS supports a single thread •UNIX supports multiple user processes but only supports one thread per process Windows, Solaris, Linux, Mach, and •Windows,Solaris,Linux,Mach,and OS/2 support multiple threads45Process•Have a virtual address space which holds H i l dd hi h h ld the process image•Protected access to processors, other processes, files, and I/O resources processes files and I/O resources6Thread•An execution state (running, ready, etc.)A i(i d)•Saved thread context when not running g •Has an execution stack•Some per-thread static storage for local variables•Access to the memory and resources of its processits process–all threads of a process share this78Benefits of ThreadsBenefits of Threads •Takes less time to create a new thread than a T k l ti t t th d thprocess•Less time to terminate a thread than a process •Less time to switch between two threadswithin the same processSince threads within the same process share •Since threads within the same process sharememory and files, they can communicate witheach other without invoking the kerneleach other without invoking the kernel9Uses of Threads in a Single-User Multiprocessing System •Foreground to background workF d b k d ky p g •Asynchronous processing•Speed of execution•Modular program structure10Threads •Suspending a process involvesS di i l suspending all threads of the process since all threads share the same address sp cespace•Termination of a process, terminates all threads within the processth d ithi th11Thread StatesThread States•States associated with a change in thread S i d i h h i h d state–SpawnSp•Spawn another thread–Block–Unblock–Finish•Deallocate register context and stacks12Remote Procedure Call UsingSingle Thread13Remote Procedure Call UsingThreads14Multithreading15Adobe PageMaker Adobe PageMaker16User Level ThreadsUser-Level Threads•All thread management is done by the All h d i d b h application•The kernel is not aware of the existence of threadsof threads17User-Level Threads User Level Threads1819Kernel Level ThreadsKernel-Level Threads •Windows is an example of this approach Wi d i l f hi h •Kernel maintains context information for the process and the threads •Scheduling is done on a thread basisS h d li i d th d b i20Kernel Level Threads Kernel-Level Threads21VAX Running UNIX-Like Operating System22Combined ApproachesCombined Approaches •Example is SolarisE l i S l ip •Thread creation done in the user space •Bulk of scheduling and synchronization of threads within applicationf th d ithi li ti23Combined Approaches Combined Approaches24Relationship Between Threadsand Processes25Systems•Single Instruction Single Data (SISD)Si l I i Si l D(SISD) stream–Single processor executes a singleinstruction stream to operate on data storedpin a single memory•Single Instruction Multiple Data (SIMD) Single Instruction Multiple Data(SIMD) stream–Each instruction is executed on a differentset of data by the different processors26Systems•Multiple Instruction Single Data (MISD)M lti l I t ti Si l D t(MISD) stream–A sequence of data is transmitted to a set ofprocessors, each of which executes a differentinstruction sequence. Never implementedinstruction sequence Never implemented •Multiple Instruction Multiple Data (MIMD)–A set of processors simultaneously executeA f i l ldifferent instruction sequences on different datasets2728Symmetric Multiprocessing Symmetric Multiprocessing •Kernel can execute on any processorK lyp y p•Typically each processor does self-scheduling form the pool of available process or threadsprocess or threads2930Multiprocessor Operating System Design Considerations •Simultaneous concurrent processes or Si lthreads•SchedulingS h i ti•Synchronizationy g•Memory management•Reliability and fault tolerance31MicrokernelsSmall operating system core•Small operating system core•Contains only essential core operating systems functions•Many services traditionally included in the operating system are now external subsystems operating system are now external subsystems–Device drivers–File systemsFile systems–Virtual memory manager–Windowing systemWindowing system–Security services3233Organization•Uniform interface on request made by a Uniform interface on request made by a processDon’t distinguish between kernel level and user–Don t distinguish between kernel-level and user-level servicesp y g –All services are provided by means of messagepassing•Extensibility–Allows the addition of new services •Flexibility–New features added–Existing features can be subtracted34Organization •PortabilityP bili–Changes needed to port the system to a newprocessor is changed in the microkernel -not in the other services•Reliability–Modular designModular design–Small microkernel can be rigorously tested35Benefits of MicrokernelOrganization •Distributed system supportDi ib d–Message are sent without knowing what thetarget machine isObject oriented operating system •Object-oriented operating system –Components are objects with clearlydefined interfaces that can bedefined interfaces that can beinterconnected to form software36Microkernel DesignMicrokernel Design•Low-level memory managementL l l t–Mapping each virtual page to a physical page frame37Microkernel DesignMicrokernel Design •Interprocess communicationI i ip g•I/O and interrupt management38Windows ProcessesWindows Processes •Implemented as objectsI l d bjp y•An executable process may contain one or more threads•Both processes and thread objects have B th d th d bj t h built-in synchronization capabilities3940Windows Process Object Windows Process Object41Windows Thread Object Windows Thread Object42Windows 2000Thread States •ReadyR d•Standby y•Running•Waiting•Transition•Terminated4344Solaris•Process includes the user’s addressP i l d h’dd space, stack, and process control block •User-level threadsLi ht i ht(LWP)•Lightweight processes (LWP)•Kernel threads454647Solaris Lightweight DataStructure•IdentifierId tifi•Priority•Signal maskSaved values of user level registers •Saved values of user-level registers •Kernel stack•Resource usage and profiling dataR d fili d t•Pointer to the corresponding kernel thread •Pointer to the process structure4849Linux Task Data Structure Linux Task Data Structure•State•Scheduling information•Identifiersd ifi•Interprocess communication•Links•Times and timers•File systemAddress space•Address space•Processor-specific context50。
《操作系统精髓与设计原理·第五版》习题答案
第1章计算机系统概述1.1、图1.3中的理想机器还有两条I/O指令:0011 = 从I/O中载入AC0111 = 把AC保存到I/O中在这种情况下,12位地址标识一个特殊的外部设备。
请给出以下程序的执行过程(按照图1.4的格式):1.从设备5中载入AC。
2.加上存储器单元940的内容。
3.把AC保存到设备6中。
假设从设备5中取到的下一个值为3940单元中的值为2。
答案:存储器(16进制内容):300:3005;301:5940;302:7006步骤1:3005->IR;步骤2:3->AC步骤3:5940->IR;步骤4:3+2=5->AC步骤5:7006->IR:步骤6:AC->设备61.2、本章中用6步来描述图1.4中的程序执行情况,请使用MAR和MBR扩充这个描述。
答案:1. a. PC中包含第一条指令的地址300,该指令的内容被送入MAR中。
b. 地址为300的指令的内容(值为十六进制数1940)被送入MBR,并且PC增1。
这两个步骤是并行完成的。
c. MBR中的值被送入指令寄存器IR中。
2. a. 指令寄存器IR中的地址部分(940)被送入MAR中。
b. 地址940中的值被送入MBR中。
c. MBR中的值被送入AC中。
3. a. PC中的值(301)被送入MAR中。
b. 地址为301的指令的内容(值为十六进制数5941)被送入MBR,并且PC增1。
c. MBR中的值被送入指令寄存器IR中。
4. a. 指令寄存器IR中的地址部分(941)被送入MAR中。
b. 地址941中的值被送入MBR中。
c. AC中以前的内容和地址为941的存储单元中的内容相加,结果保存到AC中。
5. a. PC中的值(302)被送入MAR中。
b. 地址为302的指令的内容(值为十六进制数2941)被送入MBR,并且PC增1。
c. MBR中的值被送入指令寄存器IR中。
6. a. 指令寄存器IR中的地址部分(941)被送入MAR中。
操作系统 题库 判断题
第一章计算机系统概论1.操作系统类似于计算机硬件和人类用户之间的接口。
答案:T。
2.处理器的一个主要功能是与内存交换数据。
答案:T。
3.一般用户对系统程序无障碍,对应用程序有障碍。
答案:F4.数据寄存器一般是通用的,但可能局限于像浮点数运算这样的特定任务。
T5.程序状态字(PSW)通常包含条件码等状态信息。
条件码是由程序员为操作结果设置的位。
答案:F6.一个单一的指令需要的处理称为执行周期。
答案:F(称为指令周期)7.取到的指令通常被存放在指令寄存器中(IR)。
答案:T8.中断是系统模块暂停处理器正常处理过程所采用的一种机制。
答案:T9.为适应中断产生的情况,必须在指令周期中增加一个额外的读取阶段。
F10.在处理器控制控制例行的中断处理器之前,需要储存的最少信息有程序状态字和当前指令地址。
答案:F11.多中断的一个处理方法是在处理一个中断时禁止再发生中断。
答案:T12.多道程序设计允许处理器使用长时间等待的中断处理的空闲时间。
答案:T13.在两级存取优先级中,命中率定义为对较慢存储器的访问次数与对所有存储器访问次数的比值。
答案:F14.高速缓冲存储器的开发利用了局部性原理,即在处理器与主存储器之间提供一个容量小而快速的存储器。
T15.在高速缓冲存储器的设计中,块大小与高速缓冲存储器和主存储器间的数据交换单位有关。
答案:T16.可编程I/O的一个主要问题是,处理器必须等到I/O模块准备完毕,并且在等待的过程中必须反复不停的检查I/O模块的状态。
答案:T第二章操作系统概述1.操作系统是控制应用程序执行的程序,并充当应用程序和计算机硬件之间的接口。
(对)2.在多用户系统中,操作系统管理那些用作重要目的的资源。
(对)3.操作系统通常在它的专用O/S处理器上并行应用程序。
(错)4.操作系统演化的动力之一就是基本硬件技术的进步。
(对)5. 早期的计算机中没有操作系统,用户直接与硬件打交道。
(对)6 在一个批处理系统,“control is passed to a job”意味着处理器正在取指令和执行用户程序。
操作系统复习题 (3)
6.在分布式操作系统设计中,一对多(线程对进程)的关系特别有意思,因为它涉及线程转移的概念. T
7.一个控制多处理器共享存储架构的不利条件就是对整个系统控制的降低.T
8.在对称多处理系统(SMP)中,每个处理器进入到各自独立的内存领域.F (还获得了内存共享)
第四章线程、对称多处理器和微内核
复习题:
1.操作系统的基本单位调度,通常称为一个轻量级线程或线程.T
2. MS-DOS操作系统是一个单一进程具有多线程的例子.F
3.在一个多线程环境,进程是单位资源配置和保护的单位.T
4.线程同步的概念是一个多线程系统所必需的,因为单一进程的线程共享进程的进程控制块(PCB). F(因为他们有着相同地址空间)
c在不同进程之间的转换比在同一进程下的不同线程间转换花的时间少
d以上所有
4.线程基本状态发生变化,需要等待一个事件时称为: C
A.就绪状态
B.运行状态
C.阻塞状态
D.都不是
5.用户级线程(ULTs)和内核级线程(KLTs)相比一个弊端,是:B
A.调度请求准确
B.当一个ULT执行一个系统调用,进程中所有的线程都被阻塞
C.对称多处理技术
D.非以上所有
2.是实行单一制的多线程程序是:C
A.WIN 2000
B.Solaris
C.Java
D.All of the above
3.以下哪个是关于进程和线程的正确的关系:A
a.在现有的进程下创建线程要比建一个新进程下创建线程花的时间要少得多.
b终止一个进程要比一个线程花的时间长
操作系统概念第七版4-6章课后题答案(中文版)
操作系统概念第七版4-6章课后题答案(中⽂版)第四章线程4.1举两个多线程程序设计的例⼦来说明多线程不⽐单线程⽅案提⾼性能答:1)任何形式的顺序程序对线程来说都不是⼀个好的形式。
例如⼀个计算个⼈报酬的程序。
2)另外⼀个例⼦是⼀个“空壳”程序,如C-shell和korn shell。
这种程序必须密切检测其本⾝的⼯作空间。
如打开的⽂件、环境变量和当前⼯作⽬录。
4.2描述⼀下线程库采取⾏动进⾏⽤户级线程上下⽂切换的过程答:⽤户线程之间的上下⽂切换和内核线程之间的相互转换是⾮常相似的。
但它依赖于线程库和怎样把⽤户线程指给内核程序。
⼀般来说,⽤户线程之间的上下⽂切换涉及到⽤⼀个⽤户程序的轻量级进程(LWP)和⽤另外⼀个线程来代替。
这种⾏为通常涉及到寄存器的节约和释放。
4.3在哪些情况下使⽤多内核线程的多线程⽅案⽐单处理器系统的单个线程⽅案提供更好的性能。
答:当⼀个内核线程的页⾯发⽣错误时,另外的内核线程会⽤⼀种有效的⽅法被转换成使⽤交错时间。
另⼀⽅⾯,当页⾯发⽣错误时,⼀个单⼀线程进程将不能够发挥有效性能。
因此,在⼀个程序可能有频繁的页⾯错误或不得不等待其他系统的事件的情况下,多线程⽅案会有⽐单处理器系统更好的性能。
4.4以下程序中的哪些组成部分在多线程程序中是被线程共享的?a.寄存值b.堆内存c.全局变量d.栈内存答:⼀个线程程序的线程共享堆内存和全局变量,但每个线程都有属于⾃⼰的⼀组寄存值和栈内存。
4.5⼀个采⽤多⽤户线程的多线程⽅案在多进程系统中能够取得⽐在单处理器系统中更好的性能吗?答:⼀个包括多⽤户线程的多线程系统⽆法在多处理系统上同时使⽤不同的处理器。
操作系统只能看到⼀个单⼀的进程且不会调度在不同处理器上的不同进程的线程。
因此,多处理器系统执⾏多个⽤户线程是没有性能优势的。
4.6就如4.5.2章节描述的那样,Linux没有区分进程和线程的能⼒。
且Linux线程都是⽤相同的⽅法:允许⼀个任务与⼀组传递给clone()系统调⽤的标志的进程或线程。
《操作系统精髓与设计原理·第六版》中文版答案
操作系统 精髓与设计原理(第五版))
第一章:计算机系统概述计算机系统基本组成I.处理器:控制计算机的操作,执行数据处理功能。
当只有一个处理器时,它通常指中央处理器(CPU)。
II. 主存储器:存储数据和程序。
iii.输入/输出模块:在计算机和外部环境之间移动数据。
iv.系统总线:为处理器、主存储器和输入输出模块提供通信的设施。
什么是中断?中断是指计算机的处理机用来处理外来请求或部错误的一种机制,该机制软硬件结合,使得计算机的处理机能够暂停当前指令系列的执行而转向请求指令系列的执行。
1.将计算机的处理机正在执行的指令系列称为当前指令系列,当前指令系列通常是用户程序。
2.将计算机为处理各类突发(非预期)事件请求(I/O请求,时钟请求,程序错误,硬件错误)而有待执行的指令系列称为请求指令系列,通常称为中断处理程序,是操作系统的一部分。
3.请求指令系列执行期间,可以被其它事件中断(在允许多重中断的情况下)。
4.执行请求指令系列完毕后,可以返回被暂停的原始指令系列,也可以不返回(在多道程序设计环境中)。
5.中断处理程序与社会事务中的应急事件的预案类似。
中断处理中断的发生激活了很多事情,包括处理器硬件中的事件及软件中的事件。
1.设备给处理器发出一个中断信号。
2.处理器在响应中断前结束指令系列的执行。
3.处理器对中断进行测定,确定存在未响应的中断,并给提交中断的设备发送确认信号,确认信号允许该设备取消它的中断信号。
4.处理器需要把处理权转移到中断程序中去做准备。
首先,需要保存从中断点恢复当前程序所需要的信息,要求的最少信息包括程序状态字(PSW)和保存在程序计数器中的下一条执行的指令地址,它们被压入系统控制栈中(参见附录1B)。
5.处理器把响应此中断的中断处理器入口地址装入程序的计数器中。
6.在这一点,与被中断程序相关的程序计数器和PSW被保存到系统栈中。
此外,还有一些其他信息被当作正在执行程序的状态的一部分。
7.中断处理器现在可以开始处理中断,其中包括检查与I/O操作相关的信息或其他引起中断的事件,还可能包括给I/O设备发送附加命令或应答。
操作系统原理CCH04-Thread
– 又是一个可独立调度和分派的基本单位。
这二个基本属性使进程成为并发执行的基本单位 • 在一些早期的OS中,比如大多数UNIX系统、Linux等, 进程同时具有这二个属性。
4.1 Overview
• 有些OS中,象WindowsNT、Solaris、OS/2、Mac OS等,这二个属性由OS独立处理。
• Responsiveness 响应度高:一个多线程的应用在执行中,即使其中的某个线程阻塞, 其他的线程还可继续执行,从而提高响应速度
• Resource Sharing
资源共享:同一进程的多个线程共享该进程的内存等资源 • Economy
经济性:创建和切换线程的开销要低于进程。比如,Solaris中进程
– program counter 程序计数器 – register set 寄存器集
– stack spaห้องสมุดไป่ตู้e 栈空间
• A thread shares with its peer threads its: 一个线程与它的对等线程共享:
– code section 代码段
– data section 数据段 – operating-system resources 操作系统资源
Win32 Threads
• Win32 API is the primary API for Microsoft OS (Win95,98,NT,2000,XP ) • A kernel-level library on windows
level
• A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization
04线程、对称多处理和微内核
异步处理(如字处理与周期性备份)
加速执行(在多核/多处理器系统中的并行) 模块化程序结构(涉及多种活动或多个I/O源和目的 地的程序)
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2012年3月
8
4.1.2 线程的执行特征
线程状态
派生 就绪 唤醒
调度 执行 阻塞 阻塞
完成
派生 调度 完成 执行 阻塞 阻塞
就绪
唤醒
例1:使用线程的RPC
一个线程阻塞不 会导致整个进程 阻塞
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2012年3月 11
例2:单处理器上的多线程
多个进程中的 多个线程可交 替执行
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2012年3月 12
第4章 线程、对称多处理和微内核 内容提要 进程(process)与线程(thread) 对称多处理 (SMP) 微内核 Windows/Unix/Linux的相关技术
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2012年3月
1
4.1 进程与线程
进程(process)=>进程映像=代码、数据、栈、PCB 进程概念的两个特点
4.3.2 微内核组织结构的优点
一致接口 所有服务都以消息的形式提供 可扩展性(Extensibility) 允许增加新的服务 灵活性(Flexibility) 可以增加新的功能、删除现有功能 可移植性(Portability) 把系统移植到新处理器上只需要对内核而不需要对其 他服务修改
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2012年3月 32
操作系统 第4章
2.发送信号到进程内每个线程。 3.发送信号到进程内某些固定线程。 4.规定一个特定线程以接收进程的所有信号。 4.5.4 线程池 线程池的主要思想是在进程开始时创建一定数量的线程,并放入到池中等待工作。当 服务器收到请求时,他会唤醒池中的一个线程(如果有可以用的线程),并将要处理的请 求传递给它。一旦线程完成了服务,它会返回池中再等待工作。如果池中没有可用的 线程,那么服务器会一直等待直到有空线程为止。 线程池限制了在任何时候可用线程的数量。这对那些不能支持大量并发线程的系统非 常重要。 Java 包含了线程池的API: 1.单线程执行器(newSingleThreadExecutor()),创建大小为1的线程池。 2.固定线程执行器(newFixedThreadPool(int size)),创建大小固定的线程池。 3.缓冲线程执行器(newCachedThreadPool()), 创建无限制的线程池。 import java.util.concurrent.*; public class TPExample { public static void main(String[] args){ int numTasks = Integer.parseInt(args[0].trim());
第4章 线程
20Байду номын сангаас5年4月20日星期一 12:21
4.1 概述 线程是CPU使用的基本单元,它由线程 ID、程序计数器、寄存器集合和栈组成。它与属 于同一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开文件和信 号。 4.1.2 多线程优点 1.响应度高。如果对一个交互程序采用多线程,即使其部分阻塞或执行较冗长的操 作,那么该程序仍能继续执行,从而增加了对用户的响应程度。 2.资源共享。线程默认共享他们所属进程的内存和资源。 3.经济。由于创建进程所需的内存和资源比较昂贵。但是线程能共享他们所属进程的 资源,所以创建和切换线程会更为经济。 4.多处理器体系结构的利用。多线程的优点之一是能充分使用多处理器体系结构,以 便每个进程能并行运行在不同的处理器上。 4.2 多线程模型 用户层的用户线程(user thread) 和内核层的内核线程(kernel thread)。用户线程受内核 支持,而无需内核管理;而内核线程由操作系统直接支持和管理。 4.2.1 多对一模型 将许多用户线程映射到一个内核线程。 如果一个线程阻塞了系统调用,那么整个进程会阻塞。而且,因为任一时刻只有一个 线程能访问内核,多个线程不能并行运行在多处理器上。 4.2.2 一对一模型 将每个用户线程映射到一个内核线程,它提供了比多对一模型更好的并发性能;他也 允许多个线程并行地运行在多个处理器系统上。这种模型的唯一缺点是创建一个用户 线程就需要创建一个内核线程。 4.2.3 多对多模型 多路复用了许多用户线程到同样数量或更小数量的内核线程上。 开发人员可以创建任意多个用户线程,并且相应内核线程能在多处理器系统上并发运 行。而且当一个线程阻塞系统调用时,内核能调度另一个线程来执行。 4.3 线程库 线程库(thread library)为程序员提供创建和管理线程的API。 4.4 Java 线程 为新的对象调用start()方法需要做两件事: 1.在JVM中分配内存并初始化新的线程。 2.调用run()方法,使线程适合在JVM中运行 在Java程序中如果两个或更多的线程需要共享数据,通过向相应的线程传递对共享对 象的引用来实现。 class MutableInteger { private int value; public int getValue(){ return value; } public void setValue(int value){ this.value = value; } }
操作系统原理复习大纲
《操作系统原理》课程大纲一、课程性质及其设置目的与要求(一)课程性质、地位与任务随着计算机技术的迅猛发展,计算机的硬、软件资源越来越丰富,用户也要求能更方便、更灵活地使用计算机系统。
为了增强计算机系统的处理能力以及方便用户有效地使用计算机系统,操作系统已成为现代计算机系统中不可缺少的重要组成部分。
因此,操作系统原理计算机软件及其相关专业的主要专业必修课程。
本课程从操作系统实现资源管理的观点出发,阐述如何对计算机系统中的硬、软件资源进行管理,使计算机系统协调一致地、有效地为用户服务,充分发挥资源的使用效率,提高计算机系统的服务质量。
一个从事计算机科学技术的工作者,当他掌握了操作系统的工作原理和实现方法后,将有利于他利用计算机系统开发各种应用软件和系统软件,初步具备从事操作系统分析、扩展和设计的知识和能力。
(二)课程基本要求掌握操作系统对各种资源的管理方法和操作系统各部分程序之间的关系后,才能真正掌握操作系统的工作原理以及了解操作系统在整个计算机系统中的作用。
通过本课程的学习,要求:1.了解操作系统的组成部分,掌握操作系统的基本原理、基本概念,了解操作系统的基本设计方法。
2.理解操作系统的基本原理在UNIX/LINUX/Windows中的应用和实现技术。
(三)本课程与有关课程的联系操作系统是管理计算机系统资源和控制程序执行的一种系统软件,它直接扩充裸机(不配有任何软件的计算机)的功能,为程序的执行提供良好的环境。
所以,在学习操作系统之前应该先学习计算机组成原理、数据结构导论、高级语言程序设计、汇编语言程序设计等课程。
在这些先行课的基础上学习本课程符合循序渐进的规律,这样不仅容易理解课程内容,而且能正确地把操作系统的各部分程序有机地联系起来。
二、课程内容与考核目标第1章计算机硬件基础(一)课程内容1.计算机硬件系统2.CPU寄存器3.指令执行4.中断5.存储器的层次6.Caching7.I/O方式(二)学习目的与要求了解计算机硬件系统的组成与工作原理;各部件工作原理及特点;程序状态字,中断的原理与作用,各种I/O方式的过程与特点。
《操作系统原理》课件(北大)05
生活中类比例子:
进程的分类: 系统进程 用户进程
系统进程优先于用户进程 daemon: 守护进程/精灵进程
2.进程的基本状态及其转换
进程的三种基本状态: 进程在生命消亡前处于且仅处于三种基本 状态之一
运行
1
2
3
就绪
4
等待
进程的状态及其转换
进程状态转换:
在进程运行过程中,由于进程自身进展情况及外 界环境的变化,这三种基本状态可以依据一定 的条件相互转换 1 就绪—运行 2 运行—就绪 3 运行—等待 4 等待—就绪
进程转换
就绪 --> 运行
调度程序选择一个新的进程运行
运行 --> 就绪
七状态进程模型(续3)
活动
挂起 事件 发生
活动
挂起
挂起 调度
超时
事件 发生
等待 事件
释放
Linux进程状态
Linux的进程状态有五种 TASK_RUNNING:表示进程具备运行的资格,正在运
行或等待被调度执行。进程控制块中有一个run_list成 员,所有处于TASK_RUNNING状态的进程都通过该成 员链在一起,称之为可运行队列
get;
copy;
put;
f
s
t
g
Coend
与时间有关的错误(续2)
f
st g
初始状态 3,4,...,m 2 2 (1,2)
g,c,p
4,5,...,m 3 3 (1,2,3) √
g,p,c
4,5,...,m 3 3 (1,2,2) X
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章线程、对称多处理和微内核复习题:4.1表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。
对于多线程系统,这些元素中那些可能属于线程控制块,那些可能属于进程控制块?答:这对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者,而每个线程都有它自己的执行状态。
关于表3.5中的每一项的一些结论如下:进程标识:进程必须被标识,而进程中的每一个线程也必须有自己的ID。
处理器状态信息:这些信息通常只与进程有关。
进程控制信息:调度和状态信息主要处于线程级;数据结构在两级都可出现;进程间通信和线程间通信都可以得到支持;特权在两级都可以存在;存储管理通常在进程级;资源信息通常也在进程级。
4.2请列出线程间的模式切换比进程间的模式切换开销更低的原因。
答:包含的状态信息更少。
4.3在进程概念中体现出的两个独立且无关的特点是什么?答:资源所有权和调度/执行。
4.4给出在单用户多处理系统中使用线程的四个例子。
答:前台和后台操作,异步处理,加速执行和模块化程序结构。
4.5哪些资源通常被一个进程中的所有线程共享?答:例如地址空间,文件资源,执行特权等。
4.6列出用户级线程优于内核级线程的三个优点。
答:1.由于所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核模式的特权,因此,进程不需要为了线程管理而切换到内核模式,这节省了在两种模式间进行切换(从用户模式到内核模式;从内核模式返回用户模式)的开销。
2.调用可以是应用程序专用的。
一个应用程序可能倾向于简单的轮询调度算法,而另一个应用程序可能倾向于基于优先级的调度算法。
调度算法可以去适应应用程序,而不会扰乱底层的操作系统调度器。
3.用户级线程可以在任何操作系统中运行,不需要对底层内核进行修改以支持用户级线程。
线程库是一组供所有应用程序共享的应用级软件包。
4.7列出用户级线程相对于内核级线程的两个缺点。
答:1.在典型的操作系统中,许多系统调用都会引起阻塞。
因此,当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞。
2.在纯粹的用户级进程策略中,一个多线程应用程序不能利用多处理技术。
内核一次只把一个进程分配给一个处理器,因此一次进程中只能有一个线程可以执行。
4.8定义jacketing。
答:Jacketing通过调用一个应用级的I/O例程来检查I/O设备的状态,从而将一个产生阻塞的系统调用转化为一个不产生阻塞的系统调用。
4.9简单定义图4.8中列出的各种结构。
答:SIMD:一个机器指令控制许多处理部件步伐一致地同时执行。
每个处理部件都有一个相关的数据存储空间,因此,每条指令由不同的处理器在不同的数据集合上执行。
MIMD:一组处理器同时在不同的数据集上执行不同的指令序列。
主/从:操作系统内核总是在某个特定的处理器上运行,其他处理器只用于执行用户程序,还可能执行一些操作系统实用程序。
SMP:内核可以在任何处理器上执行,并且通常是每个处理器从可用的进程或线程池中进行各自的调度工作。
集群:每个处理器都有一个专用存储器,而且每个处理部件都是一个独立的计算机。
4.10列出SMP操作系统的主要设计问题。
答:同时的并发进程或线程,调度,同步,存储器管理,可靠性和容错。
4.11给出在典型的单体结构操作系统中可以找到且可能是微内核操作系统外部子系统中的服务和功能。
答:设备驱动程序,文件系统,虚存管理程序,窗口系统和安全服务。
4.12列出并简单解释微内核设计相对于整体式设计的七个优点。
答:一致接口:进程不需要区分是内核级服务还是用户级服务,因为所有服务都是通过消息传递提供的。
可扩展性:允许增加新的服务以及在同一个功能区域中提供多个服务。
灵活性:不仅可以在操作系统中增加新功能,还可以删减现有的功能,以产生一个更小、更有效的实现。
可移植性:所有或者至少大部分处理器专用代码都在微内核中。
因此,当把系统移植到一个处理器上时只需要很少的变化,而且易于进行逻辑上的归类。
可靠性:小的微内核可以被严格地测试,它使用少量的应用程序编程接口(API),这就为内核外部的操作系统服务产生高质量的代码提供了机会。
分布式系统支持:微内核通信中消息的方向性决定了它对分布式系统的支持。
面向对象操作系统环境:在微内核设计和操作系统模块化扩展的开发中都可以借助面向对象方法的原理。
4.13解释微内核操作系统可能存在的性能缺点。
答:通过微内核构造和发送信息、接受应答并解码所花费的时间比一次系统调用的时间要多。
4.14列出即使在最小的微内核操作系统中也可以找到的三个功能。
答:低级存储器管理,进程间通信(IPC)以及I/O和中断管理。
4.15在微内核操作系统中,进程或线程间通信的基本形式是什么?答:消息。
习题:4.1.一个进程中的多个线程有以下两个优点:(1)在一个已有进程中创建一个新线程比创建一个新进程所需的工作量少;(2)在同一个进程中的线程间的通信比较简单。
请问同一个进程中的两个线程间的模式切换与不同进程中的两个线程间的模式切换相比,所需的工作量是否要少?答:是的,因为两个进程间的模式切换要储存更多的状态信息。
4.2.在比较用户级线程和内核级线程时曾指出用户级线程的一个缺点,即当一个用户级线程执行系统调用时,不仅这个线程被阻塞,而且进程中的所有线程都被阻塞。
请问这是为什么?答:因为对于用户级线程来说,一个进程的线程结构对操作系统是不可见的,而操作系统的调度是以进程为单位的。
4.3.在OS/2中,其他操作系统中通用的进程概念被分成了三个独立类型的实体:会话、进程和线程。
一个会话是一组与用户接口(键盘、显示器、鼠标)相关联的一个或多个进程。
会话代表了一个交互式的用户应用程序,如字处理程序或电子表格,这个概念使得PC用户可以打开一个以上的应用程序,在屏幕上显示一个或更多个窗口。
操作系统必须知道哪个窗口,即哪个会话是活跃的,从而把键盘和鼠标的输入传递个相应的会话。
在任何时刻,只有一个会话在前台模式,其他的会话都在后台模式,键盘和鼠标的所有输入都发送给前台会话的一个进程。
当一个会话在前台模式时,执行视频输出的进程直接把它发送到硬件视频缓冲区。
当一个会话在后台时,如果该会话的任何一个进程的任何一个线程正在执行并产生屏幕输出,则这个输出被送到逻辑视频缓冲区;当这个会话返回前台时,屏幕被更新,为新的前台会话反映出逻辑视频缓冲区中的当前内容。
有一种方法可以把OS/2中与进程相关的概念的数目从3个减少到2个。
删去会话,把用户接口(键盘、显示器、鼠标)和进程关联起来。
这样,在某一时刻,只有一个进程处于前台模式。
为了进一步地进行构造,进程可以被划分成线程。
a.使用这种方法会丧失什么优点?b.如果继续使用这种修改方法,应该在哪里分配资源(存储器、文件等):在进程级还是线程级?答:a.会话的使用非常适合个人计算机和工作站对交互式图形接口的需求。
它为明确图形输出和键盘/鼠标输入应该被关联到什么位置提供了一个统一的机制,减轻了操作系统的工作负担。
b.应该和其他的进程/线程系统一样,在进程级分配地址空间和文件。
4.4.考虑这样一个环境,用户级线程和内核级线程呈一对一的映射关系,并且允许进程中的一个或多个线程产生会引发阻塞的系统调用,而其他线程可以继续运行。
解释为什么这个模型可以使多线程程序比在单处理器机器上的相应的单线程程序运行速度更快?答:问题在于机器会花费相当多的时间等待I/O操作的完成。
在一个多线程程序中,可能一个内核级线程会产生引发阻塞的系统调用,而其他内核级线程可以继续执行。
而在单处理器机器上,进程则必须阻塞知道所有的系统调用都可以继续运行。
参考:[LEWI96]4.5.如果一个进程退出时,该进程的某些线程仍在运行,请问他们会继续运行吗?答:不会。
当一个进程退出时,会带走它的所有东西——内核级线程,进程结构,存储空间——包括线程。
参考:[LEWI96]4.6.OS/390主机操作系统围绕着地址空间和任务的概念构造。
粗略说来,一个地址空间对应于一个应用程序,并且或多或少地对应于其他操作系统中的一个进程;在一个地址空间中,可以产生一组任务,并且它们可以并发执行,这大致对应于多线程的概念。
管理任务结构有两个主要的数据结构。
地址空间控制块(ASCB)含有OS/390所需要的关于一个地址空间的信息,而不论该地址空间是否在执行。
ASCB中的信息包括分派优先级、分配给该地址空间的实存和虚存、该地址空间中就绪的任务数以及是否每个都被换出。
一个任务控制块(TCB)标识一个正在执行的用户程序,它含有在一个地址空间中管理该任务所需要的信息,包括处理器状态信息、指向该任务所涉及到的程序的指针和任务执行结构。
ASCB是在系统存储器中保存的全局结构,而TCB是保存在各自的地址空间中的局部结构。
请问把控制信息划分成全局和局部两部分有什么好处?答:关于一个地址空间的尽可能多的信息可以随地址空间被换出,从而节约了主存。
4.7.一个多处理系统有8个处理器和20个附加磁带设备。
现在有大量的作业提交给该系统,完成每个作业最多需要4个磁带设备。
假设每个作业开始运行时只需要3个磁带设备,并且在很长时间内都只需要这3个设备,而只是在最后很短的一段时间内需要第4个设备以完成操作。
同时还假设这类作业源源不断。
a.假设操作系统中的调度器只有当4个磁带设备都可用时才开始一个作业。
当作业开始时,4个设备立即被分配给它,并且直到作业完成时才被释放。
请问一次最多可以同时执行几个作业?采用这种策略,最多有几个磁带设备可能是空闲的?最少有几个?b.给出另外一种策略,要求其可以提高磁带设备的利用率,并且同时可以避免系统死锁。
分析最多可以有几个作业同时执行,可能出现的空闲设备的范围是多少。
答:a.采用一个保守的策略,一次最多同时执行20/4=5个作业。
由于分配各一个任务的磁带设备最多同时只有一个空闲,所以在同一时刻最多有5个磁带设备可能是空闲的。
在最好的情况下没有磁带设备空闲。
b.为了更好的利用磁设备,每个作业在最初只分配三个磁带设备。
第四个只有的需要的时候才分配。
在这种策略中,最多可以有20/3=6个作业同时执行。
最少的空闲设备数量为0,最多有2个。
参考:Advanced Computer Architectrue,K.Hwang,1993.4.8.在描述Solaris用户级线程状态时,曾表明一个用户级线程可能让位于具有相同优先级的另一个线程。
请问,如果有一个可运行的、具有更高优先级的线程,让位函数是否还会导致让位于具有相同优先级或更高优先级的线程?答:任何一个可能改变线程优先级或者使更高优先级的线程可运行的调用都会引起调度,它会依次抢占低优先级的活跃线程。
所以,永远都不会存在一个可运行的、具有更高优先级的线程。