Linux内核源码学习(1)

一,内核简介

1,在安装好的Linux系统中,内核的源代码位于/usr/src/linux。

2的10次方就是1K(1024);16位CPU的地址空间是64K。

X86结构的80386是32位CPU

段描述结构伪代码:

typedef struct{
    unsigned int base24_31:8; /*基地址的高8位*/
    unsigned int g:1; /*表段的长度单位,0表示字节,1表示4KB*/ 
    unsigned int d_b:1; /*默认存储大小,0=16位,1=32位*/
    unsigned int unused:1; /*固定设置为0*/
    unsigned int avl:1; /*可供系统软件使用*/
    unsigned int seg_limit_16_19:4; /*段长度的最高4位*/
    unsigned int p:1; /*0表示该段的内容不在内存中*/
    unsigned int dpl:2; /*访问本段所需权限*/
    unsigned int s:1; /*描述项类型,1表示系统,0表示代码或数据*/
    unsigned int type:4; /*段的类型,与上面的S标志位一起使用*/
    unsigned int base_0_23:24; /*基地址的低24位*/
    unsigned int seg_limit_0_15:16; /*段长度的低16位*/
}段描述项;
  • 80386并不只是划分出系统状态和用户状态,而是划分成四个特权级别,0~3,0是最高级。
  • 16位段寄存器的高13位用作下标来访问段描述表:

    typedef struct {
        unsigned short seg_idx:13; /*13位的段描述项下标*/
        unsigned short ti:1; /*段描述表指示位,0表示GDT,1表示LDT*/
        unsigned short rpl:2; /*要求的优先级别*/
    }段寄存器;
    
  • LDT(局部段描述表),GDT(全局段描述表);
  • 当改变一个段寄存器的内容时,CPU会加以检查,以确保该段程序的当前执行权限和段寄存器所指定要求的权限均不低于所要访问的那一段内存的权限dpl。

i386的页式内存管理机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值