计算机系统课程报告
5.6 HELLO 的执行流程................................................................................................28
5.7 HELLO 的动态链接分析.......................................................................................29
5.8 本章小结...............................................................................................................29
第 6 章 HELLO 进程管理.............................................................................................30
6.1 进程的概念与作用...............................................................................................30
6.2 简述壳 SHELL-BASH 的作用与处理流程.............................................................30
6.3 HELLO 的 FORK 进程创建过程.............................................................................30
6.4 HELLO 的 EXECVE 过程.........................................................................................31
6.5 HELLO 的进程执行...............................................................................................31
6.6 HELLO 的异常与信号处理....................................................................................32
6.7 本章小结...............................................................................................................36
第 7 章 HELLO 的存储管理.........................................................................................37
7.1 HELLO 的存储器地址空间....................................................................................37
7.2 INTEL 逻辑地址到线性地址的变换-段式管理....................................................37
7.3 HELLO 的线性地址到物理地址的变换-页式管理..............................................38
7.4 TLB 与四级页表支持下的 VA 到 PA 的变换......................................................39
7.5 三级 CACHE 支持下的物理内存访问..................................................................40
7.6 HELLO 进程 FORK 时的内存映射..........................................................................40
7.7 HELLO 进程 EXECVE 时的内存映射......................................................................41
(1)在 BASH 中的进程中执行了如下的 EXECVE 调用:
EXECVE("HELLO",NULL,NULL);(2)EXECVE 函数在当前进程中加载并运行包
含在可执行文件 HELLO 中的程序,用 HELLO 替代了当前 BASH 中的程序。.......41
(3)下面是加载并运行 HELLO 的几个步骤:.......................................................41
① 删除已存在的用户区域:删除当前进程虚拟地址的用户部分中的已存在的区
域结构。.....................................................................................................................41
② 映射私有区域:为新程序的代码、数据、BSS 和栈区域创建新的区域结构。
所有这些新的区域都是私有的、写时复制的。代码和数据区域被映射为
HELLO.OUT 文件中的.TEXT 和.DATA 区。BSS 区域是请求二进制零的,映...........41
射到匿名文件,其大小包含在 HELLO.OUT 中。栈和堆区域也是请求二进制 零的,
初始长度为零。.........................................................................................................41
③ 映射共享区域:如果 HELLO.OUT 程序与共享对象(或目标)链接,比如标
准 C 库 LIBC.SO,那么这些对象都是动态链接到这个程序的,然后再映射 到用
户虚拟地址空间中的共享区域内。.........................................................................41
④ 设置程序计数器(PC):EXECVE 做的最后一件事情就是设置当前进程上下
文中的程序计数器,使之指向代码区域的入口点。.............................................41
7.8 缺页故障与缺页中断处理...................................................................................41
7.9 动态存储分配管理...............................................................................................42
7.10 本章小结.............................................................................................................44
3
评论0