中科院操作系统高级教程_思考题_2015最新版
操作系统高级教程-思考题-最新版
1.进程0创建进程1时,为进程1建立了自己的task_struct、内核栈,第一个页表,分别位于物理内存16MB的顶端倒数第一页、第二页。
请问,这个了页究竟占用的是谁的线性地址空间,内核、进程0、进程1、还是没有占用任何线性地址空间?说明理由并给出代码证据。
答:两次都是通过调用get_free_page()在物理内存里申请一个物理页,由于在head.s中决定内核的物理地址和线性地址是一一对应的。
因此这两个页都在内核的线性地址空间内。
setup_paging:movl $1024*5,%ecx/* 5 pages - pg_dir+4 page tables */xorl %eax,%eaxxorl %edi,%edi/* pg_dir is at 0x000 */cld;rep;stoslmovl $pg0+7,_pg_dir/* set present bit/user r/w */movl $pg1+7,_pg_dir+4/* --------- " " --------- */movl $pg2+7,_pg_dir+8/* --------- " " --------- */movl $pg3+7,_pg_dir+12/* --------- " " --------- */movl $pg3+4092,%edimovl $0xfff007,%eax/* 16Mb - 4096 + 7 (r/w user,p) */std1:stosl/* fill pages backwards - more efficient :-) */subl $0x1000,%eaxjge 1b2.假设:经过一段时间的运行,操作系统中已经有5个进程在运行,且内核分别为进程4、进程5分别创建了第一个页表,这两个页表在谁的线性地址空间?用图表示这两个页表在线性地址空间和物理地址空间的映射关系。
【真题】操作系统_2015_软件学院
一、选择题(20分,共10题,每题2分)1.在进程状态转换时,()的转换是不可能的。
A.就绪->运行B.运行->就绪C.运行->阻塞D.阻塞->运行2.并发进程中访问相同变量的程序段,被称为()。
A.临界区B.临界资源C.缓冲区D.原语3.进程和程序的本质区别之一是()。
A.前者分时使用CPU,后者独占CPUB.前者存储在内存,后者存储在外存C.前者在一个文件中,后者在多个文件中D.前者为动态的,后者为静态的4.下面的()页面淘汰算法有时会产生Belady异象。
A.先进先出(FIFO)B.最近最少使用(LRU)C.最不经常使用(LFU)D.理想型(OPT)5.死锁的预防是通过破坏死锁产生的四个必要条件来实现的。
下列方法中,()破坏了“环路条件”。
A.银行家算法B.资源有序分配法C.一次性分配策略D.SPOOLING技术6.动态重定位是在()中进行的。
A.编译过程B.装入过程C.修改过程D.执行过程7.有一磁盘,共10个柱面,每个柱面20个磁道,每个盘面分成16个盘区,采用位示图对其存储空间进行管理,如果字长是16个二进制位,那么位示图共需()个字。
A.200B.128C.256D.1008.进程在执行期间发生了缺页中断,经操作系统处理后,应让其接着执行()指令。
A.被中断的前一条B.被中断的那一条C.被中断的后一条D.启动时的第一条9.实现虚拟内存的目的是()。
A.扩充物理主存B.逻辑上扩充主存C.逻辑上扩充外存D.以上都不对10.批处理系统的主要目的是尽量提高系统的吞吐率,为此,应优先选择()运行。
A.使用户比较满意的作业B.运算量大的作业C.耗时较短的作业D.优先级较高的作业二、简答题(25分,共5题,每题5分)1.请列举文件系统中目录的几种典型结构,并从文件命名、文件分组、效率等角度,阐述每种目录结构的优劣。
2.请简要描述在虚拟机制下的页面异常处理的基本流程。
3.试从调度性、并发性、拥有资源及系统开销几个方面,对进程和线程进行比较。
操作系统(宗大华版)课后习题答案
第1章操作系统概述二、选择1.操作系统是一种 B 。
A.通用软件B.系统软件C.应用软件D.软件包2.操作系统是对 C 进行管理的软件。
A系统软件B.系统硬件C.计算机资源 D.应用程序3.操作系统中采用多道程序设计技术,以提高CPU和外部设备的 A 。
A.利用率B.可靠性C.稳定性D.兼容性4.计算机系统中配置操作系统的目的是提高计算机的 B 和方便用户使用。
A.速度B.利用率C.灵活性D.兼容性5. C 操作系统允许多个用户在其终端上同时交互地使用计算机。
A.批处理B.实时C.分时D.多道批处理6.如果分时系统的时间片一定,那么 D ,响应时间越长。
A.用户数越少B.内存越少C.内存越多D.用户数越多三、问答1.什么是“多道程序设计”技术?它对操作系统的形成起到什么作用?答:所谓“多道程序设计”技术,即是通过软件的手段,允许在计算机内存中同时存放几道相互独立的作业程序,让它们对系统中的资源进行“共享”和“竞争”,以使系统中的各种资源尽可能地满负荷工作,从而提高整个计算机系统的使用效率。
基于这种考虑,计算机科学家开始把CPU、存储器、外部设备以及各种软件都视为计算机系统的“资源”,并逐步设计出一种软件来管理这些资源,不仅使它们能够得到合理地使用,而且还要高效地使用。
具有这种功能的软件就是“操作系统”。
所以,“多道程序设计”的出现,加快了操作系统的诞生。
2.怎样理解“虚拟机”的概念?答:拿操作系统来说,它是在裸机上加载的第一层软件,是对计算机硬件系统功能的首次扩充。
从用户的角度看,计算机配置了操作系统后,由于操作系统隐蔽了硬件的复杂细节,用户会感到机器使用起来更方便、容易了。
这样,通过操作系统的作用使展现在用户面前的是一台功能经过扩展了的机器。
这台“机器”不是硬件搭建成的,现实生活中并不存在具有这种功能的真实机器,它只是用户的一种感觉而已。
所以,就把这样的机器称为“虚拟机”。
3.对于分时系统,怎样理解“从宏观上看,多个用户同时工作,共享系统的资源;从微观上看,各终端程序是轮流运行一个时间片”?答:在分时系统中,系统把CPU时间划分成许多时间片,每个终端用户可以使用由一个时间片规定的CPU时间,多个用户终端就轮流地使用CPU。
《操作系统》2015期末试题及答案
《操作系统》2015期末试题及答案《操作系统》2015期末试题及答案注意事项一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。
考试结束后,把试卷和答题纸放在桌上。
试卷和答题纸均不得带出考场。
监考人收完考卷和答题纸后才可离开考场。
二、仔细读懂题目的说明,并按题目要求答题。
,答案一定要写在答题纸的指定位置上,写在试卷上的答案无效。
三、用蓝、黑圆珠笔或钢笔(含签字笔)答题,使用铅笔答题无效。
一、选择题(选择一个正确答案的代码填在答题纸上,每小题2分,共30分)1.操作系统对缓冲区的管理属于( )的功能。
j。
A.处理机管理 B.设备管理C.文件管理 D.存储器管理2.在实时系统中,一旦有处理请求和要求处理的数据时,CPU就应该立即处理该数据并将结果及时送回。
下面属于实时系统的是( )。
‘A.计算机激光照排系统 B.办公自动化系统C.计算机辅助设计系统 D.航空订票系统3.某进程由于需要从磁盘上读人数据而处于阻塞状态。
当系统完成了所需的读盘操作后,此时该进程的状态将( )。
A.从就绪变为运行 B.从运行变为就绪C.从运行变为阻塞 D.从阻塞变为就绪4.如果信号量S的值是0,此时进程执行P(S)操作,那么,进程会( )。
A.继续运行B.进入阻塞态,让出CPUC.进入就绪态,让出CPUD.继续运行,并唤醒S队列头上的等待进程5.在操作系统中,作业处于( )时,已处于进程的管理之下。
A.后备状态 B.阻塞状态C.执行状态 D.完成状态。
操作系统课后习题
第一章操作系统引论1.设计现代OS的主要目标是什么?方便性,有效性,可扩充性,开放性。
2.OS的作用可体现在那几个方面?OS作为用户与计算机硬件系统之间的接口;OS作为计算机系统资源的管理者;OS用作扩充机器。
3.试说明推动多道批处理系统形成和发展的主要动力是什么?提高资源利用率和吞吐量。
4.何谓脱机I/O和联机I/O?脱机I/O(Off—line I/O):I/O操作由外围机脱离主机完成,通过中间介质(磁盘、带)将输入数据调入内存,CPU将输出数据从内存送到磁盘;引入I/O机的概念;减少了CPU的空闲时间且提高I/O速度。
联机I/O(On—line I/O):在主机的直接控制下进行输入/输出的方式成为联机输入/输出方式。
5.试说明推动分时系统形成和发展的主要动力是什么?用户的需求:(1)人----机交互;(2)共享主机;(3)便于用户上机6.实现分时系统的关键问题是什么?应如何解决?如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回给用户。
作业直接进入内存;以分配时间片的方式,使所有作业在不长的时间(如3秒内)内都执行一次。
7.为什么要引入实时操作系统?8.试在交互性,及时性以及可靠性方面,将分时系统与实时系统进行比较。
交互性:分时系统更强;及时性:实时系统要求更高;可靠性:实时系统要求更高。
9.OS有哪几大特征?其最基本的特征是什么?并发,共享,虚拟,异步。
最基本的是并发10.处理机管理有哪些主要功能?他们的主要任务是什么?(1)进程控制。
为作业创建进程,撤销已结束的进程,以及控制进程在运行过程中的状态转换。
一般由进程控制原语完成。
(2)进程同步。
为多个进程的运行进行协调。
(3)进程通信。
用来实现在相互合作的进程之间的信息交换。
11.内存管理有哪些主要功能?他们的主要任务是什么?(1)内存分配。
为每道程序分配内存空间,使它们“各得其所”;提高存储器的利用率,以减少不可用的内存空间;允许正在运行的程序性申请附加的内存空间,以适应程序和数据动态增涨的需要。
中科院C++课件思考题
(五)给出以下程序的运行结果:
// exer_ch3_10.cpp // Improved version of example 5.17 on p.118 of Lv's book #include <iostream.h> static s(3); //or static int s(3); "int" can be omitted! int fun(void); void main() { cout <<"external static s(global)="<<s<<endl; fun( ); fun( ); } int fun( ) { static b(3); //"int" may be omitted! b += s;
(七)给出以下程序的运行结果
// exer_ch3_8.cpp #include <iostream.h> class B { int b1, b2; public: B(int i, int j); void printB( ); }; B::B(int i, int j) { b1 = i; b2 = j; } void B::printB( ) { cout<<"b1="<<b1<<",b2="<<b2<<endl; } class A { int a; B obj; public: A(int i, int j, int k); void printA( ); }; A::A(int i, int j, int k) : obj(i, j), a(k) { } void A::printA( ) { obj.printB( ); cout<<"a="<<a<<endl; } void main()
操作系统精髓与设计重点店课后习题整理
1 3 4 9 7 8 11 12 6章第10章多CPU调度,实时调度第1章作业:习题P251.31.81.9(更正印刷错误106)1.3操作系统的大神求解答假设有一个32位微处理器,其32位的指令由两个域组成:第一个字节包含操作码,其余部分为一个直接操作数或一个操作数地址。
如果微处理器总线具有如下特征,分析a、最大可直接寻址的存储器能力为多少?以字节为单位如果微处理器总线具有如下特征,分析对系统速度的影响:b、(1)一个32位局部地址总线和一个16位局部数据总线,或者(2)一个16位局部地址总线和一个16位局部数据总线。
C、程序计数器和指令寄存器分别需要多少位答案:没必要全写捡重点(定长)指令32位,1字节操作码,则后3字节为立即数或内存地址(a) 最大可直接寻址直接寻址是一种基本的寻址方法,其特点是:在指令格式的地址的字段中直接指出操作数在内存的地址。
由于操作数的地址直接给出而不需要经过某种变换,所以称这种寻址方式为直接寻址方式。
2^24(b) 总线问题地址总线32位,数据总线16位直接寻址存储器24位,bus32位,地址传送一次即可;但指令32位,操作数32位(因为是32位微处理器),要两次传送地址总线16位,数据总线16位传送地址,传送指令/数据全部需要2次。
地址可视作:先行地址后列地址(c) PC和IR 至少:PC24位,IR8位一般:PC32bit IR 32bit更现实复杂情形:是否分段,使用段寄存器; 直接寻址中逻辑地址/位移/偏移offset,与有效地址effective address区别OS中,逻辑地址与物理地址1.8一个DMA模块从外部设备给内存传送字节,传送速度为9600位每秒(b/s)。
处理器可以每秒100万次的速度取指令,由于DMA活动,处理器的速度将会减慢多少?答案:没必要全写捡重点看清楚题干:每秒100万次取指令,即1M/s取一次指令,不是100M!该CPU主频多少不知,是否使用cache不知,执行一条指令多少时钟周期不知,此题中无需知道还假设,此CPU只取指令要访问内存,执行指令不需要读写数据,不访内存. 还假设DMA 一次访问内存传送1个字节凭什么如此假设?9600b/s=1200B/s 即1s中要传送1200次,而原本CPU要1M次访存,现在因DMA要减少1200次,所以影响是1200/1M=0.12%1.9一台计算机包括一个CPU和一台I/O设备D,通过一条共享总线连接到主存储器M,数据总线的宽度为1个字。
高级操作系统题目及答案
1.在实现RPC时,调用者如何得知被调用者实际运行在哪个站点上,是一个必须要解决的问题。
⑴当系统生成与调用者对应的stub时,可把该远程站点的地址也一同并入其中,不过这种做法不太灵活。
⑵在进行调用之前,与调用者对应的stub向系统中的其它场点进行广播,请求有关的场点通报其地址,这必然引起一系列的消息转移。
特别,当这种广播是在若干网络之间进行时,其转移速度是很慢的。
⑶由系统管理一个表,其表项的内容为① 站点地址;②该场点上将运行的远程过程的名字。
“愿意”产生一个可供其它场点引用的过程的那些场点就造一个表项到这个表中,该表项给出了这些场点的地址和此远程过程的名字。
希望引用远程过程的用户可通过查询此表获取有关信息。
开发过程大致是这样的:1)调用者调用本地stub中的一个过程(开始远程过程调用请求).2) 这个stub过程把有关的参数组装成一个消息包或一组消息包, 形成一条消息. 运行此执行过程的远程场点的IP地址和执行该过程的进程ID号也包含在这条消息中.3) 将这条消息发送给对应的RPC runtime(RPC运行库)子程序, 由这个子程序将消息发送到远程场点.4) 在接收到这条消息时, server端的RPC runtime子程序引用与被调用者对应的stub中的一个子程序, 并让它来处理消息.5) 与被调用者对应的stub中的这个子程序撤卸消息, 解析出相关参数, 并用本地调用方式执行所指定的过程.6) 返回调用结果, 调用者对应的stub子程序执行return语句返回到用户, 整个RPC过程结束.2. 此3问针对集中分布式死锁检测方法a.何时或在什么情况下构造局部PWG才能反映系统资源的实际分配情况?(修改)1. 每当从局部等待图中去掉一条边或向局部等待图插入一条新边时2. 周期性的,当等待图中已经发生了若干改变时3. 每当协调者需要引用环路检测算法时以下为死锁检测的基本假设(1)进程在整个系统内统一命名(2)每个结点有一个局部等待图:Gk=(Vk, Ek),(p, q)∈Ek等价于p申请q占有结点k的资源;显然,如果局部等待图中有环,则有死锁;所有的局部等待图的并有环是系统死锁的充要条件。
(中科院)操作系统高级教程-操作文档v1.1
操作系统高级教程——初级操作文档by Fisher【前言】上课的时候师兄给我们演示了我们这门课需要用的一些软件和涉及到的一些基本技术,由于第一次接触,所以很多东西没有搞懂,所以想做这样一份文档,以一个初学者的角度详细描述一下所需软件安装及相应技术的操作过程,本着锻炼自己同时服务大家的态度,争取对这门课有一个好的入门,同时分享给大家,希望能对大家有所帮助,我们用到的软件主要是source Insight 和Bochs,另外还需要Linux内核代码以及一些基本的Linux操作,以下会详细解释。
【关于source Insight 和Linux 0.11内核】个人推荐的source insight绿色版下载地址:/soft/39263.htm使用说明:首先将@绿化.reg文件双击,同意添加注册表,然后就可以使用Insight3.exe了,同理,如果要卸载的话,点击@卸载.reg,然后删除文件夹就可以了。
Linux 0.11下载和讨论地址:/oldlinux/viewthread.php?tid=11651&extra=page%3D1将下载好的linux内核解压,然后在打开source insight,执行P项目->新项目,如图所示:在弹出的窗口中输入项目的英文名和数据文件存储路径。
确定后勾选新项目的配置项:在下面的窗口中选择全加入:勾选递归的加入下级子目录,确定后关闭添加窗口即可。
可以看到.c和.h文件就已经添加进来了。
如何添加例如.s文件呢?师兄在课上演示的参数修改在哪呢?在这个位置,O选项->文档选项在文件过滤器里面输入*.s等即可,如图为什么要使用Source Insight来查看源代码呢,Source Insight 并不是一个类似于Visual Studio等的可以提供编译功能的工具,而是一个致力于方便的查看添加到其工程中的所有文件涉及的函数以及变量的定义、链接文件等信息的源代码分析软件,由其功能可见,分析Linux内核代码,用它再合适不过了。
2015春季操作系统综合复习题
北京邮电大学远程、函授教育2015年春季学期《操作系统》期末综合练习题一、填空题1、操作系统是(合理地组织计算机工作流程)、(有效地管理)系统资源,方便用户使用计算机的(程序)的集合。
2、操作系统具有(资源管理)和(提供人机接口)两大基本功能。
3、最常用的存储保护机构有(界地址寄存器)和(存储键)。
4、对称式多处理器系统(SMP)含有多个CPU,这些CPU具有()地位。
5、将一个运行进程可访问的虚地址的集合称为( 虚拟地址空间) 。
6、根据执行的程序的性质不同,处理器可分为(核心态)和(用户态)两种状态。
7、用信号量机制来控制打印机的共享使用。
如果系统中共有2台打印机,这时已经分配了一台给某个进程使用,此时信号量的值应该是( 2 ).8、进程可以描述为:一组具有独立功能的程序在某个( 数据集合)上的一次( 执行过程) 。
9、当程序运行到某条语句时,才对其逻辑地址进行计算并转化为物理地址,这种技术叫做()重定位。
10、.当程序装入内存时,就对其逻辑地址进行计算并转化为物理地址,这种技术叫做()重定位。
11、通常我们通过破坏(环路等待)条件和(资源独占)条件来预防死锁的发生。
12、所谓死锁状态是指在系统中的( 进程),由于竞争系统资源或由于彼此通信而永远( 阻塞) 。
13、多道程序的操作系统具有(并行性)和(共享性)两大特性。
14、处理器调度的主要功能是按照某种原则,将处理器分配给( 就绪队列的某个) 进程。
15、中断是指CPU对系统中发生的(异步事件)的响应。
16、操作系统中,对目录的设计包括(目录内容)和(目录结构)两个部分。
17、用信号量机制来控制打印机的共享使用。
如果系统中共有5台打印机,这时,信号量的初值应该是( 5 ).18、在虚拟存储器的概念中,目标程序中的指令和数据放置的位置称为相对地址或者(相对)地址,而CPU能直接访问的主存的物理地址又称(实存地址)。
19、当一个进程执行Signal操作,完成对信号量“加1”后,这时信号量的值是“1”。
操作系统学习指导与习题(含答案)
操作系统第一章概论1. 1 学习指导操作系统是运行在计算机硬件系统上的最基本的系统软件。
它操作和管理着所有的系统硬件,也控制和管理着所有的系统软件,操作系统对计算机使用者提供了一种良好的操作环境,也为其他各种应用系统提供了最基本的支撑环境。
现代操作系统是一个复杂的系统软件,它与计算机硬件系统有千丝万缕的联系,也与用户有着密不可分的关系,它在计算机系统中位于计算机裸机和计算机用户之间。
紧挨着硬件的就是操作系统,它通过系统核心程序对计算机系统中的几类资源进行管理,如处理机、存储器、输入/输出设备、数据与文档资源、用户作业等,并向用户提供若干服务,通过这些服务将所有对硬件的复杂操作隐藏起来,为用户提供一个透明的操作环境。
在操作系统的外层是其它系统软件。
操作系统是最基本的系统软件。
用户可以直接通过系统软件层与计算机打交道,也可以建立各类应用软件和应用系统,通过它们来解决用户的问题。
由此可见,操作系统是介于计算机硬件和用户之间的一个接口。
根据操作系统的功能特征,可将操作系统分为批处理系统、分时系统和实时系统三种基本类型。
不同类型的操作系统有不同的作业用户,适用于不同的应用领域。
本章的重点内容是:对一些术语及概念的了解及认识,如批处理、吞吐量、作业的周转时间、分时(简单分时、具有“前台”和“后台”的分时系统、基于多道程序设计的分时系统)、实时、多道程序设计、时间片及操作系统的特征(并发、共享、虚拟、不确定性)。
1. 2 学习自评一、选择题1.组成计算机系统软件的基本部分是__________。
A. 应用软件B. 语言处理程序C. 例行服务程序D. 操作系统2.把处理机的时间分成很短的时间片(如几百毫秒),并把这些时间片轮流地分配给各联机作业使用的技术称为__________。
A. 分时技术B. 实时技术C. 批处理技术D. 多道程序设计技术3.所谓__________是指一个以上的作业放入主存,并且同时处于运行状态。
操作系统思考题(含答案).doc
1.试在交互性、及时性和可靠性方面将分时系统与实时系统作比较(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待□寸间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于 100微妙。
(2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序°不像分时系统那样能向终端用户提供数据和资源共享等服务。
(3)nJ靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性c因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果, 所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。
2. 试比较网络0S和分布式0S的异同(1)网络0S是基于由一些互联的自主计算机系统组成的计算机网络,以计算机技术和通信技术高度发展为基础,能实现相互通信和相互合作功能的系统.分布式0S是指多个分散的处理单元,经互联网络连接而形成的系统.(2)在分布性上,两者都具有分布处理功能,但网络0S的控制功能大多集中在某个(些)主机或网络服务器中,即集中式,而分布式0S则是较均匀地分布在系统的各个站点上,是完全分布式的.在并行性上,分布式0S的任务分配程序可将多个任务分配到多个处理单元上而实现并行,网络0S中通常无任务分配功能,每个用户的任务通常在自己(本地)的计算机上处理.在透明性上,两者都具透明性,但网络0S指在操作实现上的透明性,而分布式0S则在系统内部的细节上实现了很好的隐藏,即具有物理上的透明性.在共享性上,分布式0S是比较完全的实现共享,而网络0S共享的资源大多是在主机或网络服务器中.在健壮性上,分布式系统由于处理和控制功能是分布的,还拥有容错技术实现系统重构,因而具有很强的健壮性;而网络0S的控制功能大多集中在主机或服务器中,是系统具有潜在的不可靠性,健壮性差.3. 分时操作系统的两种实现技术(1)多道程序设计:多道程序同存内存并发执行(2)分时技术:把处理机的时间分成很短的时间片(如儿百毫秒),这些时间片轮流地分配给各联机作业使用c4. 操作系统的主要特征:并发性、共享性、虚拟性、不确定性5. 多道程序设计技术的实现得到哪些硬件的支持?中断机构、通道6. 简述并行与并发两者的区别与联系并行性:两个或多个事件在同一时间间隔内发生并发性:两个或多个事件在同一时间发生7. 多道程序设计的特点(1) 多道(2) 宏观上并行(3) 微观上串行8. 分时OS的时间片一定,那么(用户越多),则响应时间越长小结:操作系统概述主要讲述了操作系统是什么,操作系统的功能和基本特性,操作系统的工作原理一-通过多道程序设计实现操作系统,在此基础上说明了学习操作系统的意义,并进一步介绍了操作系统的结构和分类。
科学院大学操作系统考试思考题答案
科学院大学操作系统考试思考题答案Last revision date: 13 December 2020.1.为什么计算机启动最开始的时候执行的是BIOS代码而不是操作系统自身的代码?2.答:通常我们用C语言写的用户程序,必须在操作系统的平台上执行,即操作系统为应用程序创建进程并把应用程序的可执行代码加载到内存。
计算机启动的时候,操作系统并没有在内存中,我们首先要把操作系统加载到内存,而这个工作最开始的部分,就是由bios 程序来实现的。
所以计算机启动最开始执行的是 bios 代码3.为什么BIOS只加载了一个扇区,后续扇区却是由bootsect代码加载?为什么BIOS没有把所有需要加载的扇区都加载?答:对 BIOS 而言,“约定”在接到启动操作系统的命令后,“定位识别”只从启动扇区把代码加载到 0x7c00 这个位置。
后续扇区则由 bootsect 代码加载,这些代码由编写系统的用户负责,与 BIOS 无关。
这样构建的好处是站在整个体系的高度,统一设计和统一安排,简单而有效。
BIOS 和操作系统的开发都可以遵循这一约定,灵活地进行各自的设计。
例如, BIOS可以不用知道内核镜像的大小以及其在软盘的分布等等信息,减轻了 BIOS 程序的复杂度,降低了硬件上的开销。
而操作系统的开发者也可以按照自己的意愿,内存的规划,等等都更为灵活。
另外,如果要使用BIOS进行加载,而且加载完成之后再执行,则需要很长的时间,因此Linux采用的是边执行边加载的方法。
4.为什么BIOS把bootsect加载到0x07c00,而不是0x00000加载后又马上挪到0x90000处,是何道理为什么不一次加载到位答:因为BIOS首先会把中断向量表加载到0x00000-0x003ff的1KB的内存空间,在加载bootsect时约定加载到0x07c00处,符合内存布局,如下。
加载之后挪到0x90000处的原因如下:首先内核会使用启动扇区中的一些数据,如第 508、509 字节处的 ROOT_DEV;其次,依据系统对内存的规划,内核占用 0x0000 开始的空间,因此 0x7c00 可能会被覆盖。
02326操作系统第2章课后思考题
第二章习题1. 请简述处理器的组成和工作原理。
你认为哪些部分和操作系统密切相关,为什么?处理器一般由运算器、控制器、一系列的寄存器以及高速缓存构成。
其中,运算器实现指令中的算术和逻辑运算,是计算机的核心。
控制器负责控制长征运行的流程,寄存器是一种暂时存储器件,用于CPU 执行指令的过程中暂存数据、地址以及指令信息,为CPU本身提供了一定的存储能力,但容量很小。
处理器中的运算器、控制器、寄存器都与操作系统密切相关。
操作系统就是通过对处理器中的这些部件来实现程序的运算和程序流程的控制的。
2. 为了支持操作系统,现代处理器一般都提供哪两种工作状态,以隔离操作系统和普通程序?两种状态各有什么特点?现代处理器一般都提供管态和目态等两种工作状态。
用户程序在目态下运行,只能使用非特权指令,具有较低的特权级别;操作系统在管态下运行,可以使用特权指令和非特权指令,具有较高的特权级别。
3. 计算机系统中既有操作系统程序,又有用户程序,在什么情况下操作系统才能占用中央处理器?当用户程序占用CPU时,CPU在目态下运行,只能使用非特权指令;当需要使用特权指令时,将引起一次处理器状态的切换,此时处理器通过中断机制,将目态转换为管态,然后将处理权移交给操作系统中的一段代码,操作系统才能占用CPU。
从目态变为管态其转换的惟一途径是通过中断。
5. 怎样限制用户程序中使用特权指令?当用户程序占用CPU时,CPU在目态下运行,只能使用非特权指令;若此刻CPU取到了一条特权指令,形成“非法操作”事件,CPU就拒绝执行该指令。
中断机制识别到该事件,运行状态就从目态变为管态,将控制权转给操作系统,通过操作系统通知用户修改。
6. 什么是分级的存储体系结构?它主要解决了什么问题?计算机存储系统的设计主要考虑容量、速度和成本三个问题。
容量是存储系统的基础,都希望配置尽可能大的存储系统;同时要求存储系统的读写速度能与处理器的速度相匹配;此外成本也应该在一个合适的范围之内。
高级操作系统答案
一、解释1、分布式系统:分布式系统是一些独立的计算机的集合,对该系统的用户来说,系统就像一台计算机一样,即:由大量CPU组成的计算机系统。
这个定义有两方面的含义:第一,从硬件角度看,每台计算机都是自主的;第二,从软件角度看,用户将整个系统视为一台计算机。
2、微内核的主要任务微内核具有更好的灵活性。
主要提供四种服务:(1) 进程间的通信机制。
(2) 某些内存管理功能。
(3) 少量的低层进程管理和调度。
(4) 低层输入和输出服务。
3、ATM对分布式系统的影响A、延时:需要新的协议和系统结构处理B、流量控制:信元淹没C、阻塞控制:防止数据丢失4、原子事务的基本特性事务具有四个重要特性:(1)原子性(Atomic):对外界来说,事务的发生是不可分割的(2)一致性(Consistent):事务不会破坏系统的恒定(3)独立性(Isolated):并发的事务不会互相干扰(4)持久性(Durable):一旦事务提交,所做的改变永远有效5、并行透明性并行透明性就是系统的活动可以在用户没有感觉的情况下并行发生(同时发生),即整个分布式并行服务器在用户看起来就像一个传统的单处理机分时系统。
6、请说出微内核优于单内核的两个优点答:(1)微内核系统具有高度的模块化,对于每一个服务都有一个定义好的借口,每一个服务程序对所有客户来说都是可以访问的,且和位置无关。
(2)微内核系统具有很高的灵活性,易于实现、安装和调试新的服务程序,因为增加或者改变一个服务程序不需要像有一个单内核那样停止系统和启动一个新的内核。
二、计算题1、一个ATM系统以OC-3的速率传递信元,每个包48字节长,刚好放进一个信元,一个中断耗时1μs,CPU用于中断处理的时间是多少?如果包长是1024字节呢?答:OC-3的数据传输速率为155.520Mbps,由题意可知,一个信元是48字节。
可得每秒传递包(信元)的数目为:((155.520*1024*1024)bps/8)/53=384609.76每进入一个包产生一次中断,一个中断耗时1μs,一秒内共产生384609.76个中断。
中科大-高级操作系统哲学家问题
中科大高级操作系统哲学家问题操作实验内容
(1)安装LINUX;
(2)熟悉UNIX/LINUX的常用基本命令如ls、who、wc、pwd、ps、m.cmp.cp.rmdiff.mvrmd ir等, 解系统的环境。
(3)利用pthread 及系统的信号量(semaphoreh), 实现哲学家进餐问题(避免死锁):
项目要求及分析
假如所有的哲学家都同时拿起左侧筷子, 看到右侧筷子不可用, 又都放下左侧筷子, 等一会儿, 又同时拿起左侧筷子, 如此这般, 永远重复。
对于这种情况, 即所有的程序都在无限期地运行, 但是都无法取得任何进展, 即出现饥饿, 所有哲学家都吃不上饭。
规定在拿到左侧的筷子后, 先检查右面的筷子是否可用。
如果不可用, 则先放下左侧筷子, 等一段时间再重复整个过程。
分析:当出现以下情形, 在某一个瞬间, 所有的哲学家都同时启动这个算法, 拿起左侧的筷子, 而看到右侧筷子不可用, 又都放下左侧筷子, 等一会儿, 又同时拿起左侧筷子……如此这样永远重复下去。
对于这种情况, 所有的程序都在运行, 但却无法取得进展, 即出现饥饿, 所有的哲学家都吃不上饭。
(完整版)操作系统部分课后习题答案
第一章1.设计现代OS的主要目标是什么?方便性,有效性,可扩充性和开放性。
2.OS的作用可表现在哪几个方面?(1)OS作为用户与计算机硬件系统之间的接口。
(2)OS作为计算机系统资源的管理者。
(3)OS实现了对计算机资源的抽象。
4.试说明推动多道批处理系统形成和发展的主要动力是什么主要动力来源于四个方面的社会需求与技术发展(1)不断提高计算机资源的利用率(2)方便用户(3)器件的不断更新换代(4)计算机体系结构的不断发展。
7.实现分时系统的关键问题是什么?应如何解决关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令。
在用户能接受的时延内将结果返回给用户。
解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终端上输入的数据,为每个终端配置缓冲区,暂存用户键入的命令或数据。
针对及时处理问题,应使所有的用户作业都直接进入内存,并且为每个作业分配一个时间片,允许作业只在自己的时间片内运行。
这样在不长的时间内,能使每个作业都运行一次。
12.试从交互性、及时性以及可靠性方面,将分时系统与实时系统进行比较。
(1)及时性。
实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定,而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。
(2)交互性。
实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某些特定的专用服务程序,不像分时系统那样能向终端用户提供数据和资源共享等服务。
(3)可靠性。
分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度的可靠性。
因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。
13.OS有哪几大特征?其最基本的特征是什么?并发性、共享性、虚拟性和异步性四个基本特征。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1为什么计算机启动最开始的时候执行的是BIOS代码而不是操作系统自身的代码?计算机启动的时候,内存未初始化,CPU不能直接从外设运行操作系统,所以必须将操作系统加载至内存中。
而这个工作最开始的部分,BIOS需要完成一些检测工作,和设置实模式下的中断向量表和服务程序,并将操作系统的引导扇区加载值0x7C00 处,然后将跳转至0x7C00。
这些就是由bios程序来实现的。
所以计算机启动最开始执行的是bios代码。
2.为什么BIOS只加载了一个扇区,后续扇区却是由bootsect代码加载?为什么BIOS没有把所有需要加载的扇区都加载?对BIOS而言,“约定”在接到启动操作系统的命令后,“定位识别”只从启动扇区把代码加载到0x7c00这个位置。
后续扇区则由bootsect代码加载,这些代码由编写系统的用户负责,与BIOS无关。
这样构建的好处是站在整个体系的高度,统一设计和统一安排,简单而有效。
BIOS和操作系统的开发都可以遵循这一约定,灵活地进行各自的设计。
操作系统的开发也可以按照自己的意愿,内存的规划,等等都更为灵活3.为什么BIOS把bootsect加载到0x07c00,而不是0x00000?加载后又马上挪到0x90000处,是何道理?为什么不一次加载到位?1)因为BIOS将从0x00000开始的1KB字节构建了了中断向量表,接着的256KB字节内存空间构建了BIOS数据区,所以不能把bootsect加载到0x00000. 0X07c00是BIOS设置的内存地址,不是bootsect能够决定的。
2)首先,在启动扇区中有一些数据,将会被内核利用到。
其次,依据系统对内存的规划,内核终会占用0x0000其实的空间,因此0x7c00可能会被覆盖。
将该扇区挪到0x90000,在setup.s中,获取一些硬件数据保存在0x90000~0x901ff处,可以对一些后面内核将要利用的数据,集中保存和管理。
4.bootsect、setup、head程序之间是怎么衔接的?给出代码证据。
1)bootsect跳转到setup程序:jmpi 0,SETUPSEG;这条语句跳转到0x90200处,即setup程序加载的位子,CS:IP指向setup程序的第一条指令,意味着setup开始执行。
2)setup跳转到head程序:CPU工作模式首先转变为保护模式然后执行jmpi 0,80指的是段内偏移,8是保护模式下的段选择符:01000,其中后两位表示内核特权级,第三位0代表GDT,1则表示GDT表中的第一项,即内核代码段,段基质为0x0000000,而head 程序地址就在这里,意味着head程序开始执行。
5.setup程序里的cli是为了什么?cli为关中断,以为着程序在接下来的执行过程中,无论是否发生中断,系统都不再对此中断进行响应。
因为在setup中,需要将位于0x10000 的内核程序复制到0x0000 处,bios中断向量表覆盖掉了,若此时如果产生中断,这将破坏原有的中断机制会发生不可预知的错误,所以要禁示中断。
6.setup程序的最后是jmpi 0,8 为什么这个8不能简单的当作阿拉伯数字8看待?这里8要看成二进制1000,最后两位00表示内核特权级,第三位0表示GDT表,第四位1表示所选的表(在此就是GDT表)的1项来确定代码段的段基址和段限长等信息。
这样,我们可以得到代码是从段基址0x00000000、偏移为0处开始执行的,即head的开始位置。
注意到已经开启了保护模式的机制,所以这里的8不能简单的当成阿拉伯数字8来看待。
7.打开A20和打开pe究竟是什么关系,保护模式不就是32位的吗?为什么还要打开A20?有必要吗?1、打开A20仅仅意味着CPU可以进行32位寻址,且最大寻址空间是4GB。
打开PE是进入保护模式。
A20是cpu的第21位地址线,A20未打开的时候,实模式中cs:ip最大寻址为1MB+64KB,而第21根地址线被强制为0,所以相当于cpu“回滚”到内存地址起始处寻址。
当打开A20的时候,实模式下cpu可以寻址到1MB以上的高端内存区。
A20未打开时,如果打开pe,则cpu进入保护模式,但是可以访问的内存只能是奇数1M段,即0-1M,2M-3M,4-5M等。
A20被打开后,如果打开pe,则可以访问的内存是连续的。
打开A20是打开PE的必要条件;而打开A20不一定非得打开PE。
2、有必要。
打开PE只是说明系统处于保护模式下,但若真正在保护模式下工作,必须打开A20,实现32位寻址。
8.Linux是用C语言写的,为什么没有从main还是开始,而是先运行3个汇编程序,道理何在?main 函数运行在32 位的保护模式下,但系统启动时默认为16 位的实模式,开机时的16 位实模式与main 函数执行需要的32 位保护模式之间有很大的差距,这个差距需要由3 个汇编程序来填补。
其中bootsect 负责加载,setup 与head 则负责获取硬件参数,准备idt,gdt,开启A20,PE,PG,废弃旧的16 位中断响应机制,建立新的32 为IDT,设置分页机制等。
这些工作做完后,计算机处在了32位的保护模式状态了,调用main的条件就算准备完毕。
9.为什么不用call,而是用ret“调用”main函数?画出调用路线图,给出代码证据。
(图在P42)call指令会将EIP的值自动压栈,保护返回现场,然后执行被调函数的程序,等到执行被调函数的ret指令时,自动出栈给EIP并还原现场,继续执行call的下一条指令。
然而对操作系统的main函数来说,如果用call调用main函数,那么ret时返回给谁呢?因为没有更底层的函数程序接收操作系统的返回。
用ret实现的调用操作当然就不需要返回了,call做的压栈和跳转动作需要手工编写代码。
after_page_tables:pushl $__main; //将main的地址压入栈,即EIPsetup_paging:ret; //弹出EIP,针对EIP指向的值继续执行,即main函数的入口地址。
10.保护模式的“保护”体现在哪里?1)在GDT、LDT 及IDT 中,均有自己界限,特权级等属性,这是对描述符所描述的对象的保护2)在不同特权级间访问时,系统会对CPL、RPL、DPL、IOPL 等进行检验,对不同层级的程序进行保护,同还限制某些特殊指令的使用,如lgdt, lidt,cli 等3)分页机制中PDE 和PTE 中的R/W 和U/S 等,提供了页级保护。
分页机制将线性地址与物理地址加以映射,提供了对物理地址的保护。
P43811.特权级的目的和意义是什么?为什么特权级是基于段的?目的:在于保护高特权级的段,其中操作系统的内核处于最高的特权级。
意义:保护模式中的特权级,对操作系统的“主奴机制”影响深远。
在操作系统设计中,一个段一般实现的功能相对完整,可以把代码放在一个段,数据放在一个段,并通过段选择符(包括CS、SS、DS、ES、FS和GS)获取段的基址和特权级等信息。
特权级基于段,这样当段选择子具有不匹配的特权级时,按照特权级规则评判是否可以访问。
特权级基于段,是结合了程序的特点和硬件实现的一种考虑。
12.在setup程序里曾经设置过一次gdt,为什么在head程序中将其废弃,又重新设置了一个?为什么折腾两次,而不是一次搞好?原来的GDT 位于setup 中,将来此段内存会被缓冲区覆盖,所以必须将GDT 设置head.s 所在位置。
如果先将GDT 设置在head 所在区域,然后移动system 模块,则GDT 会被覆盖掉,如果先移动system 再复制GDT,则head.s 对应的程序会被覆盖掉,所以必须重建GDT。
若先移动system 至0x0000 再将GDT 复制到0x5cb8~0x64b8 处,虽可以实现,但由于setup.s 与head.s 连接时不在同一文件,setup 无法直接获取head 中的gdt 的偏移量,需事先写入,这会使设计失去一般性,给程序编写带来很大不便。
13.在head程序执行结束的时候,在idt的前面有184个字节的head程序的剩余代码,剩余了什么?为什么要剩余?剩余的内容:0x5400~0x54b7 处包含了after_page_tables、ignore_int 中断服务程序和setup_paging 设置分页的代码。
原因:after_page_tables中压入了一些参数,为内核进入main函数的跳转做准备。
为了谨慎起见,设计者在栈中压入了L6,以使得系统可能出错时,返回到L6处执行。
ignore_int: 使用ignore_int将idt全部初始化,因此如果中断开启后,可能使用了未设置的中断向量,那么将默认跳转到ignore_int处执行。
这样做的好处是使得系统不会跳转到随机的地方执行错误的代码,所以ignore_int不能被覆盖。
setup_paging:为设置分页机制的代码,它在分页完成前不能被覆盖14.进程0的task_struct在哪?具体内容是什么?给出代码证据。
进程0的task_struct位于内核数据区,即task结构的第0项init_task。
struct task_struct * task[NR_TASKS] = {&(init_task.task), };具体内容:包含了进程0的进程状态、进程0的LDT、进程0的TSS等等。
其中ldt设置了代码段和堆栈段的基址和限长(640KB),而TSS则保存了各种寄存器的值,包括各个段选择符。
具体值如下:(课本P68)15.进程0创建进程1时,为进程1建立了自己的task_struct、内核栈,第一个页表,分别位于物理内存16MB的顶端倒数第一页、第二页。
请问,这个了页究竟占用的是谁的线性地址空间,内核、进程0、进程1、还是没有占用任何线性地址空间(直接从物理地址分配)?说明理由并给出代码证据。
这两个页占用的是内核的线性地址空间,依据在setup_paging(文件head.s)中,movl $pg3+4092,%edimovl $0xfff007,%eax /* 16Mb -4096 + 7 (r/w user,p) */std1: stosl/* fill pages backwards -more efficient :-) */subl $0x1000,%eax上面的代码,指明了内核的线性地址空间为0x000000 ~ 0xffffff(即前16M),且线性地址与物理地址呈现一一对应的关系。
为进程1分配的这两个页,在16MB的顶端倒数第一页、第二页,因此占用内核的线性地址空间。
进程0的线性地址空间是内存前640KB,因为进程0的LDT中的limit属性限制了进程0能够访问的地址空间。