zyfforlinux

专注linux内核,系统编程,C++服务器端编程,golang ,python/bash脚本编程,DevOps,分布式...

Linux内核原理-pid namespace

前言这几晚在看进程相关的内核原理,正好看到了pid这块,看起来不是很复杂,但是引入了pid namespace后增加了一些数据结构,看起来不是那么清晰了,参考了Linux内核架构这本书,看完后感觉还没有理解。所以就在网上找了一些文章参考,其中我发现了一篇质量相当不错的文章,为什么说质量不错呢主要是...

2015-11-19 13:31:30

阅读数:3008

评论数:6

网络编程最佳实践

网络编程最佳实践socket描述符的引用机制socket描述符引用机制,当父进程生成一个socket描述符然后fork一个子进程后,那么这个socket描述符的引用计数就+1了此后子进程close socket描述符只是减少引用计数并没有真正关闭描述符。如果希望真正关闭描述符需要使用shutdow...

2015-11-16 22:55:40

阅读数:849

评论数:0

Linux内核模块编程-系统调用拦截

系统调用拦截本文实验基于Centos6.5 内核版本2.6.32-431.el6.x86_64,系统调用拦截的目的其实就是把系统真正要执行的系统调用替换为我们自己写的内核函数。系统调用拦截的实现那么如何去实现系统调用拦截呢,通过学习系统调用的内核实现我们发现其实系统调用的地址是放在sys_call...

2015-11-16 22:15:48

阅读数:1461

评论数:0

Linux内核模块编程-与设备文件对话

与设备文件对话在上一篇博文中,我们编写了一个字符设备驱动,简单的回顾下我们编写的流程: 实现open/close/read/write四个操作设备文件的函数 填充file_operations结构体 注册设备和指明操作设备的file_operations 与设备之间可以通过上面提到的几个函数来进行...

2015-11-15 16:39:41

阅读数:703

评论数:0

Linux内核模块编程-proc文件系统进阶

proc作为输入关于proc的一些基本概念和基本使用以及一些核心数据结构可以参考我的上一篇文章 在上一篇文章中提到了利用proc作为内核空间传递数据给用户空间的一种方式,那么proc能否作为用户空间传递数据给内核空间的一种手法呢?答案当然是可以的,熟悉linux的读者应该都知道我们不光光可以读取...

2015-11-14 11:04:00

阅读数:1354

评论数:2

accept()ing when you can’t问题分析

accept()ing when you can’t问题在libev的官方文档中提到一个accept()ing when you can’t的问题,下面是作者对于这个问题的分析: For example, larger servers often run out of file descript...

2015-11-11 23:40:49

阅读数:866

评论数:0

内联汇编基础学习

内联汇编简介在Linux内核代码中有一部分是使用汇编语言编写的,尤其是与特定体系结构相关的代码和一些对性能影响很大的代码都是使用汇编语言进行编写的,那么GCC为了可以在C语言中来编写汇编代码,提供了内联汇编的功能,可以在C代码中直接内嵌汇编语言,大大方便了程序设计。内核汇编基本语法 __asm__...

2015-11-11 23:18:52

阅读数:1100

评论数:0

Namespace机制-概述

(本文整理来自于互联网上的资料) Namespace机制概述Linux Namespaces机制提供了一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Names...

2015-11-11 23:10:36

阅读数:757

评论数:0

Linux内核模块编程-proc文件系统

什么是procproc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系...

2015-11-11 22:49:10

阅读数:1695

评论数:0

Linux内核原理-进程入门

进程进程是处于执行期的程序,进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段等。线程是进程中活动的对象,每个线程都拥有一个独立的程序计数器,进程炸,和一组进程寄存器。内核调度的对...

2015-11-07 22:14:01

阅读数:817

评论数:0

Linux中的进程关系详解

进程组的概念每一个进程除了有一个进程ID之外,还属于一个进程组,进程组通常是一个或多个进程的集合。这些进程通常是与一个作业相关的。例如:ps axu|grep bash|wc -l 这是三个进程,他们直接通过管道传递数据,为了是完成一个作业,对于这个整体来说是一个进程组,其中ps进程是进程组的组长...

2015-11-07 21:19:45

阅读数:1013

评论数:0

Linux内核模块编程-字符设备驱动

设备驱动简介设备被大概的分为两类: 字符设备和块设备。 字符设备 提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。 块设备 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘...

2015-11-07 17:30:34

阅读数:1185

评论数:1

Linux内核模块编程-HelloWorld

HelloWorld内核开始断断续续学习内核,大概半年了,多少开始对内核有点感悟了,但是对于这个庞然大物我显得很渺小,在枯燥的内核源码之中似乎没有一点点成功的喜悦,因此我选择学习内核模块编程,通过编写一些内核模块来体验那一点点小小的成就感吧!什么是内核模块内核模块是具有独立功能的程序。它可以被单独...

2015-11-07 17:00:56

阅读数:3272

评论数:0

Cgroup使用进阶

About在我的前面两篇文章中,分别介绍了cgroup的一些基本概念,和如何去管理层次结构和control group还有如何附加子系统。但是到目前为止仍旧没有触及cgroup中最核心的东西也就是资源限制。前面的文章中仅仅说的是如何把子系统附加到某个层次上。至于如何设置子系统来限制资源,如何针对某...

2015-11-07 16:51:14

阅读数:1626

评论数:0

Cgroup基本使用

About在我的上一篇博文中已经谈到了Cgroup的一些基本概念,以及这些概念之间的关系。那么本篇博文则从感性一面来看看Cgroup到底是个啥?在linux系统上Cgroup被实现为一个filesystem,通过对filesystem的基本操作(mount,read,write等),来 实现对C...

2015-11-05 13:52:18

阅读数:3307

评论数:0

Cgroup之Resource Counter机制

Resource Counter机制概述Cgroup中提供了众多子系统用于实现系统资源管理,其中有一个子系统就是Memory子系统,这个子系统提供了对内存资源和swap资源的使用限制和统计。但是Cgroup中的Memory子系统中的资源使用统计其实用的是resource counter机制来实现的...

2015-11-03 23:23:21

阅读数:834

评论数:0

Cgroup基础概念

What is Cgroup?Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由 google 的工程师提出,后来被整合进 Linux...

2015-11-03 20:27:03

阅读数:1300

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭