linux的一些简答题的答案
第5章
1. 中断的基本概念?
答:改变处理器正常执行顺序的事件。其来源有软件(异常、系统调用)和硬件(时钟、键盘、硬盘等)。
2. 系统调用的处理流程?如何增加一个系统调用?
答:系统调用总数减1,相关寄存器入栈,把子功能号放入eax中,如果还有其它参数(最多3个),则第1、第2和第3个参数分别放入寄存器ebx,ecx和edx中,系统调用的返回值(函数指针)保存在eax中,调用处理函数,相关寄存器出栈,返回。
添加一个系统调用:定义子功能号,系统调用总数加1,定义系统调用函数,在系统调用函数指针表中添加新函数指针。
3. 进程概念?
答:进程是程序的一次执行,是由正文段、用户数据段和系统数据段、堆栈段组成动态的实体。进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。
4. 进程的创建、调度、终止处理流程。
答:进程的创建:1.系统在任务数组中找出一个空项,已满则出错返回。2.系统申请一页内存来存放其任务数据结构信息,拷贝当前进程的描述符到子进程描述符中。3.将新进程的状态置为不可中断睡眠状态。4.对复制的任务数据结构进行修改:把当前进程设置为父进程,清除信号位图并复制新进程各统计值,设置初始运行时间片值;根据当前进程设置任务状态段TSS中各寄存器的值5.设置新任务的代码和数据段基址、限长并复制当前进程内存分页管理的页表。6.在GDT中设置新任务的TSS和LDT描述符项,其中地址信息指向新进程任务结构中的tss和ldt。7.将新任务设置为运行状态并返回新进程号。
进程的调度:1.调度程序。a选择task数组中第一个所剩时间片最长的可运行状态的任务,与当前进程进行切换;b如果所有可运行状态的进程事件片都已用完,重新给素有进程分配时间片:count=count/2+priority,重做a;c如果当前没有进程可运行,就选择进程0运行,而进程0会调用pause()把自己置为可中断睡眠状态并再次调用schedule()。2.进程切换。从指令JMP的操作数中获取新任务的TSS段选择子。检查新任务的TSS描述符是否存在 ,在当前任务的TSS中保存当前任务的状态,为TR装载新任务TSS所需要的段选择子,从新任务的TSS中装载新任务的状态到处理器中,开始执行新任务。
进程的终止:1.释放代码和数据段占用的物理内存、页表,对工作目录、根目录和i节点进行同步。2.如果又子进程,将其过继给进程1(init进程)。3.关闭打开的文件和终端。4.修改状态为僵死状态。5.发送信号给父进程。6.调用调度函数去处理其他进程,父进程将子进程运行所使用的事件累加到自己的进程中。7.释放子进程在任务数据结构所占用的内存页面,并置空task数组相关项。
5. 进程描述符数据结构?
答:包括进程当前运行的状态信息、信号、进程号、父进程号、运行时间累计值、正在使用的文件和本任务的局部描述符(ldt),以及任务状态段信息(tss)。
6. 信号的基本概念?
答:进程中的信号是用于进程之间通信的一种简单消息,信号提供了一种进程间通讯的方式,这种机制是异步的。Linux支持32个信号,每个信号用一个整数值来标识。
第六章
7. 硬盘设备的读过程?