进程执行模式与进程间通讯

执行模式

指令分为特权指令(只能由操作系统内核使用的指令)和非特权指令(只能由用户程序使用的指令),因为指令有特权和非特权之分,所以 CPU 也分为 2 种执行模式:系统态(可以执行所有指令,使用所有资源以及改变 CPU 状态)和用户态(只能执行非特权指令)。

CPU 的系统态和用户态之间的切换。

进程间通讯

当进程之间需要数据传输、共享数据时,进程间就需要互相通讯,通讯方式有如下几种,这里只是简单概括一下,不展开讲,咱的重点在于多线程,进程咱们简单了解一下就可以,感兴趣的同学可以根据要点进行深入学习。

管道(Pipe)

管道是半双工通讯,数据是单向流动,要建立进程间互相通讯,则需要 2 个管道,这种通讯方式只能在亲戚关系的进程间使用,比如父子进程。

流管道(Flow Pipe)

流管道是管道进化来的,数据不再是单向流动,可以双向流动,但是依旧是只能在亲戚关系的进程间使用。

有名管道(Named Pipe)

有名管道提供了新的功能,就是给管道设置名字,它改善了上面 2 种管道通讯方式,支持了非亲戚关系的进程通讯。

信号量(Semophore)

信号量相当于计数器,利用它来控制多个进程访问共享资源,当一个进程A在访问共享资源时,信号量防止其他进程来访问,只有当进程A不访问共享资源了,其他进程才能访问。

信号(Signal)

信号可以在任何时候发给某一进程,不需要知道该进程当前的状态,如果对方进程未执行,信号会存在内核中,直到进程执行后传递给它;如果对方进程是阻塞,则信号会延迟传递,等到对方进程阻塞取消后才传递给它。

消息队列(Message Queue)

消息队列是存放在内核中的链表,可以有多个进程对这个链表进行写入和读取,它解决了信号传递信息少、管道只能传输无格式字节流和缓冲区大小受限的缺点。目前有 POSIX 消息队列和 System V 消息队列。

共享内存(Shared Memory)

共享内存即为一段能被其他进程访问的内存,多个进程访问同一个内存,达到了通讯的效果。

套接字(Socket)

套接字就是我们网络编程里面的那个套接字,可以通过网络也可以在本机进行通信,它的好处在于可以跨主机进行通信。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值