当前位置: 首页 > news >正文

设计相关的网站有哪些内容wordpress 最新区块编辑

设计相关的网站有哪些内容,wordpress 最新区块编辑,wordpress主题2019,修改wordpress登录页logo目录 物理内存空间划分 物理内存初始化 查看当前页面分配状态 页块 页面如何添加到伙伴系统中#xff1f; 物理内存空间划分 32位系统 4GB 用户空间和内核空间划分 3#xff1a;1 ARM64架构处理器虚拟地址空间划分方式#xff1b; 内核中使用PAGE_OFFSET宏计算 内核线…目录 物理内存空间划分 物理内存初始化 查看当前页面分配状态 页块 页面如何添加到伙伴系统中 物理内存空间划分 32位系统 4GB 用户空间和内核空间划分 31 ARM64架构处理器虚拟地址空间划分方式 内核中使用PAGE_OFFSET宏计算 内核线性映射中 **虚拟地址和物理地址的转换 ** #define VA_BITS CONFIG_ARM64_VA_BITS #define VA_START UL0×ffffffffffffffff - UL1 VABITS1 #define VA_OFFSET UL0×ffffffffffffffff - UL (1 VA_BITS - 1 1 CONFIG_ARM64_VA_BITS设置48那么PAGE_OFFSET的值为0xFFFF 8000 0000 0000 内核中计算线性映射的物理地址和虚拟地址的转换关系 线性映射的物理地址 vaddr - PAGE_OFFSET PHYS_OFFSET 内核常用的宏 __pa()和__va() __phys_to_virt()用于根据计算物理地址 计算线性映射的虚拟地址 __virt_to_phys_nodebug()根据虚拟地址计算物理地址。在arm64内核中内核空间虚拟地址分为1线性映射区域2vmalloc区域内核会映射到vmalloc区域 __is_lm_address 用于判断虚拟地址是否为线性映射的虚拟地址 物理内存初始化 在内核启动时DDR大小内存起始地址和内核空间内存布局以及映射关系。物理内存要添加到 伙伴系统中 伙伴系统是内核中内存管理一种方法在用户提出申请时分配一个大小合适的内存块给用户。内存块的大小2的order次幂个页面 order最大值是MAX_ORDER 通常是11就是把所有空闲页面分成11个内存块链表每个内存块链表分别有1,2,4,8, 1024个连续页面。 zone结构体中有free_area数组大小是MAX_ORDER.free_area数据结构中包含了MIGRATE_TYPES不可移动、可回收、可移动页面个链表 查看当前页面分配状态 # cat /proc/pagetypeinfo Page block order: 9 Pages per block: 512Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 Node 0, zone DMA, type Unmovable 0 0 0 0 0 0 0 1 0 0 0 Node 0, zone DMA, type Movable 0 0 0 0 0 0 0 0 0 1 3 Node 0, zone DMA, type Reclaimable 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA32, type Unmovable 200 200 296 190 130 61 47 13 5 8 5 Node 0, zone DMA32, type Movable 1990 153 26 14 0 1 1 0 0 4 4 Node 0, zone DMA32, type Reclaimable 1009 246 171 12 91 28 4 0 0 0 0 Node 0, zone DMA32, type HighAtomic 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone DMA32, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone Normal, type Unmovable 468 398 242 80 54 16 2 2 0 0 0 Node 0, zone Normal, type Movable 0 0 0 0 0 0 0 0 0 0 0 Node 0, zone Normal, type Reclaimable 174 55 45 12 0 0 0 0 0 0 0 Node 0, zone Normal, type HighAtomic 15 10 3 0 0 0 0 0 0 0 0 Node 0, zone Normal, type Isolate 0 0 0 0 0 0 0 0 0 0 0 Number of blocks type Unmovable Movable Reclaimable HighAtomic Isolate Node 0, zone DMA 1 7 0 0 0 Node 0, zone DMA32 434 1037 57 0 0 Node 0, zone Normal 149 331 31 1 0 从上可以看出 Node 节点有1个Node 划分为3个zone Normal DMA32 DMA伙伴系统的类型 Isolate,ReclaimableMovableUnmovableHighAtomic伙伴系统的阶数 0~10大部分的页面是DMA32的Movable 页块 内核中一个页块大小通常是2(MAX_ORDER-1)个页面每个页块有迁移属性zone-pageblock_flags指向其内存空间迁移类型内存空间大小通过usemap_size函数来计算 zone初始化函数free_area_init_core会调用setup_usemap()函数计算大小并分配内存 static void __ref setup_usemap(struct pglist_data *pgdat,struct zone *zone,unsigned long zone_start_pfn,unsigned long zonesize) {unsigned long usemapsize usemap_size(zone_start_pfn, zonesize);if (usemapsize) {zone-pageblock_flags memblock_alloc_node(usemapsize, SMP_CACHE_BYTES,pgdat-node_id);} } /** Calculate the size of the zone-blockflags rounded to an unsigned long*/ static unsigned long __init usemap_size(unsigned long zone_start_pfn, unsigned long zonesize) {unsigned long usemapsize;zonesize zone_start_pfn (pageblock_nr_pages-1);usemapsize roundup(zonesize, pageblock_nr_pages);usemapsize usemapsize pageblock_order;usemapsize * NR_PAGEBLOCK_BITS;usemapsize roundup(usemapsize, 8 * sizeof(unsigned long));return usemapsize / 8; } 首先通过四舍五入确保zonesize是pageblock_order的倍数。然后每个页面块使用1个NR_PAGEBLOCK_BITS值的比特最后将现在的比特四舍五入到最接近的longmemblock_alloc_node 分配内存,设置类型并赋值给pageblock_flags 页面如何添加到伙伴系统中 start_kernel-mm_init-mem_init-free_all_bootmem-free_low_memory_core_eearly free_low_memory_core_eearly函数通过for_each_free_mem_range遍历所有内存块找出内存块的起始地址和结束地址。 函数调用关系 static unsigned long __init free_low_memory_core_early(void) {for_each_free_mem_range(i, NUMA_NO_NODE, MEMBLOCK_NONE, start, end,NULL)count __free_memory_core(start, end);return count; } static unsigned long __init __free_memory_core(phys_addr_t start,phys_addr_t end) {unsigned long start_pfn PFN_UP(start);unsigned long end_pfn min_t(unsigned long,PFN_DOWN(end), max_low_pfn);if (start_pfn end_pfn)return 0;__free_pages_memory(start_pfn, end_pfn);return end_pfn - start_pfn; } static void __init __free_pages_memory(unsigned long start, unsigned long end) {int order;while (start end) {order min(MAX_ORDER - 1UL, __ffs(start));while (start (1UL order) end)order--;memblock_free_pages(pfn_to_page(start), start, order);start (1UL order);} } void __init memblock_free_pages(struct page *page, unsigned long pfn,unsigned int order) {__free_pages_core(page, order); } void __free_pages_core(struct page *page, unsigned int order) {...__free_pages_ok(page, order, FPI_TO_TAIL); } static void __free_pages_ok(struct page *page, unsigned int order,fpi_t fpi_flags) {free_one_page(page_zone(page), page, pfn, order, migratetype,fpi_flags); } static void free_one_page(struct zone *zone,struct page *page, unsigned long pfn,unsigned int order,int migratetype, fpi_t fpi_flags) {__free_one_page(page, pfn, zone, order, migratetype, fpi_flags); } 参数start和end时起始与终止页帧号while循环遍历[start,end],步长取MAX_ORDER-1和__ffs(start)中较小值假设start起始地址0x35300,该地址以0x100对其通过__ffs(start)计算出合适的order值为82^80x100。此起始地址适合创建一个2^8个页面并添加到order为8的伙伴系统中;得到order 最后调用__free_pages_core 将内存添加到伙伴系统中
http://www.zqtcl.cn/news/113206/

相关文章:

  • 夏天做那些网站能致富百度关键词价格怎么查询
  • 厦门微信网站专业从事网站开发公司
  • 网站标题的写法湖南如何做网络营销
  • 设计做兼职的网站求推荐医院英文网站建设
  • 有没得办法可以查询一个网站有没得做竞价呀ai可以用来做网站吗
  • 俄乌局势最新消息惠州seo排名优化
  • 常州发布信息的有什么网站电商平台建设公司
  • 高新区手机网站建设长沙关键词优化服务
  • 网站开发预算报价表推销网站的方法
  • 做网站需要几个人昆明旅行社网站开发
  • 上海产品网站建设网站建设分为哪些
  • 史志网站建设在线网站建设工程标准
  • 青海省建设工程在哪个网站发布北京专业网站外包公司
  • 东营网站建设公司wordpress获取子分类
  • 网站的尾页要怎么做d代码做网站
  • 自己做一元购网站烟台网站设计公司推荐
  • 有没有做彩票直播的网站成都十八个网红打卡地
  • 急求聊城网站建设网站服务器管理系统
  • 做网站需要什么许可证商场设计效果图
  • html网页制作视频windows优化大师有哪些功能
  • 国外建站主机帝国手机网站cms系统
  • 响应式网站建设哪家好网站空间支付方式
  • 腾讯广告建站工具贵州企业网站建设价格
  • 最新的网站建设架构wordpress管理员头像
  • 手机网站模版化工网站建设公司
  • 网站建设 会计分录北京网站建设主页
  • 北京市建设监理协会网站网站一般多少钱
  • 做网站零成本网站如何做成app
  • 建小网站多少钱深圳网站备案注销
  • 海淘网站是谁做的为该网站做自适应