前言
- 本博客是对linux进程的分析和理解。
- .虚心接受大家的建议。
内容
何为进程?
计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程,简称进程。创建进程
linux调用fork来创建子进程(除了0号进程(系统创建的)之外,linux系统中都是由其他进程创建的。创建新进程的进程,即调用fork函数的进程为父进程,新建的进程为子进程)。pid_t pid; pid=fork(); if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("i am the child process, my process id is %d\n",getpid()); else printf("i am the parent process, my process id is %d\n",getpid());
主要事件导致进程的创建
- 系统初始化
- 正在运行的程序执行乐创建进程的系统的调用
- 用户请求创建一个新进程
- 一个批处理作业的初始化
进程的终止
- 正常推出 调用 exit
- 出错退出 例如,编译运行不存在的文件
- 严重错误 例如,除于0
- 被其它进程杀死 调用kill
进程的状态的转换
1.等待态:等待某个事件的完成;
2.就绪态:等待系统分配处理器以便运行;
3.运行态:占有处理器正在运行。
进程的调度
- 定义:无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
- 在linux内核中实现了一个调度器类的框架,其中定义了调度器应该实现的函数,每一个具体的调度器类都要实现这些函数 。linux使用了四个调度器类:stop_sched_class、rt_sched_class、fair_sched_class、idle_sched_class.可以参考该博客https://www.cnblogs.com/ck1020/p/6089970.html
- 五种服务类型,可参考http://www.xitongzhijia.net/xtjc/20171023/109740.html