【TCP/IP协议栈在Linux内核中的运行时序分析】教程文章相关的互联网学习教程文章

Linux内核-链表【代码】

linux内核链表的定义(定义了双向链表,不含数据域)定义在 /linux-source-3.13.0/include/linux/types.h 头文件中.1struct list_head { 2struct list_head *next, *prev; 3 };我们可以利用这个数据结构定义含有数据域的链表,如:1struct my_list 2{ 3void * mydata; //void * 可以指向任何类型的数据4struct list_head list; //隐藏了链表指针5 } 链表的声明和初始化宏(list.h)定义在 /linux-source-3.13.0/include/lin...

Linux内核中SPI/I2c子系统剖析【图】

Linux内核中,SPI和I2C两个子系统的软件架构是一致的,且Linux内核的驱动模型都以bus,driver,device三种抽象对象为基本元素构建起来。下文的分析将主要用这三种抽象对象的创建过程及其相互调用关系和作用来进行说明。1. SPI各对象的初始流程1.1 创建spi_bus_type总线postcore_initcall(抽象层spi.c中)bus_register(&spi_bus_type);class_register(&spi_master_class);1.2 把板级信息注册到全局链表中embedsky_evm_dev_cfg(arc...

Linux内核设计的艺术-关于缓冲块的进程等待队列

进程A是一个读盘进程,目的是将hello.txt文件中的100字节读入buffer[100]。 代码如下:void FunA(); void main() {...FunA();... }void FunA() {char buffer[100];int i,j;int fd = open("/mnt/user/user1/user2/hello.txt",O_RDWR,0644);read(fd,buffer,sizeof(buffer));close(fd);for(i=0;i<1000000;i++){for(j=0;i<100000;j++){;}} } 进程B也是一个读盘进程,目的是将hello.txt文件中的200字节读入buffer[200]。 void ...

浅谈 Linux 内核开发之网络设备驱动【代码】

网络设备介绍网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口。众所周知,在 OSI(Open Systems Interconnection,开放网际互连)中,网络被划分为七个层次,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。我们所讲的网络设备也包括两个层次,一层叫做 MAC(Media Access Control)层,对应于 OSI 的数据链路层;另一层叫做 PHY(Physical ...

Oracle在Linux内核参数的修改

实例:kernel.core_uses_pid = 1kernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 9000 65000net.core.rmem_default = 4194304net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 262144ore_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0 服...

linux 内核升级

LINUX 内核升级linux 内核官网https://www.kernel.org/ POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 ------->加载选定的Kernel,initrd(内存模拟的磁盘设备需要缓存),initramfs(缓存) ---->获取到根文件系统并挂载,运行init  设置默认运行级别  定义运行的系统初始化脚本,  运行制定下的S开头的服务,关闭K开头的服务  CtrlAltDel    启动字符终...

Linux内核设计基础(九)之进程管理和调度【图】

在Linux中进程用结构体task_struct来管理一个进程所需的所有信息(所以一般较大,在32位机上,大约有1.7KB)。为了提高效率,Linux使用了一些卓越的技术。通过slab分配task_struct结构Linux创建进程迅速,正是因为slab分配器预先分配和重复使用task_struct,这样就避免了动态分配和释放所带来的资源消耗(毕竟一个task_struct较大,而且内核中进程的创建和消除很频繁)。将task_struct放置在内核栈的尾端这样做是为了让那些像x86那...

linux内核参数sem的说明

sem:是semaphores的缩写,该参数表示设置的信号量。它包含四个值:semmsl、semmns、semopm、semmni。常规设置 kernel.sem = 250 32000 100 128semmns:信号灯的最大数量,跟ORACLE的PROCESS数有关。SEMMSL * SEMMNIsemopm:系统调用允许的信号量最大个数。至少100;或者等于SEMMSLsemmni:系统信号量set最大个数。最少128semmsl:每个信号灯集合中最多的信号灯数目。最小250;对于processes参数设置较大的系统建议设置为pro...

linux内核版本表示方法

linux内核版本号由三个数字组成:r.x.yr:主版本号。目前发布的kernel版本x:次版本号。偶数:稳定版本;奇数:开发中版本y:bug修补的次数本文出自 “小风” 博客,请务必保留此出处http://huanglianfeng.blog.51cto.com/4813074/1355226原文:http://huanglianfeng.blog.51cto.com/4813074/1355226

2018-2019-1 20189203《Linux内核原理与分析》第九周作业【代码】【图】

第一部分 课本学习进程的切换和系统的一般执行过程进程调度的时机 Linux内核系统通过schedule函数实现进程调度,进程调度的时机就是内核调用schedule函数的时机。当内核即将返回用户空间时,内核会检查need_resched标志是否设置。如果设置,则调用schedule函数,此时是从中断(异常/系统调用)处理程序返回用户空间的时间点作为一个固定的调度时机点。 简单总结进程调度时机如下: 用户进程通过特定的系统调用主动让出CPU 中断处理...

2.15.2.linux内核源码目录结构2

本节接上节讲解内核源码根目录下的各个文件夹,并且把一些重要文件夹的作用简单讲解。(1)arch。arch是architecture的缩写,意思是架构。arch目录下是好多个不同架构的CPU的子目录,譬如arm这种cpu的所有文件都在arch/arm目录下,X86的CPU的所有文件都在arch/x86目录下。 (2)block。英文是块的意思,在linux中block表示块设备(以块(多个字节组成的整体,类似于扇区)为单位来整体访问),譬如说SD卡、iNand、Nand、硬盘等都是块设...

Linux内核设计与实现 读书笔记 转

Linux内核设计与实现 读书笔记:http://www.cnblogs.com/wang_yb/tag/linux-kernel/ 《深入理解LINUX内存管理》http://blog.csdn.net/yrj/article/category/718110 Linux内存管理和性能学习笔记(一):内存测量与堆内存 第一篇 内存的测量 2.1. 系统当前可用内存# cat /proc/meminfoMemTotal: 8063544 kBMemFree: 900952 kBBuffers: 1183596 kBCached: 1596808 kBMemTotal:总共可用物理内存...

Linux内核pr_debug的应用及log级别控制原理简析【图】

调试环境------CPU:freescale i.mx6操作系统:Linux内核版本号:3.0.35 最近在调试一个spi nor flash芯片的时候用到了gpio倒出的功能,就是可以在linux起来以后,通过串口倒出,并可以控制输入输出方向和高低电平的一种功能。配置好对应的pin后发现怎么都不能在/sys/class/gpio的目录下生成相应的接口目录,我要倒出的GPIO是gpio bank6的第11教,根据imx6平台gpio编号的计算方法IMX_GPIO_NR(6, 11),得到这个GPIO的编号是174(有兴...

Linux内核的文件预读readahead【代码】【图】

Linux的文件预读readahead,指Linux系统内核将指定文件的某区域预读进页缓存起来,便于接下来对该区域进行读取时,不会因缺页(page fault)而阻塞。因为从内存读取比从磁盘读取要快很多。预读可以有效的减少磁盘的寻道次数和应用程序的I/O等待时间,是改进磁盘读I/O性能的重要优化手段之一。维基百科上关于readhead的介绍资料:readahead is a system call of the Linux kernel that loads a file‘s contents into the page cach...

linux内核中ip,tcp等头的定义(转)【图】

一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType;      //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER; typedef struct _MAC_FRAME_TAIL{ unsigned int m_sCheckSum; //数据帧尾校验和}__a...