随笔分类 -  Linux源码分析

Linux源码分析
摘要:之前写代码的时候一直有个疑问,malloc申请内存的时候指定了内存大小,但是free的时候却只指定要释放的内存地址,那么free是如何知道它要释放的内存空间大小呢? 源码之前,了无秘密,下面就从源码来扒一扒。 由上图可知,malloc和free分别调用了malloc_internal和free_in 阅读全文
posted @ 2018-03-21 21:50 冷冰若水 阅读(1851) 评论(0) 推荐(0) 编辑
摘要:接上一篇中关于条件变量的讨论,在上一篇的末尾,想到一个问题,mutex是如果实现锁的功能的?通过一个标志位么?那么这个标志位存在哪呢?如果是多核的呢? 推测:底层提供一个原子操作(CAS)来实现查看并设置一个标志位,如果不成功就把线程挂起(放到一个等待队列里面)。 源码验证: 阅读全文
posted @ 2017-09-23 10:31 冷冰若水 阅读(168) 评论(0) 推荐(0) 编辑
摘要:最近打算在写一个网络库,涉及到对mutex、condition的封装,再次使用Linux提供的接口,发现一个问题,使用condition的时候需要配合一个mutex来使用。 上面是关于pthread_cond_wait的man手册说明,意思就是再调用pthread_cond_wait之前需要把mut 阅读全文
posted @ 2017-09-23 10:18 冷冰若水 阅读(239) 评论(0) 推荐(0) 编辑
摘要:实验环境:Ubuntu16.04,内核版本:4.4.0-59-generic 根据man listen得到的解释如下: backlog参数定义了存放pending状态(挂起、护着搁置)的连接的队列的最大长度;如果在队列满的时候,一个连接请求到达,客户端可能会收到一个错误:ECONREFUSED。 然 阅读全文
posted @ 2017-03-17 21:06 冷冰若水 阅读(1371) 评论(0) 推荐(1) 编辑
摘要:先看一下这三个函数的声明: 1、这个三个函数都是用来从一个socket接收消息的,不同之处在于recvfrom和recvmsg可以用在已经建立连接的socket,也可以用在没有建立连接的socket,关于建立连接的socket,简单来说就是有没有调用connect,调用了bind的socket也可以 阅读全文
posted @ 2017-01-12 14:04 冷冰若水 阅读(9912) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示