![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 62
q1n2hen
这个作者很懒,什么都没留下…
展开
-
listen函数和accept函数
对于listen和accept函数应该配套使用和理解listen函数原型:#includeint listen(int sockfd,int backlog);参考《Linux高性能服务器编程》上的解释: socket 被命名之后,还不能马上接受客户连接,需要系统调listen用来创建一个监听队列用来存放待处理的客户连接。对于各个参数:sockfd指原创 2017-02-20 01:42:47 · 494 阅读 · 0 评论 -
__kfifo_put和__kfifo_get
最近了解无锁队列的时候,看了这个博主的文章,感觉这个设计挺巧妙的。有些地方我不是很理解,看了好几遍才能了解,所以在代码上加上一点自己的注释。 原作者提的in out指针绕回原点,一开始我理解成in指针会到out的前面,读取的时候循环找。后来发现其实不是这样的,因为做了取模,in/out无限增长也没有关系。--------------------- 作者:海枫 来源:CS...转载 2018-12-17 11:28:40 · 1210 阅读 · 0 评论 -
big.LITTLE --- ARM
在2013年,big.LITTLE 家族又增加了新的SoC实现,有2个Cortex-A15+3个Cortex-A7核的ARM的参考测试芯片TC2,以及在三星Galaxy S4手机中应用的Samsung-LSI的4个Cortex-A15核+4个Cortex-A7核的'Octa-core'芯片。Linaro在ARM的big.LITTLE SoCs上针对Linux和Android内核做了很多的性转载 2017-09-27 22:43:13 · 616 阅读 · 0 评论 -
task_struct
最近看linux内存管理看到的这个结构体....然后了解了一下这个。 大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的转载 2017-07-09 15:53:30 · 193 阅读 · 0 评论 -
进程生命周期
-------------------------------------------- 对于一个进程,基本概念我觉得就是一个资源分配单位。对于每一个进程都有对应的PCB(进程控制块),在linux下的PCB是task_struct。 对于task_struct,一开始我看源码的时候也是非常痛苦,看了这忘了那,一直都模模糊糊。所以总结之后,觉得得需要根据一个进程,需要有...原创 2017-09-15 22:26:15 · 872 阅读 · 0 评论 -
为什么没有HIGHMEM
如果你稍微了解过Linux内核的内存管理,那么对内存分区的概念一定不陌生,Linux内核把物理内存分成了3个区,0 – 16M 为ZONE_DMA区,16M – 896M 为ZONE_NORMAL区,高于896M 为ZONE_HIGHMEM区我没有去考证过为什么要取896这个数字,但是可以肯定的是这样的划分在当时看来是合理的,然而计算机行业的发展今非昔比,现在4G的物理内存已经转载 2017-08-29 08:05:56 · 1229 阅读 · 0 评论 -
将一个线程绑定到特定 CPU上
As multi-core CPUs become increasingly popular on server-grade hardware as well as end-user desktop PCs or laptops, there have been growing efforts in the community (e.g., in terms of programming mode原创 2017-08-29 01:01:03 · 751 阅读 · 0 评论 -
进程调度--CFS
之前看情景分析,调度是用的时间片的方式,但是看2.6源码的时候发现不是那么回事。。。后来又看了Linux内核分析才知道时间片的方法给淘汰了.............. Linux2.6.24内核采用分层的思想管理调度。可以看作两层,第一层被称为核心调度器,在核心调度器下面为调度器类。在调度器被调用时,它会查询调 度器类,得知接下来运行哪个进程。内核支持不同的调度策略(完全公平调度和实时调度等)转载 2017-08-17 00:28:36 · 187 阅读 · 0 评论 -
不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射
看到内核详解上说不管什么进程一旦进入内核就进入了系统空间都有相同的页面映射,内核就不用cr3吗?实在搞不明白,希望大虾详细讲解一下|内核当然会用cr3,在每个进程的页目录项中,都把最后3-4G的页目录项映射到了同一物理内存空间,也就是说每个进程的页目录项中的3-4G的映像关系完全相同!!!!所以从任何一个进程在运行时进入内核空间,无非就两种情况:1.从系统调用进入内核态,此时内转载 2017-06-23 17:27:13 · 1040 阅读 · 0 评论 -
do...while(0)...
原文地址:http://www.spongeliu.com/415.html觉得有意义就转了。。linux内核和其他一些开源的代码中,经常会遇到这样的代码:do{ ...}while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作转载 2017-07-10 22:45:12 · 167 阅读 · 0 评论 -
gcc和g++的区别
原文地址:http://blog.chinaunix.net/uid-23023613-id-88201.html。一:gcc与g++比较编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作转载 2017-06-01 02:57:19 · 166 阅读 · 0 评论 -
linux学习笔记-cache_reap()
最近看情景分析,说到kswapd中的kmem_cache_reap()会定期的回收空闲slab。但是在看2.6.11版本源码的时候发现没有对应的函数。在2.6.11源码找到一个应该是替代的函数cache_reap(),所以看了一下。下面是源码。 static void cache_reap(void *unused){ struct list_head *walk; /**...原创 2018-12-12 11:27:35 · 658 阅读 · 0 评论