0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​一、进程状态​​
  • ​​1.1 基本三态​​
  • ​​1.2 进程调度策略(抢占式和非抢占式)​​
  • ​​1.3 进程状态​​
  • ​​1.4 进程状态的切换​​
  • ​​1.5 进程状态的查看​​
  • ​​二、操作系统的核心​​
  • ​​三、进程调度器​​
  • ​​3.1 进程分类​​
  • ​​3.2 Linux调度策略​​
  • ​​3.3 进程优先级​​
  • ​​四、进程同步​​
  • ​​五、进程的创建​​

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

一、进程状态

1.1 基本三态

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

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

1.3 进程状态

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

1.4 进程状态的切换

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

1.5 进程状态的查看

嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)_开发语言_04

二、操作系统的核心

操作系统的核心就是任务(进程)管理

嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)_开发语言_05

三、进程调度器

3.1 进程分类

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


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

3.2 Linux调度策略

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


了解有这几个算法就行,如CFS,RT,DL

3.3 进程优先级

嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)_开发语言_09

四、进程同步

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

五、进程的创建

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

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;
}

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


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

写时复制

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


如果创建的子进程和父进程相同时,则公用一段空间

如果不同时,则重新开辟


举报

相关推荐

0 条评论