1. 堆栈底层操作系统实现
SS: 栈段寄存器,32位下是一个selector。
EBP:存储栈的底部。 ESP:指向栈的顶部。
当函数调用时:一般是
#进入函数,现在esp指向栈顶,其值即 [CS 和 EIP ]
push ebp #在栈中存储ebp的值, SS[esp] 现在存储了
mov ebp,esp #将当前栈顶位置存储到ebp中.
sub esp,0CCh #在栈中分配局部变量的空间,这里分配了16*c+c = 204 ?
# 现在可以进行各项操作...
# SS[ebp-8] 可以存储一个int 型变量, SS[ebp-12] 可以存储第二个int型变量.
# 退出函数操作:
mov esp, ebp # 恢复栈顶.
pop ebp # 现在栈顶指向的是[CS 和 EIP]
ret # 恢复CS, EIP
2. linux 进程间通信方式
信号、管道、socket、信号量(互斥)、消息队列、共享内存。
消息队列:当进程发消息时,将用户空间的消息发送到内核空间,读消息时进行相反操作。与命名管道相比,消息队列的优势在于,它独立于发送和接收进程而存在,这消除了在同步命名管道的打开与关闭的可能产生的一些困难。