随笔分类 -  [05]linux内核-网络

摘要:服务端高性能网络IO编程模型简析 一、客户端与服务器端 多数网络应用可以分为客户端(client)和服务器端(server)模型,然后中间通过各种定义的协议来进行两端的通信。 比如常用的 Nginx 软件。可以把它当做一个 web 服务器。我们可以在 web 浏览器(客户端)与 Nginx 进行通信 阅读全文
posted @ 2022-08-15 02:23 九卷 阅读(750) 评论(0) 推荐(0) 编辑
摘要:高性能网络IO编程模型 一、I/O模型简介 在一个 linux 操作系统中,一般分为用户空间和内核空间。 用户空间一般就是我们进行应用程序编程的地方。 内核空间就是 linux 操作系统自己运行的一些系统,比如内存系统,文件系统,进程调度,硬件驱动程序等等,都是操作系统内核进行控制。 处于 2 个不 阅读全文
posted @ 2022-08-09 02:37 九卷 阅读(439) 评论(0) 推荐(1) 编辑
摘要:一、进程 先来了解一下操作系统的进程: 操作系统对正在运行程序的抽象,这个就是进程(process)。 比如运行一个 web 浏览器,一个 text 文本,都是运行的一个一个进程。 有的人说:进程是程序运行资源的集合。进程是系统资源分配的最小单位等等。 从静态的角度来说,进程确实是运行程序的各种资源 阅读全文
posted @ 2022-04-26 02:49 九卷 阅读(1729) 评论(0) 推荐(5) 编辑
摘要:一、TCMalloc TCMalloc简介 为啥要介绍 TCMalloc? 因为golang的内存分配算法绝大部分都是来自 TCMalloc,golang只改动了其中的一小部分。所以要理解golang内存分配算法,就要先了解下TCMalloc,为后面分析golang内存做一做功课。 tcmalloc 阅读全文
posted @ 2020-10-24 15:06 九卷 阅读(13122) 评论(0) 推荐(2) 编辑
摘要:创建tag 1.创建tag: git tag -a v0.0.1 或者 对某一提交的信息打tag标签,末尾是一个commit id git tag -a v0.0.1 cc16905 2.创建tag带有说明信息: git tag -a v0.0.1 -m "version 0.0.1, tag in 阅读全文
posted @ 2020-05-13 14:29 九卷 阅读(18220) 评论(0) 推荐(1) 编辑
摘要:一:从内存发展角度理解内存分配 在《深入理解计算机系统》这本书,说了内存的大致理论发展, 从一个进程,内存分配,系统内存和应用进程内存到多个进程,内存分配 从静态的分配: 先把内存分配好,把内存划分为几个不同的区块, 然后去取相应的内存 动态分配:用到的时候在来进行分配 二:从进程角度理解内存分配 阅读全文
posted @ 2019-03-05 20:27 九卷 阅读(886) 评论(0) 推荐(0) 编辑
摘要:简介 用户进程的虚拟地址空间是Linux的一个重要的抽象:它为每个运行进程提供了同样的系统视图,这使得多个进程可以同时运行,而不会干扰到其他进程内存中的内容。 每个应用程序都有自己的线性地址空间,与所有其他应用程序隔开。 进程的虚拟地址空间 各进程虚拟地址空间起始于0,延伸到TASK_SIEZE 1 阅读全文
posted @ 2017-11-17 23:23 九卷 阅读(829) 评论(0) 推荐(0) 编辑
摘要:内存中的物理内存管理 概述 一般来说,linux内核一般将处理器的虚拟地址空间划分为2部分。底部比较大的部分用于用户进程,顶部则专用于内核。 在IA 32系统上,地址空间在用户进程和内核之间划分的典型比例是3:1。给出4GB的虚拟地址空间,3GB用于用户空间,而1GB用户内核。 4GB是32位系统上 阅读全文
posted @ 2017-11-09 22:44 九卷 阅读(428) 评论(0) 推荐(0) 编辑
摘要:一:简介 为了管理进程,内核必须对每个进程所做的事情进行清除的描叙。 比如:内核必须知道进程优先级,他是正在CPU上运行还是因为某些事件被阻塞了,给它分配了什么样的地址空间,允许它访问哪个文件等等。这就是进程描述符(process descriptor)的作用,进程描述符都是task_struct类 阅读全文
posted @ 2017-11-01 22:24 九卷 阅读(3044) 评论(0) 推荐(2) 编辑
摘要:一:进程管理 进程、轻量级进程和线程 通常定义:进程是程序执行时的一个实例。 这个很像类和实例对象的关系。从内核来看:进程的目的就是担当分配系统资源(CPU,内存等)的实体。 当进程创建时,它几乎和父进程相同。父子进程区别是他们都有各自独立的堆和栈,所以子进程对内存单元的修改对父进程是不可见的。 在 阅读全文
posted @ 2017-10-28 20:59 九卷 阅读(617) 评论(0) 推荐(0) 编辑
摘要:转自:github.com/saminiir/level-ip Level-IP is a Linux userspace TCP/IP stack, implemented with TUN/TAP devices. The main goals are to: Learn TCP/IP Lear 阅读全文
posted @ 2017-07-08 17:17 九卷 阅读(1115) 评论(0) 推荐(0) 编辑
摘要:一:查看帮助选项 选项的解释: 注意:查看更多的信息,可以用命令:man tcpdump或者网址:https://www.tcpdump.org/tcpdump_man.html 二:用法 1:直接启动 tcpdump 将监视第一个网络接口所有流过的数据包 2:监控某一网络接口的数据包 3:过滤主机 阅读全文
posted @ 2017-03-10 00:38 九卷 阅读(55835) 评论(0) 推荐(8) 编辑
摘要:一:简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析 二:vmstat --help 三:使用实例 1:显示虚拟内存使用情况 说明: p 阅读全文
posted @ 2016-05-13 21:39 九卷 阅读(1674) 评论(0) 推荐(0) 编辑
摘要:一:简介 这个命令可以显示每个进程的栈跟踪。pstack命令必须由相应进程的宿主或root运行。可以使用pstack来确定进程挂起的位置。此命令允许使用唯一选项就是进程的PID 这个命令在排查进程问题时非常有用。比如我们发现一个服务一直处于work状态(如假死状态,似死循环),使用这个命令就能轻松定 阅读全文
posted @ 2016-05-13 20:59 九卷 阅读(719) 评论(0) 推荐(0) 编辑
摘要:一:简介 iostat(I/O statistics)输入输出缩写,用来动态监视系统的磁盘操作活动。它能监视磁盘的活动统计情况,同时也能监视CPU的活动情况。缺点是,iostat不能对某一个具体的进程进行深入的分析,仅仅是对系统整体情况进行分析。iostat属于sysstat包。 centos下安装 阅读全文
posted @ 2016-05-12 02:07 九卷 阅读(1147) 评论(0) 推荐(0) 编辑
摘要:一:简介 netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。 二:netstat --help 命令 三:选项(上面help命令选项) 阅读全文
posted @ 2016-05-11 01:31 九卷 阅读(5984) 评论(0) 推荐(0) 编辑
摘要:以前老是看到进程上下文切换,只知道是时一些信息从内存和cpu里换出,概念很模糊,今天翻了下书,记录下 上下文切换:操作系统内核用一种称为上下文切换的较高形式的异常控制流来实现多任务 内核为每一个进程维护一个上下文。 上下文就是内核重启动一个被抢占的进程所需的状态。它由一些对象的值组成,这些对象包括各 阅读全文
posted @ 2015-11-06 21:38 九卷 阅读(697) 评论(0) 推荐(0) 编辑
摘要:一:概述 如果程序太大了,超过了空闲内存的容量,那么就没有办法把它全部载入内存,这时该肿么办? 其实在很多年前,人们碰到这个问题时,通常采用的解决方案就是覆盖技术。也就是说,把该程序划分为若干个部分,称为覆盖块overlay,然后只需要把当前用到的指令和数据保存在内存中,而把其余的指令保存在外存中。 阅读全文
posted @ 2015-10-25 22:54 九卷 阅读(452) 评论(0) 推荐(0) 编辑
摘要:存储系统是一个具有不同容量,成本和访问时间的存储设备的层次结构。cpu 寄存器保存着最常用的数据。靠近cpu的小的,快速的高速缓存存储器作为一部分存储在相对较慢速的主存储器(main memory,主存)中的数据和指令的缓冲区。主存暂时存放容量较大的,慢速磁盘上的数据。 作为一个程序员,需要理解存储 阅读全文
posted @ 2015-10-24 22:34 九卷 阅读(987) 评论(0) 推荐(0) 编辑
摘要:进程 进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体。 进程一般会包括指令集和系统资源集,这里的指令集是指程序代码,这里的系统资源集是指I/O、CPU、内存等。 综合起来,我们也可以理解进程是具有一定独立功能的程序在关于某个数据集合上的一 阅读全文
posted @ 2015-10-23 00:52 九卷 阅读(481) 评论(0) 推荐(0) 编辑