0.11 Linux内核 内存映射与进程结构
来源:互联网 发布:淘宝货号是什么意思 编辑:程序博客网 时间:2024/06/14 08:19
进程结构
Linux0.11中的每个进程都有如下的结构:
在gdt中占有两项,一项是tss段描述符,一项是ldt段描述符。
在task数组中占有一项,指向一页物理内存,该物理内存低端是进程控制块task_struct(里面包括tss段和ldt段),其余部分是进程的内核态堆栈。
在页目录表和页表中设置有相关项。
Linux0.11中,最多只有64个进程,task数组大小也定义成了64,每个进程与一个task数组中的项一一对应。虽然gdt中有256项,但是并不是都用到。第一个gdt项保留不用,内核用2个项,然后系统为每个进程保留2项。这样一个进程与2个gdt项一一对应。也就是linux0.11中task数组和gdt的分配是定死的,比如一个进程的任务数组项好为nr,即它的进程控制块由task[nr]指向,那么它的tss描述符和ldt描述符分别位于gdtr+3*8+nr*16和gdtr+3*8+nr*16+8处。
Linux0.11内存物理地址0处开始放着一页页目录表和四页页表。这一个页目录表是所有进程共享的。其后的四页页表正好映射16M物理内存,是内核和进程0的页表。以后创建进程时页表需要从主内存区申请,而页目录项直接从页目录表中取。这样进程和页目录表页存在这一一对应关系,任务号为nr的进程,对应页目录的第nr*16~(nr+1)*16一共16个目录项。这样4G的线性空间由64个进程共享,每个进程分到64M。
三个结构的一一对应关系如图所示
- 0.11 Linux内核 内存映射与进程结构
- linux 内存映射2 内核/用户进程间通信
- Linux进程内存映射
- Linux进程内存映射
- Linux用户空间与内核空间内存映射
- Linux用户空间与内核空间内存映射
- Linux内核分析——进程任务结构与初始化
- linux内核--进程任务结构化与初始化
- Linux内核编程(项目笔记)——项目:进程内存映射
- Linux进程内核栈与thread_info结构详解--Linux进程的管理与调度(九)
- linux 内核动态映射与静态映射
- Linux进程的内存结构
- linux内核高端内存管理之固定内存区与映射
- linux内核空间的内存映射
- Linux内核 内存映射文件机制mmap
- Linux内核地址映射模型-高端内存
- linux 实例分析内核IO内存映射
- Linux内核之mmap()内存映射函数
- 控制反转和依赖注入
- 练习赛9.1.细胞
- 两个栈来模拟队列
- 面向对象知多少(一)OMT技术
- UML在软件开发过程中的应用
- 0.11 Linux内核 内存映射与进程结构
- 容器
- Linux_套接字编程
- IBM JDK官方下载地址
- 这些道理不懂,你注定就是穷打工的命
- Accelerated C++ Exercise 5-0(frame)
- IT人士必去的10个网站
- 自定义ContentProvider详解
- CODE 74: Spiral Matrix II