了解了什么是线程安全之后,接下来就是如何实现线程安全。那么了解虚拟机提供的同步机制以及锁机制也就非常重要了。 1、互斥同步 互斥同步是指多个线程并发访问共享数据时,保证共享数据在同一时刻只被一个线程使用。在这个地方,互斥是因,同步是果;同步的实现方式是通过互斥来实现的;常见的互斥实现方式有:临界区( ...
分类:
编程语言 时间:
2018-09-09 18:12:53
阅读次数:
213
1. Linux内核支持I2C通用设备驱动(用户态驱动:由应用层实现对硬件的控制可以称之为用户态驱动),实现文件位于drivers/i2c/i2c-dev.c,设备文件为/dev/i2c-0 2. I2C通用设备驱动以字符设备注册进内核的 3. 对设备文件进行读写时,可以调用read、write或者 ...
分类:
系统相关 时间:
2018-09-08 00:46:01
阅读次数:
453
本节内容 引子 到目前为止,我们已经学了网络并发编程的2个套路, 多进程,多线程,这哥俩的优势和劣势都非常的明显,我们一起来回顾下 协程 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上 ...
分类:
编程语言 时间:
2018-09-07 14:05:19
阅读次数:
218
最近一直在阅读ovs的源码,看到用户态代码的时候,需要对用户态的代码进行调试,一开始想直接使用linux中的GDB进行调试,但是ovs的工程太过于复杂,从网上找了些文章,发现vs2017能够支持linux c++程序的调试,捣鼓了一下午,遇到了一些坑,终于搭建好了开发环境。 最新版的vs 2017支 ...
分类:
编程语言 时间:
2018-09-06 20:34:32
阅读次数:
325
容器实现的基础是NameSpace和Cgroups。 NameSpace实现了对容器(进程)的隔离,NameSpace技术实际上修改了应用进程看待整个计算机“视图”,也就是作用域,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容,实现方式类似于将全局变量修改为了局部变量。 Cgroup实 ...
分类:
Web程序 时间:
2018-09-06 02:32:59
阅读次数:
336
Linux的网络通信先后推出了select、poll、epoll三种模式。 select有以下三个问题: (1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大。 (2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大。 ( ...
分类:
系统相关 时间:
2018-09-05 00:47:19
阅读次数:
253
1、简述计算机操作系统中的“中断”的作用? 2、简述计算机内存中的“内核态”和“用户态”; 3、进程间通信方式有哪些? 4、简述你对管道、队列的理解; 5、请列举你知道的进程间通信方式; 6、什么是同步I/O,什么是异步I/O? 7、请问multiprocessing模块中的Value、Array类 ...
分类:
其他好文 时间:
2018-09-03 23:00:16
阅读次数:
327
基本上select有3个缺点: - 连接数受限 - 查找配对速度慢 - 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点. ...
分类:
其他好文 时间:
2018-08-30 11:11:01
阅读次数:
129
1、系统中的父子进程关系,以及docker是如何处理的这种父子进程关系,线上问题发现,子进程长时间得不到退出。 2、调用system系统调用发生了啥事情,发现大量的页表拷贝。 3、通过shell命令通过tid得到pid 4、如何使用tcpdump看数据包的传输 5、stap中如何得到用户态的栈 6、 ...
分类:
其他好文 时间:
2018-08-19 10:56:52
阅读次数:
249
网上搜索(https://blog.csdn.net/qq123386926/article/details/50695725)可以直接使用netlink现成的接口实现: 对应内核代码位于net/core/rtnetlink.c:rtnetlink_event 可见netlink没有对所有事件都进行 ...
分类:
其他好文 时间:
2018-08-12 12:13:41
阅读次数:
246