嵌入式系统开法小白学习笔记(15)

上期回顾

嵌入式开发小白学习笔记(14)

嵌入式系统开发

线程进程概念

(一)多进程多线程

1、多线程的优缺点:
优点:
(1)对用户来说,操作系统将变得更加健壮

一个应用程序无法破坏另一个进程或操作系统的运行

(2)对开发者来说,更容易进行内存的读取和写入
缺点:
(1)多任务实现开销大
(2)编写能够与其他进程通信或者能够对其他进程操作的应用程序,将要困难的多

(二)wait函数族

1、wait函数:将当前进程挂起,等待信号来临,再继续运行

功能: 用来等待子进程的结束。

在这里插入图片描述
在这里插入图片描述
(1)语法:
pid_t wait(int *wstatus);
WEXITSTATUS:宏定义:返回进程的退出状态
在这里插入图片描述
在这里插入图片描述

2、waitpid
(1)可以指定等待的进程号

目的:有时只需要指定某一个进程,回收就可以,可以避免资源浪费。

(2)语法
pid_t waitpid(pid_t pid, int *wstatus, int options);

在这里插入图片描述
在这里插入图片描述

(三)僵尸进程

1、僵尸进程
top - 15:39:59 up 1:40, 1 user, load average: 0.00, 0.07, 0.04
Tasks: 337 total, 1 running, 258 sleeping, 0 stopped, 1 zombie
僵尸进程产生的原因:当进程走完自己的生命周期之后,会执行自己的系统调用exit(9)函数,然后内存被释放,没有执行代码。但是在进程表里面仍留下进程信息(pid,退出信息),直到父进程将他们回收。
TIPS:
(1)子进程的资源是由父进程回收的。
(2)僵尸进程应该尽量避免!!!
在这里插入图片描述
在这里插入图片描述
2、如何避免僵尸进程

wait函数族

进程间的通信(IPC)方式

1、进程间通信的目的:
(1)数据传输:一个进程发送数据给另一个进程,发送数据一般在几兆字节到几百兆字节。
(2)共享数据:多个进程想要操作共享数据,其中一个数据对共享数据的修改,别的进程应该第一时间可以看到。
(3)通知事件:一个进程需要向另外一个或一组进程发送消息,通知(他们)发生了某种事件(如进程终止时通知父进程)
(4)资源共享:多个进程之间共享同样的资源。为做到这一点,需要内核提供锁和同步机制。
(5)进程控制

(一)管道

一、无名管道:
1、一端写,一端读。
2、管道的工作模式:管道是半双工,数据只能向一个方向流动,需要双方通信时,需要建立两个管道。
3、管道的本质:单独的文件体系,这个体系只存在内核中。
4、亲属进程之间为什么可以通信:因为父进程可以复制子进程。
5、管道应该创建在什么时候:必须在系统调用fork()前调用pipe()。否则,子进程将不会继承文件描述符。

(1)如果管道的前端不存在,则认为已经读到数据末尾,该函数返回的读出字节为0
(2)如果管道写端存在,如果请求的字节数大于PIPE_BUF,则返回现有的数据字节数;如果不大于,则返回管道现有数据字节数,或请求字节数。

二、语法:int pipe(int pipefd[2]);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)消息队列

(三)信号量

(四)共享内存

(五)套接字

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值