`
bigfirebird
  • 浏览: 125062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
  前言     宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示编译器在编译的时候,将一系列初始化函数的起始地址值按照一定的顺序放在一个section中。在内核初始化阶段,do_initcalls() 将按顺序从该section中以函数指针的形式取出这些函数的起始地址,来依次完成相应的初始化。由于内核某些部分的初始化需要依赖于其他某些部分的初始化的完成,因此这个顺序排列常常很重要。      下面将从__define_initcall(level,fn) 宏定义的代码分析入手,依次分析名称为initcall.init的section的结构,最后分析 ...
申明:本文章是对“Linux对I/O端口资源的管理”该文章进行总结,从2.4内核I/O端口资源管理经过少量的更改成2.6内核I/O资源管理 有些体系结构的CPU(如,PowerPC、m68k等)通常只实现一个物理地址空间(RAM)。在这种情况下,外设I/O端口的物理地址就被映射到 CPU的单一物理地址空间中,而成为内存的一部分。此时,CPU可以象访问一个内存单元那样访问外设I/O端口,而不需要设立专门的外设I/O指令。这就 是所谓的“内存映射方式。   而另外一些体系结构的CPU(典型地如X86)则为外设专门实现了一个单独地地址空间,称为“I/O地址空间”或者“I/O端口空间”。这是一个与 ...
上章讲到线程,现在对线程创建的代码流程分析下。来一步一步揭开她神秘的面纱 linux内核创建线程函数 kernel_thread(),最终会调用do_fork(). 前面谈到线程也是用task_struct结构表示它拥有的信息,只是是共享进程的资源。 根据clone_flags标志,来调用clone()创建"线程",表示共享内存、共享文件系统访问计数、共享文件描述符表,以及共享信号处理方式。 kernel_thread定义在/arch/kernel/process.c int kernel_thread(int (*fn)(void *), void * ar ...
1 >    线程和进程的差别 线程机制支持并发程序设计技术,在多处理器上能真正保证并行处理。而在linux实现线程很特别,linux把所有的线程都当作线程实现。 linux下线程看起来就像普通进程(只是该进程和其他进程共享资源, ...
  linux中ELF加载过程分析 - 博青港湾-技术空间 - CSDNBlog 收藏 导读: sys_execve    | - do_execve | | - search_binary_handler                    |- linux_binfmt= elf_format        |- elf_format-> load_elf_binary | - elf_entry = load_elf_interp()           |-   | if  (BAD_ADDR(elf_entry))                 | ...
看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。 本文从四个方面来总结一些内容: 1.底层数据结构:kobject,kset. 2.linux设备模型层次关系:bus_type,device,device_driver. 3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析. 4.面向对象的思想在linux设备模型中的应用分析. 一、底层数据结构:kobject,kset 先说说模型的意义: 总体来说是为了系统地管理所有设备。 在具体实现方面分两个层次: 一是底层数据结构来实现基本对象及其层次关系:kobjects和ksets。 二是基于这两个底 ...
中断服务程序往往都是在CPU关中断的条件下执行的,以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长,否则容易丢失中断信号。为此, Linux将中断服务程序一分为二,各称作“Top Half”和“Bottom Half”。前者通常对时间要求较为严格,必须在中断请求发生后立即或至少在一定的时间限制内完成。因此为了保证这种处理能原子地完成,Top Half通常是在CPU关中断的条件下执行的。具体地说,Top Half的范围包括:从在IDT中登记的中断入口函数一直到驱动程序注册在中断服务队列中的ISR。而Bottom Half则是Top Half根据需要来调度执行的,这些操作允许延迟到稍后 ...
SRC_TREE    :=./ HEADER_PATH    :=arch/arm/boot/compressed BOOT_PATH    :=arch/arm/boot/ KERNEL_PATH    :=arch/arm/kernel ----------------------------------------------------------------------------------------------------------------------- 1 SRC_TREE 目录下的vmlinux经过objcoy后生成二进制文件Image,Image在经过gzip ...
do_execve ->open_exec->dentry_open ....  f->f_dentry = dentry; .... f->f_op = fops_get(inode->i_fop); .... 设置f->f_dentry和f->f_op,我们考察执行ext2的情景,因此f_op将是ext2_file_operations ->search_binary_handler->load_elf_binary->elf_map->do_mmap->do_mmap_pgoff .... vma->vm_f ...
第一章 Kernel 2.4存在的不 足 根据对2.4进程调度的分析,我们总结出看出2.4内核总的特点就是: 内核调度简单有效 内核不可抢占 但是经过对2.4内核的分析,我们也明显看到了它的缺点: 1.调度算法复杂度是O(n),与系统负荷关系 ...
Linux slab 分配器剖析 http://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/index.html 浅谈 Linux 内核开发之网络设备驱动 http://www.ibm.com/developerworks/cn/linux/l-cn-networkdriver/index.html
1:查看是否有存储卡插入 String status=Environment.getExternalStorageState(); if(status.equals(Enviroment.MEDIA_MOUNTED)) { 说明有SD卡插入 } 2:让某个Activity透明 OnCreate中不设Layout this.setTheme(R.style.Theme_Transparent); 以下是Theme_Transparent的定义(注意transparent_bg是一副透明的图片) 3:在屏幕元素中设置句柄 使用Activity.findViewById来取得屏幕上的元素的句柄. 使 ...
Linux平台Cpu使用率的计算 proc文件系统 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。 /proc目录中有一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。此外,在Linux 2.6.0-tes ...
理论 Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。 那Android什么时候结束进程?结束哪个进程呢?之前普遍的认识是Android是依据一个名为LRU(last recently used 最近使用过的程序)列表,将程序进行排序,并结束最早的进程。XDA的楼主又进一步对这个管理机制进行研究,有了如下发现: 1.系统会对进程的重要性进行评估,并将重要性以“ ...
如何查看ANDROID进程信息呢,可以先进入ADB SHELL,然后在PROC文件夹下,有很多对应进程ID号的子文件夹,进入对应的文件夹内,可以看到有以下信息,就可以查询到你的进程信息了。参数如下: /proc//maps 查看进程的虚拟地址空间是如何使用的。 该文件有6列,分别为: 地址:库在进程里地址范围 权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有; 偏移量:库在进程里地址范围 设备:映像文件的主设备号和次设备号; 节点:映像文件的节点号; 路径: 映像文件的路径 每项都与一个vm_area_struct结构成员对应, 范例: 应用程序的正文段(权限为r-xp)从0x ...
Global site tag (gtag.js) - Google Analytics