基于linux进程的分析

前言

  1. 本博客是对linux进程的分析和理解。
  2. .虚心接受大家的建议。

内容

何为进程?

    计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程,简称进程。

创建进程

     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()); 

主要事件导致进程的创建

  1. 系统初始化
  2. 正在运行的程序执行乐创建进程的系统的调用
  3. 用户请求创建一个新进程
  4. 一个批处理作业的初始化

进程的终止

  1. 正常推出     调用 exit
  2. 出错退出     例如,编译运行不存在的文件
  3. 严重错误     例如,除于0
  4. 被其它进程杀死 调用kill

进程的状态的转换

1.等待态:等待某个事件的完成;

2.就绪态:等待系统分配处理器以便运行;

3.运行态:占有处理器正在运行。

进程的调度

  1. 定义:无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
  2. 在linux内核中实现了一个调度器类的框架,其中定义了调度器应该实现的函数,每一个具体的调度器类都要实现这些函数 。linux使用了四个调度器类:stop_sched_class、rt_sched_class、fair_sched_class、idle_sched_class.可以参考该博客https://www.cnblogs.com/ck1020/p/6089970.html
  3. 五种服务类型,可参考http://www.xitongzhijia.net/xtjc/20171023/109740.html

 

猜你喜欢

转载自www.cnblogs.com/-zgb/p/8977667.html