进程有哪几部分组成

进程有哪几部分组成,第1张

1、进程进程控制块、程序段、数据段三部分组成。

2、进程(Process)是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是 *** 作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。进程是程序真正运行的实例,若干进程可能与同一个程序相关,且每个进程皆可以同步或异步的方式独立运行。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时( *** 作系统执行之),它才能成为一个活动的实体,我们称其为进程。

进程控制块(PCB)在系统内存中,可以和其他进程同步执行

数据段存在静态内存,用于保存程序已经初始化的变量

代码段紧接着数据段,也在静态内存中

另外还有保存局部变量的栈和保存动态分配空间的堆

在内存中它们如下关系:

========高地址   =======

程序栈        堆栈段

向下增长

空内存

向上增长

------          数据段

BSS

------

非零数据

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

代码           代码段

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

=========低地址   =======

栈(存放着局部变量和函数参数等数据),向下生长   (可读可写可执行)

堆(给动态分配内存是使用),向上生长                    (可读可写可执行)

数据段(保存全局数据和静态数据)                                 (可读可写不可执行)

代码段(保存代码)                                                   (可读可执行不可写)

        DATA  SEGMENT

        STR1  DB        'what is your name?',13,10,'$'

          CN  EQU       $-STR1

        STR2  EQU       STR1+CN-5

        DATA  ENDS

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA,ES:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       ES,AX

              MOV       DX,OFFSET STR1

              MOV       AH,9

              INT       21H

              MOV       SI,OFFSET STR1

              MOV       DI,OFFSET STR2

              MOV       CX,CN

              ADD       SI,CN-1

              ADD       DI,CN-1

              STD

              REP       MOVSB

              MOV       DX,OFFSET STR2

              INT       21H

              MOV       AH,4CH

              INT       21H

        CODE  ENDS

              END       START

              

              

教材中有详细的介绍,请认真阅读,多复习。

es是附加数据段段地址,程序中是将数据段和附加数据段 同段。

str1 是21个字节。

cn 和 str2 在这里都是常量。 

数据段中只定义了 存储区 str1。(但又将str2当存储区使用,这种用法少见,不要学 !)

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

以上 *** 作的问题,str2 并未申请缓冲区,在执行时有越界的风险 !

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

以下是规范的程序:

        DATA  SEGMENT

        STR1  DB        'what is your name?',13,10,'$'

          CN  EQU       $-STR1

        STR2  DB        CN DUP(?)

        DATA  ENDS

 

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA,ES:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       ES,AX

              LEA       DX,STR1

              MOV       AH,9

              INT       21H

              LEA       SI,STR1

              LEA       DI,STR2

              MOV       CX,CN

              ADD       SI,CN-1

              ADD       DI,CN-1

              STD

              REP       MOVSB

              LEA       DX,STR2

              INT       21H

              MOV       AH,4CH

              INT       21H

        CODE  ENDS

              END       START


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11087488.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存