linux并发控制
文章平均质量分 88
本主题主要涉及代码共享资源的访问控制与同步机制。
芒果520
每天进步一点点
展开
-
自旋锁和互斥锁的区别
单CPU非抢占内核下:自旋锁会在编译时被忽略(因为单CPU且非抢占模式情况下,不可能发生进程切换,时钟只有一个进程处于临界区(自旋锁实际没什么用了)单CPU抢占内核下:自选锁仅仅当作一个设置抢占的开关(因为单CPU不可能有并发访问临界区的情况,禁止抢占就可以保证临街区唯一被拥有)多CPU下:此时才能完全发挥自旋锁的作用,自旋锁在内核中主要用来防止多处理器中并发访问临界区,防止内核抢占造成的竞争。原创 2024-03-26 12:09:00 · 726 阅读 · 0 评论 -
互斥锁与信号量的区别
信号量与互斥锁都是用于多线程编程中,以实现资源共享和线程同步的机制,但它们在应用场景、实现方式和性能特点上有所不同。总结来说,信号量更侧重于资源共享和线程间的协作,而互斥锁更侧重于资源的安全访问和线程间的互斥。原创 2024-03-26 15:59:26 · 1392 阅读 · 0 评论 -
进程上下文与中断上下文的理解
内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。(1)进程上文:是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。(2)进程下文:其是指切换到内核态后执行的程序,即进程运行在内核空间的部分。原创 2024-03-27 09:19:25 · 796 阅读 · 0 评论 -
MSB和LSB
1、LSB(Least Significant Bit)--最低有效位 LSB代表二进制中最小的单位,可以用来指示数字很小的变化。也就是说,LSB是一个二进制数字中的第0位(即最低位),具有权值为2^0,可以用来检测数的奇偶性。2、MSB(Most Significant Bit)--最高有效位 MSB代表一个n位二进制数字中的n-1位,具有最高的权值2^(n-1).对于有符号的二进制数,负数采用反码或补码形式,此时MSB用来表示符号,msb为1表示负数,0表示正数。注意:以上...原创 2019-12-22 21:56:22 · 49993 阅读 · 4 评论 -
Linux系统的大小端模式
1、大端模式:高字节保存在内存的低地址2、小端模式:高字节保存在内存的高地址举例:#include <stdio.h>int main(){ typedef union{ int a; char b; }UN_TEST; /* 定义一个联合体数据类型 */ UN_TEST d; d.a = 1; if(d.b == 1) { printf("Little Endian...原创 2019-12-22 21:09:11 · 1579 阅读 · 0 评论 -
linux同步之信号量
1. 什么是信号量linux sem 信号量是一种特殊的变量,访问具有原子性, 用于解决进程或线程间共享资源引发的同步问题。用户态进程对 sem 信号量可以有以下两种操作: 等待信号量 当信号量值为 0 时,程序等待;当信号量值大于 0 时,信号量减 1,程序继续运行。 发送信号量 将信号量值加 1通过对信号量的控制,从而实现共享资源的顺序访问。2. 相关函数说明linux 信号量相关函数都声明头文件 semaphore.h 头文件中,所以使用信号量之...原创 2020-07-27 17:08:13 · 618 阅读 · 0 评论 -
TCP三次握手和四次挥手过程
下图为TCP头部里面部分信息,入下标志位,每个标志位占一位。标志位这里会涉及3个,ACK SYN FINACK:确认序号有效。SYN:发起一个新连接。FIN:释放一个连接。2 三次握手过程 第一次握手Client将标志位SYN置1,随机产生一个值seq=J,并将数据包发给Server第二次握手Server将标志位SYN和ACK都置1,随机产生一个值,并将数...原创 2020-02-04 13:11:03 · 123 阅读 · 0 评论 -
shell下循环间隔执行命令
#!/bin/bashfor variable in $(seq 1 60)do usleep 50000 test_yuvcap -i 0 -R -f /cap/cap$variabledone$(seq 1 60)表示抓取60帧数据usleep 50000 表示延迟50ms...原创 2020-01-16 11:43:20 · 1751 阅读 · 0 评论 -
can通信调试
1、查看是否有can设备 ipaddr2、关闭can设备 ip link setcan0 down3、配置波特率设置CNA0的波特率为500K,在设置前需要先把CAN0关闭了ip link set can0 type can bitrate 5000004、打开can设备ifconfig can0 up5、查看can设备详细信息ip -details li...原创 2020-01-08 18:01:20 · 2963 阅读 · 0 评论 -
处理器一条指令所经历的时钟周期
对于软件工程师来说,印象流我们可能会觉得执行一条指令一个时钟周期嘛,一条指令算是一个最小的原子操作,不可能再细分了吧。 如果看看诸如《see mips run》,《arm体系架构》等书籍就会了解到,这个问题可没这么简单了,因为处理器设计中使用了流水线技术。 一条指令还是相当复杂的,处理器在一个时钟周期内肯定是完不成的,可能需要好多个时钟周期来完成执行。如果这样让处理器执行完一条指令,再去执行另...原创 2020-01-01 17:44:06 · 1059 阅读 · 0 评论