摘要: 本文转载自零拷贝 - 用户态分析 导语 现在几乎所有人都听过 Linux 下的零拷贝技术,但我经常遇到对这个问题不能深入理解的人。所以我写了这篇文章,来深入研究这些问题。本文通过用户态程序的角度来看零拷贝,因此我有意忽略了内核级别的实现。 什么是 “零拷贝” ? 为了更好的理解这个问题,我们首先需要 阅读全文
posted @ 2020-06-05 18:00 Yungyu 阅读(474) 评论(0) 推荐(0) 编辑
摘要: 本文转载自文件和零拷贝 文件概述 文件描述符 文件描述符:在Linux中,所有的文件都是通过文件描述符引用。fd是一个非负整数。按照惯例,标准输入的fd是0,标准输出的fd是1,标准错误的fd是2。分别作为STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO定义在unis 阅读全文
posted @ 2020-06-05 17:28 Yungyu 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 本文转载自从几个问题开始理解CFS调度器 导语 CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这 阅读全文
posted @ 2020-06-05 16:50 Yungyu 阅读(1649) 评论(0) 推荐(1) 编辑
摘要: 本文转载自ext文件系统机制原理剖析 导语 将磁盘进行分区,分区是将磁盘按柱面进行物理上的划分。划分好分区后还要进行格式化,然后再挂载才能使用(不考虑其他方法)。格式化分区的过程其实就是创建文件系统。 文件系统的类型有很多种,如CentOS 5和CentOS 6上默认使用的ext2/ext3/ext 阅读全文
posted @ 2020-06-05 15:07 Yungyu 阅读(641) 评论(0) 推荐(1) 编辑
摘要: 本文转载自文件描述符(File Descriptor)简介 导语 维基百科:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往 阅读全文
posted @ 2020-06-05 13:53 Yungyu 阅读(906) 评论(0) 推荐(0) 编辑
摘要: 本文转载自Linux文件/proc/net/tcp分析 导语 /proc/net/tcp文件提供了tcp的连接信息,是由net/ipv4/tcp_ipv4.c中的tcp4_seq_show()实现信息打印的 本文内容来源于linux官方文档proc_net_tcp.txt 官方文档解释 proc_n 阅读全文
posted @ 2020-06-05 13:28 Yungyu 阅读(1273) 评论(0) 推荐(0) 编辑
摘要: 本文转载自为什么系统调用会消耗较多资源 导语 系统调用是计算机程序在执行的过程中向操作系统内核申请服务的方法,这可能包含硬件相关的服务、新进程的创建和执行以及进程调度,对操作系统稍微有一些了解的人都知道 — 系统调用为用户程序提供了操作系统的接口。 图 1 - 操作系统接口 C 语言的著名的 gli 阅读全文
posted @ 2020-06-02 18:39 Yungyu 阅读(1280) 评论(0) 推荐(0) 编辑
摘要: 本文转载自为什么 Linux 默认页大小是 4KB 导语 我们都知道 Linux 会以页为单位管理内存,无论是将磁盘中的数据加载到内存中,还是将内存中的数据写回磁盘,操作系统都会以页面为单位进行操作,哪怕我们只向磁盘中写入一个字节的数据,我们也需要将整个页面中的全部数据刷入磁盘中。 Linux 同时 阅读全文
posted @ 2020-06-02 18:30 Yungyu 阅读(2051) 评论(0) 推荐(0) 编辑
摘要: 本文转载自为什么 Linux 需要虚拟内存 导语 操作系统中的 CPU 和主内存(Main memory)都是稀缺资源,所有运行在当前操作系统的进程会共享系统中的 CPU 和内存资源,操作系统会使用 CPU 调度器分配 CPU 时间1并引入虚拟内存系统以管理物理内存,本文会分析操作系统为什么需要虚拟 阅读全文
posted @ 2020-06-02 10:58 Yungyu 阅读(577) 评论(1) 推荐(0) 编辑
摘要: 本文转载自Make 命令教程 导语 代码变成可执行文件,叫做编译(compile);先编译这个,还是先编译那个(即编译的安排),叫做构建(build)。 Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目。但是实际上 ,任何只要某个文件有变化,就要重新构建的项目,都可以用Make构建 阅读全文
posted @ 2020-06-01 22:47 Yungyu 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 本文转载自关于同步的一点思考-下 导语 在<关于同步的一点思考-上>中介绍了几种实现锁的方式以及linux底层futex的实现原理 ReentrantLock的实现网上有很多文章了,本篇文章会简单介绍下其java层实现,重点放在分析竞争锁失败后如何阻塞线程。 因篇幅有限,synchronized的内 阅读全文
posted @ 2020-06-01 13:17 Yungyu 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 本文转载自关于同步的一点思考-上 导语 线程同步可以说在日常开发中是用的很多, 但对于其内部如何实现的,一般人可能知道的并不多。 本篇文章将从如何实现简单的锁开始,介绍linux中的锁实现futex的优点及原理,最后分析java中同步机制如wait/notify, synchronized, Ree 阅读全文
posted @ 2020-06-01 13:06 Yungyu 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 本文转载自Linux下的进程控制块(PCB) 导语 进程在操作系统中都有一个户口,用于表示这个进程。这个户口操作系统被称为PCB(进程控制块),在linux中具体实现是 task_struct数据结构。 说明 进程控制块(PCB)(系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征, 阅读全文
posted @ 2020-06-01 13:01 Yungyu 阅读(6814) 评论(0) 推荐(1) 编辑
摘要: 本文转载自汇编语言基础:寄存器和系统调用 寄存器 寄存器是处理器临时保存数据指令的的一部分。在x86_64架构中,寄存器能处理高达64位的数据。这意味着每个寄存器都可以保存该值 没符号整数:0〜18,446,744,073,709,551,616 有符号整数:-9,223,372,036,854,7 阅读全文
posted @ 2020-06-01 12:22 Yungyu 阅读(3995) 评论(1) 推荐(1) 编辑
摘要: 本文转载自内核栈与thread_info结构详解 什么是进程的内核栈? 在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进程的内核栈 进程的内核栈在计算机中是如何描述的? linux中进程使用task_struct数据结构 阅读全文
posted @ 2020-06-01 10:56 Yungyu 阅读(2750) 评论(0) 推荐(0) 编辑
摘要: 本文转载自OAuth 2.0 的四种方式 导语 上一篇文章介绍了 OAuth 2.0 是一种授权机制,主要用来颁发令牌(token)。本文接着介绍颁发令牌的实务操作。 下面我假定,你已经理解了 OAuth 2.0 的含义和设计思想,否则请先阅读这个系列的上一篇文章。 RFC 6749 OAuth 2 阅读全文
posted @ 2020-05-30 20:58 Yungyu 阅读(306) 评论(0) 推荐(1) 编辑
摘要: 本文转载自Differences between Stack and Heap Stack vs Heap So far we have seen how to declare basic type variables such as int, double, etc, and complex ty 阅读全文
posted @ 2020-05-30 17:37 Yungyu 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 本文转载自Linux之时钟中断 导语 在Linux的0号中断是一个定时器中断。在固定的时间间隔都发生一次中断,也是说每秒发生该中断的频率都是固定的。该频率是常量HZ,该值一般是在100 ~ 1000之间。该中断的作用是为了定时更新系统日期和时间,使系统时间不断地得到跳转。另外该中断的中断处理函数除了 阅读全文
posted @ 2020-05-30 14:07 Yungyu 阅读(5371) 评论(0) 推荐(2) 编辑
摘要: 本文转载自Docker Tips: 关于/var/run/docker.sock #导语 你可能已经运行过docker hub上的container并且注意到其中的一些需要绑定挂载(mount)/var/run/docker.sock文件。这个文件是什么呢,为什么有些时候会被container所用到 阅读全文
posted @ 2020-05-29 22:33 Yungyu 阅读(3399) 评论(1) 推荐(1) 编辑
摘要: 本文转载自MySQL命名、设计及使用规范 导语 最近在看MySQL相关的内容,整理如下规范,作为一名刚刚学习MySQL的菜鸟,整理的内容非常的基础,中间可能涉及到有错误的地方,欢迎批评指正,看到有错误的地方期望看官留言。 数据库环境 dev:开发环境,开发可读写,可修改表结构。开发人员可以修改表结构 阅读全文
posted @ 2020-05-27 12:16 Yungyu 阅读(366) 评论(0) 推荐(0) 编辑