5
1.中断的基本概念?
答:改变处理器正常执行顺序的事件。其来源有软件(异常、系统调用)和硬件(时钟、 键盘、硬盘等)。
2.系统调用的处理流程?如何增加一个系统调用?
答:系统调用总数减1,相关寄存器入栈,把子功能号放入eax中,如果还有其它参数 (最多3个),则第1、第2和第3个参数分别放入寄存器ebx, ecxedx中,系统调用 的返回值(函数指针)保存在eax中,调用处理函数,相关寄存器岀栈,返回。
添加一个系统调用:定义子功能号,系统调用总数加b定义系统调用函数,在系统调 用函数指针表中添加新函数指针。
3.进程概念?
答:进程是程序的一次执行,是由正文段、用户数据段和系统数据段、堆栈段组成动态的 实体。
进程是系统资源分配的基本单位,也是使用CPU运行的基本调度单位。
4.进程的创建、调度、终止处理流程。
答:进程的创建:1.系统在任务数组中岀一个空项,已满则岀错返回。2.系统申请一页 内存来存放其任务数据结构信息,拷贝当前进程的描述符到子进程描述符中。3.将新进 程的状态置为不可中断睡眠状态。4.对复制的任务数据结构进行修改:把当前进程设置 为父进程,清除信号位图并复制新进程各统计值,设置初始运行时间片值;根据当前进 程设置任务状态段TSS中各寄存器的值5.设置新任务的代码和数据段基址、限长并复制 当前进程内存分页管理的页表。6.GDT中设置新任务的TSSLDT描述符项,其中 地址信息指向新进程任务结构中的tssldt7.将新任务设置为运行状态并返回新进程 号。
进程的调度1.调度程序。a选择task数组中第一个所剩时间片最长的可运行状态 的任务,与当前进程进行切换;b如果所有可运行状态的进程事件片都已用完,重新给 素有进程分配时间片:count=count/2+priority,重做a c如果当前没有进程可运行,就 选择进程0运行,而进程0会调用pause()把自己置为可中断睡眠状态并再次调用 schedule()o 2.进程切换。从指令JMP的操作数中获取新任务的TSS段选择子。检查新任 务的TSS描述符是否存在,在
当前任务的TSS中保存当前任务的状态,为TR装载新 任务TSS所需要的段选择子,从新任务的TSS中装载新任务的状态到处理器中,开始执 行新任务。
进程的终止:1.释放代码和数据段占用的物理内存、页表,对工作目录、根目录和i 节点进行同步。2.如果又子进程,将其过继给进程1 init进程)。3.关闭打开的文件和终 端。4.修改状态为僵死状态。5.发送信号给父进程。6.调用调度函数去处理其他进程,父 进程将子进程运行所使用的事件累加到自己的进程中。7.释放子进程在任务数据结构所 占用的内存页面,并置空task数组相关项。
5.进程描述符数据结构?
答:包括进程当前运行的状态信息、信号、进程号、父进程号、运行时间累计值、正在 使用的文件和本任务的局部描述符ldt,以及任务状态段信息tsso
6.信号的基本概念?
答:进程中的信号是用于进程之间通信的一种简单消息,信号提供了一种进程间通讯的 方式,这种机制是异步的。Linux支持32个信号,每个信号用一个整数值来标识。
第六章
7.硬盘设备的读过程?
答:执行程序产生一个读中断,调用中断处理程序,向硬盘控制器发送读扇区命令和参 数,若BUSY=0,控制器处于空闲状态,则将BUSY位置1,开始读扇区,控制器操 作时BUSY=1, DRQ=0,读完一个扇区后,若所需读出的扇区数还没有读完,置DRQ=1, 返回返回等待硬盘再次完成读操作后的中断处理,传送读数据,若全部扇区数据已经读 完,则置DRQ=0, BUSY=0,处理请求结束事宜,执行其他硬盘操作。
&硬盘设备的写过程?
答:执行程序产生一个写中断,调用中断处理程序,向硬盘硬盘控制器发送写扇区命令 循环查询DRQ,DRQ置位时,将请求项所指缓冲区中的数据写入控制器的数据缓冲 区,写完一个扇区后,将欲写扇区数减b若还有扇区要写则返回等待硬盘再次完成写 操作后的中断处理,若全部扇区已经写完,置DQR=0, BUSY=0,处理请求结束事宜, 执行其他硬盘操作。
第九章文件系统
9.建立缓冲区的目的?什么时候会把缓冲区与设备进行同步?
答:为了提高读写数据的性能。当需要读数据时,操作系统首先会在缓冲区中寻,如 果该数据已经在内存中(命中)就无须在访问外设;否则,把数据从外设读入到某个缓 冲块中。当需要写数据时,操作系统会在把数据临时保存在某个缓冲块中。需要真正把 数据写到设备上时,要把缓冲区与设备同步实现(延迟写)。
10.MINIX文件系统的布局,每一部分的作用?
答:MINIX文件系统由6个部分组成,分别为引导块、超级块、i节点位图、逻辑块位 图、i节点、数据区。MINIX中把2个连续扇区作为一个整体(磁盘块)来处理,从磁 盘上的第一块(引导块)开始编号;在数据区的磁盘块称为逻辑块。引导块存放计算机 加点启动时可由ROM BIOS自动读入的执行代码和数据,或者为空(对于不用引导的盘 片)。超级块用于存放盘设备上文件系统结构的信息,并说明各部分的大小。i节点位图 用于说明i节点是否被使用,每个比特位代表一个i节点。逻辑块位图用于描述盘上的 每个数据盘块的使用情况,每个比特位代表数据区中的一个数据盘块。i节点部分存放着 文件系统中文件(或目录)的索引节点,每个文件都有一个i节点,其中存放对应文件 的相关信息uidgid、文件长度和访
问修改时间等)。数据区用于存放文件中的数据, 一个文件名通过对应的i节点与这些数据磁盘块相联系。
引导块超级块
-个盘块
1 IIlI II AI I II II O J { 1       
/ \    数据区
i节点位图    逻辑块位图
11.创建目录、删除目录以及搜索目录的过程?
答:用sys_mkdir函数创建目录,传递目录的路径名和目录权限属性,成功返回0,否则 返回负数。用sys_rmdir函数删除,传递目录名称。
从根目录查:/
1、到根目录”/”i节点(第1i节点),通过i节点可以读出根目录的内容; 2、在根目录文件内容中到与etc名字匹配的目录项,从目录项中可以到etc目录的i
点,通过此i节点可以读出etc目录的内容 3、在etc目录文件内容中寻与相匹配的目录项,从目录项中可以到 文件的i节点,从而知道的内容。
从当前进程工作目录查:../
1    到进程工作目录的i节点(记录在进程描述符中),通过i节点可以读出工作目录的内 容;
2    在工作目录文件内容中到与名字匹配的目录项,从目录项中可以到上级目录的i 节点,通过此i节点可以读出上级目录的内容
3    在上级目录文件内容中到与etc名字匹配的目录项,从目录项中可以到etc目录的i 节点,通过此i节点可以读岀etc目录的内容
linux怎么读文件内容4    etc目录文件内容中寻与相匹配的目录项,从目录项中可以到 文件的i节点,从而知道的内容。
12.读文件和写文件的过程?这些过程用到了哪些数据结构以及这些数据结构在过程中的 作用?
答:文件读函数file_read,读过程:根据i节点和文件表结构信息,从i节点指定的设备 上读取当前读写位置对应的逻辑块;计算文件读写指针在数据块中的偏移值,比较该块 中可读字节数和本次需读字节数比较,判断是否为最后一块数据;调整读写文件指针, 复制数据到用户缓冲区buf中;重复读取数据块直到所需数据全部读完;修改该i节点 的访问时间为当前时间。
文件写函数file.write,写过程:如果要向文件后添加数据,则将文件读写指针移动到文 件尾部,若不是则把文件指针调整到当前读写位置,并更改i节点修改时间为当前时间; 创建数据块号在设备上对应的逻辑块,根据该逻辑块号读取设备上相应的数据块;求可 写字节数,与剩余还需写入的字节数比较,确定此次写入字节数c文件读写指针前移c 个字节,如果其位置超过了文件大小,则修改i节点中文件大小字段,并置i节点己修 改标志;从用户缓冲区buf中复制c个字节到高速缓冲区中,然后释放该缓冲区;重复 写入直到己写入字节数等于需要写入字节数,更改文件修改时间为当前时间。
第十章内存管理
1.保护模式下虚拟地址到物理地址的转换过程?
答:虚拟地址由段选择子和段内偏移组成。虚拟地址到线性地址:检查段选择子中的TI 标志,出段描述符所在的描述符表中,并到相应的寄存器中取得描述符表的基地址;把索 引字段的值乘以8 (段描述符大小),加上描述符表的基地址,得到段描述符;用段描述符 中段的基地址加上虚拟地址中的偏移量,得到线性地址。线性地址到物理地址:用线性地址 的高10位作为索引,查页目录,得到页表的基地址;用线性地址的次高10位作为索引, 从得到的页表基地址中查,得到页框的基地址;用页框的基地址加线性地址后12位得到 物理地址。
2.写时复制技术?
答:调用fork()生成新进程时,新进程会与原进程共享同一内存区,为了解决进程间数 据段共享的安全问题,Linux采用写时复制技术。开始时,把所有共享页都置为只读, 当进程试图向共享页写的时候就会引起页面异常。处理页面异常的函数会对导致异常的 物理页面进
行取消共享操作,为写进程复制一新的物理页面,标记成可以写访问,分配 给引起异常的进程,重新执行写操作。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。