理解操作系统2——进程

进程是计算机操作系统中非常重要的概念。是一种非常重要的抽象。

一、为什么要引入进程这个概念?

  先从计算机的体系结构——冯诺依曼体系结构。它是一种将程序指令存储器数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。这个体系结构有三大原则:采用二进制逻辑、程序存储执行和计算机由五大部分组成。这五大部分是:运算器、存储器、控制器、输入设备、输出设备。

这种结构特点是“程序存储,共享数据,顺序执行”,需要 CPU 从存储器取出指令和数据进行相应的计算。

这种操作系统有以下几个特点:

(1)单处理机结构,机器以运算器为中心;

(2)采用程序存储思想;

(3)指令和数据一样可以参与运算;

(4) 数据以二进制表示;

(5)将软件和硬件完全分离;

(6) 指令由操作码和操作数组成;

(7)指令顺序执行。

这里的存储器包括了:内部存储器(也就是内存)和寄存器。其中寄存器、控制器和运算器共同构成了CPU。这是一个以存储器为核心的计算机体系结构。所以存储交换数据的快慢很大程度上决定了计算机的速度。此外可以发现指令是顺序执行,也就是说处理器是串行执行指令的

这种串行特点在应对多个作业(也叫做程序吧)的时候,就必须把作业一个个做完,一旦其中一个作业是I/O密集型的话,限制作业执行效率的因素就是I/O的读写速度,且大多数时候CPU是空闲的。使得在处理多个作业时,整体效率偏低。为了提高CPU的利用率,那么最好的方式就是让CPU并行地处理这些作业。但是实际上CPU是串行工作的。这该怎么办呢?

这里要谈到两个概念“并行”、“并发”:并行是指同时处理多个任务,并发是指由处理多个任务的能力,但是实际上不一定要同时进行。

所以只能串行执行任务单核CPU为了看起来像是能够同时执行多个任务,采用了并发的方式同时处理多个任务,看起来像是并行那样。并发技术的实现相当复杂,最容易理解的就是“时间片轮转进程调度”算法。我们这里先理解成有多个任务,所有的任务轮流使用CPU,每个任务占用CPU的时间非常短。使得用户根本感觉不到CPU是在轮流为多个任务提供服务,就好像多个任务在不间断地运行那样。但是实际上在任何一个时间内,只有一个任务占用着CPU。所以这里就是理解并发的关键,它不是并行,因为CPU本质是串行的,只是通过并发技术使得其看起来像并行。

但是并发运行产生了一些问题,

  1、间断性:任务A和任务B根本没啥关系,它们俩是并发执行的,一会儿执行任务A,一会儿执行任务B。

  2、失去封闭性:并发执行的程序,系统中的资源都是共享的,那么任务A执行了的时候改变了资源的状态,在任务B来执行时发现状态改变了,不知它之前想要的状态。这就使得任务A和任务B相互影响。

  3、不可再现性:就是由于程序的运行速度不同,程序的运行环境也有影响,则程序多次执行,虽然它们的初始条件一样,但是运行的结果不一样。因为这个可程序在运行时由于并发,每次运行的环境都不一样,每次运行都是独一无二的。

  以上都是并发的问题,这可怎么办。但是进程的概念的引入很好地解决了上述问题。

======================================================================

 二、什么是进程

引入进程的概念是为了使得计算机在多程序环境下并发执行,并且能够对并发执行的程序加以控制,规避上述的问题。

从不同的角度去看进程,可以得出不同的概念和定义。有时候这些描述把进程这个概念刻画地越来越玄乎,越来越琢磨不透。

所以一开始我讨论的不是进程是什么,而是为什么要引入进程这个抽象的概念。梳理一下逻辑线条:

冯诺依曼计算机体系结构--->CPU在执行多任务时效率不高---->采用并发设计克服,提升CPU效率---->并发设计引入新的问题---->引入进程概念解决这些问题

我先解读一下程序的概念,上述表述的任务,在这里也可以解读为程序。

程序就是一堆指令和数据的集合,程序的目的是让CPU按照顺序读入指令串行地执行下去,去完成特定的任务。

程序在进入内存之前是存放在磁盘上的,也叫做外存储器。内存是运行存放运行中的程序。程序本身是一个静态的概念

那么如何描述运行中程序呢?如何在并发时很好地克服上述问题,很好地控制和描述程序的运行?

需要一个新的概念,这就是——进程进程可以理解为运行中的程序。或者理解成程序动态运行中的实例。

进程这个抽象概念被创造出来,当然也被计算机赋予了一些重要的意义。

进程是计算机操作系统资源分配的基本单位。进程的概念甚至成为操作系统的基础。

从物理上来看进程是有程序代码代码相关的数据集以及进程控制块组成的。

进程是动态的概念,就是运行中的程序。是一个很好地方式去描述运行中的程序。其实引入进程就是体现了封装分治的思想来解决上述并发的问题。让程序之间在轮流使用一个CPU的时候不会相互影响。

进程控制块(PCB)是一个重要的数据结构,操作系统就是通过进程控制块感知进程的存在

PCB保存了很多关于进程相关的信息。如下:

标识符 (就是进程的ID,身份证)
状态
优先级
程序计数器
内存指针
上下文数据
I/O状态信息
记账信息

进程很好地解决了CPU的利用率问题,使得CPU高效利用

所有的应用程序以进程的方式运行在比操作系统权限更低的级别。
每个进程都有自己独立的地址空间;使得进程之间的地址空间相互隔离。
CPU由操作系统进行统一分配,每个进程根据优先级都有机会得到CPU。具体来讲就是进程的调度方面的知识;
总体目标是使得每个进程从逻辑上看来都可以独占计算机的资源。
另外也使得CPU能在多个进程之间很好地共享。

原文地址:https://www.cnblogs.com/grooovvve/p/11605178.html

时间: 2024-11-08 21:32:57

理解操作系统2——进程的相关文章

深入理解Linux操作系统守护进程的意义

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作业规划进程crond.打印进程lqd等.有些书籍和资料也把

我的操作系统复习——进程(下)

上一篇博客是复习操作系统进程篇的上篇,包括进程状态.PCB.进程控制等——我的操作系统复习——进程(上),本篇博文是进程篇的下篇,开始复习进程同步.进程通信,以及重要的线程概念. 一.进程同步 什么是同步?同步就是说一个任务要等另一个执行完毕才能继续执行,而不是同时执行.我们都知道,进程有异步性,这种性质会导致操作系统的混乱.进程同步,指的是进程之间的执行次序的管理,就是为了解决进程异步性的这种混乱. (1)直接制约和间接制约. 进程之间有两种制约关系.分别是直接制约和间接制约.直接制约指的是进

【操作系统】进程描述与控制

前言: 开发操作系统是为了给应用程序提供一个方便.安全.一致的访问接口,以屏蔽硬件的复杂性.我们可以将操作系统理解为资源的统一抽象表示,可以被应用程序请求和访问.资源包括内存,文件等,一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用.现代操作系统采用进程来管理应用程序的执行. 进程的概念: 1.一个具有以下特征的活动单元:一组指令序列的执行.一个当前状态和相关的系统资源集. 2.能分配给处理器并由处理器执行的实体. 3.一个正在计算机上执行的程序实例. 进程的组成: 进程由程

操作系统学习---进程

参考http://c.biancheng.net/cpp/u/xitong_1/   C语言中文学习网 一,操作系统的特征: 1,并发:并发与并行是两个不同的概念. 2,共享: 资源共享即共享,是指系统中的资源可供内存中多个并发执行的进程共同使用.共享可分为以下两种资源共享方式: 1) 互斥共享方式 系统中的某些资源,如打印机.磁带机,虽然它们可以提供给多个进程使用,但为使所打印或记录的结果不致造成混淆,应规定在一段时间内只允许一个进程访问该资源. 为此,当进程A访问某资源时,必须先提出请求,如

操作系统,进程理论

一 为什么要有操作系统 (两本书:现代操作系统.操作系统原理) 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成. 一般而言,现代计算机系统是一个复杂的系统. 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率.) 其二:并且管理这些部件并加以优化使用,是一件极富挑战性的工作,于是,计算安装了一层软件(系统软件),称为操作系统.它的任务就是为用户程序提供一个更好.更简单.更清晰的

[后台开发工程师总结系列] 2.操作系统之进程

原文引用https://www.dazhuanlan.com/2019/08/26/5d62fe08ae097/ 进程 进程的概念和特征 进程结构一般由三部分组成:代码段.数据段和堆栈段.代码段用于存放进程代码数据,数个进程可以共享一个代码段.而数据段存放进程的全局变量.常量和静态变量.堆栈段中栈用于函数调用,它存放着函数参数.函数内部定义的局部变量.对斩断还包含了进程控制块(PCB).PCB处于进程核心堆栈底部,不需要额外分配空间.PCB是进程存在的唯一标识.系统通过PCB的存在而感知进程的存

操作系统之进程篇(1)

1.进程介绍: 1.1 进程模型: 进程是一个程序的实际执行,包含了程序计数器的状态,寄存器和变量等等! 程序可以看成是一个状态的序列,程序在不同时刻呈现出不同的状态,而这种状态的前后交替过程可以看成是程序的执行过程.概念上来说,每个程序有自己的虚拟CPU,但在现实中CPU在不同的进程间来回切换,又称这种切换为伪并行! 进程和程序差别看似微小,实际上却是十分精妙; 可以将计算机执行程序的过程看成一次有趣的烹饪过程.食谱就是程序,厨师就是CPU,而食材是输入,得到的输出是鲜美可口的美食. 当厨师在

操作系统学习---进程管理(二)

要点: 基础:进程描述及控制 策略:进程调度 实现:互斥与同步 避免:死锁与饥饿 解决:几个经典问题 进程的引入 程序的顺序执行 源代码程序,目标程序和可执行程序 程序执行:编辑,编译,链接,执行 程序的结构:顺序,分支,循环结构 程序执行的特征:顺序性,封闭性,可再现性 程序并发执行 多道程序设计技术:多个程序并发执行 程序并发执行时的特征:间断性,非封闭性,不可再现性 并发执行引发的问题: 协调各程序的执行顺序:输入数据还未全部输入内存时,计算必须等待 多个执行程序共享系统资源,程序之间可能

操作系统之进程篇(3)

1. 信号量机制的缺陷问题: 在上面的生产者消费者实例中,信号量的工作机制如下(我们以生产者的代码为例): 1 down(&empty); 2 down(&mutex); 3 enter_item(item); 4 up(&mutex); 5 up(&full); 如果交换1号和2号语句,变成: 1 down(&mutex); 2 down(&empty); 那么可能会出现下面的情形: mutex变成0,此时empty == 0,那么生产者阻塞; 此时消费者