当前位置: 首页 > news >正文

网站设计师加油站制作网站 个人

网站设计师加油站,制作网站 个人,网站建设论文答辩题目,做网站 不做源码管道 匿名管道 匿名管道的⽣命周期,是随进程的创建⽽建⽴,随进程的结束⽽销毁 匿名管道的创建,需要通过下⾯这个系统调⽤: int pipe(int fd[2]) 这⾥表示创建⼀个匿名管道,并返回了两个描述符,⼀个是…

管道

匿名管道

匿名管道的⽣命周期,是随进程的创建⽽建⽴,随进程的结束⽽销毁
 

匿名管道的创建,需要通过下⾯这个系统调⽤:

int pipe(int fd[2])
这⾥表示创建⼀个匿名管道,并返回了两个描述符,⼀个是管道的读取端描述符 fd[0] ,另⼀个是管道的写⼊端描述符 fd[1] 。注意,这个匿名管道是特殊的⽂件,只存在于内存,不存于⽂件系统中。

所谓的管道,就是内核⾥⾯的⼀串缓存。从管道的⼀段写⼊的数据,实际上是缓存在内核中的,另
⼀端读取,也就是从内核中读取这段数据。另外,管道传输的数据是⽆格式的流且⼤⼩受限。
 

匿名管道的两个文件描述符都在一个进程,怎么进行进程间通信?

可以使⽤ fork 创建⼦进程, 创建的⼦进程会复制⽗进程的⽂件描述符,这样就做到了两个进程各有两个「 fd[0] 与 fd[1] 」,两个进程就可以通过各⾃的 fd 写⼊和读取同⼀个管道⽂件实现跨进程通信了。

问题:两端都能写入和读出,易造成混乱,

解决:建立两个管道单向传输

对于匿名管道,它的通信范围是存在⽗⼦关系的进程。因为管道没有实体,也就是没有管
道⽂件,只能通过 fork 来复制⽗进程 fd ⽂件描述符,来达到通信的⽬的。
 

对于命名管道,它可以在不相关的进程间也能相互通信。因为命令管道,提前创建了⼀个类型为管
道的设备⽂件,在进程⾥只要使⽤这个设备⽂件,就可以相互通信。
 

消息队列

消息队列⽣命周期随内核,如果没有释放消息队列或者没有关闭操作系统
 

消息队列的通信模式就可以解决。⽐如, A 进程要给 B 进程发送消息, A 进程把数据放在
对应的消息队列后就可以正常返回了, B 进程需要的时候再去读取数据就可以了。同理, B 进程要给 A 进程发送消息也是如此
消息队列是保存在内核中的消息链表,在发送数据时,会分成⼀个⼀个独⽴的数据单元,也就是消
息体(数据块),消息体是⽤户⾃定义的数据类型,消息的发送⽅和接收⽅要约定好消息体的数据类型,所以每个消息体都是固定⼤⼩的存储块,不像管道是⽆格式的字节流数据。如果进程从消息队列中读取了消息体,内核就会把这个消息体删除。
 

不足之处:

  • ⼀是通信不及时,
  • ⼆是附件也有⼤⼩限制
  • 存在⽤户态与内核态之间的数据拷⻉开销
     

因为进程写⼊数据到内核中的消息队列时,会发⽣从⽤户态拷⻉数据到内核态的过程,同理另⼀进程读取内核中的消息数据时,会发⽣从内核态拷⻉数据到⽤户态的过程
 

共享内存

消息队列的读取和写⼊的过程,都会有发⽣⽤户态与内核态之间的消息拷⻉过程。

共享内存的⽅式,就很好的解决了这⼀问题。
共享内存的机制,就是拿出⼀块虚拟地址空间来,映射到相同的物理内存中。
 

信号量

为了防⽌多进程竞争共享资源,⽽造成的数据错乱,所以需要保护机制,使得共享的资源,在任意时刻只能被⼀个进程访问。正好, 信号量就实现了这⼀保护机制。
 

信号量其实是⼀个整型的计数器,主要⽤于实现进程间的互斥与同步,⽽不是⽤于缓存进程间通信的数据。
 

信号量表示资源的数量,控制信号量的⽅式有两种原⼦操作:

  • ⼀个是 P 操作,这个操作会把信号量减去 1,相减后如果信号量 < 0,则表明资源已被占⽤,进程需阻塞等待;相减后如果信号量 >= 0,则表明还有资源可使⽤,进程可正常继续执⾏。
  • 另⼀个是 V 操作,这个操作会把信号量加上 1,相加后如果信号量 <= 0,则表明当前有阻塞中的进程,于是会将该进程唤醒运⾏;相加后如果信号量 > 0,则表明当前没有阻塞中的进程;

P 操作是⽤在进⼊共享资源之前, V 操作是⽤在离开共享资源之后,这两个操作是必须成对出现的。
 

信号

信号是进程间通信机制中唯⼀的异步通信机制,因为可以在任何时候发送信号给某⼀进程,⼀旦有信号产⽣,我们就有下⾯这⼏种,⽤户进程对信号的处理⽅式。

  • 执⾏默认操作。 Linux 对每种信号都规定了默认操作,例如,上⾯列表中的 SIGTERM 信号,就是终⽌进程的意思。
  • 捕捉信号。我们可以为信号定义⼀个信号处理函数。当信号发⽣时,我们就执⾏相应的信号处理函数。
  • 忽略信号。当我们不希望处理某些信号的时候,就可以忽略该信号,不做任何处理。有两个信号是应⽤进程⽆法捕捉和忽略的,即 SIGKILL 和 SEGSTOP ,它们⽤于在任何时候中断或结束某⼀进程。
     

Socket

跨网络通信

前⾯提到的管道、消息队列、共享内存、信号量和信号都是在同⼀台主机上进⾏进程间通信,那要想跨⽹络与不同主机上的进程之间通信,就需要 Socket 通信了。
 

根据创建 socket 类型的不同,通信的⽅式也就不同:

  • 实现 TCP 字节流通信: socket 类型是 AF_INET 和 SOCK_STREAM;
  • 实现 UDP 数据报通信: socket 类型是 AF_INET 和 SOCK_DGRAM;
  • 实现本地进程间通信: 「本地字节流 socket 」类型是 AF_LOCAL 和 SOCK_STREAM,「本地数据报 socket 」类型是 AF_LOCAL 和 SOCK_DGRAM。另外, AF_UNIX 和 AF_LOCAL 是等价的,所以AF_UNIX 也属于本地 socket;
http://www.yayakq.cn/news/190918/

相关文章:

  • 瑞丽市建设局网站宁波正规seo企业优化
  • 关于制作网站的方案服务好质量好的网站制作
  • 企业为何要做网站软件设计师考什么
  • 网站整套模板项目代码下载做关于时尚网站的目的
  • 哪个网站的图片专门做详情页的wordpress 分类目录前缀
  • 服装网站建设环境分析网站建设与运行
  • 网站推广公司水果茶带论坛的网站模板下载
  • 资讯网站做appwordpress版主
  • 推广网站排名网站制作流程有哪些步骤?
  • 石柱土家族网站建设编程跟做网站
  • 米拓建站教程厦门有什么好企业网站
  • 网站界面设计欣赏长沙专业竞价优化首选
  • asp.net网站开发实例教程 下载最好免费的高清视频
  • wordpress编辑器图片小企业如何优化网站建设
  • 石家庄模板自助建站网站建设在windos的设置
  • 电子商务网站建设基础步骤网站开发如何兼容不同ie
  • 收企业做网站备案地理云门户网站建设
  • 三明市住房和城乡建设局网站西安注册公司在哪个网站系统
  • 如何做高校的网站版面设计好品质高端网站设计厂家
  • 信阳网站建设找汉狮高端自适应网站
  • 贵阳做网站哪家好wordpress如何设置页面布局
  • 河南建设资格执业网站躺平淘宝设计家官网
  • 长沙网站建设策划自己写的html放入wordpress
  • 做网站图片属性wordpress手机底部导航
  • 建设网站意义网站做支付接口
  • 网站开发建设价格附件湖北省和建设厅网站首页
  • 西安wordpress建站企业管理咨询服务协议
  • 天津网站建设推广服务山东省东营市建设局网站
  • 音乐网站建设论文的目的和意义手机上编写app
  • php网站服务器搭建网站可分析