OS问题:什么是进程,进程的通信方式有哪些
我们编写的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当运行这个可自行文件后,它会被装载到内存中,接着CPU会执行程序中的每一条指令,这个运行中的程序,就是进程。进程是资源分配的基本单位。
管道:生命周期随进程的创建而建立,随进程的结束而销毁
命名管道:在文件系统中可见,需手动删除(unlink),任意进程均可通过文件名打开管道通信。
匿名管道:依赖内核缓冲区,无磁盘文件实体,随进程结束而销毁,用于具有亲缘关系的进程
消息队列:生命周期随内核,如果没有释放或关闭操作系统,就会一直存在
消息队列是保存在内核中的消息链表,在发送数据时,会分成一个个独立的数据单元(消息体),是用户自定义的数据类型,消息体有一个最大长度限制,全部消息体的总长度也是有上限。
每条消息具有属性:一个表示优先级的整数,消息数据部分的长度,消息数据本身。
共享内存:
共享内存机制就是拿出一块虚拟地址空间来,映射到相同的物理内存中。
信号量:
整型的计数器,用于实现进程间的互斥与同步。
同步就将信号量初始化为0
互斥就为1
信号量有两个操作
P操作减一个信号量,V操作加一个信号量
P操作:这个操作会把信号量减去1,相减后如果信号量<0,则表明资源已被占用,进程需阻塞等待;相减后如果信号量>=0,则表明还有资源可使用,进程可正常继续执行。
V操作:这个操作会把信号量加上1,相加后如果信号量<=0,则表明当前有阻塞中的进程,于是会将该进程唤醒运行;相加后如果信号量>0,则表明当前没有阻塞中的进程;
信号:
对于异常情况下的工作模式,就需要用信号的方式来通知进程
Socket:
跨网络与不同主机上的进程之间通信,就需要Socket通信