该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

=====================

第3章 内核引导和启动过程

2.为什么不直接将system模块搬到0x00000处而是先搬到0x10000处,再搬到0x00000处呢?

在机器开机上电时,ROM BIOS将bootsect代码加载到内存的固定位置0x7c00处,bootsect又把自己移动到了0x90000处,同时把setup.s代码和 system模块分别加载到0x90200和0x10000处。对于本书所讨论的Linux内核,system模块的大小不超过512KB。由于在即将执行的setup代码中还需要使用BIOS的功能,因此若直接将system模块加载到0x00000处就会覆盖掉BIOS设置的中断向量区域(0x0000-0x0400)。

3.setup.s和head.s中都设置了一次GDT和IDT,这是为何,可否只在head.s做一次设置?

第一次设置是为了head.s能首次运行在32位保护模式下。GDT临时在setup.s中,也即0x902xx左右的地方,这个地方将被用于缓冲区。而内核是在靠近物理内存0x0处的,因此必须重新设置。

4.不用as86,用gas来编译bootsect可以么?为什么Linus当时要使用as86汇编器?

可以。bootsect需要是16位的实模式程序。目前gas汇编器也支持16位的编译。Linus当时是在MINIX系统上开发Linux的,最初MINIX系统上还没有移植gas程序,因此Linus就使用了MINIX系统上的as86。

5.根据setup.s和head.s程序中的使用方法,请详细说明Intel 32位保护模式的运行机制。它与实模式下的寻址方式有和主要区别?

第4章 系统初始化

1.在setup.s代码执行完之后,head.s及system被移到了0x00000~0x800000处,那么PC开机时0x0000~0x0400处及之后的一些参数不是也被覆盖了吗?内核以后是怎么设置的?

Linux 在这之后就完全不用PC自己的中断程序,而纯粹自己作中断程序了。在head.s中的78行(setup_idt)开始,首先在232行的_idt处设置了256个亚中断向量,指向一个只显示"Unknown interrupt"的中断处理程序。然后会在init的main()中各个硬件的初始化函数中一个一个地分别设置所用到的实际中断向量。

2.请简述Linux内核的整个初始化过程。

系统初始化时,sched_init() 程序启动了系统的空闲任务0,同时派生了任务1,此时,系统中有两个进程(task 0 and task 1),假设从此时开始,系统没有接收到任何中断(包括系统的定时时钟中断或外部硬件中断以及软件的系统调用产生的中断),那么系统中将永远只包含着这两个进程,但是实际中,时钟中断周期的检查有没有新任务就绪,或者硬件中断包括系统调用使系统调度执行来检查系统的新任务,如果有新任务就绪,执行新任务。系统的其它部分,都是为这些任务的执行提供服务。

系统中各进程的执行基本上是由于进程请求等待想要的资源而自动情愿地放弃CPU去睡眠,另一种就是时钟中断把用完时间片的进程对CPU的使用权剥夺,不情愿地放弃CPU。

3.详细说明_syscall0(int,fork)嵌入函数的使用方法。在程序中调用该函数的实际语句是怎样的?请具体写出来。

第5章 进程调度与系统调用

1.请问硬盘中断怎么产生的?系统调用read、write等都是产生请求,并将请求插入请求队列,在中断时由中断处理函数遍历请求队列完程读写,那么请问最初的硬盘的中断是由谁、如何激发的呢?

参见6.6.1功能描述和图6.1

2.copy_process的参数有17个,从右往左分别是:ss,esp,eflags,cs,eip,ds,es,fs,edx,ecs,ebx,none,gs,esi,edi,ebp,nr。请问其中的那个none对应的是堆栈中的什么内容?简单说明原因。

3.在do_signal()函数中的104行语句是:*(&eip) = sa_hangler;这条语句不就是等价与eip = sa_handler;吗?Linus为什么会这样表达?

这里主要是牵涉到变量类型匹配的问题。因为这两个变量的类型不一样。

4.在head.s中执行 lss _stack_start,%esp,此时ss是什么内容?(提示:参考sched.c,第69行)。

ss=0x10,也即内核段选择符。参见sched.c,69行。此时ss=ds。

5.在中断程序里,段描述符寄存器的值被改掉了,那请问是在什么时候改的呢?

Linux内核 题目,《Linux内核完全注释》部分习题答案相关推荐

  1. 软件测试linux笔试题目,linux基础面试题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 linux的用户管理 useradd 用户名,添加用户 [案例]useradd xiaoming passwd 用户名,为新用户设密码 [案例]passw ...

  2. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 交流才是王道,只有在极少数情况下,一个天才的能力会超越一百个凡人 Content E1.3 man和info之间的主要区别是什么?他们各自有什么优点? man手册页对单条命令,驱动程序 ...

  3. 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 2333,果然,一章需要三天左右才能完成,这都第二天了,习题才做完前两道,不过通过这两道也了解到了这本书的习性了,不错,不错. Content E1.1 了解系统调用sync(不是sy ...

  4. matlab多项式计算题目,MATLAB数据分析与多项式计算-习题答案

    <MATLAB数据分析与多项式计算-习题答案>由会员分享,可在线阅读,更多相关<MATLAB数据分析与多项式计算-习题答案(4页珍藏版)>请在人人文库网上搜索. 1.第6章 M ...

  5. 计算机原理及接口技术题目,微机原理及接口技术-习题答案

    微机原理及接口技术习题及答案 ·9· (2)MOV AX,0 MOV BX,1 MOV CX,100 A: ADD AX,BX INC BX LOOP A HLT 解:AX=8080H BX=0101 ...

  6. linux3.8内核下载,linux 3.8内核usbmouse代码注释

    linux 3.8.0版本内核usbmouse.c文件代码注释 /* * Copyright (c) 1999-2001 Vojtech Pavlik * * USB HIDBP Mouse supp ...

  7. 【内核】linux内核启动流程详细分析【转】

    转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...

  8. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  9. linux内核主要功能模块不包括,嵌入式linux(贺丹丹等编著)课后习题答案

    第八章 一.填空题. 1.ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile.配置文件和配置工具. 2.配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中 ...

  10. 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念

    linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

最新文章

  1. mysql索引教程_MySQL教程96-MySQL索引类型
  2. Linux源码手机,Linux操作系统源代码详细分析
  3. 科大星云诗社动态20210516
  4. 把数据保存到数据库附加表 `XX_addonarticle` 时出错,Duplicate entry 'X' for key 'PRIMARY'...
  5. Struts2漏洞和Struts Scan工具实战
  6. opcua客户端实现断线重连_PLCopen amp; OPC UA信息模型
  7. 真的有无人工厂吗,IoT 怎么在产业界落地?| 赠书
  8. 静态路由(实验讲解+配置)
  9. linux脚本done报错,很简单的脚本程序,总是报错
  10. Android measure过程分析
  11. 颠覆大数据分析之Storm简介
  12. 全网最全Linux常用命令
  13. linux usb有线网卡驱动_Linux下安装USB网卡驱动 | 学步园
  14. 计算机网络战队名称大全,响亮的战队名字大全,吓到敌人了!
  15. 利用清华镜像站解决pip超时问题
  16. 成功实现 微信消息自动推送 解放双手版 进来看
  17. 熄灯问题POJ1222的一些思考
  18. Golang的Panic和Recover
  19. 牛客网wannafly挑战赛13-D(贪心)
  20. 手动挡五个档位示意图_手动挡6个档位怎么推

热门文章

  1. 浅说——九讲背包之01背包
  2. 人工智能入门(二):语音识别基本模型
  3. 装饰模式(Decorator)
  4. js-ES6学习笔记-module(4)
  5. 开源:ASP.NET MVC+EF6+Bootstrap开发框架
  6. 谷歌推出情境感知API
  7. Sourse Insight使用教程及常见的问题解决办法
  8. SPOJ AMR10I Dividing Stones --DFS
  9. SQLServer中设置XML索引
  10. .NET中获取电脑名、IP及用户名方法