
Linux内核
文章平均质量分 76
zhaqiwen
这个作者很懒,什么都没留下…
展开
-
Linux进程调度机制
1.1. Linux调度时机Linux进程调度分为主动调度和被动调度两种方式:自愿的调度随时都可以进行,内核里可以通过schedule()启动一次调度,当然也可以将进程状态设置为TASK_INTERRUPTIBLE、TASK_UNINTERRUPTIBLE,暂时放弃运行而进入睡眠;用户空间可以通过pause()达到同样的目的;如果为这种暂时的睡眠放弃加上时间限制,内核态有sched转载 2012-07-19 16:06:59 · 4808 阅读 · 0 评论 -
高性能的内核 Socket 实现 Fastsocket
2014年10月18日,当时就职于新浪操作系统团队的林晓峰在Github上开源了名为Fastsocket的项目,并在之后一天的中国Linux内核开发者大会上对该项目的原理和应用效果进行了介绍(演讲slides在此)。根据Github官网的介绍,Fastsocket是:高度可扩展的socket是Linux内核层面的底层网络实现在多核机器上可实现极佳性能,24核以内的性能增长呈线性转载 2014-11-14 13:59:52 · 4756 阅读 · 0 评论 -
Linux可加载内核模块(LKM)
I.基础知识1.什么是LKM 2.什么是系统调用3.什么是内核符号表4.如何进行内核与用户空间内存数据的交换5.使用用户空间的各种函数方法6.常用内核空间函数列表7.什么是内核后台进程8.创建自己的设备II.深入探讨1.如何截获系统调用2.哪些系统调用应被截获2.1 寻找重要的系统调用(strace命令方法)3.迷惑内核系统表4.针对文件系统转载 2012-12-12 22:21:08 · 9542 阅读 · 2 评论 -
Linux内核的同步机制
本系列文章分两部分,第一部分详细地介绍了Linux 内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例。第二部分将详细介绍在Linux内核中的另外一些同步机制,包括大内核锁、读写锁、大读者锁、RCU和顺序锁。第1 部分一、 引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同转载 2012-12-12 22:16:44 · 1023 阅读 · 0 评论 -
Linux内核中常见内存分配函数
1. 原理说明Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示。四级页表分别为:l 页全局目录(Page Global Directory)l 页上级目录(Page Upper Directory)l 页中间目录(Page Middle Directory)转载 2012-10-24 11:25:21 · 647 阅读 · 0 评论 -
Linux Netfilter机制
netfilter框架Linux内核包含了一个强大的网络子系统,名为netfilter,它可 以为iptables内核防火墙模块提供有状态或无状态的包过滤服务,如NAT、IP伪装等,也可以因高级路由或连接状态管理的需要而修改IP头信息。 netfilter位于Linux网络层和防火墙内核模块之间,如图9-1所示。 (点击查看大图)图9-1 netfil转载 2012-08-14 10:29:21 · 987 阅读 · 0 评论 -
Linux内核抢占与中断返回
1、上下文一般来说,CPU在任何时刻都处于以下三种情况之一:(1)运行于用户空间,执行用户进程;(2)运行于内核空间,处于进程上下文;(3)运行于内核空间,处于中断上下文。应用程序通过系统调用陷入内核,此时处于进程上下文。现代几乎所有的CPU体系结构都支持中断。当外部设备产生中断,向CPU发送一个异步信号,CPU调用相应的中断处理程序来处理该中断,此时CPU处于中断上下文。转载 2012-07-27 12:43:06 · 1855 阅读 · 0 评论 -
Linux中断机制(1)
一直认为,理解中断是理解内核的开始。中断已经远远超过仅仅为外围设备服务的范畴,它是现代体系结构的重要组成部分。1、基本输入输出方式现代体系结构的基本输入输出方式有三种:(1)程序查询:CPU周期性询问外部设备是否准备就绪。该方式的明显的缺点就是浪费CPU资源,效率低下。但是,不要轻易的就认为该方式是一种不好的方式,通常效率低下是由于CPU在大部分时间没事可做造成的,这种轮询方式转载 2012-07-27 12:36:51 · 1261 阅读 · 0 评论 -
Linux中断机制(3)
4、下半部在中断处理过程中,不能睡眠。另外,它运行的时候,会把当前中断线在所有处理器上都屏蔽(在ack中完成屏蔽);更糟糕的情况是,如果一个处理程序是SA_INTERRUPT类型,它执行的时候会禁上所有本地中断(通过cli指令完成),所以,中断处理应该尽可能快的完成。所以Linux把中断处理分为上半部和下半部。上半部由中断处理程序完成,它通常完成一些和硬件相关的操作,比如对中断的到达的确认转载 2012-07-27 12:40:29 · 610 阅读 · 0 评论 -
Linux中断机制(2)
3、内核的中断处理3.1、中断处理入口由上节可知,中断向量的对应的处理程序位于interrupt数组中,下面来看看interrupt:341 .data #数据段342 ENTRY(interrupt)343 .text344345 vector=0346 ENTRY(irq_entries_start) 347 .rept NR_IRQS #348-3转载 2012-07-27 12:39:13 · 764 阅读 · 0 评论 -
千万级并发实现的秘密:内核不是解决方案,而是问题所在
原文连接:The Secret To 10 Million Concurrent Connections -The Kernel Is The Problem, Not The Solution 既然我们已经解决了 C10K并发连接问题,应该如何提高水平支持千万级并发连接?你可能会说不可能。不,现在系统已经在用你可能不熟悉甚至激进的方式支持千万级别的并发连接。 要知道它是如转载 2014-12-16 09:44:06 · 1306 阅读 · 0 评论