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

如何给网站写文章asp.net 网站管理系统

如何给网站写文章,asp.net 网站管理系统,网站怎么做404 301,网站建设成功案例书籍1. 地址空间 程序地址空间是指程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配#xff0c;以确保进程之间不会相互干扰。地址空间包含了程序所需的所有内存区域#xff0c;包括代码、已初始化和未初始化的数据、堆#xff08;heap#xff09;、栈#xff…1. 地址空间 程序地址空间是指程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配以确保进程之间不会相互干扰。地址空间包含了程序所需的所有内存区域包括代码、已初始化和未初始化的数据、堆heap、栈stack等。 2. 虚拟地址 什么是虚拟地址呢我们在Linux笔记---进程初识进程-CSDN博客中谈到过虚拟地址这一概念现在再次回顾一下当时遇到的问题 #include stdio.h // fork函数包含在下面两个头文件中 #include sys/types.h #include unistd.hint main() {printf(我是一个进程我的pid%d我即将创建子进程...\n, getpid());int id fork();if(id 0){printf(我是一个子进程我的pid%d我父进程的pid%d我得到的id%did%p\n, getpid(), getppid(), id, id);}else{printf(我是一个父进程我的pid%d我子进程的pid%d我得到的id%did%p\n, getpid(), id, id, id);}return 0; }由于fork函数返回值不同对id写入的内容不同导致id发生了写时拷贝可以看到父子进程的id值确实是不同的。但问题是二者的地址竟然是完全相同的 当时我们说这是因为这里的地址其实是虚拟地址其物理地址可能指向不同的空间。 我们先思考一个问题在同一次程序运行的过程中同一个变量的地址会发生变化吗当然不会。 既然子进程继承了父进程的数据那么出现这样的结果似乎完全是在意料之中的但问题是这是如何做到的呢 2.1 虚拟地址空间 实际上每个进程都会有一个属于自己的虚拟地址空间我们在程序中看到的、使用的全部都是虚拟地址。虚拟地址空间中的地址会通过页表映射到物理地址空间。 这使得每个程序都认为自己能够使用整个内存空间。 程序地址空间通过虚拟内存和地址映射技术实现了进程的内存隔离保障了多任务操作系统的安全和可靠性。例如在一个简单的程序中通过父进程创建子进程并使用一个全局变量来证明虽然父子进程共用一套代码但是数据是分离开的。这是因为每个进程都有自己独立的地址空间通过页表映射到不同的物理内存上。 页表是操作系统内核用来管理虚拟地址和物理地址之间映射的一个数据结构。它的核心作用是支持虚拟内存使得每个进程可以在自己的独立虚拟地址空间中运行增强了内存隔离和安全性。 2.2 mm_struct mm_struct是Linux内核中的一个数据结构用于描述进程的内存管理信息包括进程的虚拟地址空间布局、页表信息、内存区域等。它是内核中内存管理的核心数据结构之一每个进程都有一个对应的mm_struct结构用于管理该进程的内存空间。 struct task_struct {/*...*///对于普通的⽤⼾进程来说该字段指向他的虚拟地址空间的⽤⼾空间部分对内核线程来说这部分为NULL。struct mm_struct *mm; // 该字段是内核线程使用的。// 当该进程是内核线程时它的mm字段为NULL表⽰没有内存地址空间可也并不是真正的没有// 这是因为所有进程关于内核的映射都是⼀样的内核线程可以使⽤任意进程的地址空间。struct mm_struct *active_mm; /*...*/ }struct mm_struct {/*...*/struct vm_area_struct *mmap; /* 指向虚拟区间(VMA)链表 */struct rb_root mm_rb; /* red_black树 */unsigned long task_size; /*具有该结构体的进程的虚拟地址空间的⼤⼩*//*...*/// 代码段、数据段、堆栈段、参数段及环境段的起始和结束地址。unsigned long start_code, end_code, start_data, end_data;unsigned long start_brk, brk, start_stack;unsigned long arg_start, arg_end, env_start, env_end;/*...*/ } 虚拟区间指进程的虚拟地址空间中的一个连续区域这个区域具有特定的属性如访问权限、是否映射到物理内存、是否与文件关联等。虚拟区间通常用于描述进程的代码段、数据段、堆区、栈区以及内存映射区域等。mmap当虚拟区间较少时采用单链表进行管理mmap指向这个链表。mm_rb当虚拟区间较多时采用红黑树进行管理mm_rb指向这棵树。 struct vm_area_struct {unsigned long vm_start; //虚存区起始unsigned long vm_end; //虚存区结束struct vm_area_struct* vm_next, * vm_prev; //前后指针struct rb_node vm_rb; //红⿊树中的位置unsigned long rb_subtree_gap;struct mm_struct* vm_mm; //所属的 mm_structpgprot_t vm_page_prot;unsigned long vm_flags; //标志位struct {struct rb_node rb;unsigned long rb_subtree_last;} shared;struct list_head anon_vma_chain;struct anon_vma* anon_vma;const struct vm_operations_struct* vm_ops; //vma对应的实际操作unsigned long vm_pgoff; //⽂件映射偏移量struct file* vm_file; //映射的⽂件void* vm_private_data; //私有数据atomic_long_t swap_readahead_info; #ifndef CONFIG_MMUstruct vm_region* vm_region; /* NOMMU mapping region */ #endif #ifdef CONFIG_NUMAstruct mempolicy* vm_policy; /* NUMA policy for the VMA */ #endifstruct vm_userfaultfd_ctx vm_userfaultfd_ctx; } __randomize_layout; 3. 虚拟地址空间的优势 地址空间扩展使得程序在编写和运行时无需过于担心物理内存的实际容量限制。内存保护允许操作系统为不同的程序进程设置不同的内存访问权限。内存共享不同的进程可以通过虚拟内存机制共享某些内存区域。进程管理与内存管理解耦将实际的物理内存和程序使用的内存进行了分离就像上文中有页表的那张图以页表为分割左边进行进程管理右边进行内存管理二者互不干扰并通过页表连接起来。 地址空间拓展与解耦的理解 假设某台计算机总的内存大小是128M现在同时运行两个程序A和BA需占用内存10MB需占用内存110。计算机在给程序分配内存时会采取这样的方法先将内存中的前10M分配给程序A接着再从内存中剩余的118M中划分出110M分配给程序B。 若此时占用20M的程序C也加入进来计算机就无法为其分配空间进程也就无法启动。 但如果程序采用虚拟地址空间C进程在创建时就可以暂时先不加载代码和数据仅仅将其task_struct和页表(此时仅有虚拟地址)维护起来(挂起状态)。 当C进程获得CPU资源时再将其他进程挂起而将C进程的代码和数据加载到内存中此时再将虚拟地址映射到实际的物理地址。 这样尽管程序所需占用的内存空间大于计算机的内存空间也能保证这些进程同时被启动因为进程管理与物理内存的管理是被分割的。 4. 总结 Linux虚拟地址空间是操作系统为每个进程提供的一组虚拟地址这些地址在进程看来是连续的但实际上它们会被映射到物理内存的不同位置。虚拟地址空间的目的是使每个进程都认为自己独占了整个内存从而简化内存管理和提高安全性。通过页表和MMU的配合操作系统能够有效地管理和保护内存资源同时提供了灵活的内存分配和共享机制。 因为有地址空间的存在所以我们在C、C语言上new, malloc空间的时候其实是在地址空间上申请的物理内存可以甚至一个字节都不给你。而当你真正进行对物理地址空间访问的时候才执行内存的相关管理算法帮你申请内存构建页表映射关系延迟分配这是由操作系统自动完成用户包括进程完全0感知
http://www.eeditor.cn/news/123339/

相关文章:

  • 高明网站开发杭州网络公司建网站
  • 做网站的怎么学新手如何建站
  • 网站建设男装定位邢台学校网站建设费用
  • 南京做网站南京乐识专业广告协会网站建设方案
  • 萍乡网站建设wordpress多语言内容添加
  • 三明北京网站建设WordPress主题怎么保存
  • 网站建设 管理 会议纪要求个没封的w站2021你懂
  • metro网站模板医疗机构网站以患者做宣传
  • 每天做特卖的网站是哪个网站值不值得做seo
  • 网站建设不能持续消费?个人怎么做公司网站
  • 品牌网站制作哪家好企业网站推广可以选择哪些方法
  • 福州网站制作套餐高质量营销型网站定做价格
  • 企业建站 炫酷模板开个广告公司大概需要多少钱
  • 网站设计开发项目书电商公司运营策略
  • 天津自助建站软件昆山建设工程招聘信息网站
  • 网站ie兼容性差网站关键词排名优化系统
  • 如何建立一家公司网站北京品牌网站设计
  • 住房和城乡建设部注册中心网站自助构建网站
  • 贺州网站制作微信与与网站建设
  • 网站建设规划书万能互联网营销策划方案
  • 建站网站建设哪个好万网网站空间
  • 开源网站内容管理系统哈尔滨网站设计快速建站
  • 网站建设外文文献翻译网站统计开放平台
  • 电影网站模板html不用流量的地图导航软件
  • 做网站侵权培训网站建设方案模板
  • 淮北建网站费用基金网站模板
  • 南通网站建设心得徽章设计制作小程序
  • 山东网站开发网络公司国家工商网企业查询官网
  • 阿里巴巴网站广告怎么做wordpress插件卸载
  • 上海营销型网站标准app网站开发框架