操作系统进程的简单介绍

Posted 吞吞吐吐大魔王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统进程的简单介绍相关的知识,希望对你有一定的参考价值。

文章目录

1. 进程介绍

1.1 进程的概念

  • 程序是由指令和数据组成的,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,将数据加载至内存。在指令运行过程中还需要用到磁盘和网络等设备。进程就是用来加载指令、管理内存、管理 IO 的

  • 当一个程序被运行,会从磁盘加载这个程序代码至内存,这时就开启了一个进程。

  • 一个运行的程序可以视为一个进程,进程也可以认为是一个可执行文件跑起来之后的动态的过程

  • 进程运行会被系统分配一些资源,进程就是系统资源分配的基本单位

  • 进程是由程序的代码、程序处理的数据、程序计数器中的值、一组通过的寄存器的当前值、堆、栈和一组系统资源组成。

1.2 进程和程序的关系

进程与程序的联系:

  • 程序是产生进程的基础,进程是程序功能的体现
  • 程序的每次运行会构成不同的进程,通过多次执行,一个程序可以对应多个进程;通过调用关系,一个进程可以包括多个程序。

进程与程序的区别:

  • 程序是有序代码的集合,是静态的;进程是程序的执行,会涉及到核心态和用户态的切换,是动态的。
  • 进程是一个状态变化的过程,是暂时的,程序是可以长久保存的。
  • 进程和程序的组成不同,进程包括了程序、数据和进程控制块。

1.3 进程的特点

  • 动态性:可以动态的创建和结束进程。
  • 并发性:进程可以被独立调度并占用处理机运行。
  • 独立性:不同进程的工作互不影响。
  • 制约性:因访问共享数据或进程间同步而产生制约。

2. 进程控制块 PCB

操作系统要保证多个进程都能正常工作,并且互相之间不能影响,操作系统内部就实现了一个结构体,该结构体用于描述一个进程具备的信息,然后通过某种数据结构(比如双向链表)将所有的结构体给组织起来,这样就能有效的管理所有的进程。

该结构体在操作系统中称为 PCB(Process Control Block)进程控制快,它是操作系统管理控制进程运行所用的信息集合。PCB 是用来描述进程的数据结构。操作系统为每个进程都维护了一个 PCB,用来保存与该进程有关的各种状态信息。

PCB 中存储的信息:

  • pid:进程的身份标识。

  • 内存指针:描述着这个进程使用的内存有哪些,比如程序对应的指令有什么,依赖的数据有什么等。

  • 文件描述符表:描述了这个进程都打开了哪些文件。每一个进程默认会打开三个文件,标准输出、标准输入和标准错误。

  • 进程的状态:描述了当前这个进程能够在 CPU 上执行。

  • 优先级:调度进程是,给每个进程安排的时间和先后都存在差别。

  • 上下文:操作系统在执行某个进程时,如果需要吧这个进程从 CPU 上调度走,就需要先将 CPU 的运行状态保存到内存中,下次再调度该进程时,就从内存中获取。

  • 记账信息:统计量每个进程执行的时间和指令的数目,依据这个来平衡调度效果。

3. 进程的状态

3.1 进程的生命周期

  1. 进程创建

  2. 进程运行

  3. 进程等待

  4. 进程唤醒

  5. 进程结束

3.2 进程的状态

  • 运行状态:表示该进程正在 CPU 上运行。
  • 就绪状态:表示该进程获得了除 CPU 之外的一切资源,一旦得到 CPU 就可以运行。
  • 等待状态/阻塞状态:表示该进程正在等待某事件而暂停运行。
  • 创建状态:表示该进程正在被创建,还没被转到就绪状态之前的状态。
  • 结束状态:表示该进程正在从系统中消失。

4. 进程间通信的机制

虽然进程之间存在独立性,但是很多时候又避免不了需要多个进程相互配合来完成一些工作。操作系统提供了一些进程间通信的机制,使得进程在有限的情况下可以进行交互操作。

操作系统中提供的进程间通信的机制有很多,Java 中主要用到以下两种机制:

  • 操作文件
  • 操作网络

以上是关于操作系统进程的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

linux性能监控工具介绍

Android 进程管理篇(四)-cpu限制

Linux IPC之管道和FIFO

电脑的启动进程数目基本上有多少个?能把进程数列出来吗?

守护进程

操作系统进程的简单介绍