随笔分类 -  Linux

摘要:本文转载于http://blog.codepiano.com/2017/03/01/read-file-from-disk CPU 和硬盘的关系是不太好描述,CPU 本质上只是用来执行指令,具体的读取文件的操作是操作系统来做的,从操作系统的角度来说可能要方便一些。像其他答案说的,你的这些疑问应该去看 阅读全文
posted @ 2022-03-14 09:36 Mered1th 阅读(1420) 评论(0) 推荐(0)
摘要:sendfile和splice零拷贝 sendfile: ​ 原始:首先将文件读到内核态的文件描述符中,然后再拷贝给用户态buf,再重新拷贝给内核态中网络缓冲区发给客户端。拷贝2次 ​ sendfile是一个接口能直接让文件从内核态的文件描述符送到网络缓冲区从而实现零拷贝 ​ 函数原型: ​ out 阅读全文
posted @ 2019-05-13 22:18 Mered1th 阅读(1500) 评论(0) 推荐(0)
摘要:进程池 [TOC] 父进程的实现流程 1、定义数据结构pChild,申请子进程数目的结构体空间 2、通过循环,socketpair创建全双工管道,创建子进程,将子进程pid,管道对端,是否忙碌等信息存储 3、socket,bind,listen,对应的端口处于监听状态 netstat 4、epoll 阅读全文
posted @ 2019-05-13 21:46 Mered1th 阅读(1042) 评论(0) 推荐(0)
摘要:Linux网络编程——多路复用之epoll ​ epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合 阅读全文
posted @ 2019-05-02 22:22 Mered1th 阅读(571) 评论(0) 推荐(0)
摘要:TCP协议流程图、TCP建立即时聊天 TCP即时聊天升级:服务器在客户端断开后不断开,客户端可以多次重连服务器进行即时聊天 UDP协议流程图、UDP建立即时连接 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)需调用closesocket(一般不会立即关闭而经历 阅读全文
posted @ 2019-05-02 22:16 Mered1th 阅读(441) 评论(0) 推荐(0)
摘要:概要 该贴记录我学习Linux的过程,因为水平有限,如有有误之处,希望大家不吝指教,谢谢! 博客园:http://www.cnblogs.com/Mered1th/ Tags: C / C++ / Linux Linux系统编程 Linux系统编程——VIM编辑器常用命令 Linux系统编程——静态 阅读全文
posted @ 2019-05-02 21:58 Mered1th 阅读(372) 评论(0) 推荐(0)
摘要: Linux系统编程——线程(2) 前情提要: "Linux系统编程——线程(1)" [TOC] 同步概念 ​ 所谓同步,即同时起步,协调一致。不同的对象,对“同步”的理解方式略有不同。如,设备同步,是指在两个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一致,或者按需 阅读全文
posted @ 2019-05-02 21:54 Mered1th 阅读(322) 评论(0) 推荐(0)
摘要:前情提要: "Linux用户级线程和内核级线程区别" [TOC] 线程概要 Linux内核线程实现原理 类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。因此在这类系统中,进程和线程关系密切。 1. 轻量级进程(light weight process),也 阅读全文
posted @ 2019-05-01 23:49 Mered1th 阅读(334) 评论(0) 推荐(0)
摘要: valgrind内存检测泄漏工具使用 1、为什么要使用 Valgrind ​ 内存泄漏的产生:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放 或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果! ​ Valgrind使用的目的:在人为 阅读全文
posted @ 2019-05-01 14:46 Mered1th 阅读(2221) 评论(0) 推荐(0)
摘要:进程池如何提高文件传输效率 1、协议不变:小火车 服务器端:mmap+memcpy 客户端 recvCycle tran_file.c client_mmap.c 3、协议:大火车 服务器端:sendfile 客户端 mmap tran_file.c 4、协议:大火车 服务器端:sendfile 客 阅读全文
posted @ 2019-04-30 17:30 Mered1th 阅读(284) 评论(1) 推荐(1)
摘要:事件模型 Edge Triggered (ET) 边缘触发只有数据到来,才触发,不管缓存区中是否还有数据。 Level Triggered (LT) 水平触发只要有数据都会触发。 首先介绍一下LT工作模式: LT(level triggered)是缺省的工作方式,并且同时支持block和no-blo 阅读全文
posted @ 2019-04-28 21:32 Mered1th 阅读(705) 评论(0) 推荐(0)
摘要:fcntl可实现对指定文件描述符的各种操作,其函数原型如下: 头文件 操作类型由cmd决定,cmd的取值如下: F_DUPFD:复制文件描述符 F_DUPFD_CLOEXEC:复制文件描述符,新文件描述符被设置了close on exec F_GETFD:读取文件描述标识 F_SETFD:设置文件描 阅读全文
posted @ 2019-04-28 20:23 Mered1th 阅读(239) 评论(0) 推荐(0)
摘要:转载:https://www.cnblogs.com/Anker/p/3265058.html select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,p 阅读全文
posted @ 2019-04-28 19:31 Mered1th 阅读(426) 评论(0) 推荐(0)
摘要:进程池功能升级: send_recv_syn同步机制 自定义设置函数recvCycle,确保双方收发机制正常 客户端中显示下载进度 time/slice两种方法 设置异常情况 客户端在下载中突然断开,原先的服务端会一直死循环打印 服务器突然断开,客户端全部死循环 服务器断开后,再次执行同一端口会出现 阅读全文
posted @ 2019-04-28 00:22 Mered1th 阅读(692) 评论(0) 推荐(0)
摘要:先引入一个例子,该程序的目的是子进程向父进程传递文件描述符,并通过该文件描述符读取buf。 编译测试,发现结果不正确,通过ps aux查看到程序卡在了等待管道写数据,原因是卡在了第二个read读取buf处。我们再来看一下程序(见注释): 所以我们必须借助内核传递文件描述符,sendmsg和recvm 阅读全文
posted @ 2019-04-25 22:30 Mered1th 阅读(771) 评论(0) 推荐(1)
摘要:1、如果接收进程在睡觉,把进程从睡眠队列,移到就绪队列,设置esp至信号处理函数2、如果进程在运行,每轮调度周期都要检查3、每次使用系统调用,先检查进程是否有信号 阅读全文
posted @ 2019-04-25 10:53 Mered1th 阅读(559) 评论(0) 推荐(0)
摘要:​ Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以 阅读全文
posted @ 2019-04-21 20:06 Mered1th 阅读(889) 评论(0) 推荐(0)
摘要:Linux用户级线程和内核级线程区别 线程的实现可以分为两类:用户级线程和内核级线程。 在用户级线程中,有关线程管理的所有工作都由应用程序完成, 内核意识不到线程的存在 。应用程序可以通过使用线程库设计成多线程程序。 在内核级线程中,线程管理的所有工作都由内核完成,应用程序没有进行线程管理的代码,只 阅读全文
posted @ 2019-04-21 14:50 Mered1th 阅读(8291) 评论(5) 推荐(2)
摘要:目录 Daemon进程介绍 前提知识 Daemon进程的编程规则 Daemon进程介绍 Daemon运行在后台也称作“后台服务进程”。 它是没有控制终端与之相连的进程。它独立与控制终端、会话周期的执行某种任务。 那么为什么守护进程要脱离终端后台运行呢? 守护进程脱离终端是为了避免进程在执行过程中的信 阅读全文
posted @ 2019-04-21 13:52 Mered1th 阅读(1291) 评论(0) 推荐(0)
摘要:目录 信号的介绍 信号的机制 信号的编号 Linux常规信号一览表 信号的产生 终端按键产生信号 硬件异常产生信号 kill函数/命令产生信号 信号的操作函数 信号集设定 sigprocmask函数 sigpending函数 信号的捕捉 signal函数 sigaction函数 内核实现信号捕捉的过 阅读全文
posted @ 2019-04-21 13:19 Mered1th 阅读(1516) 评论(0) 推荐(0)