【从零开始学习计算机科学】操作系统(二)进程与线程

devtools/2025/3/13 4:55:39/

【从零开始学习计算机科学】操作系统(二)进程线程

进程

进程这个概念体现在并发执行的程序模型中。在程序的顺序执行中,处理器严格按照程序所规定的顺序运行,并且这个程序独占全部资源直到结束。顺序执行的程序具有顺序性,封闭性和可再现性。为了提高处理器的性能和提高资源利用率,我们提出了程序的并发执行(属于TLP(线程级并行)技术)。程序的并发执行与顺序执行相对,多个程序并发执行,它们共享资源,但是由于资源的有限性,程序的并发执行过程中必然会伴随着资源的竞争与共享。并发执行的程序不具有封闭性,没有可再现性,但是我们需要保证并发执行的程序与顺序执行程序的一致性,因此,提出了进程这个概念用于描述程序执行过程以及作为共享资源的基本单位。

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程进程是资源分配的单位,并且是一个动态的执行过程,其可以定义为并发执行的程序在一个数据集上的执行过程。

PCB_7">PCB

操作系统中,进程包含可执行程序、数据、系统栈和进程控制块(PCB)。进程控制块(Processing Control Block),是操作系统核心中一种数据结构,主要表示进程状态。其作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
PCB通常是系统内存占用区中的一个连续存区,它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息,它使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位或一个能与其他进程并发执行的进程

PCB通常记载进程之相关信息,包括:

程序计数器:接着要运行的指令地址。

进程状态:可以是new、ready、running、waiting或 blocked等。

CPU暂存器:如累加器、索引暂存器(Index register)、堆栈指针以及一般用途暂存器、状况代码等,主要用途在于中断时暂时存储数据,以便稍后继续利用;其数量及类因体系结构而有所差异。

CPU排班法:优先级、排班队列等指针以及其他参数。

存储器管理:如标签页表等。

会计信息:如CPU与实际时间之使用数量、时限、账号、工作或进程号码。

输入输出状态:配置进程使用I/O设备,如磁带机。


http://www.ppmy.cn/devtools/166677.html

相关文章

Go语言Viper配置详解:conf库优雅解析实战

在现代软件开发中,配置文件是不可或缺的一部分。无论是 YAML、JSON 还是 TOML,如何高效地将这些格式解析到 Go 结构体中,同时支持动态更新,一直是开发者的痛点。好消息是,基于 Viper 封装的 conf 库提供了一个简洁而强…

正则表达式(2)匹配规则

正则表达式的匹配规则定义了如何识别字符串中的特定模式。这些规则包括字符类匹配、元字符匹配、数量词、字符转义和分组。 字符类匹配 字符类匹配允许你指定一个字符集合,并匹配该集合中的任意单个字符。这是通过方括号 [] 来实现的。 简单字符类:[abc…

如何在 React 中实现错误边界?

在 React 中实现错误边界 错误边界是 React 提供的一种机制,用于捕获子组件树中的 JavaScript 错误,并展示回退 UI。它可以帮助开发者更好地处理错误,提升用户体验。本文将详细介绍如何在 React 中实现错误边界,包括其工作原理、…

git subtree更新子仓库的方式

在使用 git subtree 管理的仓库中&#xff0c;子仓库的更新可以通过以下步骤完成&#xff1a; 1. 更新子仓库到主仓库 如果子仓库有新的更新&#xff0c;可以将这些更新拉取到主仓库中&#xff1a; git subtree pull --prefix<子仓库路径> <子仓库地址> <分支…

c#面试题整理4

1.stirng str"",string strnull&#xff0c;俩者有何区别 空字符串占有存储控件&#xff0c;null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化&#xff0c;与类的使用几乎一样 struct 不可继承 值类型 只能声明带…

有必要使用 Oracle 向量数据库吗?

向量数据库最主要的特点是让传统的只能基于具体值/关键字的数据检索&#xff0c;进化到了可以直接基于语义的数据检索。这在AI时代至关重要&#xff01; 回到标题问题&#xff1a;是否有必要使用 Oracle 向量数据库&#xff1f; 这实际还要取决于你的具体应用需求。 客观来讲…

Python的那些事第四十三篇:功能强大的测试框架pytest

pytest:功能强大的测试框架 摘要 本文旨在深入探讨 pytest 这一功能强大的测试框架。pytest 具有简单易用、功能丰富等特点,支持分布式测试、自动化测试用例发现等功能。本文将从 pytest 的基本概念、主要功能、使用方法等多个方面进行详细阐述,并通过具体的代码示例和表格…

利用图神经网络学习计算同构-技术附录

A 算法与复杂度分析 算法 Alg.1COUNT-GNN模型训练 我们在Alg.1中展示了训练CountGNN的算法。在第1行中&#xff0c;我们初始化所有参数以及目标L。在第3-13行中&#xff0c;我们累加给定训练元组的损失。具体地说&#xff0c;在第4-8行中&#xff0c;我们进行了递归的以边为中…