波奇学Linux:动态库加载和进程通信

 进程加载的地址

波奇学Linux:动态库加载和进程通信_第1张图片

逻辑地址加载到物理内存时,每一条指令有自己的地址。此时指令有逻辑地址和物理地址

如何执行第一条指令?

代码有entry入口地址,cpu的eip寄存器保存入口地址,进程获得入口地址后运行,同时页表建立物理地址和虚拟地址的映射关系,然后开始执行代码。

cpu读取的地址时虚拟地址,虚拟地址经过页表映射变成物理地址。

动态库的地址:相对偏移地址

动态库被加载到固定地址空间位置是不可能的,库可以在虚拟内存中任意位置加载

让自己内部函数不要采用绝对地址,只表示每个函数在库中的偏移量

fPIC:产生位置无关码,直接用偏移量进行对库中函数进行编址。

进程通信:两个进程或者多个进程实现数据层面的交互

进程通信:基本数据,发送命令,某种协同,通知

进程通信的本质:让不同的进程看到同一份资源,资源是特定形式的内存空间,由操作系统提供。

我们进程访问这个空间,进行通信,本质上就是访问操作系统!进程代表的就是用户,"资源"从创建,使用,释放-系统调用接口。

一般操作系统由独立的通信模块,属于文件系统,IPC通信模块。

进程通信是有标准的。

你可能感兴趣的:(Linux,linux,运维,服务器)