嵌入式Linux C多任务编程(进程篇)

        这俩天刚整理完进程部分内容,再做个一个总结以便后期回顾。

1.什么是多任务?

       单任务vs多任务

        单任务:一个任务执行结束才能执行下一个任务,或者说在一个任务执行得过程中不能响应其他任务,只有这个任务执行完毕后才能去响应其他任务,这种成为单任务。

        多任务:cpu利用它的资源响应多个任务,注意只是响应,但不一定时同时响应,而且也并不是同时执行。

        并发vs并行

        并发:一对多

        并行:多对多

        单核cpuvs多核cpu

        单核cpu:就是CPU轮换的执行,当前进程执行了一个短暂的时间片(ms)后,切换执行另一个进程,如此循环往复,由于时间片很短,在宏观上我们会感觉到所有的进程都是在同时运行的,但是在微观上cpu每次只执行某一个进程的指令。

        多核cpu:如果cpu是多核的话,不同的cpu核可以同时独立的执行不同的进程,这种叫并行运行。所以当cpu是多核时,并发与并行是同时存在的。       
       

        单核系统的同时执行是并发执行,多核系统的同时执行是并行执行。同时执行必须建立在多核的多任务操作系统的基础上才能完成。

2.多任务操作的实现方式

        进程、线程

3.进程和程序的区别

       进程:

        ①进程是程序运行的抽象。(抽象是为了方便系统的统一管理)

        ②进程是系统资源分配的最小单位。

        ③进程和线程实现多任务(并发执行)。

        区别:

        ①程序是静态的,进程是动态的。

        ②程序是长久的,进程是暂时的。

        ③进程与程序组成不同,进程的组成包括程序、数据和进程控制块。

        ④进程与程序的对应关系:通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序。

4.Linux进程特点

        Linux系统是一个多进程的系统,它的进程之间具有并行性互不干扰等特点。

        每个进程都是一个独立的运行单位,拥有各自的权力和责任。每个进程都运行在独立的虚拟地址空间,当一个进程发生异常,它也不会影响到系统中其他进程。

        优点:进程的互不干扰和独立地址空间使进程成为一种安全的多任务机制

        缺点开销大(进程的创建、进程之间的切换消耗的内存资源多)

5.进程PID

        为了方便管理,为每一个进程分配了一个唯一的PID编号。

        OS(Linux)为了管理进程,会为每一个进程创建一个task_struct结构体变量,里面存放了该进程的管理信息。

        获取PID

        父进程创建子进程。

        ① pid_t getpid(void);

        函数作用:获取调用该函数进程的进程PID。

        头文件:

        #include <unistd.h>

        #include <sys/types.h>

        返回值:返回进程的PID。

        ②pid_t getppid(void);

        函数作用:获取调用该函数进程的父进程的进程PID。

        返回值:返回父进程的PID

6.ps命令查看进程

        查看进程的方式有三种:

        ①ps -ax :  ps -ax | grep main

        ②top 

        ③htop

        top/htop都是显示整个系统下的进程的详细信息,htop是第三方的,是对top的改进。

        下面是关于ps命令后缀的详注:

        -A/-e: 显示系统所有的进程(包括守护进程),相当于-e。

        -a:显示所有终端下的所有用户运行的进程。

        -u:显示所有用户名、CPU百分比和内存的使用。

        -x/-f:列出进程的详细信息。

        -H:显示进程树。

        -r:只显示正在运行的进程。

        -o:分类输出

7.进程调度

a)进程状态

        1)基本三态:就绪态、执行态、等待态(阻塞态)

 

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值