前言
进程调度是操作系统的一个核心功能,它负责管理和分配CPU时间给各个进程,以实现多任务并发执行。
一.什么是进程
进程是操作系统中的基本概念,用于管理和调度计算机上的任务。每个进程都有自己的内存空间、执行代码、数据和系统资源,它们在操作系统内部相互隔离,互不干扰。可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
打开任务管理器就能看到后台正在运行的进程以及所占用的资源空间.
二.操作系统如何管理进程
每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运
行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的.
进程通常用一个结构体(pcb)来表示,该结构体包含了管理和控制进程所需的各种属性和信息。不同操作系统的PCB结构可能会有所不同,但通常包括以下属性:
进程标识符: 用于唯一标识进程的数字或字符串,通常称为PID
内存指针:内存指针是指向进程内存管理的信息。
文件描述符:文件描述符是一个整数,用于标识进程打开的文件或套接字等文件系统资源。文件描述符通常是非负整数,通过文件描述符,进程可以对文件进行读取、写入和关闭等操作。文件描述符是进程与文件系统交互的一种方式,它允许进程在运行时管理其文件资源。
进程管理使用数据结构组织进程,一般使用双向链表这样的数据结构来组织进程。
三.进程调度的基本属性
进程状态:
进程状态表示了一个进程在其生命周期中所处的不同情况。通常,一个进程可以处于以下几种状态之一:
- 就绪态:进程已准备好执行,但尚未获得处理器时间。
- 运行态:进程目前正在执行。
- 阻塞态:进程暂时无法执行,通常因为等待某种资源(如I/O操作完成)。
- 创建态:进程已被创建,但尚未开始执行。
- 终止态:进程已完成执行或被终止。
- 进程可以在这些状态之间转换,例如,一个进程在运行时可能被阻塞,然后重新变为就绪态。
进程的优先级:
进程的优先级是一个用于确定进程调度顺序的参数。不同的进程可能具有不同的优先级,高优先级的进程通常会在低优先级进程之前获得处理器时间。优先级通常用整数表示,具体数值范围和意义可能因操作系统而异。
进程的上下文:
进程的上下文是指进程在执行时的环境和状态信息,包括但不限于寄存器值、程序计数器、内存分配、打开的文件、CPU状态等。上下文保存了进程的所有必要信息,以便在进程切换时恢复到原来的状态。
进程的记账信息:
记录进程使用了多少 CPU 时间。这用于衡量进程的计算负载。
四.内存分配(进程的虚拟空间地址)
操作系统分配的内存是以虚拟地址的方式进行分配的,每个进程访问的都不是真实的物理地址。进程的虚拟空间地址是指在一个进程内部,程序可以访问的内存地址范围。每个运行的进程都有自己的虚拟地址空间,这使得每个进程都可以认为它拥有整个计算机内存的独占访问权,而不必担心与其他进程发生冲突。如图所示这是一个简单的进程虚拟空间.
操作系统会根据各个进程的需求和系统的可用内存动态分配和管理内存。操作系统还会负责内存的回收和释放,以便将内存重新分配给其他进程或任务,虚拟空间对于进程的作用在于"隔离性".
总之,进程是操作系统中的核心概念,它们使计算机能够高效地管理和执行多个任务,是现代计算机系统中的基础构建块之一。
操作系统创建进程,要给进程分配资源,进程是操作系统分配资源的基本单位。
操作系统创建的线程,是要在CPU上调度执行,线程是操作系统调度执行的基本单位.