【Linux实现的IEEE 802 1Q VLAN】教程文章相关的互联网学习教程文章

linux下进程堆栈下溢出判断及扩展实现

一、堆栈扩展在进程创建的时候,内核并没有为进程分配太多的堆栈,即使是逻辑地址空间也没有,这样做的好处就是如果说用户态的程序堆栈向下溢出(对386来说,就是访问了更低地址的内存空间),这样内核可以比较容易的检测出这种错误,尽管这种错误出现的可能性要比向上溢出的概率小的多。记得在之前使用VS编译器的时候,编译器还有一个堆栈探测过程,就是对于局部变量大小超过一个页面的函数,编译器会生成额外的probe指令来预先来踩...

Linux 线程实现

文章目录一、Linux 线程的独特之处二、Linux 线程与进程的异同三、进程、线程创建时的参数标志四、Linux 内核线程五、参考资料 一、Linux 线程的独特之处 在 Window 或 Solaris 等操作系统的内核提供了专门实现线程的机制,但 Linux 没有。Linux 创建线程的方式跟创建进程的方式很相似。比如要在一个进程里创建 n 个进程,Linux 仅仅创建 n 个进程并分配 n 个普通的进程描述符 task_struct。只不过这 n 个进程跟其他进程共享的资源...

linux rsync远程同步+sersync+rsync实现实时同步【图】

rsync是什么rsync全称Remote Sync ,远程同步,是Linux/UNIX系统下的文件同步和数据传输工具,数据备份,它采用了“rsync算法”使一个客户机和远程文件服务器之间的文件同步。作用可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据通过网络传输方式备份到任何一个远程主机上;优点rsync可以在中断后恢复传输rsync的功能特性可以镜像保存整个目录树和文件系统;可以增量同步数据,文件传输效率高,因而...

linux关于tcp协议ack以及乱序报文暂存的实现--立即ack/延迟ack/捎带ack

tcp需要ack,可是为了效率,并不是每发送一个数据都要等待ack,而是尽可能利用窗口机制,积累发送ack的,当然在某些特殊情况下还是需要马上发送ack的,比如接收到乱序的数据,这种情况下,虽然接收端可以将乱序的数据包暂存,但是接收方必须发送一个ack号为按序的期望的序列号的ack给发送端,另外就是接收窗口需要调整,此时就要立刻发送ack,否则则可以延迟发送ack,看一下linux的这方面的代码: static void __tcp_ack_snd_check...

Linux RPS/RFS 实现原理浅析【图】

本文快速解析一下RPS/RFS的基本原理。 RPS-Receive Packet Steering 下面这个就是RPS的原理: 其实就是一个软件对CPU负载重分发的机制。其使能的作用点在CPU开始处理软中断的开始,即下面的地方: netif_rx_internal netif_receive_skb_internal1 2RFS-Receive Flow Steering RFS在RPS的基础上,充分考虑到同一个五元组flow进程上下文和软中断上下文之间处理CPU的一致性,为此在socket层面也要有相应的处理。 ??非常遗憾的是,一张...

青蛙学Linux—Keepalived中通过vrrp_script实现对资源的监控

在Keepalived的配置文件中,我们可以指定Keepalived监控的网络接口,当系统或网络出现问题时就会进行主备切换。但是,很多时候我们需要对集群中特定的服务进行监控,但服务发生故障时就进行主备切换,此时只监控网络接口就无法满足我们的需求。Keepalived提供了vrrp_script调用自定义脚本的方式满足了我们的需求。

Linux简单线程池实现(带源码)【代码】【图】

这里给个线程池的实现代码,里面带有个应用小例子,方便学习使用,代码 GCC 编译可用。参照代码看下面介绍的线程池原理跟容易接受,百度云下载链接:http://pan.baidu.com/s/1i3zMHDV一.线程池简介为什么使用线程池?目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受...

Linux C动态链接库实现一个插件例子【代码】

实现一个简单的计算动态链接库;升级动态链接库后,在不重新编译主程序的情况下,直接生效。 lib库: #cat math.c #include <stdio.h>int add(int x, int y) {return (x + y); }int sub(int x, int y) {return (x - y); }int mul(int x, int y) {return (x * y); }int div(int x, int y) {return (x/y); } 生成动态链接库 #gcc -shared -fPIC -o libmath.so math.c 主程序: #cat main.c #include <stdio.h> #include <stdlib.h> #...

Linux入门:PuTTY实现Linux和Windows文件互传【图】

用户宿主目录下创建study文件夹,新增测试文件test 文件传输需要使用pscp.exe,该文件位于PuTTY安装目录下。切换到安装目录,打开命令行(按住shift键,鼠标空白处右击,选择“在此处打开命令窗口”)。 命令格式如:pscp sourceFile targetFile 下载远程服务器文件到本地 上传本地文件到远程服务器 注意:文件路径中的分隔符,Linux路径中是/,Windows中是\。因为\在Linux中代表转义字符。

linux/C++实现简单线程池

Reference: https://www.cnblogs.com/alwayswangzi/p/7138154.html 线程池:线程池的存在是为了减小线程的创建和销毁成本,线程池中有固定数量的线程。原理上是一个生产者和一个消费者,生产者将任务添加线程池中;消费者为线程,线程获取线程池中的任务并内进行处理。 面向对象设计:线程池的组成大概分为两个部分: 1. 任务类。 任务类应该为抽象类,提供run接口,将任务的具体操作与抽象类分离开。 2. 线程池管理类。 线程池管理...

Linux计划任务实现按秒运行【代码】

首先增加一个shell脚本vi crontab.sh #!/bin/bash [[ -z $1 ]] || [[ -z $2 ]] && echo "paramater errr" && exit 0 step=$1 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do$2 sleep $step done exit 0 传入2个参数,第一个是间隔的秒数,第二个是执行的程序 执行crontab -e*/1 * * * * /usr/sbin/bash /tmp/crontab.sh 2 "php /var/www/html/index.php"即可

实现linux定时休眠的方法如下

休眠的类型目前大概由三种类型的休眠:suspend(suspend to RAM)指的是除了内存以外的大部分机器部件都进入断电状态。 这种休眠状态恢复速度特别快,但由于内存中的数据并没有被保存下来,因此这个状态的系统并没有进入真正意义上的休眠状态,还在持续耗电。hibernate(suspend to disk)这种休眠会将内存中的系统状态写入交换空间内,当系统启动时就可以从交换空间内读回系统状态。 这种情况下系统可以完全断电,但由于要保存/读取系统...

linux -用fcntl实现单进程启动【代码】

前言 用fcntl检测锁文件实现单进程启动比用flock好。 flock在NFS服务器上不好使。 如果是在普通的linux服务器上,用fcntl和flock都行。 TPLI中讲了fcntl的用法,整理一下。封装一下,以后用。 实验 运行效果 Jan 5 17:51:18 debian9 test_file_locker_fcntl: [MY_LOGD : main.cpp.48 : show_version()] : ================================================================================ Jan 5 17:51:18 debian9 test_file_l...

Linux VRF Virtual Routing Forwarding 的原理和实现【图】

动机 明天,是2017年9月24日,两年前的明天,我从上海第一次来到深圳参加面试,两年前的今天,此时我还在上海虹桥机场等候延误的飞机,两年前的今晚,我在深圳南山区南新路片区徘徊,企图能在南方城市找到一家东北烧烤,并且欣赏这座城市(最终我找到了!),两年前的明晚,我喝了一瓶750ml的威士忌,次日返回上海…面试后,我感觉我被录取了,然后做了一个决定,举家再次搬迁,来到了深圳,在上海留下了我的空房和我的足迹…这是个值...

PHP+Swoole+Linux实现进程监控【代码】

class Server {const PORT = 8888;public function port(){//netstat -anp 2>/dev/null| grep 8888 |grep LISTEN |wc -l$shellCommand = 'netstat -anp 2>/dev/null| grep ' . self::PORT . "| grep LISTEN | wc -l";$result = shell_exec($shellCommand);if ($result != 1) {//进程不存在,发送警报信息echo 'At '.date('Y-m-d H:i:s') . ' service process is exit' . PHP_EOL;} else {echo 'At '.date('Y-m-d H:i:s') . ' servi...