浅谈linux进程的切换

前文介绍了linux的进程的一些静态特性,这里开始简单描述一下进程是怎么切换的。首先,什么是进程切换?进程切换就是为了控制进程的执行,内核挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的行为。什么时候会切换?发生schedule()的时候。都要切换什么?切换地址空间、内核态堆栈和硬件上下文。...

2018-06-14 22:57:42

阅读数 160

评论数 0

浅谈linux的进程的静态特性——pid,进程状态,进程链表,等待队列

本文有点长,建议分开食用。本文可以看做是介绍进程的一些特性,也可以看做是对进程描述符的各个重要字段的介绍。1. 什么是进程进程就是程序执行的一个实例。进程在创建时执行和父进程相同的代码,但是拥有自己的独立的数据拷贝(堆栈)。所以,进程可以看做一个分配系统资源的实体。系统资源包括CPU时间、内存。在...

2018-06-14 17:42:04

阅读数 185

评论数 0

Linux的内存寻址——浅谈分段和分页机制

本文会以80x86架构,linux2.6为例,简单介绍内存的分段和分页机制。1. 三种内存地址关于内存地址,首先要了解它有三种,分别是逻辑地址、线性地址和物理地址。把逻辑地址转换为线性地址是由一个叫做分段单元的硬件电路完成的。同样地,还有一个叫做分页单元的硬件电路负责把线性地址转换为物理地址。那现...

2018-06-01 18:10:58

阅读数 266

评论数 0

DPDK如何针对cache提高性能

前面介绍了一些cache的相关背景知识,这里单独写一篇博客,总结一下对于DPDK来说,为了提升性能,在cache方面有哪些需要注意的点。①适时的使用cache预取技术。在处理网卡队列的时候,多数时候都是在处理连续的内存,此时应该主动调用预取函数,可以提升效率。②为了解决cache一致性问题,数据结...

2018-05-25 11:11:57

阅读数 343

评论数 0

DPDK学习——cache相关知识④

6. TLB和大页6.1 TLB如前所说,TLB也是一种cache,用于存放页表项的cache,方便快速完成逻辑地址到物理地址的转换。6.2 大页但是一个常规页4k,假设一个程序用了512页,总共2MB,这就需要TLB里至少方下512个页表项才能保证每次都能命中,但TLB大小有限。所以为了减少TL...

2018-05-25 11:08:37

阅读数 463

评论数 0

DPDK学习——cache相关知识③

4. cache预取背景:cache操作对大多数程序员透明,但当对程序执行效率有很高要求的时候,程序员可以一定程度上控制cache。4.1 Cache局部性①时间局部性:程序即将用到的指令或数据,可能就是目前正在使用的指令或数据,可以在当前的指令数据使用完后暂存在cache中。典型的例子就是for...

2018-05-25 11:04:37

阅读数 529

评论数 0

DPDK学习——cache相关知识②

2 Cache地址映射和变换2.1 背景Cache的容量很小,L3也只有几十兆,而内存容量有好几G,在这种情况下要把内存中的内容放到cache中,需要一个映射算法和分块机制。2.2 分块机制cache和内存以块为单位进行数据交换。块以在内存的一个存储周期中能访问到的数据长度为限。当今主流大小都是6...

2018-05-25 11:00:26

阅读数 293

评论数 0

DPDK学习——cache相关知识①

1. cache系统1.1 出现原因:内存性能对于CPU来说仍然很慢,处理器从内存中读数据多达上百个时钟周期,这几个周期里,处理器只能等待。所以提出了Cache以匹配处理器与内存之间的巨大速度鸿沟。1.2 三级cache:一级cache一般分为数据cache和指令cache,3~5个指令周期就能访...

2018-05-25 10:50:31

阅读数 215

评论数 0

动态规划方法解旅行商问题(TSP Traveling Salesperson Problem)

本文依照具体例子说明如何用动态规划算法解tsp货郎商问题 网上很多相关文章介绍的时候都缺乏例子,以至于太抽象不够直观。本文用具体例子来介绍动态规划法解决tsp。tsp是为了在一个图中求得一个最优路径,经过所有jie d 对于下图,我们用v1,v2,v3,……v6表示每个节点。因为求的是一个回路,所...

2016-03-18 08:27:17

阅读数 10314

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭