LINUX源码解析
文章平均质量分 88
五癫
武汉理工大学软件工程
展开
-
Linux源码解析-进程-进程状态
1.进程的三种理论基本状态1)就绪(ready)状态当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列2)执行状态进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。原创 2017-07-20 18:30:35 · 724 阅读 · 0 评论 -
撤销进程详解
1.进程终止的一般方式是调用exit()库函数,该函数释放C函数库所分配的资源,执行编程者所注册的每个函数,并结束从系统回收进程的那个系统调用。exit()函数可能由编程者显示插入。另外,c编译程序总是把exit()函数插入到main()函数的最后一条语句之后2.在linux2.6中有两个终止用户态应用的系统调用(1)exit_group()系统调用:它终止整个线程组,即整个基于多线程的应原创 2017-09-06 14:24:52 · 4362 阅读 · 0 评论 -
linux源码解析-copy_process函数
1.copy_process函数是做什么的 copy_process函数在进程创建的do_fork函数中调用,主要完成进程数据结构,各种资源的初始化。初始化方式可以重新分配,也可以共享父进程资源,主要根据传入clone_flags参数来确定。/* * This creates a new process as a copy of the old one, * but doe原创 2017-07-27 19:37:04 · 1650 阅读 · 0 评论 -
内核中常用的双向链表数据结构(list_head)详解
1.什么是list_head结构内核定义了list_head结构来实现链表结构。字段next和prev分别表示通用双向链表向前和向后的指针元素。list_head字段的指针中存放的是另一个list_head字段的地址,而不是含有list_head结构的整个数据结构地址文件在include/linux/list.hstruct list_head { struct list原创 2017-09-05 14:20:45 · 1156 阅读 · 0 评论 -
进程中的用户堆栈、内核栈
1.什么是内核栈?在创建进程(即在内存中构建task_struct结构体)时,内核会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内容是内核栈空间地址,使用内核栈。2.进程用户栈和内核栈的切换当进程因原创 2017-09-05 11:39:48 · 687 阅读 · 0 评论 -
linux源码解析-fork
1.调用fork的过程在调用fork时,系统将调用宏指令_syscall0,进而,调用0x80号中断,寄存器eax中的值为__NR_fork,这是fork传给int $0x80的唯一的参数。调用中断“int $0x80”以后,在汇编过程“system_call”中,将通过eax中的值__NR_fork(即2)与4的乘积(计算出相对系统调用表的偏移值)作为相对于系统调用表(sys_cal原创 2017-07-27 14:52:54 · 448 阅读 · 0 评论 -
进程间通信-创建管道实现机制
1.图解对于每个管道来说,内核都要创建一个索引节点对象和两个文件对象,一个文件对象用于读,一个文件对象用于写。当进程希望从管道中读取数据或向管道中写入数据时,必须使用适当的文件描述符。在linux 中,管道的实现并没有使用专门的数据结构,而是借助了文件系统的file结构和VFS的索引节点inode。通过将两个 file 结构指向同一个临时的 VFS 索引节点,而这个 VFS 索引节点又原创 2017-08-07 17:06:17 · 771 阅读 · 0 评论 -
Linux源码解析-进程-进程
1.进程的概念以下摘自百度百科:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体当然,上述只是宏观概念上的抽象描述,我们在本科学习操作系统时原创 2017-07-20 18:35:56 · 2618 阅读 · 0 评论 -
file结构体详解
转载自:1.1 struct file struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被转载 2017-07-23 19:37:02 · 4432 阅读 · 0 评论 -
Linux源码解析-poll机制
1.poll函数关于poll函数具体是干什么的,以及什么情况下使用等参考我的其他博客2.poll机制分析常见系统调用一般对应内核中sys_函数名,比如我们想看poll机制,具体怎么查看源码呢?下载Soure Insight软件下载linux源码Ctrl+Shift+F快捷键打开搜索窗口打钩ProjectWide搜索sys_poll点击Select.c即可进入相应源码部分no原创 2017-07-18 14:14:03 · 2651 阅读 · 0 评论 -
C语言函数调用及栈帧分析
此篇文章转载自http://blog.csdn.net/rxan1234/article/details/49862043在Linux内核程序boot/head.s执行完基本初始化操作之后,就会跳转去执行init/main.c程序。那么head.s程序是如何把执行控制转交给init/main.c程序的呢?即汇编程序是如何调用执行C语言程序的?这里我们首先描述一下C函数的调用机制、控制权转载 2017-07-22 15:32:54 · 919 阅读 · 0 评论 -
c函数调用过程原理及函数栈帧分析
此篇文章转载自:http://blog.csdn.net/zsy2020314/article/details/9429707今天突然想分析一下函数在相互调用过程中栈帧的变化,还是想尽量以比较清晰的思路把这一过程描述出来,关于c函数调用原理的理解是很重要的。1.关于栈 首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸转载 2017-07-22 15:29:16 · 346 阅读 · 0 评论 -
进程的存储空间布局
1.进程的地址空间分布详情参见我的另一篇博文 :Linux源码解析-内存描述符(mm_struct)2.一条进程的栈区、堆区、数据区和代码区在内存中的映射以下摘自http://zqwt.012.blog.163.com/blog/static/120446842010113091137224/一条进程的栈区、堆区、数据区和代码区在内存中的映射 1>栈区:主原创 2017-07-22 15:26:56 · 812 阅读 · 0 评论 -
Linux源码解析-信号机制相关数据结构
该篇播客转载自:http://blog.chinaunix.net/uid-24774106-id-4065797.html这篇博客,想集中在signal 与线程的关系上,顺带介绍内核signal相关的结构。如何组织我其实并没想好,想到哪就写到哪里吧。主题一定会落在signal之内而不跑题。 提到signal与thread的关系,就得先提POSIX标准。POSIX标准决定了Lin转载 2017-07-30 14:14:58 · 701 阅读 · 0 评论 -
linux中建立新的进程-fork、vfork、clone解析
1.进程拷贝的变迁早期fork是完整拷贝进程(task_struct),耗时较大,原创 2017-07-31 10:16:50 · 362 阅读 · 0 评论 -
Linux源码解析-内存描述符(mm_struct)
1.原创 2017-07-22 14:52:45 · 4219 阅读 · 0 评论 -
Linux源码解析-内核栈与thread_info结构详解
环境:linux2.6.341.什么是进程的内核栈?在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进程的内核栈2.进程的内核栈在计算机中是如何描述的?linux中进程使用task_struct数据结构描述,其中有一个stack指针struct task_struct{ // ...原创 2017-07-21 21:43:24 · 5312 阅读 · 0 评论 -
LINUX编程专题-I/O复用:epoll原理和源码解析(资料的收集和整理,不算原创)
1.什么是epoll和epoll的用法此问题普通linux书籍都有介绍,随便找一本看看即可,也可直接man查看,此篇文章的重点不在于此epoll接口介绍可以参见我的另一篇博文 epoll接口介绍2.poll机制解析(了解poll是为了和epoll做比较)参见我的另一篇博文poll机制详解3.epoll原理讲解(重点部分,以通俗易懂的方式讲解了原理,此部分原创 2017-08-29 16:51:19 · 531 阅读 · 0 评论