2022年2月10日
摘要: 1、影响内存访问速度的因素 1).内存带宽:每秒读写内存的数据量,由硬件配置决定。2).CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。3).TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速查表机制,转换速度比普通转换机制要快。 我们能够优化的只有第2点 阅读全文
posted @ 2022-02-10 17:01 裸睡的猪 阅读(686) 评论(0) 推荐(0) 编辑
  2022年2月9日
摘要: 1、为什么需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗; 另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的 阅读全文
posted @ 2022-02-09 14:50 裸睡的猪 阅读(2351) 评论(0) 推荐(0) 编辑
  2022年2月8日
摘要: 1、零长度数组概念 0长度数组, 也叫柔性数组。 用途 : 长度为0的数组的主要用途是为了满足需要变长度的结构体 struct Packet { int state; int len; //cData就是柔性数组 char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持 } 阅读全文
posted @ 2022-02-08 17:08 裸睡的猪 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 在Linux内核和其它一些著名的C库中有许多使用do{...}while(0)的宏定义。这种宏的用途是什么?有什么好处? Google的Robert Love(先前从事Linux内核开发)给我们解答如下: do{...}while(0)在C中是唯一的构造程序,让你定义的宏总是以相同的方式工作,这样不 阅读全文
posted @ 2022-02-08 16:32 裸睡的猪 阅读(209) 评论(0) 推荐(0) 编辑
  2021年8月3日
摘要: 一、原始套接字概述协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网络层原始套接字”两大类。链路层原始套接字可以直接用于接收和发送链路层的MAC帧,在发送时需要由调用者自行构造和封装MAC首部。网络层原始套接字可以直接用于接收和发送IP层的报文数据,在发送时需要自行构造IP报文头(取决是否 阅读全文
posted @ 2021-08-03 17:21 裸睡的猪 阅读(3078) 评论(0) 推荐(2) 编辑
摘要: 一、socket简介 socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。 也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。 二、套接字的 阅读全文
posted @ 2021-08-03 17:10 裸睡的猪 阅读(1046) 评论(0) 推荐(0) 编辑
  2021年7月27日
摘要: 1、alarm()函数 引用头文件:#include <unistd.h>; 函数标准式:unsigned int alarm(unsigned int seconds); 功能与作用:alarm()函数的主要功能是设置信号传送闹钟,即用来设置信号SIGALRM在经过参数seconds秒数后发送给目 阅读全文
posted @ 2021-07-27 10:43 裸睡的猪 阅读(497) 评论(0) 推荐(0) 编辑
  2021年7月26日
摘要: 1、编译动态链接库 gcc -shared -fPIC main.c -o libday.so 2、使用动态链接库 # gcc -o test test.c -L 动态库路径 动态库文件 gcc -o test test.c -L ./ libday.so 3、将动态链接库放置环境路径 cp -rf 阅读全文
posted @ 2021-07-26 17:54 裸睡的猪 阅读(371) 评论(0) 推荐(0) 编辑
  2021年7月21日
摘要: 1、service配置文件 每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。 Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配 阅读全文
posted @ 2021-07-21 15:11 裸睡的猪 阅读(22748) 评论(0) 推荐(3) 编辑
摘要: 1、守护进程定义 守护进程(daemon)是指在后台运行的,没有控制终端与之相连的进程。它独立于控制终端,周期性地执行某种任务。 Linux的大多数服务器就是用守护进程的方式实现的。如web服务器进程http等。守护进程在后台运行,类似于Windows中的系统服务。 2、守护进程的特点 Linux系 阅读全文
posted @ 2021-07-21 10:13 裸睡的猪 阅读(1833) 评论(0) 推荐(0) 编辑