进程的简单概述(进程是什么,进程和程序的区别)

大家好,这里是小缺,一名对嵌入式软件开发充满热情的探索者。这一篇文章内容是进程概述

1.1 进程的定义

进程

  • 进程是一个动态的概念,它是程序在操作系统中的一个执行实例,具有自己的生命周期和状态。
  • 进程在执行时会分配内存、打开文件、创建套接字等,并且可以与其他进程通信。
  • 进程的状态包括运行、就绪、等待、暂停等,这些状态反映了进程的执行进度和系统资源的使用情况。
  • 进程是操作系统进行资源分配和调度的基本单位,每个进程都有唯一的进程标识符(PID)。

那么进程和程序有什么区别呢,让我们也来看看程序的定义

程序:

  • 程序是一个静态的概念,它是一系列指令和数据的集合,通常存储在磁盘或其他非易失性存储介质上。
  • 程序是被动的,它本身不执行任何操作,只有在被加载到内存并由操作系统创建进程后,它才会变得活跃并执行任务。
  • 程序没有生命周期,它不会自己启动或结束,需要通过操作系统或其他程序来启动。

    简而言之,程序是代码和数据的集合,而进程是程序在运行时的实体。进程是程序的执行过程,它包含了程序的代码和数据,以及程序执行时的上下文信息。进程是操作系统管理的最小单位,而程序是静态的,需要通过进程来执行。

    只要程序运行,此时就是进程,程序每运行一次,就会创建一个进程

在linux系统中,进程是管理事务的基本单元。 进程拥有自己独立的处理环境和系统资源(处理器、存储器、I/O设备、数据、程序)。

1.2 进程的状态及转换

进程整个生命周期可以简单划分为三种状态:

就绪态

  • 进程已经准备好运行,它已经分配到了除CPU时间片之外的所有必要资源,如内存空间、文件描述符等。
  • 进程正在等待操作系统的调度器选择它来执行,一旦获得CPU时间片,进程就可以从就绪态转移到执行态。
  • 就绪态的进程通常存储在就绪队列中,等待操作系统的调度。

执行态

  • 进程正在CPU上执行,它拥有CPU时间片,可以执行指令和操作数据。
  • 进程在执行态期间,可以进行I/O操作、请求系统调用等,但这些操作可能会导致进程从执行态转移到等待态或就绪态。
  • 执行态是进程生命周期中最活跃的状态,进程在此状态下完成其主要功能。

等待态

  • 进程因某些原因暂时无法继续执行,它必须等待某个事件或资源变得可用。
  • 这些原因可能包括等待I/O完成、等待用户输入、等待特定系统资源等。
  • 在等待态中,进程通常被移出CPU,放入等待队列中,直到它等待的事件发生或资源变得可用,然后可能被操作系统调度器重新放回就绪队列。

进程的调度进制

时间片轮转,上下文切换 

多进程不是说一个进程执行完再执行另一个进程,而是交替执行的,一个进程执行一 段时间,然后下一个进程在执行一段时间,当一个进程的时间片用完后,它会被暂时挂起,操作系统会将CPU的控制权交给下一个进程。这个过程会不断重复,直到所有进程都完成它们的工作。

这种执行方式使得每个进程都有机会运行,即使有些进程的执行时间比其他进程长。操作系统通过调度器来管理进程的执行顺序和时间片的分配,确保每个进程都有公平的执行机会。这种机制也允许用户同时运行多个程序,提高了系统的响应性和效率。

总之,多进程环境下的执行是并发的,而不是顺序的。操作系统通过时间片轮转的方式,使得每个进程都能在有限的时间内运行,从而实现了多任务并行处理的能力。

进程三个状态的转换关系

1.3 进程控制块

进程控制块就是用于保存一个进程信息的结构体,又称之为PCB,你可以把它想象成一个档案袋,里面装着关于进程的所有信息。

当操作系统创建一个新进程时,它会为这个进程分配一块内存空间,并在这个空间里创建一个PCB。这个PCB就像是进程的身份证,里面记录了进程的各种信息,比如进程的ID、状态、优先级、程序计数器(记录了进程下一步要执行的指令地址)、寄存器集合(存储了进程的当前状态)、内存管理信息、账户信息、I/O状态信息等等。

操作系统通过PCB来跟踪进程的执行情况,决定何时给进程分配CPU时间片,以及如何调度进程。

在Linux操作系统中,PCB的具体实现是通过一个叫做task_struct的结构体来完成的。这个结构体包含了进程的所有信息,它位于Linux内核源代码中的一个特定文件里。这个文件通常位于内核源代码的某个目录下,比如/usr/src/linux-headers-4.4.0-176-generic/include/linux/sched.h。在这个文件中,task_struct结构体通常在1500行或者1300行左右的位置。

PCB结构体中的部分数据

  • 调度数据   进程的状态、标志、优先级、调度策略等。
  • 时间数据   创建该进程的时间、在用户态的运行时间、在内核态的运行时间等。
  • 文件系统数据  umask掩码、文件描述符表等。 内存数据、进程上下文、进程标识(进程号)

  • 29
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值