本文主要是介绍波奇学Linux:动态库加载和进程通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
进程加载的地址
逻辑地址加载到物理内存时,每一条指令有自己的地址。此时指令有逻辑地址和物理地址
如何执行第一条指令?
代码有entry入口地址,cpu的eip寄存器保存入口地址,进程获得入口地址后运行,同时页表建立物理地址和虚拟地址的映射关系,然后开始执行代码。
cpu读取的地址时虚拟地址,虚拟地址经过页表映射变成物理地址。
动态库的地址:相对偏移地址
动态库被加载到固定地址空间位置是不可能的,库可以在虚拟内存中任意位置加载
让自己内部函数不要采用绝对地址,只表示每个函数在库中的偏移量
fPIC:产生位置无关码,直接用偏移量进行对库中函数进行编址。
进程通信:两个进程或者多个进程实现数据层面的交互
进程通信:基本数据,发送命令,某种协同,通知
进程通信的本质:让不同的进程看到同一份资源,资源是特定形式的内存空间,由操作系统提供。
我们进程访问这个空间,进行通信,本质上就是访问操作系统!进程代表的就是用户,"资源"从创建,使用,释放-系统调用接口。
一般操作系统由独立的通信模块,属于文件系统,IPC通信模块。
进程通信是有标准的。
这篇关于波奇学Linux:动态库加载和进程通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!