- 博客(7)
- 收藏
- 关注
原创 深入理解晶体管:电子工程中的核心元件及其应用
这些详细描述了晶体管在不同电子应用中的作用以及如何通过控制栅极电压来实现电导率的调节。晶体管的导电状态是通过栅极电压来控制的,这使得它成为各种电子电路的核心元件,可以在不同工作区域中切换以实现不同的电子功能。这些是晶体管在各个领域中的一些具体应用案例,展示了晶体管在现代电子技术中的广泛应用。
2023-09-06 13:44:35
588
1
原创 深入理解线性地址是如何转化为物理地址?硬件中的分页,Linux中的分页,页表
总之,一旦cr3被设置,就可能寻址高达4GB RAM。对于32位系统未启用物理地址扩展的,两级页表就够了,Linux通过使页上目录和页中间目录全为0,但是保留他们在指针序列中的位置,实现方式:通过把它们的页目录数设置成为1,并把两个目录映射到页全局目录的一个适当的目录项而实现的。Field包含物理地址最高20位的字段:每个页框容量为4K,他的物理地址必须为4096的倍数,因此物理地址的最低12位总是0,如果这个字段指向一个页目录,相应的页框就含有一个页表,如果它指向一个页表,则相应的页框就会出现一页数据。
2023-08-16 15:40:39
613
1
原创 关于linux常用的页的函数和宏
当PAE被禁止时,PGDIR_SHIFT产生的值为22,PGDIR_MASK产生的值为0xffc00000,当PAE被激活时,PGDIR_SHIFT产生的值为30(12位offset,9位table,9位middle dir)大型页不使用最后一级页表,所以产生大型页尺寸的LARGE_PAGE_SIZE宏等于PMD_SIZE,LARGE_PAGE_MASK=PMD_MASK。pte_t,pmd_t,pud_t,pgd_t,pgprot_t(与一个单独表项相关的标志),PAE激活时64位,其余32位。
2023-08-16 15:39:57
159
1
原创 Linux中的分段,GDT,LDT
②任务状态段(TSS),每个处理器一个,每个TSS的线性地址空间都是内核数据段相应一个线性空间的一个子集,所有的任务状态段都顺序的存放在init_tss数组,第n个cpu的TSS描述符的Base字段指向init_tss数组,G=0,Limit=0xeb(236字节),Type=9或11,(进程能否在CPU下运行),DPL=0,不允许用户态下的进程访问TSS段。所有的段都从0x00开始,得到的结论是,Linux下逻辑地址与线性地址是一致的,即逻辑地址的偏移量字段的值与相应的线性地址的值总是一致的。
2023-08-15 11:21:40
430
1
原创 逻辑地址如何转换为线性地址,理解硬件中的分段,linux中的分段
每一个非编程的寄存器含有8个字节的段描述符,由相应的段寄存器中的段选择符来指定,每当一个段选择符被装入段寄存器,相应的段描述符由内存装入到对应的非编程CPU寄存器。通常只定义一个GDT,而进程除了存放GDT的段之外如果还需要附加的段就可以有自己的LDT,GDT在主存中的地址和大小存放在gdtr控制寄存器中,LDT地址和大小放在ldtr控制寄存器中。Limit:存放段中最后一个内存单元的偏移量,从而决定段的长度,如果G被置为0,则段的大小在1个字节~1M,否则4kb~4GB。
2023-08-14 13:49:44
251
原创 关于DMA,内存仲裁器的的理解
在多处理器系统中,所有的CPU都共享同一内存,RAM芯片可以由独立的CPU并发访问,RAM芯片上的读与写必须串行的执行,因此有了内存仲裁器的硬件电路插在总线和每个RAM芯片之间。作用是如果某个RAM芯片空闲,就准予一个CPU访问,如果RAM在忙,就延迟访问。单处理器也是用内存仲裁器 —— DMA,他可以和CPU并发操作,直接访问内存操作。从编程观点看,由硬件电路管理,所以它是隐藏的。
2023-08-14 10:04:42
228
原创 小白通俗易懂,什么是逻辑地址、线性地址和物理地址
偏移量指明了从段开始的地方到实际地址之间的距离。例如,c语言取指针的操作(&),这个值是逻辑地址,它是相对于你当前进程数据段的地址,不是物理地址。内存控制单元MMU通过分段单元的硬件电路把一个逻辑地址转换成线性地址,接着经过分页单元把线性地址转换成物理地址。也称虚拟地址(virtual address),是一个32位无符号整数,可以用来表示高达4GB的地址,是。机器语言指令中用来指定一个操作数或一条指令的地址。逻辑地址就是段中的偏移地址,加上基地址就是线性地址。逻辑地址和物理地址之间的中间层。
2023-08-14 09:48:13
2438
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人