2.Linux的等待队列 因某事件等待 的队列头指针 next next NULL 处理各种等待时,Linux把等待 task task task 队列和等待的事件联系在一起。需 要等待事件的进程,根据等待的事 件进入不同的等待队列。 进程描述符 进程描述符 进程描述符 8.1.3 Linux进程间的通信一消息队列 。Liux为进程间的通信提供多种机制,如有消息队列、信号、信号量、管道以及 共享内存储区等。信号用于一个进程向另一个进程发通知,有某个事件发生:信号量 用于进程间取得同步:消息队列、管道、共享存储区,都用于在进程之间传递数据。 ·消息队列是进程间的一种异步通信方法。所谓“异步”,即发送消息的进程在消 息发出之后,不必等待接收进程做出反应,就可以去做其他的事情了。 。在进程间通信前,先要建立消息队列。有了消息队列,进程就可以向(或从)消 息队列发送(或接收)消息了。消息在消息队列里,按照到达的先后顺序排成队。类 型相同的消息,先进入队列的先被接收。Lux对消息的长度没有限制。消息队列使用 完毕后,应该予以释放(即删除)
消息队列是进程间的一种异步通信方法。所谓“异步”,即发送消息的进程在消 息发出之后,不必等待接收进程做出反应,就可以去做其他的事情了。 Linux为进程间的通信提供多种机制,如有消息队列、信号、信号量、管道以及 共享内存储区等。信号用于一个进程向另一个进程发通知,有某个事件发生;信号量 用于进程间取得同步;消息队列、管道、共享存储区,都用于在进程之间传递数据。 处理各种等待时,Linux把等待 队列和等待的事件联系在一起。需 要等待事件的进程,根据等待的事 件进入不同的等待队列。 . 2. Linux的等待队列 因某事件等待 的队列头指针 next task next task NULL task 进程描述符 进程描述符 进程描述符 • 8.1.3 Linux进程间的通信—消息队列 . . 在进程间通信前,先要建立消息队列。有了消息队列,进程就可以向(或从)消 息队列发送(或接收)消息了。消息在消息队列里,按照到达的先后顺序排成队。类 型相同的消息,先进入队列的先被接收。Linux对消息的长度没有限制。消息队列使用 完毕后,应该予以释放(即删除)
8.2 Linux的存储管理 。 8.2.1 Linux的虚拟存储空间 1.Linux的虚拟存储空间 在Liux中,虚拟地址用32个二进制位表示。这意味系统向每个进程提供的虚存 空间,最多可以高达22字节=4GB。 .Liux把4GB的虚拟空间划分为两部分:最高的1GB用于内核本身,称为“系统 空间”,为所有的进程共享:较低的3GB供进程使用,称为“用户空间” 。进程都有自己的正文段,数据段, 堆栈段等。Linux按这种逻辑单位,把虚 进程A的 进程B的 进程N的 拟空间划分成若干分区,然后进行分页。 用户空间 用户空间 用户空间 4GB (3GB) (3GB) (3GB) 这样,进程每一个分区段位于一个连续 的虚拟空间 的虚拟空间里,那里的内容有相同的特 性,有利于对它们分别实行存储保护和 共享的系统空间(3GB) 共享。另外,虚拟空间在各个分区之间 可以不连续。即进程所用的虚拟地址并不一定是连成一片的,可以有空洞存在
进程都有自己的正文段,数据段, 堆栈段等。Linux按这种逻辑单位,把虚 拟空间划分成若干分区,然后进行分页。 这样,进程每一个分区段位于一个连续 的虚拟空间里,那里的内容有相同的特 性,有利于对它们分别实行存储保护和 共享。另外,虚拟空间在各个分区之间 可以不连续。即进程所用的虚拟地址并不一定是连成一片的,可以有空洞存在。 • 8.2.1 Linux的虚拟存储空间 1. Linux的虚拟存储空间 在Linux中,虚拟地址用32个二进制位表示。这意味系统向每个进程提供的虚存 空间,最多可以高达2 32 字节 = 4GB。 8.2 Linux的存储管理 . . Linux把4GB的虚拟空间划分为两部分:最高的1GB用于内核本身,称为“系统 空间”,为所有的进程共享;较低的3GB供进程使用,称为“用户空间”。 . 进程A的 用户空间 (3GB) 进程B的 用户空间 (3GB) 进程N的 用户空间 (3GB) 共享的系统空间(3GB) 4GB 的虚拟空间
2.多级页表的地址变换 .Liux向用户提供的最大虚拟空间为4GB。由于内存块长度是4KB,因此一个虚拟 地址空间最多可有22(4GB/4KB=M)个页面。即用户虚拟地址空间的页表,最多要用一 百万个表项来记录页面与物理块的对应关系,不利于存储空间的利用。 .Liux在对虚拟地址空间进行分页时,采用两级页表的机制:先是对虚拟地址空间 进行分页,形成页表:再对页表进行分页,形成页表的页表。 页面索引号 页号 位移量 32位虚拟地址: pI p2 10位→一 10位一 12位 用户虚拟 地址空间 个页面 页表 页表索引 1M个表项 1024个表项 M个页面口 (1024个页面) 个页面
2. 多级页表的地址变换 Linux向用户提供的最大虚拟空间为4GB。由于内存块长度是4KB,因此一个虚拟 地址空间最多可有2 20(4GB/4KB=1M)个页面。即用户虚拟地址空间的页表,最多要用一 百万个表项来记录页面与物理块的对应关系,不利于存储空间的利用。 . . Linux在对虚拟地址空间进行分页时,采用两级页表的机制:先是对虚拟地址空间 进行分页,形成页表;再对页表进行分页,形成页表的页表。 页面索引号 p1 页号 p2 位移量 32位虚拟地址: d 10位 10位 12位 一个页面 一个页面 用户虚拟 地址空间 1M个页面 1M个表项 (1024个页面) 1024个表项 页表 页表索引