嵌入式Linux C多进程编程(三)——进程调度和进程的创建(fork)
文章目录
进程调度
查看进程的命令
ps top htop
一、进程状态
1.1 基本三态
基本三态:就绪态、执行态、等待态
第一种是进程因为等待输入而阻塞
第二种是调度程序选择另一个进程
第三种是调度程序选择一个进程开始运行
第四种是出现有效的输入
1.2 进程调度策略(抢占式和非抢占式)
- 先创建先执行
- 高优先级优先
- 短进程优先
- 时间片轮转
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;
}
写时复制
如果创建的子进程和父进程相同时,则公用一段空间
如果不同时,则重新开辟