现代计算机中,进程是资源分配的单位,线程是处理机调度的基本单位。
有C/C++占用内存的使用情况如下:
1,正文段:代码和数据赋值段(二进制代码和常量存放在正文段,)
2,数据堆段:动态分配的存储区在数据堆段
3,数据栈段:临时使用的变量在数据栈段
例:若一个进程有PCB,共享正文段,数据堆段和栈段构成,请指出下列C语言 描述的内容在进程的那个部分?
I:全局赋值变量 II:为赋值的局部变量 III:函数调用实参传递值 IV:用malloc动态分配的存储区 V:常量值 VI:进程的优先级
A PCB B 正文段 C:堆段 D:栈段
正文段: 全局变量 常量值
数据堆段: 用malloc动态分配的存储区
数据栈段: 未赋值的局部变量 函数调用的实参传递值
PCB: 进程的优先级
PCB:实际包含的内容主要有4部分:
进程标识信息:ID号以及父进程ID号;
进程控制信息:当前状态,调度信息
进程资源信息:内存,设备,文件数据
CPU现场信息:程序计数器,堆栈
线程表(TCB):所包含的内容,较PCB少,线程本身不直接拥有系统资源,使用进程的资源。同样具有运行就绪阻塞状态。切换快,并发读高。
较典型的进程定义有:
(1) 进程是程序的一次执行。
(2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
(3) 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
在引入了进程实体的概念后,我们可以把传统OS中的进程定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。
进程的3中状态:执行,阻塞,执行
引入挂起状态的原因
(1 )终端用户的请求。
(2) 父进程请求。
(3) 负荷调节的需要。
(4) 操作系统的需要。
在分时系统中,导致进程创建的典型事件是用户登录,;在批处理中,导致进程创建的典型事件是作业调度,作业调度的作用为将外存的作业创建为内存的进程。或者,将正常运行结束的进程今次那个审计并将结果提交给用户,,不涉及进程和线程的调度,因为进程和线程的调度,均在内存发生,作业录入是在收纳作业时,才进行,不涉及进程。