Linux
Poo_Chai
让代码活起来!
展开
-
Linux 互斥锁、原子操作实现原理
futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具。它们第一次出现在内核开发的2 5 7版;其语义在2 5 40固定下来,然后在2 6 x系列稳定版内核中出现。在Linux下,信号量和线程互斥锁的实现都是通过futex系统调用。futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的...转载 2019-10-28 09:57:20 · 889 阅读 · 0 评论 -
select、poll、epoll之间的区别(内容最权威***)
select、poll、epoll之间的区别(搜狗面试)(1)select==>时间复杂度O(n)它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复...转载 2019-10-27 08:55:14 · 200 阅读 · 0 评论 -
TCP头部分析与确认号的理解
TCP头部分析与确认号的理解1、TCP的特点:基于字节流面向连接可靠传输缓冲传输全双工流量控制2、头部格式和说明图源百度。如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。另外还需要理解TCP协议是承载在IP协议中的。关于IP协议可以参考:http://www.cnblogs.com/xcywt/p/8067521.html源端...转载 2019-10-18 19:01:53 · 1791 阅读 · 0 评论 -
TCP粘包问题分析和解决(全)
TCP粘包问题分析和解决(全)TCP通信粘包问题分析和解决(全)在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就...转载 2019-10-18 13:19:58 · 292 阅读 · 0 评论 -
pthread线程属性介绍
pthread线程属性介绍其他参考: 1.pthread 线程属性(最全,重点参考*****) 2.pthread线程库使用介绍线程属性创建线程函数int pthread_create (pthread_t* restrictthread, const pthread_attr_t* restrict...转载 2019-10-18 11:02:30 · 392 阅读 · 0 评论 -
Linux网络编程常用头文件解释
sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数其他在网络程序中常见的头文件...转载 2019-10-13 13:56:11 · 2229 阅读 · 0 评论 -
七、linux网络编程
网络编程基础 网络编程,首先了解计算机网络体系结构是有必要的,着重掌握TCP、IP协议,理解socket的概念,理解数据报方式和流式套接字的原理,熟练掌握相关数据结构的使用 数据报和流式套接字的工作过程 基本概念 linux操作系统一切皆文件的概念在socket通信过程中体现的十分完整,通过一个文件描述符来索引一个socket,创建socket的系统调用为 ...转载 2019-10-13 10:36:20 · 110 阅读 · 0 评论 -
Linux内存管理中的slab分配器
Linux内存管理中的slab分配器转载自:http://edsionte.com/techblog/archives/4019注:slab分配器用于内核中。Linux内核中基于伙伴算法实现的分区页框分配器适合大块内存的请求,它所分配的内存区是以页框为基本单位的。对于内核中小块连续内存的请求,比 如说几个字节或者几百个字节,如果依然分配一个页框来来满足该请求,那么这很明显就是一种浪...转载 2019-09-26 13:47:09 · 168 阅读 · 0 评论 -
Linux进程分配内存的两种方式--brk() 和mmap()
malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。缺页中断:在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存是,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调...转载 2019-09-22 14:07:52 · 261 阅读 · 0 评论 -
Linux系统编程—消息队列
1、消息队列简介消息队列本质上是位于内核空间的链表,链表的每个节点都是一条消息。每一条消息都有自己的消息类型,消息类型用整数来表示,而且必须大于 0。每种类型的消息都被对应的链表所维护:图1 位于内核空间的消息队列.png其中数字 1 表示类型为 1 的消息,数字2、3、4 类似。彩色块表示消息数据,它们被挂在对应类型的链表上。值得注意的是,刚刚说过没有消息类型为 ...转载 2019-09-22 13:52:46 · 236 阅读 · 0 评论 -
利用管道实现进程间通信
利用管道实现进程间通信管道通信匿名管道创建匿名管道int pipe(int pipefd[2]);pipefd[0] : 表示读管道pipefd[1] : 表示写管道返回 0表示成功,非零表示创建失败。代码事例//匿名管道 ...转载 2019-09-22 13:33:21 · 336 阅读 · 0 评论 -
并发编程(IO多路复用)
阅读目录一 IO模型介绍 二阻塞IO(blocking IO) 三非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchronous I/O) 六 IO模型比较分析 七 selectors模块IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 同步(synch...转载 2019-09-06 16:21:59 · 138 阅读 · 0 评论 -
僵尸进程,孤儿进程
僵尸进程,孤儿进程 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。如果进程不调用wait / waitpid的话,那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程.此即为僵尸进程的危害,应当避免。 孤儿...转载 2019-09-02 16:02:08 · 98 阅读 · 0 评论 -
解压.tar.gz出错gzip: stdin: not in gzip format tar: /Child returned status 1 tar: Error is not recoverab
解压.tar.gz出错gzip: stdin: not in gzip format tar: /Child returned status 1 tar: Error is not recoverable: exiting now最近研究shell编程,需要下载解压一些.tar.gz的文件,但经常遇到解压失败的情况: 1 2 3 4 [r...转载 2019-05-14 19:40:07 · 1200 阅读 · 0 评论 -
Centos中常用命令(一)
1. 查找已经安装哪些软件[root@Centos ~]# yum list installed2.查找某个软件是否安装,字符匹配型的,即含有该字符的, 举例,查找含有“gcc”的,[root@Centos ~]# yum list installed | grep gcc注意:若输入:yum list installed | grep gccc,即多了一个c,则很有可能...原创 2019-05-13 19:33:32 · 457 阅读 · 0 评论 -
Linux学习(2)
系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -t...转载 2019-05-13 19:17:40 · 108 阅读 · 0 评论 -
在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection
在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection首先这是动态ip配置成功的结果接下来切换到root用户来配置静态的按照静态ip的配置方法配置好文件后(具体过程这里就不多加说明)然后保存退出当我们重启网卡的时候问题来了(因为本人有点强迫症,多次重启了,结果还...转载 2019-05-13 18:31:36 · 3949 阅读 · 1 评论 -
Linux学习整理(一)
查看主机名$hostname查看软件是否已经安装$dpkg -s 软件名或者$dpkg-query -l firefox重新安装#apt-get --reinstall install xxxxxx卸载一个已安装的软件包(保留配置文件):apt-get remove packagename卸载一个已安装的软件包(删除配置文件):apt-get –purge remov...原创 2019-04-09 21:12:39 · 320 阅读 · 0 评论 -
物理主机与ubuntu虚拟机共享文件问题
我们有时需要虚拟机直接能访问物理机的文件,这时就需要设置共享文件及其路径。光设置这些还不够,我们还必须使用VMWare Tools工具才能在Ubuntu命令行中看到共享的文件,继而才能在虚拟机中直接使用这些文件。1. 首先,开启虚拟机之前,设置共享文件,如下图:2. 打开虚拟机安装 VMWare Tools,这里重点讲下命令行安装。>>apt-get...原创 2019-03-22 15:56:12 · 603 阅读 · 0 评论