- 博客(15)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 linux下I/O复用与poll实际使用(四)
poll事件读写,server端代码见下,client端代码见(三) /* poll 与 select 很类似,都是对描述符进行遍历,查看是否有描述符就绪。如果有就返回就绪文件描述符的个数将。poll 函数如下: #include <poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeou...
2018-10-23 19:57:56
220
原创 linux下I/O复用与epoll实际使用(三)
前两章已经学习了epoll根据前两篇的学习,基本掌握了epoll事件,但对于同时监控读写事件还未涉及到,故作一次补充 server端 #include<stdio.h> #include<arpa/inet.h> #include<unistd.h> #include<stdlib.h> #include<sys/socket.h> #i...
2018-10-23 19:55:26
256
原创 linux下I/O复用与epoll实际使用(二)
上一节《linux下I/O复用与epoll实际使用(一)》主要讲解了epoll的原理,这一节结合socket的编程,详解select与epoll编程示例。 一、socket编程 在TCP/IP协议中“IP地址+TCP或者UDP端口号”唯一标识网络通讯中的一个进程,"IP+端口号"就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,name两个socket组成的soc...
2018-10-18 19:41:56
264
转载 信号量、互斥锁、条件变量区别
转载自https://www.cnblogs.com/lonelycatcher/archive/2011/12/20/2294161.html 信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlo...
2018-10-11 14:09:59
455
原创 linux下I/O复用与epoll实际使用(一)
一、背景 I/O多路复用有很多种实现,在linux上,2.4内核前主要是select和poll,从2.6内核正式引入epoll以来。epoll已经成为目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是从本质上却没有什么区别。 二、选择epoll的原因 select的缺陷 高并发的核心解决方案是1个线程处理所有连接的“等待消息准备好”,这一点上epoll和select是无争议的。...
2018-10-08 20:55:27
457
1
原创 dpdk学习(1)----程序代码创建流程
关于dpdk的初始化rte_eal_init()有关pcie部分的关系 static struct rte_driver rte_opal_card_driver={ .type=PMD_PDEV, .init=rte_opal_card_init, }; PMD_REGISTER_DRIVER(rte_opal_card_driver); #define PMD_REGIST
2018-01-16 16:58:53
731
转载 linux R8169网卡驱动驱动笔记(二)----Linux MSI中断
1.什么是MSI中断 Message Signaled Interrupts 是pci2.2中提出来的一种新的中断形式。后续有msi-x扩展。 msi以及msi-x这种中断形式的一个最主要的特点就是,它在系统的特定地址做一个memory write transaction,将一个系统约定的数据写入,以此通知CPU一个中断产生了。这个特点带来的最主要的好处就是脱离了传统的inte
2017-10-26 16:42:04
2943
转载 rtl8169网卡驱动
原文:http://www.bubuko.com/infodetail-844822.html 本文通过学习RealTek8169/8168/8101网卡的驱动代码(drivers/net/r8169.c),梳理一下Linux下网卡的收包过程。 在下水平相当有限,有不当之处,还请大家斧正^_^ 驱动的初始化 如下的rtl8169_init_module函数
2017-10-19 20:16:32
2344
1
原创 关于Linux网络设备rtl8169代码分析笔记(一)-------MMIO
关于Linux网络设备rtl8169代码分析笔记(一)——-MMIO 在probe卡过程中涉及到RTL_W8()即对MMIO寄存器进行read write操作。下面是对MMIO一些基础知识。 MMIO(Memory mapping I/O)即内存映射I/O,它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存
2017-10-13 14:37:12
1634
转载 Linux的PCI驱动分析
Linux的PCI驱动分析 (2013-12-11 19:17:30) 转载▼ 标签: linux it 1. 关键数据结构 PCI设备上有三种地址空间:PCI的I/O空间、PCI的存储空间和PCI的配置空间。CPU可以访问PCI设备上的所有地址空间,其中I/O空间和存储空间提供给设备驱动程序使用,而配置空
2017-05-26 21:08:44
388
转载 深入分析 Linux 内核链表
本文系转载https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/ 本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。 一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组
2017-03-16 10:38:39
470
原创 单链表和双向循环链表的创建、初始化、以插入(二)
对于双向循环链表的创建可从下图理解: 由上图可清晰的知道双向循环链表的结构,即对于一个newNode插入链表是首先应该将newNode的prev指向current,即newNode->prev=current;再将newNode的next指向current的next;即newNode->next=current->next;再将current的之前的下一个元素即15所指代的结构体指向newNod
2017-03-15 18:50:39
625
转载 单链表和双向循环链表的创建、初始化、以插入(一)
关于链表最近在学习linux 内核时发现关于链表的好多东西都已忘记了,重新又学习了下。关于单向循环链表涉及到链表的创建、初始化、插入、以及删除。 #include "stdafx.h" #include "stdio.h" #include #include "string.h" typedef int elemType; typedef struct Node{
2017-03-15 18:09:22
877
原创 关于使用shell开辟几个并发线程同时执行互不相关的应用
在bash中,我们通过后台运行(&)实现多线程。 #!/bin/bash tmpt="/tmp/$$.fifo" mkfifo $tmpt #新建一个fifo类型的文件 exec 6 rm $tmpt t_sum=0; function fun3()#创建函数 { t_sum=$(($t_sum+1)) } for ((i=0;i echo done >& 6
2016-11-23 15:24:31
709
原创 关于map,hash_map小数据量查询效率的问题
关于map> Multimap Hash_map> Hash_multimap 对于数据量不大情况下的测试情况: 查询key值为4的情况下循环100万次得出的查询时间: Hash_map执行时间为868.575351秒 Hash_multimap 执行时间892.441939秒 Map_vector执行时间:717.130047秒 Multimap执行时间为749.253617秒
2016-09-02 17:16:04
885
如何判断一段数据是否使用了加密?若加密使用了哪种加密方式?
2016-01-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅