Linux内核
文章平均质量分 82
lengwuqin
这个作者很懒,什么都没留下…
展开
-
窥探 kernel,just for fun --- task_struct
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7477083邮箱:muge0913@sina.com程序和进程:程序是存放在磁盘上的一系列代码和数据的可执行镜像,是一个静态的实体;进程是一个执行的程序,它是动态的实体,它除了包含指令段,数据段等静态数据外(数据是可以转载 2012-04-28 20:39:46 · 760 阅读 · 0 评论 -
物理地址扩展(PAE)分页机制 .
Intel通过在处理器上把管脚数从32增加到36,以提高处理器的寻址能力,使其达到2^36=64GB,为此,需引入一种新的分页机制。 64GB的RAM被分为2^24个页框,页表项的物理地址字段从20位扩展到24位,每个页表项必须包含12个标志位(固定)和24个物理地址位(36-12),共36位,因此,每个页表项须从32位扩展到64位(36位>32位,考虑到对齐,因此应转载 2012-03-25 20:45:25 · 519 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记-第三章-进程(1) .
进程、轻量级进程和线程:从内核观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体。进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。最初的进程定义都包含程序、资源及其执行三部分,其中程序通常指代码,资源在操作系统层面上通常包括内存资源、IO资源、信转载 2012-03-25 20:51:34 · 358 阅读 · 0 评论 -
窥探 kernel,just for fun --- 内核线程
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7480929邮箱:muge0913@sina.com由于内核对进程和线程不做区分,所以内核线程(kernel thread)又称为内核进程(kernel process)。注意不能把普通进程中的线程理解为进程。内核线程转载 2012-04-28 20:46:20 · 367 阅读 · 0 评论 -
窥探 kernel,just for fun --- 系统调用过程分析
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7518568邮箱:muge0913@sina.com过程分析:1、系统调用需要一个用户空间到内核空间的转换,不同的平台有不同的指令来完成这样的转换,这个指令也叫做操作系统陷入(o转载 2012-04-28 20:50:02 · 562 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记 第一章 绪论(2) .
五、Unix内核概述:Unix内核提供了应用程序可以运行的执行环境。因此,内核必须实现一组服务及相应的接口,应用程序使用这些接口,而且通常不会与硬件资源直接交互。进程/内核模式:所有标准的Unix内核都仅仅利用了内核态和用户态。一个程序执行时,大部分时间都处在用户态下,只有需要内核所提供的服务时才切换到内核态。当内核满足了用户程序的请转载 2012-03-25 20:43:54 · 386 阅读 · 0 评论 -
LINUX 和 WINDOWS 内核的区别
[声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]关于LINUX和WINDOWS的口水站已经很多了。本文企图从技术角度来比较下2个主流操作系统的异同。偏重于内核部分。一、动机:我最早是 WINDOWS 阵营的。在WINDOWS下写过2年多的驱动程序。转载 2012-03-25 20:47:40 · 268 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记-第二章-内存寻址(2) .
硬件中的分页:32位的线性地址被分成3个域:高10位:页目录表中间10位:页表低12位:页表内偏移使用二级页表模式的目的在于减少每个进程页表所需RAM数量。如果是一级页表,则需高达220个表项,而二级模式只为进程实际使用的那些虚拟内存区请求页表。页目录项和页表项有同样的结构,均包含了一些属性字段。评:段页属性字段的设置很有意义,分段、转载 2012-03-25 20:49:10 · 441 阅读 · 2 评论 -
关于“实模式”和“保护模式” .
今天整理读书笔记,发现了一个之前没注意到的,或者自己一直忽略的地方:《深入理解Linux内核》一书中,关于内存寻址这一章,提到了“硬件中的分段”、“Linux中的分段”、“硬件中的分页”和“Linux中的分页”四个概念,所谓的硬件上的分段、分页,是针对CPU在实模式下,即操作系统尚未加载启动之前所采用的内存寻址方式,而软件上的分段、分页,则是CPU在保护模式下,即操作系统启动后所采用的转载 2012-03-25 20:49:58 · 290 阅读 · 0 评论 -
进程、轻量级进程和线程的一些点 .
从内核观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体。进程是资源管理的最小单位,线程是程序执行的最小单位。在操作系统设计上,从进程演化出线程,最主要的目的就是更好的支持SMP以及减小(进程/线程)上下文切换开销。最初的进程定义都包含程序、资源及其执行三部分,其中程序通常指代码,资源在操作系统层面上通常包括内存资源、IO资源、信号处理等部分,而程序的执行通转载 2012-03-25 20:50:44 · 315 阅读 · 0 评论 -
窥探 kernel,just for fun --- 分析sys_reboot
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7518576邮箱:muge0913@sina.com系统调用的内容到这里已经讲述了很多,该到去kernel中窥看一个服务例程具体实现的时候了。在linux中关机和重启命令有shutdown,reboot,init,powe转载 2012-04-28 20:50:59 · 2023 阅读 · 1 评论 -
窥探 kernel,just for fun --- 有关系统调用的几个知识点
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7517303邮箱:muge0913@sina.com一般情况下,用户进程是不能访问内核空间的。它既不能访问内核中的数据,也不能访问内核中的函数。但在linux内核中设置了一组用于实现各种系统功能的函数,成为系统调用。用户可以在转载 2012-04-28 20:48:15 · 383 阅读 · 0 评论 -
窥探 kernel,just for fun --- do_fork
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7479451邮箱:muge0913@sina.com在上次的文章中详细的介绍了几个系统调用,它们最终都是调用了do_fork来实现进程的创建。do_fork主要完成了进程描述符的创建和pid的创建,以及进程描述符的拷贝。本系列文章转载 2012-04-28 20:43:21 · 408 阅读 · 0 评论 -
窥探 kernel,just for fun --- copy_process
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7479714邮箱:muge0913@sina.com在do_fork中调用了copy_process,该函数及其重要。该函数创建进程描述符和子进程需要的其他数据结构。它定义在linux2.6.xxx/kernel/fork.c。只转载 2012-04-28 20:45:31 · 430 阅读 · 0 评论 -
窥探 kernel,just for fun --- 系统调用在用户空间的访问
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7518556邮箱:muge0913@sina.com这篇文章是对上篇的一个补充。如何使用系统调用1、通过c库来使用系统调用2、在2.6.18之前的内核使用_syscall宏来使用系统调用。3、在转载 2012-04-28 20:49:03 · 420 阅读 · 0 评论 -
窥探 kernel,just for fun --- 动手添加系统调用(ARM)
由于本人能力有限,如有错误或不妥,请大家指出,谢谢。我是在linux2.6.38中添加的系统调用,在mini6410开发板上测试的。添加系统调用:向内核中添加系统调用,需要执行三个步骤:1、添加新的内核函数2、更新unistd.h3、更新系统调用表 1、 在kernel/sys.c中添加函数[cp转载 2012-04-28 20:51:59 · 518 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记 第一章 绪论(1) .
一、Linux与其它类Unix内核的比较:单块结构的内核:由几个逻辑上独立的成分构成,单块结构,大多数据商用Unix变体也是单块结构;编译并静态连接的传统Unix内核:Linux能自动按需动态地装载和卸载部分内核代码(模块),而传统Unix内核仅支持静态连接;内核线程:Linux以一种十分有限的方式使用内核线程来周期性地执行几个内核函数,而一些Unix内核则本身转载 2012-03-25 20:42:54 · 445 阅读 · 0 评论 -
窥探 kernel,just for fun --- 浅析do_exit
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7483054邮箱:muge0913@sina.com进程在退出时,必须释放它所拥有的资源,并通过某种方式告诉父进程。进程的退出一般是显示或隐式地调用了eixt(),或者接受了某种信号。不过什么原因退出,最终都调用了do_exit。转载 2012-04-28 20:47:11 · 530 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记-第二章-内存寻址(1) .
内存地址:逻辑地址:包含在机器语言指令中用来指定一个操作数或一条指令的地址。线性地址:一个32位无符号整数,也称虚拟地址。物理地址:用于内存芯片级内存单元寻址,与从微处理器的地址引脚发送到内存总线上的电信号相对应。在多处理器系统中,所有CPU都共享同一内存,这意味着,RAM芯片可以由独立的CPU并发地访问。由于RAM芯片上的读或写操作必须串行地执行,转载 2012-03-25 20:46:29 · 451 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记-第四章-中断和异常(1) .
中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断:同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。异步中断是由其他硬件设备依照CPU转载 2012-03-25 20:53:07 · 315 阅读 · 0 评论 -
窥探 kernel,just for fun --- sys_fork,sys_vfork,sys_clone,kernel_thread
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7479379邮箱:muge0913@sina.com用户空间进程创建接口:fork,vfork,clone函数,这里只做简单说明。fork:使用该系统调用时,子进程复制父进程的全部资源。由于转载 2012-04-28 20:41:25 · 712 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记-第三章-进程(2) .
进程切换:为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为被称为进程切换、任务切换或上下文切换。硬件上下文:尽管每个进程可以拥有属于自己的地址空间,但所有进程必须共享CPU寄存器。因此,在恢复一个进程的执行之前,内核必须确保每个寄存器装入了挂起进程时的值。进程恢复执行前必须装入寄存器的一组数据称为硬件上下文。硬件转载 2012-03-25 20:52:19 · 440 阅读 · 0 评论