Linux内核
深度Java
这个作者很懒,什么都没留下…
展开
-
Linux Performance
性能专家Brendan Gregg的网站。Linux性能该页面链接到我创建的各种Linux性能材料,包括右侧的工具图。它们使用大字体来适合滑盖。您也可以将它们打印出来用于办公室墙壁。它们显示:Linux可观察性工具,Linux静态性能分析工具,Linux基准测试工具,Linux调整工具和Linux sar。在图像上检查年份(右下)以查看年份。还有一个高分辨率图,它结合了可观察性,静态性能调整和perf-tools / bcc:png,svg(请参见讨论),但是它不如其他图完整。有关更多图表...原创 2020-10-08 13:46:53 · 2757 阅读 · 1 评论 -
JDK源码分析 NIO实现
调用本地native方法package sun.nio.ch;public class IOUtil {...public static native void configureBlocking(FileDescriptor var0, boolean var1) throws IOException;对应jdk文件位置:https://blog.csdn.ne...原创 2020-03-03 23:35:13 · 1735 阅读 · 1 评论 -
Linux的epoll
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在/usr/include/linux/posix_types.h头文件有这样的声明:#原创 2007-03-19 19:28:00 · 2845 阅读 · 0 评论 -
多路IO复用模型 select epoll 等
同步阻塞IO在等待数据就绪上花去太多时间,而传统的同步非阻塞IO虽然不会阻塞进程,但是结合轮询来判断数据是否就绪仍然会耗费大量的CPU时间。多路IO复用提供了对大量文件描述符进行就绪检查的高性能方案。 selectselect诞生于4.2BSD,在几乎所有平台上都支持,其良好的跨平台支持是它的主要的也是为数不多的优点之一。select的缺点(1)单个进程能够监视的文件描述符的数量存在最大限制(2)转载 2012-03-23 18:40:56 · 3646 阅读 · 0 评论 -
Linux虚拟内存和物理内存精华【美】
原文地址:《Playing with Virtual Memory》http://www.snailinaturtleneck.com/blog/2011/08/30/playing-with-virtual-memory/扩展阅读:《Understanding Memory》http://www.ualberta.ca/CNS/RESEARCH/LinuxClusters/mem.html《Un原创 2012-04-12 16:33:13 · 8405 阅读 · 0 评论 -
ulimit -SHn 65535 含义
linux下用ulimit设置连接数最大值,默认是1024.在高负载下要设置为更高,但最高只能为65535.ulimit只能做临时修改,重启后失效。可以加入ulimit -SHn 65535到 /etc/rc.local 每次启动启用。 终极解除 Linux 系统的最大进程数和最大文件打开数限制:vim /etc/security/limits.conf# 添加如下的行* soft nproc 1原创 2012-04-16 22:48:47 · 14333 阅读 · 1 评论 -
《独辟蹊径品内核:Linux内核源代码导读(china-pub首发)》的前言
我觉得作者讲的学习方法很好值得看看。下面是本书作者所写:几乎每一个操作系统内核的学习者在初学阶段都会感觉到难以入门。这是由于内核涉及到知识面非常广泛,需要学习者从根本上掌握大量的知识,这包括:程序编译,链接,装载的细节,操作系统理论,计算机系统体系结构,数据结构与算法,深厚的C/汇编语言编程功底。如此相对较高的门槛常常令很大一部分初学者望而却步。那么是不是一定要先学好以上的各门知识后才能学习内核呢原创 2011-07-20 11:49:18 · 2909 阅读 · 6 评论 -
Linux内核学习四库全书
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition 3 3. Linux原创 2011-07-05 14:12:34 · 43739 阅读 · 12 评论 -
Linux0.01内核根目录Makefile注释
## Makefile for linux.# If you don't have '-mstring-insns' in your gcc (and nobody but me has :-)# remove them from the CFLAGS defines.###8086汇编编译器和连接器. -0生成8086目标程序;-a生成与gas和gld部分兼容的代码#AS86转载 2012-12-10 14:02:15 · 10471 阅读 · 2 评论 -
高性能IO模型浅析
高性能IO模型浅析 原文地址:https://www.cnblogs.com/fanzhidongyzby/p/4098546.html服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被...转载 2019-02-25 17:10:11 · 706 阅读 · 0 评论 -
Java线上问题排障:Linux内核bug引发JVM死锁导致线程假死
Java本质上还是离不开操作系统,一来Java源码是用C/C++实现的,二来java进程还是需要依附于操作系统和硬件资源,有时候一些问题是操作系统级别导致的,下面的整个事件是源自一则真实的线上案例。过程:JVM死锁导致线程不可用,然后会瞬间起N个线程,当然起再多也是不可用的,因为需要的对象发生死锁,然后耗尽文件句柄导致外部请求也就是TCP连接无法建立产生拒绝服务,看起来就像线程假死...原创 2019-04-28 15:16:42 · 5638 阅读 · 5 评论 -
Linux内核的红黑树源码实现以及调用
红黑树可以说是程序员经常遇到的一种数据结构,不管是工作还是面试都会涉及,有时候还会让你写一段红黑树代码。本文主要是讲Linux中的红黑树,关于红黑树定义参考wiki:https://en.wikipedia.org/wiki/Red%E2%80%93black_tree其中《算法导论》中的定义最为清晰:红黑树图示:Linux中的红黑树(rbtree) 下面...原创 2019-04-28 19:33:02 · 6895 阅读 · 4 评论 -
The C10K problem原文翻译
原文地址:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.html The C10K problem 如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了。现在的计算机也很强大了,你只需要花大概$1200就可以买一个1000MHz的处理器,2G的内存, 1000Mbit/sec的网卡的机器原创 2011-11-23 10:47:27 · 4168 阅读 · 1 评论 -
CentOS Linux内核升级全过程
首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。接下来,让我们一起开始精彩的Linux内核升级之旅吧!一、准备工作启动Linux系统,并用根用户登录,进入终端模式下。1、查看Linux内核版本# uname -a如果屏幕显示的是2.6.x,说明你原创 2011-08-27 13:15:03 · 5426 阅读 · 0 评论 -
linux内核map图
linux内核map图原创 2010-07-28 10:27:00 · 6861 阅读 · 6 评论 -
linux下poll和epoll内核源代码剖析
作者:董昊 博客链接http://donghao.org/uii/poll和epoll的使用应该不用再多说了。当fd很多时,使用epoll比poll效率更高。我们通过内核源码分析来看看到底是为什么。poll剖析poll系统调用:int poll(struct pollfd *fds, nfds_t nfds, int timeout);内核2.6.9对应的实现代码为:[fs/select.c --原创 2011-07-25 18:30:57 · 12098 阅读 · 3 评论 -
Linux内核模块编程入门
针对2.6内核的Linux系统,需要你的机器上已经安装了kernel-devel这个包,也就是编译模块所必须的东西:内核的头文件和一些Makefile。 一,Hello World程序: [code:1:fbc83fc10a]/*file: hello.c*/ #ifndef _原创 2011-07-05 15:38:51 · 2922 阅读 · 0 评论 -
LINUX 和 WINDOWS 内核的区别
[声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]关于LINUX和WINDOWS的口水站已经很多了。本文企图从技术角度来比较下2个主流操作系统的异同。偏重于内核部原创 2011-09-03 11:42:35 · 17047 阅读 · 5 评论 -
Linux编译内核的详细配置
前言之前言:谁是这篇文章的读者? 不习惯读英文资料的非LINUX高手 声卡不响光驱不转连不上网等等,只要有问题就行 开发嵌入式操作系统 现在流行的ODL(only disk linux)中做内核部分,那些文章不介绍此点内容。我正在做 ,完工后整理资料。 BY THE WAY ,想成为LINUX高手吗?你需要熟练掌握KERNEL COMPILE 、XCONFIGRATER 、LINUXCONFIG、原创 2005-03-12 10:58:00 · 10420 阅读 · 0 评论 -
Linux编程常见问题
错误提示:Makefile:2: *** 遗漏分隔符 。 停止。原因makefile中 gcc语句前 缺少一个 tab分割符错误提示: bash: ./makefile: 权限不够原因 makefile 是文本文件不可执行,即使是root,也会权限不够我们应该在命令行下使用make, 该指令会自动搜寻所在目录下的makefile文件,如果使用其他名称如(makefile.am)则应加参数指出,如:原创 2004-10-30 18:49:00 · 31434 阅读 · 1 评论 -
Linux0.11内核引导启动过程概述
Linux0.11仅支持x86架构。它的内核引导启动程序在文件夹boot内,共有三个汇编代码文件。按照启动流程依次是: (1)bootsect.s。boot是启动引导的意思,sect即sector,是扇区的意思,二者合在一起启动引导扇区。这是磁盘引导程序。 (2)setup.s (3)head.s 前两个汇编程序采用近似Intel的汇编语言语法,第三个采用GNU的AT&T原创 2005-01-28 13:40:00 · 91300 阅读 · 3 评论 -
Mr. Process的一生-Linux内核的社会视角 (1)调度
转载:http://www.manio.org/cn/scheduling-of-linux-view-of-society.htmlWritten by manio (manioster{at)gmail.com)Linux内核是一个无比复杂的系统,要想看清大致的脉络也非易事。原创 2011-08-11 22:47:37 · 2657 阅读 · 1 评论 -
IOCP , kqueue , epoll ... 有多重要?
原文地址:http://blog.codingnow.com/2006/04/iocp_kqueue_epoll.html设计 mmo 服务器,我听过许多老生常谈,说起处理大量连接时, select 是多么低效。我们应该换用 iocp (windows), kqueue(freebsd), 或是 epoll(linux) 。的确,处理大量的连接的读写,select 是够低效的。因为 kernel原创 2007-03-21 20:07:00 · 4821 阅读 · 0 评论 -
Mr. Process的一生-Linux内核的社会视角 (2)启动
原文地址: http://www.manio.org/cn/startup-of-linux-view-of-society.html其实这才应该是这一系列文章的第一节,因为这篇文章讲的是盘古开天地的事。话说Mr. Process是一个现代人,但是,只要是人,总该有个祖先。人们总原创 2011-08-11 22:52:46 · 2353 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
原文地址:http://blog.csdn.net/sparkliang/article/details/4770655 1. Epoll 是何方神圣? Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,原创 2011-08-21 22:51:57 · 5666 阅读 · 2 评论 -
linux系统级别的能够打开的文件句柄的数file-max命令
简单的说, max-file表示系统级别的能够打开的文件句柄的数量, 而ulimit -n控制进程级别能够打开的文件句柄的数量.man 5 proc, 找到file-max的解释:file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制(系统级别, kernel-le原创 2011-08-21 22:47:15 · 3754 阅读 · 1 评论 -
Linux内核之旅
内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的原创 2011-08-01 14:27:54 · 3241 阅读 · 0 评论