CACHE & TLB (一)

本文回顾了UNIX内核中的内存管理,强调了线程切换时地址空间的保留如何减少开销。介绍了地址空间分配,包括用户空间和内核空间,并讨论了页映射、Fork和exec的工作机制。接着,文章转向了Cache的基本原理,包括局部性、替换策略、写入策略和不同类型的高速缓存组织方式,最后提到了高速缓存冲洗和区分不同高速缓存结构的依据。
摘要由CSDN通过智能技术生成

.unix内核简单回顾(内存相关)

               1. 当使用传统的分时调度策略的时候,在用户级执行的进程总会被分到时间片内执行,从而让所有的进程公平的共享CPU,在内核态执行的进程却不会分入时间片内执行,只有当前的内核进程明确允许的情况下,才能切换到内核级执行另一个进程。

               2. 线程的开销比进程小主要体现在线程共享进程的地址空间。linux内核中没有线程的概念,使用的线程库,实现的功能是线程调度在内核进行,线程的管理在用户空间进行。从概念上看,每一个进程地址空间都分为用户地址空间和内核地址空间,linux中作进程切换的时候,如果是线程的切换,由于共用用户地址空间,所以用户空间的3G内存映射是不需要切换的,在内核中有对应的mm_struct对应,从而减少切换开销。

               3. 地址空间的分配,一般是3G用户空间,1G内核空间 , 用户空间由text/data/bss/stack这几个部分组成,分别是程序指令,初始化数据,未初始化数据和堆栈。另外一些类型的段,如共享库和共享存储,都包含在用户地址空间内。共享库包括附加的正文,数据和BSS段,它们用于常用的函数和服务。共享存储在后面说明。

               内核空间包括内核的正文和数据结构,当内核正在执行的时候,它可以访问整个地址空间,这样易于让内核在代表用户进程执行一次系统调用的时候可以在用户进程的地址空间中执行。一个内核进程实际上执行的都是内核的正文中的代码,有固定的映射,切换的时候重装task_struct等结构是必须的。

               可以从下图中有个更加清晰的概念:(这里是2G/2G的设计)

                 

               

               4. 地址空间映射

                    线程切换减少开销主要是因为共享用户地址空间,所以用户空间地址映射的物理地址对应关系可以保存下来,不需要切换,从而减少开销。

                    内核负责将一个进程的虚拟地址空间映射到物理地址空间上,由MMU执行。

                   

                   

                        

             每一个进程都有它自己的映射关系,这种映射关系与内存有关,而且作为进程的现场的一部分保存起来。在进程运行的时候,内核将进程映射关系的描述提供给MMU

           注意,不是所有的虚拟页面都需要映射,例如,上图中的虚拟页面158</

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值