![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
凝视阳光、
啥?还有简介?
展开
-
进程的切换过程
切换方式进程的切换,实质上就是被中断运行进程与待运行进程的上下文切换。从主观上来理解。只分为两步:1.切换新的页表,然后使用新的虚拟地址空间2.切换内核栈,加入新的内容(PCB控制块,资源相关),实现上下文切换现在从这两句话理解,来看看这些东西到底是什么。1,虚拟地址空间虚拟地址空间,顾名思义:就是虚拟的,不是真的地址空间在早期的计算机中,我们的计算机内存都非常的小。如果计算机内存是...原创 2019-10-17 18:24:15 · 18520 阅读 · 10 评论 -
进程通信1-管道通信
管道通信顾名思义就是创建一根管道,这个管道有读写两端管道有两种:匿名管道和命名管道1.匿名管道匿名管道只能父子进程间通信,如图,他会创建两个读写端分别对应父子进程,只要父子进程分别关闭读,或者写端,就可以一个进程发送信息给另一个进程。规则:1.如果没有数据可读,或者管道满的时候,read和write调用都会阻塞2.如果有读写端被关闭,调用返回03.写入的数据量小于PIPE_BUF时,...原创 2019-10-05 22:46:28 · 144 阅读 · 0 评论 -
进程通信2-共享内存
共享内存,就是允许两个不相关的进程访问同一个逻辑内存,然后进行通信1.数据的共享进程间的数据直接访问内存,是最快的进程通信方式,但并未提供同步机制,通常需要用其他的机制来同步,例如信号量2.共享内存代码申请的适合,尽量是一页大小4k的倍数申请,否则容易产生内存碎片这里用一张图来说明:两个不同的虚拟地址通过页表映射到物理空间的同一区域,它们所指向的这块区域即共享内存。代码实现:int ...原创 2019-10-06 00:21:45 · 116 阅读 · 0 评论 -
进程通信3-消息队列
消息队列和之前的管道还有共享内存几乎是一个性质,三种通信都需要获得一块东西,然后通过这个东西通信。命名管道:mkfifo创建一个带名字的管道,然后进程open进来消息队列:msgget创建一个消息队列,然后进程也是msgget进来,只是他发的消息是结构体形式,第一个参数用来当标识,就好比一个储物间,有很多柜子放东西,这个第一个参数就是标记几号柜子的,然后你想从几号柜子取就填几号。共享内存:s...原创 2019-10-06 23:57:54 · 111 阅读 · 0 评论 -
进程通信4--信号量(Semaphore)
信号量是什么?(1)信号量本质上是一个具有原子性的计数器,用来描述临界资源的,不能用全局变量count加加减减替换(因为他没有原子性)。(2)信号量以保护临界资源为目的,但他本身也是个临界资源;他控制多个进程对共享资源的访问,通常描述临界资源当中,临界资源的数量,常常被当做锁来使用,防止一个进程访问另外一个进程正在使用的资源(3)其中最简单的信号量=1,也叫做二元信号量(互斥锁),可控制单个...原创 2019-10-08 14:21:55 · 320 阅读 · 0 评论