当前位置:首页 » 服务存储 » 共享存储区管道
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

共享存储区管道

发布时间: 2022-08-20 04:57:47

Ⅰ 怎么理解进程间的通信啊怎么理解管道啊

进程协同工作时,需要互相交换信息,有些情况下进程间交换的少量信息,有些情况下进程间交换大批数据。进程通信即为两个并行进程可以通过互相发送消息进行合作,消息是通过消息缓冲而在进程之间相互传递的。 如进程同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作;

进程间通信的方式有:信号通信机制; 共享存储区通信机制;共享文件通信机制;消息传递通信机制.

管道是连接读写进程的一个特殊文件,允许进程按先进先出方式传送数据,也能使进程同步执行操作。发送进程以字符流形式把大量数据送入管道,接收进程从管道中接收数据,所以叫管道通信.

管道的实质是一个共享文件,基本上可借助于文件系统的机制实现,包括(管道)文件的创建、打开、关闭和读写.进程对通信机构的使用应该互斥,一个进程正在使用某个管道写入或读出数据时,另一个进程就必须等待.发送者和接收者双方必须能够知道对方是否存在,如果对方已经不存在,就没有必要再发送信息.管道长度有限,发送信息和接收信息之间要实现正确的同步关系,当写进程把一定数量的数据写入管道,就去睡眠等待,直到读进程取走数据后,把它唤醒。

Ⅱ 共享内存是什么意思

共享内存也说显卡显存,指在多处理器的计算机系统中,可以被不同中央CPU访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是Unix下的多进程之间的通信方法,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。

Ⅲ 分布式进程通信的概念

进程和进程通信是操作系统中的一个最基本的概念;
程序是一个在时间上按照严格次序的前后相继的操作序列,是一个静态的概念;
进程是一个动态的概念,它是一个程序对某个数据集的执行过程;
正在运行的进程叫做运行态;
等待分配CPU的进程叫做就绪态;
等待其它的条件的进程叫做等待态;
进程状态反映出进程执行过程的变化;
要保证系统正常地工作,操作系统必须对进程的创建、撤消与状态转换进行控制;
从进程的观点看,操作系统的核心则是控制和协调这些进程的运行,解决进程之间的通信。
在解决单机环境下操作系统的进程通信中:
BSD UNIX 引入了管道(pipe)、命名管道(named pipe)和软中断信号(signal)机制;
AT&T UNIX引入了消息(message)、共享存储区(shared memory)和信号量(semaphore)等;
UNIX系统的消息、共享存储区和信号量统称为进程通信(inter process communication,IPC)机制;
IPC机制也不适应于网络环境中的进程通信。

Ⅳ 求教:管道通信、消息缓冲队列和共享存储区,这三种通信机制那些提供了发送进程和接收进程之间的同步功能

同学,你是郭卫斌的学生吧

Ⅳ UNXI作业

1. UNIX系统有哪些基本特征?
a. 开放性; b. 多用户,多任务环境; c. 功能强大,实现高效; d. 提供了丰富的网络功能.
2. UNIX系统核心分成哪两大部分?各包含哪些功能?
a. UNIX系统核心分为进程控制子系统部分和文件子系统部分;
b. 进程控制子系统包含进程控制,进程通信,存贮器管理和进程调度功能;文件子系统包含文件管理,高速缓冲机制和设备驱动程序的功能.
3. UNIX系统中的PCB含哪几部分?并用图来说明它们之间的关系.
a. UNIX系统中的PCB含四部分:进程表项,U区,进程区表和系统区表项;
4. 进程映象含哪几部分?其中系统级上下文的动态部分的作用是什么?
a. 进程映象(Process Image)包含三部分:用户级上下文,寄存器上下文和系统级上下文;
b. 系统级上下文的动态部分包含核心栈和若干层寄存器上下文,它的作用是当因中断或系统调用而进入核心态时,核心把一个寄存器上下文压入核心栈,退出系统调用时,核心又将弹出一个寄存器上下文,在进行上下文切换时,核心将压入老进程的上下文层,而弹出新进程的上下文层.
5. 在UNIX系统中,用于进程控制的系统调用有哪些(主要的)?它们的主要功能是什么?
a. fork,用于创建一个新进程;
b. exec,改变进程的原有代码;
c. exit,实现进程的自我终止;
d. wait,将调用进程挂起,等待子进程终止;
e. getpid,获取进程标志符;
f. nice,改变进程的优先级.
6. 为创建一个新进程,需做哪些工作?
a. 为新进程分配一进程表项和进程标志符; b. 检查同时运行的进程数目;
c. 拷贝进程表项中的数据; d. 子进程继承父进程的所有文件;
e. 为子进程创建进程上下文; f. 子进程执行.
7. 为何要采取进程自我终止方式?如何实现exit?
a. 为了及时回收进程所占用的资源,并减少父进程的干预,UNIX系统利用exit来实现进程的自我终止;
b. 实现exit,核心应该做的工作是:关闭软中断; 回收资源; 写记帐信息; 置进程为"僵死状态".
8. UNIX系统采用什么样的进程调度算法?其优先级是如何计算的?
a. UNIX系统采用的是多级反馈队列轮转调度算法;
b. 每隔1秒,核心按如下公式重新计算用户优先数:优先数=(最近使用CPU的时间/2)+基本用户优先数.
9. 试说明信号与中断两种机制间的异同处?
a. 相似处:信号和中断都采用了相同的异步通信方式;
当检测出有信号或中断请求时,都是暂停正在执行的程序而转去执行相应的处理程序;两者都是在处理完毕后返回到原来的断点;对信号或中断都可进行屏蔽;
b. 差异处:中断有优先级,而信号没有优先级,即所有信号都是平等的;
信号处理程序是在用户态下运行的,而中断处理程序则是在核心态下运行的;
中断响应是及时的,而信号响应通常都有较大的时间延迟.
10 扼要说明信号机制中信号的发送和对信号的处理功能?
a. 信号的发送是指由发送进程把信号送到指定进程的信号域的某一位上;
b. 对于对信号的处理功能:首先,-利用系统调用signal(sig,func)预置对信号的处理方式,func=1时,该类信号被屏蔽;-func=0时,进程收到信号后终止自己;-func为非0,非1类整数时,func的值即作为信号处理程序的指针.
然后,--如果进程收到的软中断是一个已决定要忽略的信号(func=1),进程不作任何处理返回,-进程收到软中断后便退出(func=0);-执行用于设置的软中断处理程序.
11 什么是管道?无名管道和有名管道的主要差别是什么?
a. 管道是指能够连接一个写进程和一个读进程的,并允许它们以生产者-消费者方式进行通信的一个共享文件,又称为pipe文件;
b. 无名管道是一个临时文件,是利用系统调用pipe()建立起来的无名文件,没有路径名,只有调用pipe的进程及其子孙进程才能识别此文件描述符而利用该文件(管道)进行通信;有名管道是利用mknod系统调用建立的,是可以在文件系统中长期存在的,既有路径名的文件,其它进程可以知道其存在,并利用该路径名来访问该文件.
12 读,写管道时应遵循哪些规则?
a. 对pipe文件大小的限制; b. 进程互斥;
c. 进程写管道时,检查是否有足够的空间存放要写的数据,若有,则写入,若无,则由核心对该索引结点做出标志,然后让写进程睡眠等待,直到读进程读走数据后,再将写等待进程唤醒;
d. 进程读管道时,检查是否有足够的要读的数据,若有,则进程从读指针的初始值处去读数据,每读出一块后,便增加地址项的大小,读结束后由核心修改索引结点中的读指针,并唤醒所有等待的写进程,若无,则在读完后,进程暂时进入睡眠等待,直到写进程又将数据写入管道后,再将读进程唤醒.
13 在消息机制中,有哪些系统调用?并说明它们的用途.
在UNIX中,消息机制向用户提供了四个系统调用:
a. msgget(),用来建立一消息队列,或者获取一消息队列的描述符;
b. msgsnd(),用于向指定的消息队列发送一个消息,并将该消息链接到该消息队列的尾部;
c. msgrcv(),用于从指定的消息队列中接收指定类型的消息;
d. msgctl(),用来读取消息队列的状态信息并进行修改.
14 在共享存储区机制中,有哪些系统调用?并扼要说明它们的用途.
a. shmget(),建立一共享存储区;
b. shmat(),将共享存储区附接到进程的虚地址空间上;
c. shmdt(),把共享存储区与新进程断开;
d. shmct(),对共享存储区的状态信息进行读取和修改,也可以断开进程与共享存储区的连接.
15 核心在执行shmget系统调用时,需完成哪些工作?
a. 首先检查共享存储区表,若找到指定key的表项,表明该共享区已经建立,此时返回该表项的描述符shmid;
b. 若未找到指定的key表项,而flag标志又为IPC_CREAT,且参数size值在系统限制值内,则分配一系统空闲区作为共享区的页表区,分配响应的内存块,再将这些块号填入页表中;
c. 核心在共享存储区和系统区表中,为新建立的共享区分配一空表项,并在共享存储区表填上存储区的关键字及其大小,共享区页表的始址,指向系统区表项的指针等,最后返回共享存储区的描述符---shmid.
16 在信号量集机制中,有哪些系统调用?并说明它们的用途.
a. semget(),建立信号量集; b. semop(),对信号量进行操作.
17 核心是如何对信号量进行操纵的?
a. 核心根据sem_op来改变信号量的值,可分为3种情况;
b. sem_op的值为正,则将其值加到信号量的值上,它相当于通常的V操作;
c. sem_op的值为负,相当于P操作,若信号量的值大于操作值的绝对值,则核心将一个负整数加到信号量值上,否则,核心将已经操作了的信号量,恢复到系统调用开始时的值;
d. 若(sem_flg&IPC_NOWAIT)为真,便立即返回,否则,让进程睡眠等待.
18 为实现请求调页管理,在UNIX系统中,配置了哪些数据结构?
a. 页表; b. 磁盘块描述表; c. 页框数据表; d. 对换使用表.
19 在UNIX系统中,如何改变有效页的年龄?并用实例说明之.
a. 一个页可计数的最大年龄,取决于它的硬件设施;
b. 对于只设置两位作为年龄域时,其有效页的年龄只能取值为0,1,2,3,当该页的年龄为0,1,2时,该页处于不可换出状态,而当其年龄达到3时,则可为换出状态,每当内存中的空闲页面数低于某规定的低限时,核心便唤醒换页进程,又换页进程取检查内存中的每一个活动的,非上锁的区,对所有有效区的
年龄字段加1,对于那些年龄已增至3的页便不再加1,而是将它们换出,如果这种页已被进程访问过,便将年龄域中的年龄降为0.
20 当需访问的缺页是在可执行文件上或在对换设备上时,应如何将它调入内存?
核心先为缺页分配一内存页,修改该页表项,使之指向内存页,并将页面数据表项放入相应的散列队列中,然后把该页从对换设备上调入内存,当I/O操作完成时,核心把请求调入该页的进程唤醒.
21 在将一页换出时,可分为哪几种情况?应如何处理这些情况?
a. 若在对换设备上已有被换出页的拷贝,且被换出页的内容未被修改,则此时核心不必将该页重写回对换设备上,而只需将该页的页表项中的有效位清零,并将页框数据表项中的引用计数减1,最后将该页表项放入空闲页链表中;
b. 若在对换设备上没有被换出的拷贝,则换出进程应将该页写到对换设备上,可采用页面链集中写入;
c. 在对换设备上已有换出页的副本,但该页内容已被修改过,此时核心将该页在对换设备上的原有空间
释放,再重新将该页拷贝到对换设备上,使在对换设备上的拷贝内容总是最新的.

Ⅵ linux 管道原理

Linux原理的学习,我打算由浅入深,从上之下,也就是先了解个大概再逐个深入。先了解一下Linux的进程先。

一、Linux进程上下文

Linux进程上下文,我理解就是进程组成元素的集合。包括进程描述符tast_struct,正文段,数据段,栈,寄存器内容,页表等。

1)tast_struct

它是一种数据结构,存储着进程的描述信息,例如pid,uid,状态,信号项,打开文件表等。是进程管理和调度的重要依据。

2)用户栈和核心栈

顾名思义,用户栈是进程运行在用户态使用的栈,含有用户态执行时候函数调用的参数,局部变量等;核心栈是该进程运行在核心态下用的栈,保存调用系统函数所用的参数和调用序列。这两个栈的指针都保存在tast_struct结构中。

3)寄存器

保存程序计数器,状态字,通用寄存器,栈指针。

4)页表

线性地址到物理地址的映射

5)正文段,数据段。

二、Linux进程的状态

Linux中进程共有5个状态:就绪,可中断睡眠,不可中断睡眠,暂停,僵死。也就是说,linux不区分就绪和运行,它们统一叫做就绪态。进程所处的状态记录在tast_struct中。

三、进程的控制

1)进程树的形成

计算机启动后,BIOS从磁盘引导扇区加载系统引导程序,它将Linux系统装入内存,并跳到内核处执行,Linux内核就执行初始化工作:初始化硬件、初始化内部数据结构、建立进程0。进程0创建进程1,进程1是以后所有创建的进程的祖先,它负责初始化所有的用户进程。进程1创建shell进程,shell进程显示提示符,等待命令的输入。

2)进程的创建

任何一个用户进程的创建都是由现有的一个进程完成的,进程的创建要经过fork和exec两个过程。Fork是为新进程分配相应的数据结构,并将父进程的相应上下文信息复制过来。Exec是将可执行文件的正文和数据转入内存覆盖它原来的(从父进程复制过来的),并开始执行正文段。

3)进程的终止

系统调用exit()就可自我终结,exit释放除了tast_struct以外的所有上下文,父进程收到子进程终结的消息后,释放子进程的tast_struct。

4)进程的调度

进程的调度是由schele()完成的,一种情况是,当处理机从核心态向用户态转换之前,它会检查调度标志是否为1,如果是1,则运行schele(),执行进程的调度。另一种情况是进程自动放弃处理机,时候进行进程调度。

进程的调度过程分为两步,首先利用相关策略选择要执行的进程,然后进行上下文的切换。

四、进程的通信

进程的通信策略主要有,消息,管道,消息队列,共享存储区和信号量。

1)信息

消息机制主要是用来传递进程间的软中断信号,通知对方发生了异步事件。发送进程将信号(约定好的符号)发送到目标进程的tast_struct中的信号项,接收进程看到有消息后就调用相应的处理程序,注意,处理程序必须到进程执行时候才能执行,不能立即响应。

2)管道

我理解就是两个进程使用告诉缓冲区中的一个队列(每两个进程一个),发送进程将数据发送到管道入口,接收进程从管道出口读数据。

3) 消息队列

消息队列是操作系统维护的一个个消息链表,发送进程根据消息标识符将消息添加到制定队列中,接收进程从中读取消息。

4)共享存储区

在内存中开辟一个区域,是个进程共享的,也就是说进程可以把它附加到自己的地址空间中,对此区域中的数据进行操作。

5)信号量

控制进程的同步。

Ⅶ 如何利用管道机制,共享存储区机制进行进程间的通信

# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 # 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

Ⅷ 消息通信,共享存储区,管道通信各有什么特点

队列通信中的消息有明显的生命周期,消息有传递的过程,有通知的过程,消息有失效性,有先后关系。
而共享内存没有上面这些特点。共享内存在使用时要解决互斥的问题。

Ⅸ 共享内存和消息队列,FIFO,管道传递消息的区别

消息队列:用于消息,不是简单的数据信息传递,消息队列还包括消息有优先级、消息到达通知等丰富内容。

信号机制:进程间事件通知的场合使用,比如进程A完成了某业务,通知进程B去干什么,达到了沟通的目的。当然仅仅传递了信号没有丰富的信息传递,不过现在传递信号也可附带数据了。

管道:低级的通信机制,消息队列比管道高级多了,管道分PIPE和FIFO,PIPE是无名的,所以只能在进程内或父子进程间通信,FIFO可任何两个进程间通信了。不过这两个依然比较低级,完成高级的应用服务器还需要消息队列等。

扩充:
早期unix只有PIPE、FIFO、信号,后来开发了消息队列、信号量、共享内存。

Ⅹ 共享存储区通信有哪些优点使用上有哪些限制

共享存储区通信的优点有:常用的集中式多处理机使用的通信机制兼容。

限制有:是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

共享存储是指两个或多个处理机共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。

系统结构

1、无高速缓冲存储器的集中式

这种结构的处理机没有高速缓冲存储器,多个处理机通过交叉开关或多级互联网络等直接访问共享存储器。由于任一存储单元在系统中只有一个备份,这类系统不存在高速缓冲存储器一致性问题,系统的可伸缩性受限于交叉开关或多级互联网络的带宽。

2、基于高速缓冲存储器的集中式

在这种结构的系统中,每个处理机都有高速缓冲存储器,多个处理机一般通过总线与存储器相连。每个处理机的高速缓冲存储器通过侦听总线来维持数据一致性。

3、具有高速缓冲存储器一致性的分布式

这种结构称为高速缓冲存储器一致的非均匀存储访问结构。这类系统的共享存储器分布于符结点之间。结点之间通过可伸缩性好的互联网络相连,每个处理机都能缓存共享单元,高速缓冲存储器一致性的维护是这类系统的关键,决定着系统的可伸缩性。

4、唯高速缓冲存储器的分布式

在这种结构中,每个结点的存储器相当于一个大容量的高速缓冲存储器,数据一致性也在这一级维护。这种系统的共享存储器的地址是活动的。存储单元与物理地址分离,数据可以根据访存模式动态地在各结点的存储器间移动和复制。

5、无高速缓冲存储器一致性的分布式

这种结构称为无高速缓冲存储器一致性的非均匀存储访问结构。它的特点是虽然每个处理机都有高速缓冲存储器,但硬件不负责维护高速缓冲存储器一致性,而由编译器或程序员来维护。