- 博客(5)
- 收藏
- 关注
原创 linux中的PCB(进程控制块) task_struct(进程描述符)
进程就是处于执行期的程序,线程是进程中的活动的对象。每个线程都拥有一个独立的程序计数器(PC)、栈、和一组寄存器。内核调用的对象是线程而不是进程。在Linux中,线程的实现非常独特,从内核的角度讲,linux并没有线程的概念。Linux把所有的线程都当成进程来实现,内核没有准备特别的调度算法或是定义特别的数据结构来表征线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程,每个线程都拥有自己的task_struct。进程和线程都是通过系统调用clone()创建的,只不过传给系统调用的参数不同而已,我们
2021-06-27 19:39:49 2034 1
原创 binder驱动分析
相关源码文件:/drivers/android/binder.c/drivers/staging/android/binder.c1.binder_init用户态的程序调用 Kernel 层方法需要陷入内核态,进行系统调用(syscall),打开 Binder 驱动方法的调用链为: open-> __open() -> binder_open()。 open() 为用户空间的方法,__open() 便是系统调用中相应的处理方法,内部通过查找会找到对应的内核 binder 驱动的 bin
2021-06-26 01:33:41 765 3
原创 虚拟内存和物理内存
一、从程序到进程:我们都知道Linux下一个C程序的生成分为4个阶段:预编译(.i) --> 编译(.s) --> 汇编成目标文件(.o) --> 链接(可执行文件)1.在预编译阶段,它会修改原始的C程序,将源程序翻译成一个ASCII码的以.i结尾的中间文件。它会读取系统头文件stdio.h的内容,并把它直接插入到程序文本中。2.在编译阶段,编译器将以.i为扩展名的文本文件翻译成以.s作为扩展名的文本文件,它包含一个汇编语言程序。3.在汇编阶段,汇编器将以.s为扩展名的文本文件
2021-06-18 00:55:08 4950 3
原创 启动 ServiceManager 进程
相关源码文件:/system/core/rootdir/init.rc/frameworks/native/cmds/servicemanager/service_manager.c/frameworks/native/cmds/servicemanager/binder.cServiceManager 进程是由 init 进程通过解析 init.rc 文件而创建的service servicemanager /system/bin/servicemanager class core
2021-06-10 01:03:01 397
原创 服务的添加和使用过程
相关源码文件:/frameworks/av/media/mediaserver/main_mediaserver.cpp/frameworks/native/libs/binder/ProcessState.cpp/frameworks/av/media/libmediaplayerservice/MediaPlayerService.cpp/frameworks/native/libs/binder/IServiceManager.cpp/frameworks/native/include/bi
2021-06-02 00:03:09 349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人