
linux基础
CodeMan杰瑞
这个作者很懒,什么都没留下…
展开
-
内核定时器的使用
1. 包含的头文件:linux/timer.h2. 数据类型:struct timer_list;包含的主要成员:a. data:传递到超时处理函数的参数,主要在多个定时器同时使用时,区别是哪个timer超时。b. expires:定时器超时的时间,以linux的jiffies来衡量。c. void (*function)(unsigned long):定时器超时处理函数。12转载 2017-11-10 11:21:24 · 269 阅读 · 0 评论 -
linux网络协议栈
本系列文章总结 Linux 网络栈,包括:(1)Linux 网络协议栈总结(2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO(3)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端) (4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收...原创 2019-01-13 15:55:12 · 399 阅读 · 0 评论 -
TCP协议分析:通信建立、可靠性(确认机制、重传机制、流量控制、拥塞窗口)、滑动窗口
这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。 单工为只能A给B发,B不能给A发; 或者是只能B给A发,不能A给B发。 我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次...原创 2019-01-27 00:32:13 · 654 阅读 · 0 评论 -
TCP拥塞控制机制
产生的原因 ∑ 对资源的需求>可用资源 ∑对资源的需求>可用资源\sum_{}^{} 对资源的需求 >可用资源 注意 单纯的增加网络资源无法解决问题 例如:把结点的存储空间扩大,更换更高速率的链路,提高结点处理机的运算速度,不仅不能解决问题,而且可能使网络性能更坏。 原因:网络拥塞是许多因素引起的,单纯的解决一个可能会使上述情况得到一些缓解,但是...原创 2019-01-27 00:47:27 · 205 阅读 · 0 评论 -
多线程死锁的产生以及如何避免死锁
一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。某一个时候,一个拿了左筷子,一人拿了右筷子,2...原创 2019-01-27 23:39:39 · 159 阅读 · 0 评论 -
linux几种锁的分析与比较
linux各种锁机制的使用及区别 前言:相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存。如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果。接下来我们了解三种常见的Linux下的互斥操作—>锁。 1.互斥锁(mute...原创 2019-01-27 23:57:45 · 10339 阅读 · 0 评论 -
linux堆(heap)和栈(stack)有什么区别?
堆(heap)和栈(stack)有什么区别?? 简单的可以理解为:heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等...原创 2019-01-28 00:08:43 · 2582 阅读 · 0 评论 -
进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别
进程的同步与通信,进程与线程同步的区别,进程与线程通信的区别进程同步与互斥的区别? 进程的同步方式有哪些? 进程的通信方式有哪些? 进程同步与通信的区别是什么? 线程的同步/通信与进程的同步/通信有区别吗?在好多教材上(包括国内与国外的)也没有明确这些概念,现在对每个问题还没有准确的答案,下面将自己的理解记下来,以后再补充。参考资料:《操作系统教程》 孙钟秀主编 费翔林...原创 2019-02-13 22:50:04 · 997 阅读 · 3 评论 -
Linux C 下面读取当前文件夹中所有的文件
Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:#include <dirent.h>struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文...原创 2019-03-03 11:14:21 · 1901 阅读 · 0 评论 -
linux里挂载(mount)和取消挂载(umount)命令的使用
一、简单用法$ mount /dev/hda2 /home第一个叁数是与包括文件系统的磁盘或分区相关的设备文件。第二个叁数是要mount到的目录。$ umount /dev/hda2$ umount /usr参数可以是设备文件或安装点。二、mount详细介绍如果想在运行的Linux下访问其它文件系统中的资源的话,就要用mount命令来实现。1.mou...转载 2019-03-03 11:16:53 · 1111 阅读 · 0 评论 -
Linux虚拟内存空间分布
1.程序和进程问题:程序和进程各是什么?程序只是一段可以执行的代码文件,通俗讲在 linux 上就是一个可执行文件。当一个程序运行时就被称为进程,即进程是运行状态的程序。程序存储了一系列文件信息,这些信息描述了如何在运行时创建一个进程,包含了下面的内容:二进制格式标识: 描述可执行文件的元信息,内核利用该信息解释文件中的其他信息机器语言指令: 对程...原创 2019-03-03 16:38:03 · 3928 阅读 · 0 评论 -
linux下iptables和netfilter详解(4):洞悉实现流程及协议栈分析
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?很多人在接触iptables之后就会这么一种感觉:我通过iptables命令配下去的每一条规则,到底是如何生效的呢?内核又是怎么去执行这些规则匹配呢?如果iptables不能满足我当下的需求,那么我是否可以去对其进行扩展呢?这些问题,都是我在接下来的博文中一一和大家分享的话题。这里需要指出:因为Ne...原创 2019-01-13 15:47:30 · 1522 阅读 · 0 评论 -
linux下iptables和Netfilter详解(3):实现机制和扩展技术
2.4.x的内核相对于2.2.x在IP协议栈部分有比较大的改动, Netfilter-iptables更是其一大特色,由于它功能强大,并且与内核完美结合,因此迅速成为Linux平台下进行网络应用扩展的主要利器,这些扩展不仅包括防火墙的实现--这只是Netfilter-iptables的基本功能--还包括各种报文处理工作(如报文加密、报文分类统计等),甚至还可以借助Netfilter-iptable...原创 2019-01-13 15:34:44 · 586 阅读 · 0 评论 -
localtime()函数:获取当前时间和日期并转换为本地时间
内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中区分双击或者计算超时). 简单地讲, 查看 jiffies 几乎一直是足够的, 当你需要测量时间间隔.原创 2017-11-10 11:54:24 · 11131 阅读 · 0 评论 -
Linux内核分析 - 网络:netif_receive_skb平台报文入口函数详解
网络收包流程从网卡驱动开始,一直往上,涉及NAPI、GRO、RPS等特性,但是一般最后都会调用__netif_receive_skb函数:static int __netif_receive_skb(struct sk_buff *skb){ struct packet_type *ptype, *pt_prev; rx_handler_fu转载 2017-11-10 10:48:34 · 8519 阅读 · 0 评论 -
Linux内核分析 - 网络:网桥原理分析
网桥数据包的处理流程 网桥处理包遵循以下几条原则: 1. 在一个接口上接收的包不会再在那个接口上发送这个数据包; 2. 每个接收到的数据包都要学习其源地址; 3. 如果数据包是多播或广播包,则要在同一个网段中除了接收端口外的其他所有端口发送这个数据包,如果上层协议栈对多播包感兴趣,则需要把数据包提交给上层协议栈; 4.转载 2017-11-10 10:53:16 · 978 阅读 · 0 评论 -
Linux系统调用过程分析
Linux系统调用过程分析參考:《Linux内核设计与实现》0 摘要linux的系统调用过程:层次例如以下:用户程序------>C库(即API):INT 0x80 ----->system_call------->系统调用服务例程-------->内核程序先说明一下,我们常说的用户API事实上就是系统提供的C库。系统调用是通过软中断指令 INT 0x80 实现的,而这条I...原创 2018-03-18 17:46:47 · 172 阅读 · 0 评论 -
Linux 五种IO模型
那么,在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。1 概念说明#在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO1.1 用户空间与内核空间##现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟...原创 2018-03-18 17:49:32 · 218 阅读 · 0 评论 -
socket通信编程
socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做个总结性的文章1:socket大致介绍 socket编程是一门技术,它主要是在网络通信中经常用到 既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象...原创 2019-01-12 15:55:50 · 317 阅读 · 0 评论 -
socket选项总结(setsockopt)
socket选项总结(setsockopt)功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议...原创 2019-01-12 16:12:05 · 539 阅读 · 0 评论 -
linux top命令查看内存及多核CPU的使用讲述
linux top命令查看内存及多核CPU的使用讲述 top shift + h 查看多核CPU命令mpstat -P ALL 和 sar -P ALL 说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的...原创 2019-01-13 14:49:15 · 328 阅读 · 0 评论 -
linux下iptables与Netfilter详解(2):原理详解
Linux-iptables详解一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的...原创 2019-01-13 15:02:23 · 1071 阅读 · 1 评论 -
Linux内核和用户空间通信之netlink
1. netlinkNetlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中使用netlink 进行应用与内核通信的应用很多; 包括:路由 daemon(NETL...原创 2019-08-02 10:40:37 · 483 阅读 · 0 评论