
linux内核
流浪海苔
这个作者很懒,什么都没留下…
展开
-
Linux线程之线程栈
我们接上一篇继续学习,这一篇的重点放在线程栈上。 我们用过pthread_create接口,也用过pthread_self接口,请看manual中的声明: #include pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr,转载 2014-07-21 15:31:25 · 622 阅读 · 0 评论 -
网卡驱动注册到PCI总线这一过程的分析二
2. 网卡在PCI层的注册2.1 数据结构 前面第一章讲了总线、设备以及驱动方面的关系,也讲到了大多数网卡设备实际上是一个PCI设备。因此,本章就讲解网卡设备在注册时是如何注册到PCI总线上去的。在这里,以Intel的E100网卡驱动进行讲解。 前面讲到每个PCI设备都由一组参数唯一地标识,这些参数保存在结构体pci_device_id中,如下所示:转载 2014-09-15 14:21:41 · 808 阅读 · 0 评论 -
网卡驱动注册到PCI总线这一过程的分析一
1. 总线、设备和驱动1.1 简单介绍 Linux设备模型中三个很重要的概念就是总线、设备和驱动,即bus,device和driver。它们分别对应的数据结构分别为struct bus_type,struct device和struct device_driver。 总线是处理器与一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连。在最底层,L转载 2014-09-15 14:19:56 · 710 阅读 · 0 评论 -
系统不能正确识别4GB地址空间的原因
一、4GB地址空间的局限: 首先我们必须要先了解两个概念:“物理内存”和“地址空间”转载 2014-08-04 12:37:48 · 2180 阅读 · 0 评论 -
Linux线程 之 线程 线程组 进程 轻量级进程(LWP)
Thread Local Storage,线程本地存储,大神Ulrich Drepper有篇PDF文档是讲TLS的,我曾经努力过三次尝试搞清楚TLS的原理,均没有彻底搞清楚。这一次是第三次,我沉浸glibc的源码和kernel的源码中,做了一些实验,也有所得。对Linux的线程有了进一步的理解。 线程是有栈的,我们知道,普通的一个进程,它的栈空间是8M,我们可以通过ulmit -a查看转载 2014-07-21 15:14:53 · 868 阅读 · 0 评论 -
linux 进程管理-----pid哈希链表
为了较快的从给定的pid值得到相应的宿主结构(进程描述符)指针,内核采用了pid哈希链表结构。首先,以下的问题要理解:1)为什么pid哈希链表只定义2048或者4096项(根据你的内存大小确定)?直接定义为pid最大值不是最好吗?我们都知道,查找的最快方式就是数组了,可以在常数的时间内完成查找。假如我们的pid最大值为32768,那么我们完全可以定义一个struct tas转载 2014-07-22 11:11:17 · 570 阅读 · 0 评论 -
linux 进程的pid分配策略——pid位图算法
在研究进程fork()的时候,这个调用了do_fork(),其中do_fork()又涉及到进程的pid分配,这个东西的源代码有许多个版本,而且各 自都不是一样的。昨天晚上研究了一晚上,今天从下午研究到现在,总算把内核中pid位图算法有一个整体的把握了。明天早上继续完成这篇博客,现在小小的庆 祝一下,明天完成。 首先我们先看一个程序,这个程序是我从网上找的,这个程序的主要部分也是内核中的代转载 2014-07-23 18:36:17 · 654 阅读 · 0 评论