
2、进程(Process)是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是 *** 作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。进程是程序真正运行的实例,若干进程可能与同一个程序相关,且每个进程皆可以同步或异步的方式独立运行。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时( *** 作系统执行之),它才能成为一个活动的实体,我们称其为进程。
进程控制块(PCB)在系统内存中,可以和其他进程同步执行
数据段存在静态内存,用于保存程序已经初始化的变量
代码段紧接着数据段,也在静态内存中
另外还有保存局部变量的栈和保存动态分配空间的堆
在内存中它们如下关系:
========高地址 =======
程序栈 堆栈段
向下增长
空内存
向上增长
堆
------ 数据段
BSS
------
非零数据
========= =======
代码 代码段
========= =======
=========低地址 =======
栈(存放着局部变量和函数参数等数据),向下生长 (可读可写可执行)
堆(给动态分配内存是使用),向上生长 (可读可写可执行)
数据段(保存全局数据和静态数据) (可读可写不可执行)
代码段(保存代码) (可读可执行不可写)
DATA SEGMENTSTR1 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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)