
Linux
Disremembrance
多做点正事。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux网络编程 --- IO复用之Select系统调用详解
I/O复用技术使得程序能同时监听多个文件描述符。通常网络程序在下列情况下需要使用I/O复用技术。客户端程序要同时处理多个socket。 客户端程序要同时处理用户输入和网络连接。 TCP服务器要同时处理监听socket和连接socket。 服务器要同时处理TCP请求和UDP请求。 服务器要同时监听多个端口,或者处理多种服务。Linux下I/O复用技术使用select、poll和e...原创 2019-04-20 22:43:10 · 510 阅读 · 0 评论 -
Linux进程间通信(IPC) ---- 套接字
目录一、什么是套接字?二、如何通过套接字来维持一个连接的?三、套接字属性四、创建套接字五、关于套接字的其它系统调用进程间通信的方式有:管道、套接字、共享内存、消息对列、信号量管道,信号量,共享内存见之前博客。套接字:是管道概念的一个扩展,Linux系统支持套接字接口。可以通过使用管道类似的方法来使用套接字,套接字还包括计算机网络中的通信,常用于网络编程。Wind...原创 2019-07-08 19:40:03 · 474 阅读 · 0 评论 -
深入理解程序编译链接原理
目录一、预编译二、编译三、汇编四、链接五、ELF文件格式1、ELF文件类型2、ELF文件存储形式3、ELF文件格式4、可执行文件和目标文件格式上的区别5、符号表编译一道程序时,编译器会经过哪些过程呢?这个过程绝大多数人都耳熟能详,什么预编译,编译,汇编,链接,最后在运行。事实上,确实是这几个步骤,但是这几个步骤分别干了些什么呢?简单说来:预编...原创 2019-06-23 19:03:24 · 743 阅读 · 0 评论 -
静态库与动态库的区别
什么是库?库就是预先编译好的方法或者函数的集合,且都具有一定的成熟度。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。事实上,我们平常写的代码多多少少都会用到库中的函数,所以库中的代码我们是可以复用的,从而提高程序运行效率。库主要分为静态库和共享库(也可称为动态库),所谓的静态和动态是指链接阶段如何处理库。静态库1、Linux下静态库名为 libxxx.a...原创 2019-06-10 21:24:43 · 290 阅读 · 0 评论 -
Linux ---- 进程和其相关函数fork、exec和wait
进程是Linux操作系统环境的基础,它控制着系统上几乎所有的活动。目录1、什么是进程2、进程四要素3、关于进程的命令4、进程的结构5、fork6、exec系列系统调用7、do_fork()8、wait()9、进程终止1、什么是进程UNIX标准把进程定义为:“一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源”。进程是UNIX操作...原创 2019-05-22 21:15:04 · 548 阅读 · 0 评论 -
epoll源码剖析(Linux Kernel 2.6.11)
本篇文章是基于Linux Kernel 2.6.11的源码来展开的。epoll简介之前我的博客里也写到过,epoll是Linux特有的I/O复用函数。它在实现上与select、poll有很大差异。它的提出是为了弥补select和poll对于描述符过多处理时时间效率过高的问题。可以参考https://mp.youkuaiyun.com/postedit/89601608三种IO函数中:sel...原创 2019-05-26 23:42:05 · 573 阅读 · 0 评论 -
Linux进程间通信(IPC) ---- 管道(pipe)
目录管道1、什么是管道?2、shell命令下的管道3、进程管道4、pipe函数5、有名管道和无名管道的区别6、当管道的一端被关闭后,会发生什么样的事情?7、使用write、read函数实现简单的管道通信 进程间通信就是在进程间交换信息,之前的方法只能是由fork或exec传送打开文件,或者通过文件系统。但是在UNIX系统和Linux系统中还有别的方...原创 2019-05-12 20:35:20 · 320 阅读 · 0 评论 -
Linux进程间通信(IPC) ---- 共享内存
目录共享内存定义共享内存的同步机制shmget函数shmat函数shmdt函数shmctl函数不使用信号量对共享内存进行同步操作使用信号量对共享内存进行同步操作共享内存定义共享内存允许两个不相关的进程访问同一块逻辑内存。因为数据不需要在进程之间复制,所以共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。大多数共享内存的具体实现,...原创 2019-05-16 18:15:25 · 283 阅读 · 0 评论 -
Linux进程间通信(IPC) ---- 信号量(semaphore)
上一篇博客中说到了进程间通信的第一种方式—管道(pipe),管道的通信方式是半双工的,在同一时间只能读或者写。这一篇博客来简略的说一下进程间通信的第二种方式—信号量。那么,什么是信号量?什么是PV操作?什么又是临界区和临界资源?目录信号量Linux的信号量机制1、semget函数2、semop函数3、semctl函数4、无信号量控制,两个程序并发运行访问临界资源...原创 2019-05-15 23:50:01 · 674 阅读 · 0 评论 -
Linux网络编程 ---- 三组I/O复用函数的比较
三组I/O复用函数包括select、poll、epoll,这三组系统调用都能同时监听多个文件描述符。它们将等待由timeout参数指定的超时时间,直到一个或者多个文件描述符上有事件发生时返回,返回值是就绪的文件描述符的数量,返回0表示没有事件发生。这3组函数都通过某种结构体变量来告诉内核监听哪些文件描述符上的哪些事件,并使用该结构体类型的参数来获取内核处理的结果。select的参数fd_s...原创 2019-05-03 15:44:11 · 369 阅读 · 0 评论 -
Linux网络编程 --- IO复用之epoll系统调用详解
epoll简介epoll是Linux特有的I/O复用函数。它在实现上与select、poll有很大差异。它的提出是为了弥补select和poll对于描述符过多处理时时间效率过高的问题。epoll使用一组函数来完成任务,而不是单个函数。epoll_createepoll_create(int size)//创建内核事件表 epoll_ctl();//向内核事件表中...原创 2019-04-27 20:59:44 · 745 阅读 · 0 评论 -
线程间同步 ---- 信号量、互斥锁
一、线程了解线程间同步方法之前,还是要弄清楚线程是什么。1、线程概念线程是进程内部的一条执行路径或者序列,是CPU调度的基本单位。进程是一个正在运行的程序,是资源分配的基本单位。2、操作系统中的线程在操作系统中将线程的实现分为了三类用户级线程:创建开销小,线程库自己管理,不需要内核管理,无法使用多个处理器,最多只能做到并发内核级线程:创建开销大,由内核直接管理,可以使用多个处理器...原创 2019-08-08 12:40:12 · 562 阅读 · 0 评论