Linux进程的五个段】的更多相关文章

目录 数据段 代码段 BSS段 堆(heap) 栈 数据段 用来存放可执行文件中已初始化的全局变量,换句话说就是存放程序静态分配的变量和全局变量: 代码段 代码段是用来存放可执行文件的操作指令,也就是说它是可执行程序在内存中的镜像.代码段需要防止在运行时被非法修改,所以只允许读取操作,而不允许写入(修改)操作-----它是不可写的: BSS段 包含了程序中未初始化的全局变量,在内存中bss段全部置零: 堆(heap) 堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可以动态扩展或者所…
BSS段:BSS段(bss segment)通常是指用来存放程序中数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域.数据段属于静态内存分配. 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域.数据段属于静态内存分配. 代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域.这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架…
Anatomy of a Program in Memory 在一个多任务OS中,每个进程都运行在它自己的内存沙箱中.这个沙箱就是虚拟地址空间,在32位下就是一块容量为4GB的内存地址.内核将这些虚拟地址按页表(page table)映射为物理内存,并交由CPU访问.每个进程有自己的页表集,但有一点要注意.虚拟地址一旦被启用,就会应用到机器上所有运行的程序上,也包括内核自己.因此虚拟地址空间必须为内核预留一部分(否则就没办法和内核交互了): 给内核预留那么多空间,并不是说内核真的使用了那么多物理…
一 进程空间分布概述       对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据. 未初始化过的数据(BSS):在程序运行初未对变量进行初始化的数据. 栈 (Stack):存储局部.临时变量,函数调用时,存储函数的返回指针,用于控制函数的调用和返回.在程序块开始时自动分配内存,结束时自动释放内存,其操作方式类似于数据结构中的栈. 堆 (Heap):存储动态内存分配,需要…
一.进程空间分布概述 对于一个进程,其空间分布如下图所示: 1.参数说明 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码. 初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据. 未初始化过的数据(BSS):在程序运行初未对变量进行初始化的数据. 栈(Stack):存储局部.临时变量,函数调用时,存储函数的返回指针,用于控制函数的调用和返回.在程序块开始时自动分配内存,结束时自动释放内存,其操作方式类似于数据结构中的栈. 堆 (Heap):存储动态内存分配,需要…
调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1 背景知识 1.1 什么是调度器 通常来说,操作系统是应用程序和可用资源之间的媒介. 典型的资源有内存和物理设备.但是CPU也可以认为是一个资源,调度器可以临时分配一个任务在上面执行(单位是时间片).调度器使得我们同时执行多个程序成为可能,因此可以与具有各种需求的用户共享CPU. 内核必须提供一种方法, 在各个进程之间尽可能公平地共…
前言 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) idle进程由系统自动创建, 运行在内核态 idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程.完成加载系统后,演变为进程调度.交换 init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用户空间 由0进程创建,完成系统的初始化.…
Linux通过维护者五个状态来调度进程的运行.这五个状态分别为:运行.可中断.不可中断.僵死.停止 . PID来标识不同的进程的,Linux中每一个进程都有一个唯一的进程号 . PCB块就是一个进程资源 1.fork函数include <unistd.h>pid_t fork (void)返回值 0:子进程   子进程ID(大于0)   -1:出错使用fork函数得到的子进程是父进程的一个复制品.使用fork函数的代价很大,它复制了父进程中的代码段.数据段和堆栈段里的大部分内容. 2. exe…
一.进程的定义         进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放.可以认为进程是一个程序的一次执行过程.   二.进程与程序的区别          程序时静态的,它是一些保存 在磁盘上得指令的有序集合,没有任何执行的概念.     进程是一个动态的概念,它是程序执行的过程,包括创建.调度和消亡.   三.linux系统中进程的表示       在linux系统中,进程由一个叫task_struct的结构体描述,…
今天学习了Linux的进程创建的基本原理,是基于0.11版本核心的.下面对其作一下简单的总结. 一.Linux进程在内存中的相关资源   很容易理解,Linux进程的创建过程就是内存中进程相关资源产生的过程,那么Linux进程在内存中有哪些相关资源呢?   1)task数组中的一项:一个指针指向进程的task_struct   2)一页内存:task_struct(Linux进程控制块)和内核态堆栈   3)页表:线型地址到物理地址的映射表   4)页目录表项:指向页表   5)全局描述表(GD…