嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)

进程调度
查看进程的命令
ps top htop

一、进程状态

1.1 基本三态

基本三态:就绪态、执行态、等待态
在这里插入图片描述
第一种是进程因为等待输入而阻塞
第二种是调度程序选择另一个进程
第三种是调度程序选择一个进程开始运行
第四种是出现有效的输入

1.2 进程调度策略(抢占式和非抢占式)

  1. 先创建先执行
  2. 高优先级优先
  3. 短进程优先
  4. 时间片轮转

1.3 进程状态

在这里插入图片描述

1.4 进程状态的切换

在这里插入图片描述

1.5 进程状态的查看

在这里插入图片描述

二、操作系统的核心

操作系统的核心就是任务(进程)管理
在这里插入图片描述

三、进程调度器

3.1 进程分类

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

3.2 Linux调度策略

在这里插入图片描述
了解有这几个算法就行,如CFS,RT,DL

3.3 进程优先级

在这里插入图片描述

四、进程同步

  • 临界资源操作系统中将一次只允许一个进程访问的资源称为临界资源,需要互斥访问
  • 信号量实现互斥访问
    进程是并发执行的,不同进程之间存在着不同的相互制约关系。所谓进程同步(线程同步同理),主要是解决临界资源互斥访问的问题。如多个进程访问同一片共享存,这片共享内存必须互斥使用。

五、进程的创建

在这里插入图片描述

fork调用一次,返回两次,可能有三个返回值

#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
    pid_t pid;

    pid = fork();

    if (pid < 0)
    {
        perror("fork error\n");
        exit(1);
    }

    if (pid > 0)
    {
        printf("parent\n");
    }
    else if(pid == 0)
    {
        printf("child\n");
    }
    
   
    return 0;
}

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

写时复制

在这里插入图片描述
如果创建的子进程和父进程相同时,则公用一段空间
如果不同时,则重新开辟

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周末不下雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值