Linux 操作系统
文章平均质量分 69
关于Linux操作系统有关的学习
码农诗人
不以物喜,不以己悲,得之淡然,失之坦然
展开
-
线程池实现简单案例(C语言)
C语言简单实现线程池案例原创 2022-09-07 16:20:45 · 1219 阅读 · 2 评论 -
指令重排案例分析
操作系统在执行进程时会发生指令重排导致出现意想不到的结果。原创 2022-08-18 17:24:23 · 363 阅读 · 0 评论 -
缓存一致性案例分析
案例说明操作系统的运行进程时的缓存一致性。原创 2022-08-18 11:52:36 · 262 阅读 · 0 评论 -
Linux内核代码学习笔记
数据发送流程处理总结图如下:数据包接收流程处理总结入下图:理解浅谈 对应linux内核协议栈代码1.2.13版本整体上学习了,其实也没有想象中的难理解。谈一下在学习内核代码过程中最深的感受。内核代码是用C写的,但给人更多的还是C++的封装、多态特性。 就封装来说每一层协议中对该层中用到的多个协议都是类似于封装的,对上下各层都提供了对应接收和发送的接口。 其实C++多态本质就是函数指针,而内核实现数据包各层之间的数据解析、发送(尤...原创 2021-09-09 17:35:13 · 181 阅读 · 0 评论 -
TCP套接字状态变化梳理
Linux对于数据传输,传输层提供了可靠的TCP协议。该协议的可靠性主要体现在其许多特点,如传输数据时需建立连接、窗口检测、超速重传等。本篇主要就TCP数据传输过程中的套接字状态变化进行分析。 TCP正常的数据连接建立(三次握手)、数据传输、及连接断开(四次挥手)中套接字的状态入下图所示。上图中清晰的描述了TCP协议在连接、数据传输、断开时,客户端、服务端的套接字状态的详细变化。需要注意的有三点如下: 1、客户端的套接字状态的改变是...原创 2021-07-02 15:41:47 · 636 阅读 · 0 评论 -
shell批处理删除特定文本
最近有个需求:定时检测某个目录下的文件个数是否超过n个,若超过则清理日期较早的m-1个文件;由于第一个文件可能被有些进程占用,因此删除日期较早的前m个除去最早的一个。具体的shell脚本如下:############################# author : lijd# date : 2021-04-20#############################!/bin/bashmain(){ path=$(date +%Y)"/"$(date +%m)"/"$原创 2021-04-20 10:03:56 · 1261 阅读 · 0 评论 -
深入理解mmap函数
背景在Linux操作系统中,进程是资源分配的基本单位。所以说每个进程间有各自独立的存储空间,但是在某些情况下各进程要相互配合来完成特定任务,这样就使得进程间通信变得非常必要。进程间通信方式有多种,当然这不是我们这节要讨论的重点,这节主要说的是mmap函数,它是通过将一块物理内存映射到多个进程的虚拟地址空间上,来完成多个进程对同一块物理内存的读写从而使得进程间能够实现通信。先看一下mmap函数的函数原型,如下:参数说明: start:映射区的开始地址,设置为...原创 2021-02-06 12:02:41 · 2028 阅读 · 0 评论 -
信号量实现同步互斥经典案例
信号量同步经典案例分享原创 2021-01-11 19:48:06 · 4177 阅读 · 0 评论 -
进程的互斥、同步
概念在多道程序环境下,进程是并发执行的,资源的有限性使多个进程访问时产生的制约引发了进程的互斥,不同进程之间存在着不同的相互制约关系促使了进程同步。临界资源:一个时间段内只允许一个进程使用。对临界资源的访问,我们必须互斥的进行; 对临界资源的互斥访问,可以在逻辑上分为以下四个部分: 进入区:检查进程是否可进入临界区,如果可以进入临界区,则应设置标志保证这个资源已被占用(加锁)。 临界区:进程中访问临界资源的那段代码,又称临界段。 退出区:将...原创 2021-01-11 12:18:03 · 1067 阅读 · 0 评论 -
CPU亲和力
当一个进程在一个多处理器系统上被重新调度时无需在上一次执行的CPU上运行。之所以会在另一个 CPU 上运行的原因是原来的CPU处于忙碌状态。进程切换CPU时对性能会有一定的影响:如果在原来的 CPU 的高速缓冲器中存在进程的数据,那么为了将进程的一行数据(高速缓冲器中的一行与虚拟内存管理系统中的一页是类似的。它是 CPU 高速缓冲器和内存之间传输数据的单位)加载进新 CPU 的高速缓冲器中,首先必须使这行数据失效(即在没被修改的情况下丢弃数据,在被修改的情况下将数据写入内存)。(为防止高速缓冲器不一致.原创 2021-01-02 16:19:30 · 1132 阅读 · 2 评论 -
Linux C语言实现SYN包泛洪攻击
TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完...原创 2018-12-07 10:24:20 · 2879 阅读 · 8 评论 -
Linux的线程控制
进程两个特点:资源和调度,而线程是进程内的独立执行代码的实体和调度单元进程内的线程共享进程的资源线程间共享 线程私有 进程指令全局变量(非常容易实现线程的数据共享) 打开的文件 信号处理程序 当前工作目录 用户ID和组ID 线程ID PC指针(标识当前线程的执行位置) 线程栈 线程控制获取线程ID:pthread_t pthread_self(void) 返回值:成功:返回线程ID; 失败:无! 线...原创 2020-12-28 19:19:33 · 338 阅读 · 0 评论 -
Linux 缓冲区与fork()函数
缓冲区从一个简单的实例开始,话不多说,直接上代码。#include <stdio.h>#include <unistd.h>int main(){ printf("hello\n"); // 实例1 // printf("hello"); // 实例2 write(STDOUT_FILENO, "lijd\n", 5); printf("world\n"); return 0;}实例1 运行结果截图:实例2原创 2020-12-11 19:17:35 · 515 阅读 · 0 评论 -
Linux防火墙
基础概念:防火墙指的是一个由软件和硬件设备组合而成、在和外部网之间、专用网与公共网之间的边界上构造的保护屏障。功能:防火墙最基本的功能就是隔离网络,通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同信任程度区域间传送的数据流。原理计算机网络体系结构如下:按照OSI体系结构对防火墙分两大类:1.网络层防火墙(3、4层)、2.应用层防火墙(7层,WAF:...原创 2018-12-12 18:48:31 · 1849 阅读 · 1 评论 -
进程间通信之管道
管道是一种最基本的进程间通信机制。首先来说一下它的缺点:1、半双工。所谓半双工就是同一时刻只能有一方的数据流通过。2、只能在具有公共祖先的进程间使用。尽管有以上两种局限性,但管道仍是最常用的IPC形式。pipe函数#include <unistd.h>int pipe(int filedes[2]);参数:filedes为一个文件描述符的数组,用于保存...原创 2019-01-18 18:49:17 · 140 阅读 · 0 评论 -
shell脚本中执行命令误区
原理Linux操作系统下shell脚本是开发项目中是比较常用的。shell脚本是如何被Linux系统所调用执行的呢,首先我们以ps命令为例,来解释一下shell脚本是如何被系统执行的。命令:ps -o pid,ppid,pgid,sid,comm其中:pid:自身进程id,ppid:父进程id,pgid:所属进程组id,sid:所属会话id,comm:命令。在Linux系统下执行程...原创 2018-12-27 15:32:37 · 6070 阅读 · 0 评论