Linux进程

本文详细介绍了Linux进程的概念,包括进程的多进程特性、进程描述符和进程状态。深入探讨了进程的创建,如fork()和vfork()的区别,以及exec函数族的使用。同时,讲解了进程的退出、wait和waitpid系统调用。此外,重点阐述了Linux守护进程的编写步骤和重要性,包括如何使进程脱离控制终端并管理文件描述符。
摘要由CSDN通过智能技术生成

1.进程的概念

1.1 多进程特性

Linux支持 多进程 特性,可以最大化的使用cpu资源;用户可以在同一个cpu上运行多个用户程序。

多进程的原理是:时钟中断触发进程调度程序,调度程序分时运行多个进程。这就要求每个进程能够保留现场信息(cpu现场、系统资源、调度信息等)。

linux使用 进程描述符 task_struct数据结构记录现场信息,然后基于进程描述符管理进程,包括进程的创建、调度、消亡等操作。

1.2 概念

  • 程序:经过编译的源代码,生成的一个可执行的文件。

  • 进程
    1.进程是一个独立的可调度的任务 。
    2.进程是一个抽象实体。当系统在执行某个程序时,分配和释放的各种资源
    3.进程是一个程序的一次执行的过程。

  • 进程和程序的区别
    ** 程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念。
    ** 进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡。

  • 进程是程序执行和资源管理的最小单位

  • Linux进程在内存中包含三部分数据
    代码段:存放了程序的代码,代码段可以由机器中运行同一程序的数个进程共享。
    堆栈段:存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量。
    数据段:存放程序的全局变量、常数以及动态数据分配的数据空间。堆栈段和数据段不能由运行同一程序的数个进程共享。

  • linux系统至少有一个进程,一个程序可以对应多个进程,一个进程只能对应一个程序。

1.3 Linux下的进程结构

  • 主要的进程标识:
    ** 进程号(Process Identity Number,PID)
    ** 父进程号(Parent Process ID,PPID)
  • PID唯一的标识一个进程。
  • Linux内核用进程描述符task_struct(在include/linux/sched.h定义)存放进程的相关属性。

1.4 Linux系统中的进程类型

  • 交互进程:该类进程是由shell控制和运行的。交互进程既可以在前台运行,也可以在后台运行。
  • 批处理进程:该类进程不属于某个终端,它被提交到一个队列中以便顺序执行。
  • 守护进程:该类进程在后台运行。它一般在Linux启动时开始执行,系统关闭时才结束。

1.5 进程运行状态

  • 运行态:进程在cpu上运行或者等待运行。

  • 等待态:此时进程在等待一个事件的发生或某种系统资源。
    ** 可中断
    ** 不可中断:不被唤醒信号量唤醒。

  • 退出态又分为僵尸态死亡态
    ** 进程完成使命退出后处于僵尸态,此时进程的资源已经被释放,仅仅保留了task_struct结构(父进程可能使用);
    ** 而死亡态不仅释放了所有资源,并且连task_struct结构也释放了。

进程装态图

        在这里插入图片描述

进程的模式

  • 进程的执行模式分为用户模式和内核模式
    在这里插入图片描述

2.进程系统调用

2.1 进程控制-进程的创建

系统调用fork用于派生一个进程,其说明如下:

    #include <unistd.h>
    pid_t fork(void);
    pid_t vfork(void);

进程创建:fork()

  • fork()
    在这里插入图片描述

  • fork调用将执行两次返回,它将从父进程和子进程中分别返回。
    从父进程返回时的返回值为子进程的PID,而从子进程返回时的返回值为0,并且返回都将执行fork之后的语句。调用出错时,返回值为-1

  • 调用fork时,系统创建一个与当前进程(父进程)相同的新进程(子进程)。子进程是父进程的一个复制子进程拷贝父进程的数据段、代码段

  • fork用法
    在这里插入图片描述

#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值