- 博客(26)
- 收藏
- 关注
原创 Linux - ICMP协议
注意需要创建ICMP报文,但是只有root用户才可以创建ICMP报文,因此在执行的时候需要使用root权限。,输入root密码即可。否则在创建socket的时候会产生。循环发送 MAX_NO_PACKETS次包。
2022-10-08 22:01:18
987
原创 Linux - 线程同步
整体很合理,但是过程很不合理,f1或者f2长时间执行后才会轮到另外的一个线程。都是上锁后排斥其他锁,本身有锁的前提下可以通过trylock来提前返回。它跟互斥锁有同样的问题,但是他影响不打,没有关系。cond也有临界数据脏的问题,因此要上锁。首先看锁的数量,其次看阻塞是否比较多。10个线程 加锁线程比较少,使用自旋锁。两个线程 枷锁线程比较长,使用互斥锁。但是本质上面还是要等 还是阻塞的。
2022-10-05 20:10:15
238
原创 Linux - 多线程
1. 进程是os资源分配的基本单位 : 资源2. 线程是os调度的基本单位 : 代码3. windows跟linux多线程类似,但是函数名不同,方式不同。区别:一个进程里面可以有多个线程,同一个进程中的多个线程共享进程资源本质上进程和线程的没有区别2.2版本的linux内核中,没有线程,只有进程,并且进程数量有限,共4096个2.4版本开始,内核中有了线程的概念,线程个数无线线程和进程都是进程的结构体。
2022-09-28 11:09:40
150
原创 Linux - io多路复用(poll和epoll)
epoll是优化后的poll,通过注册事件来避开轮询,有变化会发消息。select 阻塞 poll 把动静赋值到结构体的链表中,然后返回。select和poll没有本质的区别,他们都是轮询fd是否有动静。+ 效率受描述符号个数的影响(监视的描述符号越多,效率越低)+ poll是没有动静都写结构体成员revents然后返回。+ select是没有动静就阻塞,有动静就返回。如果等到了,返回有动静的描述符号数量。3. 等待消息的到来,挨个处理事件。2. 注册描述符号的事件。epoll的简单使用。
2022-09-24 20:48:29
223
原创 Linux - 网络编程(一) - TCP
并非必须得是一台计算机,共享单车、共享充电宝、路由器、空调、智能开关等都是主机,只要具备网络功能的计算机都是主机。具有网络模块的芯片也算是一个主机。多个主机连到一起,就形成了网络。
2022-09-18 16:03:23
553
原创 Linux - IPC(Inter Process Communication)
定义:希望多个进程错开时间,去访问同一块区域。有一个整数,有一些进程可以去操作这个整数,加(随便加),减(不能减到零以下)需要一个具备唯一性的key,一般通过文件描述符号来创建这个key(文件描述符号 fd 具备唯一性)定义:内核会维护主机上的一块内存段,多个进程可以访问这块内存段。定义:在主机上指定一个或者多个队列,多个进程可以访问这些队列。查看信息 chmctl。
2022-09-15 16:56:54
111
原创 Linux - 信号
setitimer()将value指向的结构体设为计时器的当前值,如果ovalue不是NULL,将返回计时器原有值。ITIMER_PROF //数值为2,进程和系统执行时都递减计时器的值,发送的信号是SIGPROF。ITIMER_VIRTUAL //数值为1,进程执行时递减计时器的值,发送的信号是SIGVTALRM。ITIMER_REAL //数值为0,计时器的值实时递减,发送的信号是SIGALRM。不仅仅可以接受信号做信号处理,还能接收信号的同时接受一些信息。硬件中断:物理层面的中断。
2022-09-13 18:10:11
237
原创 Linux - 管道
管道:管道是一个文件 (FIFO First In First Out)以文件形式存在的一个特殊队列。当后面的程序没有改n的值的时候,操作系统中只有一份n,只有当要修改n的值的时候,才进行拷贝.管道一边打开后阻塞 等待另外一边打开 结束open函数。只有当需要写的时候才拷贝,只进行读操作,不进行拷贝。//1 创建两个文件描述符号 (两个int整形)可以在同一主机上不同进程之间操作 有具体的文件。专门用于父子之间,直接使用文件描述符号,//2 把文件描述符号变成管道。//3 使用管道进行通信。
2022-09-08 22:39:37
881
原创 C++ 多线程之线程处理函数
this_thread是thread中的一个命名空间,其中get_id()获取线程id。时间可以直接使用文本重载,也可以使用chrono中的函数。
2022-09-04 22:27:39
424
原创 C++ Thread 创建多线程
传引用就有可能在主线程结束后子线程还在继续,那么此时就会有问题,所以在构造函数里使用右值引用的方式创建,因此在传引用的时候需要使用。函数指针作为第一个参数,函数参数当作后面的参数传进Thread创建对象。智能指针的唯一性使得他不会产生拷贝本,因此需要使用move语句去处理。直接使用函数指针当作参数创建Thread对象,然后jion。直接将表达式当作参数传给Thread创建对象。需要指定对象,函数指针需要取地址。包装引用作为传递的值。
2022-09-04 21:20:28
637
原创 Linux - 目录
假设文件内有 qwertyuiopasdfghjkl,隔两个读一个 q r u p d h l。我们完全可以重新读取之前存入文件中的内容,由此可见,文件虚拟内存就是以操作内存的方式操作文件。使用read以及write的时候默认会使用到文件内容指针。验证文件虚拟内存就是以操作内存的方式操作文件。把硬盘中的文件和内存中的一块内存临时绑定!所有目录下 都有如下两个目录。
2022-09-03 23:15:32
102
原创 Linux-文件
标准io : 0 stdin 1 stdout 2 stderror(都是终端)命令 : read write 操作系统提前安装好的 应用程序。万物皆文件::linux系统之上 任何东西都是以文件的形式存在。掉电不流失(硬盘)–内存掉电流失你。函数 : read write。操作系统上管理数据的一种方式。2 : 标注错误输出描述符号。0 : 标准输入设备。1 : 标准输出设备。
2022-09-01 21:13:59
221
原创 c++运算符重载
运算符重载什么是运算符重载友元函数重载运算符类成员函数重载运算符特殊运算符重载什么是运算符重载什么是运算符重载?赋予运算符具有操作自定义类型数据功能运算符重载的实质是什么?运算符重载的实质本身就是函数调用运算符重载函数的写法 `函数返回值 函数名(函数参数)`函数返回值 :运算完成后的值决定的 Complex函数名 : operator 加上重载运算符组成函数名 operator+参数 :看运算符的操作数,具体参数个数是要看你重载函数形式是什么
2021-12-06 03:45:00
196
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人