2016年8月10日

(转):从内核代码聊聊pipe的实现

摘要: 来源: http://luodw.cc/2016/07/09/pipeof/用linux也有两年多了,从命令,系统调用,到内核原理一路学过来,我发现我是深深喜欢上这个系统;使用起来就是一个字“爽”;当初在看 linux内核原理时,对linux内核源码有种敬畏的心理,不敢涉入,主要是看不懂,直到最近实习的时候,在某次分享会上,某位老师分享了OOM机制, 我很感兴趣,就去看内核代码,发现,原来我能看懂... 阅读全文

posted @ 2016-08-10 00:49 笨拙的菜鸟 阅读(3904) 评论(1) 推荐(0) 编辑

一简单c++程序之反汇编

摘要: #includeusing namespace std;class point3d;class point2d;class point3d{private:int x; int y; int z;public: point3d(int a = 0, int b = 0, int c = 0) :x(a), y(b), z(c) {}};class point2d{ int a; ... 阅读全文

posted @ 2016-08-10 00:47 笨拙的菜鸟 阅读(2735) 评论(0) 推荐(0) 编辑

linux内核之进程的基本概念(进程,进程组,会话关系)

摘要: 进程是操作系统的一个核心概念。每个进程都有自己唯一的标识:进程ID,也有自己的生命周期。一个典型的进程的生命周期如图4-1所示。进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家族树。除此以外,进程还有其他层次关系:进程、进程组和会话。进程组和会话在进程之间形成了两级的层次:进程组是一组相关进程的集合,会话是一组相关进程组的集合。这样说来,一个进程会有如下ID:·PID:进程的... 阅读全文

posted @ 2016-08-10 00:42 笨拙的菜鸟 阅读(11138) 评论(1) 推荐(4) 编辑

Linux进程的创建函数fork()及其fork内核实现解析

摘要: 进程的创建之fork()Linux系统下,进程可以调用fork函数来创建新的进程。调用进程为父进程,被创建的进程为子进程。fork函数的接口定义如下:#include pid_t fork(void); 与普通函数不同,fork函数会返回两次。一般说来,创建两个完全相同的进程并没有太多的价值。大部分情况下,父子进程会执行不同的代码分支。fork函数的返回值就成了区分父子进程的关键。fork函数向子... 阅读全文

posted @ 2016-08-10 00:42 笨拙的菜鸟 阅读(2528) 评论(0) 推荐(2) 编辑

linux之Deamon进程创建及其进程exit,_exit,return之间的区别

摘要: Dameon进程又被称做守护进程,一般来说他有以下2个特点:1.生命周期非常长,一旦启动,一般不会终止,直到系统推出,不过dameon进程可以通过stop或者发送信号将其杀死2.在后台执行,不跟任何控制终端关联,终端信号比如:SIGINT,SIGQUIT,SIGTSTP,以及关闭终端都不会影响deamon如何编写Daemon进程,需要遵循以下规则:(1)执行fork()函数,父进程退出,子进程继续... 阅读全文

posted @ 2016-08-10 00:41 笨拙的菜鸟 阅读(2027) 评论(0) 推荐(1) 编辑

深入解析Linux内核I/O剖析(open,write实现)

摘要: Linux内核将一切视为文件,那么Linux的文件是什么呢?其既可以是事实上的真正的物理文件,也可以是设备、管道,甚至还可以是一块内存。狭义的文件是指文件系统中的物理文件,而广义的文件则可以是Linux管理的所有对象。这些广义的文件利用VFS机制,以文件系统的形式挂载在Linux内核中,对外提供一致的文件操作接口。从数值上看,文件描述符是一个非负整数,其本质就是一个句柄,所以也可以认为文件描述符就... 阅读全文

posted @ 2016-08-10 00:40 笨拙的菜鸟 阅读(6931) 评论(0) 推荐(0) 编辑

Linux内核解析之标准I/O库

摘要: 当Linux创建一个进程时,会自动创建3个文件描述符0,1,2,分别对应标准输入,标准输出,错误输出。C库中与文件描述符对应的是文件指针。查看C库头文件stdio.h中的源码typedef struct _IO_FILE FILE; //文件流类型extern struct _IO_FILE *stdin; /* 标准输入流 */extern struct _IO_FILE *stdo... 阅读全文

posted @ 2016-08-10 00:40 笨拙的菜鸟 阅读(1151) 评论(0) 推荐(0) 编辑

第0章Linux环境到内核基础知识

摘要: #includeint main(void){ printf("hello world\n"); return 0;}gcc -g -wall helloworld.c -o hello_world 生成可执行文件,其过程 涉及预处理,编译,汇编,链接等多个步骤预处理:用于处理预处理命令,上面helloworld代码的预处理就是#include,该头文件所有源码将在第一行展开,可使用 gcc ... 阅读全文

posted @ 2016-08-10 00:39 笨拙的菜鸟 阅读(678) 评论(0) 推荐(0) 编辑

Linux之进程的等待与其内核实现解析

摘要: 进程通过fork产生子进程,进程也会死亡,进程退出的时候将会进行内核清理,释放所有进程的资源,资源包括:内存资源,文件资源,信号量资源,共享内存资源,或者引用计数减一,或者彻底释放。 不过进程的退出并没有把所有资源释放,保留一一些资源,比如进程的PID依然被占用,不可被分配,来看看僵尸进程依旧占有的资源:进程控制块task_struct ,内核栈等。这些资源不释放是为了提供一些重要信息,比如... 阅读全文

posted @ 2016-08-10 00:38 笨拙的菜鸟 阅读(2415) 评论(0) 推荐(0) 编辑

linux内核设计与实现第一章

摘要: 1.1 unix的历史 Thompson实现unix 伯克利大学对其进一步开发推出了著名的BSD 其他各大厂商相继推出自己的unix 1.1.2 unix的特性 unix系统是一个强大,健壮,稳定的操作系统 unix中,一切东西都是文件 unix由c编写,移植性非常好 1.1.3unix的总结 Unix现在已经发胀成为一个支持抢占式多任务,多线程,TCP/IP网络的现代化操作... 阅读全文

posted @ 2016-08-10 00:33 笨拙的菜鸟 阅读(337) 评论(0) 推荐(0) 编辑

导航