操作系统高级教程-思考题-最新版
操作系统思考题(附答案)

操作系统思考题(附答案)操作系统思考题〈本练习仅供熟悉期末考试题型⽤〉⼀、单项选择题(本⼤题共20 ⼩题,每⼩题1 分,共20 分) 。
在每⼩题列出的四个选项中只有⼀个选项是符合题⽬要求的,请将正确选项的字母填在题⼲中的括号内。
1. ()不是基本的操作系统。
A 、批处理操作系统C 、实时操作系统B 、分时操作系统D 、⽹络操作系统2. ()不是分时系统的基本特征:A 、同时性C 、实时性B 、独⽴性D 、交互性3. 处理器执⾏的指令被分成两类,其中有⼀类称为特权指令,它只允许( )使⽤。
A 、操作员B 、联机⽤户C 、操作系统D 、⽬标程序4 . 当⽤户程序执⾏访管指令时,中断装置将使中央处理器( ) ⼯作。
A 、维持在⽬态B 、从⽬态转换到管态C 、维持在管态D 、从管态转换到⽬态5. 进程所请求的⼀次打印输出结束后,将使进程状态从( )A 、运⾏态变为就绪态B 、运⾏态变为等待态C 、就绪态变为运⾏态D 、等待态变为就绪态6. 采⽤动态重定位⽅式装⼊的作业,在执⾏中允许( )将其移动。
A 、⽤户有条件地B 、⽤户⽆条件地7 . 分页式存储管理中,地址转换⼯作是由( )完成的。
A 、硬件B 、地址转换程序C、⽤户程序 D 、装⼊程序8 . 如果允许不同⽤户的⽂件可以具有相同的⽂件名,通常采⽤( )来保证按名存取的安全。
A 、重名翻译机构B 、建⽴索引表C、建⽴指针 D 、多级⾃录结构9 . 对记录式⽂件,操作系统为⽤户存取⽂件信息的最⼩单位是( )。
A 、字符B 、数据项C 、记录D 、⽂件10. 为了提⾼设备分配的灵活性,⽤户申请设备时应指定( )号。
A 、设备类相对B 、设备类绝对C、相对 D 、绝对11.通常把通道程序的执⾏情况记录在( )中。
A 、PSWB 、PCBC 、CAWD 、CSW12. 作业调度是从输⼊井中处于( )状态的作业中选取作业调⼊主存运⾏。
A 、运⾏B 、收容C、输⼊ D 、就绪13. ⼀作业进⼊内存后,则所属该作业的进程初始时处于( )状态。
02326操作系统第4章课后思考题

1、何谓之与时间有关的错误?举例说明之。
并发进程执行时一定会产生与时间有关的错误吗?为什么。
与时间有关的错误是指两个程序都以各自的速度交叉着运行,同时访问共享信息导致的错误。
比如程序A对共享变量p执行+1操作后,休眠一秒输出变量p,程序B对共享变量p执行减1操作后,休眠一秒输出变量p。
导致的结果就会和想象中的不相同。
并发程序不一定都导致时间相关的错误,我们可以对共享变量加锁来解决这个问题2、什么是临界区,什么是相关临界区,对相关临界区的使用规则?系统中某些资源一次只允许一个进程使用,则这类资源被称为临界资源,而在进程中访问临界资源的程序被称为临界区。
多个进程涉及到同一个临界资源的临界区被称为相关临界区。
使用规则:(1)只能选择一个进程进入临界区,其他进程必须等待。
(2)不能强迫一个进程无限的等待进入他的临界区(3)任何一个进程在进入临界区后都要在有限的时间内退出临界区。
3、若使用P、V操作管理某一组相关临界区,其信号量S的值在【-1,1】之间变化,当S=-1,s=0,S=1时,他们各自的物理含义是什么?当S=-1,临界区已满,且有一个进程正在等待当S=0,临界区已满当S=1, 临界区为空4、两个并发执行的进程A和B的程序如下:进程A:While(true){N = N+5;};进程B:While(true){打印N的值;N = 0;};其中,N为整数,初值为4,若进程A先执行3次循环后,进程A 和进程B又并发执行了一个循环,请写出可能出现的打印值。
答:可能出现的打印值:19,0,24。
因为N初值为4,若进程A先执行了三个循环,此时N的值为19。
当进程A和进程B并发执行时可能会有如下两种执行次序,即进程A先执行一次循环,然后再进程B执行一次循环,此时打印的是正确值24,执行后N中的值为0。
但若进程B先执行一次循环,然后再进程A执行一次循环,则打印的值是19,执行后N中的值是0。
这是错误的,即发生了与时间有关的错误。
操作系统课后习题精选答案

操作系统课后习题精选答案操作系统作为计算机科学的基础知识之一,是每个计算机专业学生必须掌握的内容。
课后习题的作用是提供课程内容的深度和拓展,以便帮助学生更好地理解和应用所学知识。
以下是我根据自己的学习经验,总结出的操作系统课后习题精选答案。
这些答案涵盖了操作系统中的主要概念和核心原理,对于加深对操作系统的理解有很大的帮助。
1. 什么是操作系统?答案:操作系统是一组程序,它们管理和控制计算机的各种硬件和软件资源,以便于应用程序进行交互式和高效的执行。
操作系统的主要功能包括进程管理、内存管理、磁盘管理、文件管理和网络管理等。
2. 什么是进程?答案:进程是指计算机系统中正在执行的程序的实例。
一个进程可以包含一个或多个线程,并且每个进程都有自己的地址空间、各种资源和状态信息等。
操作系统通过进程管理来协调和控制多个进程的执行,以提供对计算机资源的合理和优化的利用。
3. 什么是线程?答案:线程是进程中的一个独立执行单元,它可以在进程的上下文中运行,并与其他线程共享进程的资源和状态信息等。
线程和进程之间的区别在于,进程是资源分配的基本单位,而线程是操作系统中的调度基本单位。
操作系统利用线程进行并行计算和流程处理,以便快速实现多任务处理和高效运行。
4. 什么是虚拟内存?答案:虚拟内存是操作系统提供的一种机制,用于将计算机的物理内存和应用程序的逻辑地址空间进行映射和管理。
虚拟内存的基本思想是将进程的地址空间分为若干个物理和逻辑区域,并在需要时将这些区域进行映射和替换。
这样,操作系统可以允许应用程序访问超过物理内存容量的数据,从而提高系统的内存利用率和应用程序的执行效率。
5. 什么是文件系统?答案:文件系统是一种操作系统提供的数据存储和管理机制,用于将数据组织为文件、目录和子目录等形式,并提供对文件系统中的不同组成部分进行访问、传输和维护等操作。
文件系统的主要目的是让应用程序可以访问和共享系统中的数据资源,从而有效管理和利用计算机的存储资源。
计算机操作系统课后习题答案第四版

计算机操作系统课后习题答案第四版计算机操作系统课后习题答案(第四版)计算机操作系统是计算机系统中至关重要的组成部分,它负责管理和控制计算机的硬件和软件资源,为用户提供一个方便、高效、可靠的工作环境。
下面是对计算机操作系统第四版课后习题的答案解析。
一、操作系统的概念1、什么是操作系统?它的主要功能有哪些?操作系统是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石。
它的主要功能包括处理机管理、存储器管理、设备管理、文件管理和用户接口管理等。
处理机管理负责合理分配和调度 CPU 资源,提高 CPU 利用率;存储器管理负责管理内存空间的分配、回收和保护;设备管理负责对外部设备进行有效管理和控制;文件管理负责对文件的存储、检索、共享和保护;用户接口管理则为用户提供了方便的操作界面。
2、操作系统有哪些分类?操作系统可以按照不同的标准进行分类。
按照用户数量,可分为单用户操作系统和多用户操作系统;按照任务数,可分为单任务操作系统和多任务操作系统;按照系统功能,可分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统等。
1、什么是进程?进程和程序有什么区别?进程是程序在一个数据集合上的一次执行过程,是系统进行资源分配和调度的基本单位。
进程与程序的区别在于:程序是静态的指令集合,而进程是动态的执行过程;程序可以长期保存,进程具有生命周期;进程具有并发性,而程序没有;进程由程序、数据和进程控制块(PCB)组成。
2、进程的三种基本状态是什么?它们之间是如何转换的?进程的三种基本状态是就绪状态、执行状态和阻塞状态。
当进程已获得除CPU 以外的所有必要资源,只要再获得CPU 便可立即执行时,处于就绪状态;当进程正在 CPU 上运行时,处于执行状态;当进程因等待某一事件而暂时无法继续执行时,处于阻塞状态。
就绪状态到执行状态是通过进程调度实现的;执行状态到就绪状态是时间片用完或出现更高优先级的进程;执行状态到阻塞状态是进程因等待某事件而主动放弃 CPU;阻塞状态到就绪状态是等待的事件发生。
操作系统思考题答案

操作系统思考题答案【思考题】1.如果系统中有N个进程,运行的进程最多几个,最少几个;就绪进程最多几个最少几个;等待进程最多几个,最少几个?解:我们考虑在微机的操作系统中:系统的调度管理进程至少是在运行状态。
当有N个用户进程启动后,那么我们可以说用户的进程最多有一个在运行状态,最少有0个?有了这个条件,我们不难推出就绪进程和等待进程可能的数量。
如果我们讨论的多CPU平台的使用的操作系统,就是另外一种情况了。
所以我想题目应该给出一个系统的运行环境。
2.有没有这样的状态转换,为什么?等待—运行;就绪—等待解:进程状态转换:在进程运行过程中,由于进程自身进展情况及外界环境的变化,这三种基本状态可以依据一定的条件相互转换就绪—运行调度程序选择一个新的进程运行运行—就绪运行进程用完了时间片,运行进程被中断,因一高优先级进程处于就绪状态运行—等待当一进程必须等待时OS尚未完成服务对一资源的访问尚不能进行初始化I/O且必须等待结果等待某一进程提供输入(IPC)等待—就绪当所等待的事件发生时观察下面答案就明确了――>运行就绪等待进程的状态及其转换操作系统部分思考题及简答题3.一个状态转换的发生,是否一定导致另一个转换发生,列出所有的可能解:一般情况下,当一个状态发生转换,系统调度会将当前进程置入相应状态队列,再从相应的队列中唤醒相关进程…4.举3个日常生活中类似进程的例子医院看病的过程:等待医院开门――挂号――看病――划价――付钱――医院关门5.要不要对缓冲区(临界资源)进行互斥操作?解:对于是“只读”的临界资源,我们可以认为不需要互斥操作。
但,一定有一个对“只读”临界资源进行维护的“写”操作,那么必须要考虑缓冲区的互斥操作。
2操作系统部分思考题及简答题6.用P.V操作解决下图之同步问题:getcopyputftgget复制一个记录:Cobeginget;copy;put;Coendftg初始状态3,4,...,m22(1,2)g,c,p4,5,...,m33(1,2,3)设信息长度为m3操作系统部分思考题及简答题f[1..m]ofarraySmute某,Sempty,Sfull:=1,1,0;//(f,,t,g均为单缓冲区,不需要互斥量Smute某,Tmute某)Tmute某,Tempty,Tfull:=1,1,0Int某,y=1,1;//设有m个记录长度,一次get一个记录Proceget{。
操作系统课后习题练习精选

操作系统课后习题练习精选在计算机科学领域中,操作系统是一个非常重要的学科。
学习操作系统的过程中,习题练习是非常重要的一环。
下面,就让我们来看一些操作系统课后习题的精选。
1. 进程与线程:进程和线程是操作系统中非常重要的两个概念。
进程是程序执行的基本单位,而线程是进程中的一个执行单元。
关于进程和线程,以下是一些常见的问题:- 进程和线程的区别是什么?- 进程的状态有哪些?- 线程同步的方法有哪些?- 线程的优先级如何设置?2. 内存管理:内存管理是操作系统的一个重要部分,它分配和释放内存,以确保系统的正常运行。
关于内存管理,以下是一些常见的问题:- 什么是内存管理?- 什么是虚拟内存?- 什么是物理内存?- 内存碎片是什么?如何处理?3. 文件系统:文件系统是对文件进行管理的一种方法。
它使得计算机可以像管理文件夹一样管理文件。
关于文件系统,以下是一些常见的问题:- 文件系统的作用是什么?- 什么是目录和子目录?- 什么是文件权限?如何设置?- 什么是索引节点?它的作用是什么?4. 输入输出系统:输入输出系统是计算机中非常重要的一部分,它允许用户与计算机进行交互。
关于输入输出系统,以下是一些常见的问题:- 输入输出系统的作用是什么?- 什么是设备驱动程序?- 什么是缓冲区?它的作用是什么?- 什么是中断?它是如何实现的?5. 多处理器和分布式操作系统:随着计算机技术的发展,多处理器和分布式操作系统越来越受到人们的关注。
关于多处理器和分布式操作系统,以下是一些常见的问题:- 多处理器的优点是什么?- 分布式操作系统的特点是什么?- 什么是集群?- 什么是死锁?如何处理?通过这些习题练习,学生可以更好地理解和掌握操作系统的基本知识,提高其解决问题的能力,从而在日后的工作和学术研究中受益匪浅。
高级操作系统题目及答案

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的资源;显然,如果局部等待图中有环,则有死锁;所有的局部等待图的并有环是系统死锁的充要条件。
操作系统教程课后习题答案

操作系统1.什么是计算机系统?计算机系统是怎么构成的?了解PC的组成情况,说明:1)硬件组织的基本结构,画出硬件配置图;2)主要系统软件和应用软件(若有的话)他们的作用。
答:计算机系统就是按照人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的系统。
计算机系统由硬件子系统和软件子系统组成。
计算机系统的构成包括:如图1.2计算机硬件系统的构成:如图1.42.从功能以及程序涉设计的角度说明计算机系统中软件系统是如何构成的?答:分为系统软件,支撑软件和应用软件三层。
3.什么是操作系统?请举例说明操作系统在计算机系统中的重要地位。
答:操作系统是计算机系统中的一个系统软件,是一些程序模块的集合。
它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源,合理的组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能,使得用户能够灵活、方便、有效的使用计算机,使整个计算机系统能安全高效地运行4.请举一个实际的例子来说明操作系统的功能。
答:你能用用操作系统管理很多资源5.为什么说“操作系统是控制硬件的软件”的说法不确切?答:操作系统不仅能够控制硬件,也可以控制各种软件资源。
6.操作系统的基本特征是什么?说明他们之间的关系。
答:1.并发性2.共享性3.随机性7.试从独立性,并发性和交互性和实时性四个方面来比较批处理系统,分时系统以及实时系统。
答:分时系统:并发性是指同时有多个用户共同使用一个计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU.独占性,是指用户感觉不到计算机为他们服务,就好像整个系统为他所独占。
交互性:是指用户根据系统响应结果进一步提出新要求,用户直接干预每一步。
实时性:是指系统对用户提出的请求及时响应。
8.引入多道程序设计技术的起因和目的是什么?多道程序系统的特征是什么?答:多道程序设计的基本思想在内存中保持多个作业,主机可以交替的方式同时处理多个作业,一般来说任何一道作业的运行总是要交替的使用处理器和外设子案9.多道程序设计的度是指在任一给定时刻,单个CPU所能支持的进程数目最大值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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分别创建了第一个页表,这两个页表在谁的线性地址空间?用图表示这两个页表在线性地址空间和物理地址空间的映射关系。
答:大师兄!!3.进程0开始创建进程1,调用了fork(),跟踪代码时我们发现,fork代码执行了两次,第一次,跳过init()直接执行了for(;;) pause(),第二次执行fork代码后,执行了init()。
奇怪的是,我们在代码中并没有看见向后的goto语句,也没有看到循环语句,是什么原因导致反复执行?请说明理由,并给出代码证据。
答:大师兄!!4.copy_process函数的参数最后五项是:long eip,long cs,long eflags,long esp,long ss。
查看栈结构确实有这五个参数,奇怪的是其他参数的压栈代码都能找得到,确找不到这五个参数的压栈代码,反汇编代码中也查不到,请解释原因。
答:在执行int n这条中断指令时(在此即为int 0x80),系统会自动把ss esp rflags cs eip这五个寄存器的值压入栈中。
5.用图表示下面的几种情况,并从代码中找到证据:a、当进程获得第一个缓冲块的时候,hash表的状态。
b、经过一段时间的运行,已经2000多个buffer_head挂到hash_table上时,hash表(包括所有的buffer_head)的整体状态。
c、经过一段时间的运行,有的缓冲块已经没有进程使用了(空闲),这样的空闲缓冲块是否会从hash_table上脱钩?d、经过一段时间的运行,所有的buffer_head都挂到hash_table上了,这时,又有进程申请空闲缓冲块,将会发生什么?解释原因并找到代码证据。
答:见书上P100-P01.6.rd_load()执行完之后,虚拟盘已经成为可用的块设备,并成为根设备。
在向虚拟盘中copy任何数据之前,虚拟盘中是否有引导块、超级块、i节点位图、逻辑块位图、i节点、逻辑块?请解释其中的道理,并给出代码证据。
答:在rd_load()执行之前,虚拟盘经初始化后中存放的全是0。
rd_init()中的代码段:---P46cp = rd_start;for (i=0; i < length; i++)*cp++ = '\0';且拷贝数据也是从虚拟盘开始处进行存放的。
rd_load()中的代码:---P121cp = rd_start;while (nblocks) {if (nblocks > 2)bh = breada(ROOT_DEV, block, block+1, block+2, -1);elsebh = bread(ROOT_DEV, block);…}(void) memcpy(cp, bh->b_data, BLOCK_SIZE);…}7.在虚拟盘被设置为根设备之前,操作系统的根设备是软盘(包括软驱),请说明设置软盘为根设备的技术路线,并给出代码证据。
(提示:注意bootsect.s的249行,508这个数值。
.org 508root_dev:.word ROOT_DEV)答:在bootsect.s程序的开始处有一条语句对ROOT_DEV进行赋值。
之后执行如下代码,确定所使用的根设备:seg csmov ax,root_devcmp ax,#0jne root_definedseg csmov bx,sectorsmov ax,#0x0208! /dev/ps0 - 1.2Mbcmp bx,#15je root_definedmov ax,#0x021c! /dev/PS0 - 1.44Mbcmp bx,#18je root_definedundef_root:jmp undef_rootroot_defined:seg csmov root_dev,ax#1、首先会判断根设备是否已经设置,如果设置(如ROOT_DEV=0x306)则直接跳过。
否则执行判定。
#2、通过每磁道的扇区数判别是1.2Mb还是1.44Mb的软盘,判定完成后跳到末尾处。
通过代码调试,发现该段代码执行完之后,存在地址0x901fc处的ROOT_DEV的值为0x021c,即为 1.44Mb的软盘。
#3、在main函数开始时,执行====ROOT_DEV = ORIG_ROOT_DEV;======把存放于0x901fc处的值赋给ROOT_DEV。
++++#define ORIG_ROOT_DEV (*(unsigned short *)0x901FC)8.Linux0.11是怎么将根设备从软盘更换为虚拟盘,并加载了根文件系统?用文字、图示表示,并给出代码证据。
答:大师兄!!9.内核的线性地址空间是如何分页的?画出从0x000000开始的7个页(包括页目录表、页表所在页)的挂接关系图,就是页目录表的前四个页目录项、第一个个页表的前7个页表项指向什么位置?给出代码证据。
答: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/* --------- " " --------- */_pg_dir用于表示内核分页机制完成后的内核起始位置,也就是物理内存的起始位置0x000000,以上四句完成页目录表的前四项与页表1,2,3,4的挂接movl $pg3+4092,%edimovl $0xfff007,%eax/* 16Mb - 4096 + 7 (r/w user,p) */std1:stosl/* fill pages backwards - more efficient :-) */subl $0x1000,%eaxjge 1b完成页表项与页面的挂接,是从高地址向低地址方向完成挂接的,16M内存全部完成挂接10.用文字和图说明中断描述符表是如何初始化的,可以举例说明(比如:set_trap_gate(0,÷_error)),并给出代码证据。
答:对中断描述符表的初始化,就是将异常处理一类的中断服务程序与中断描述符表进行挂接。
以set_trap_gate(0,÷_error)为例,0表示该中断函数的地址挂接在中断描述符表的第0项位置处,而&devide_error就是该异常处理函数的地址。
对set_trap_gate(0,÷_error)进行宏展开后得到#define set_trap_gate(0,&devide_error)\_set_gate(&idt[0],15,0,&devide_error)之后执行如下代码:#define _set_gate(&idt[0],15,0,&devide_error)(gate_addr,type,dpl,addr) \__asm__ ("movw %%dx,%%ax\n\t" \"movw %0,%%dx\n\t" \"movl %%eax,%1\n\t" \"movl %%edx,%2" \: \: "i" ((short) (0x8000+(0<<13)+(15<<8))), \"o" (*((char *) (&idt[0]))), \"o" (*(4+(char *) (&idt[0]))), \"d" ((char *) (&devide_error)),"a" (0x00080000))%0=0x8f00,%1指向idt[0]的起始地址,%2指向四个字节之后的地址处。
#1、将地址&devide_error放在EAX的低两个字节,EAX的高两字节不变。
#2、把0x8f00放入EDX的低两字节,高两字节保持不变。
#3、把EAX放在%1所指的地址处,占四字节。
#4、将EDX放在%2所指的地址处,占四字节。
大师兄!!11.为什么计算机启动最开始的时候执行的是BIOS代码而不是操作系统自身的代码?答:因为在计算机上电启动的时候,内存里没有任何代码,需要借助于BIOS代码进行加载引导扇区以及系统代码,在进行一系列的配置(如加载中断向量表和中断服务程序等)后才能够执行操作系统自身的代码。