4.14课后总结

硬件条件:单个CPU单个核
单任务:一个任务执行完毕之后下个任务才能执行;
多任务:任务可以被中断,中断之后可以执行其他任务;(并发/并行)
单核CPU:并发
多核CPU:并发,并行
进程实现多任务,
特点:①给每个进程分配独立的地址空间,4G的大小!(1G是内核,3G是用户空间:栈,堆,数据段,代码段)
②互不干扰
进程的创建方式:fork vfork system exec函数族
fork>exec函数族>system>vfork;
进程的退出:exit()库函数/清理缓冲 _exit()系统调用API/不清理缓冲;
进程的等待:wait();解决:僵尸进程
《僵尸进程,孤儿进程,守护进程,控制台进程,后台进程》
学习目标:学会创建多任务程序:进程
进程间通信:
父进程————子进程
#include<stdio.h>
#include<united.h>
#include<sys/stat.h>
进程间通信的方式:管道,信号,消息队列,共享内存,信号量,套接字
1.管道可以分为:无名管道,有名管道
知道管道文件的文件描述符,
int pipe(int pipefd[2])
(1)管道:
无名管道:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)
有名管道:不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间)
(2)消息队列:
传送有格式的消息流;
多进程网状套又通信时,消息队列是上上之选;
能实现大规模数据的通信。
(3)共享内存:
减少进入内核空间的次数;
直接使用地址来读写缓存时,效率会更高, 适用于大数据量的通信。
(4)信号量:
当多个进程/线程进行共享操作时,用于资源保护,以防止出现相互干扰的情况;信号量其实是OS创建的一个共享变量,进程在进行操作之前,会先检查这个变量的值,这变量的值就是一个标记,通过这个标记就可以知道可不可以操作,以实现互斥。
(5)套接字

发布了11 篇原创文章 · 获赞 0 · 访问量 213

猜你喜欢

转载自blog.csdn.net/maxiaotiaobutiao/article/details/105724328
今日推荐