issues
search
wittyResry
/
myIssue
My issue mark down^_^ 欢迎吐槽,讨论~~
https://github.com/wittyResry/myIssue/issues
The Unlicense
5
stars
1
forks
source link
Linux and UNIX System Programming Handbook(Volume I)
#13
Open
wittyResry
opened
8 years ago
wittyResry
commented
8 years ago
内存映射
调用系统的mmap()的进程,会在其努力地址空间中创建一个新的内存映射。
内存映射分为两类:
文件映射:将文件的部分区域映射如调用进程的努力内存。映射一旦完成,对文件映射内容的访问则转化为对相应内存区域的字节操作。映射也没会按需自动从文件加载如内存区域。
内存共享
由某一进程所映射的内存可以与其他进程的映射共享。达成共享的方式有二:其一是两个进程都针对某一文件的相同部分加以映射。
fork()创建的子进程自父进程处继承映射。
静态库和共享库
静态库是对某一个已编译的目标模块的库,链接器在解析了引用后,程序对静态库属于个目标模块的副本将其复制到最终的可执行文件中,即所谓的静态链接。当库更新后,需要重新编译,所有引用该库的函数都要与静态库重新链接。
共享库可以解决静态库的问题。运行时载入内存。随后实施运行时链接,解析可执行文件中的函数调用,并且将符号关联起来。运行时共享库代码在内存只保留一份,可供所有运行时的程序使用,从而节约了磁盘空间,并且可以获取最新的版本。
进程通信(IPC)
管道(也就是Shell的"|"操作符)|信号量(用来同步进程的动作)|信号(用来表示事件的发生)
消息队列:进程间交换消息或者数据包。
套接字(Socket)
共享内存:运行两个以上进程共享一块内存。当某进程改变了共享内存的内容时,其他所有进程都会立即了解到这一变化。
wittyResry
commented
8 years ago
信号
它不进是IPC的方法之一,但是其运用也更为普遍,值得深入研究。
信号用称为"软件中断"。进程收到信号,就是为某一时间或异常发生。
内核、其他进程(只要有权限)或者进程自身都可以向进程发送信号。
用户键入中断字符(Control-C)
进程的子进程终止。
进程访问无效的内存地址。(中断)
进程的定时器到期。
kill信号
收到kill信号,可以执行下面其中一个操作:
忽略信号。
被信号杀死。
先挂起,之后再被专门的信号唤起。