美文网首页安全攻防
6. 程序、进程、线程、内存结构的概念

6. 程序、进程、线程、内存结构的概念

作者: 泰克2008 | 来源:发表于2017-08-12 16:57 被阅读10次

程序(静态的,磁盘上)

程序是完成某个功能的指令集。程序一般是指可执行的二进制文件。

进程(动态的,内存中)

进程的概念

  • 进程是程序的运行实例,是系统进行资源分配和调度运行的基本单位。
  • 换句话说进程是一个容器,包含程序执行需要的代码、数据还有资源等信息。多任务的操作系统,可以同时执行多个进程。

进程虚拟地址空间

  • 多任务操作系统中的每一个进程都运行在一个属于它自己的内存沙盘中,这个沙盘就是虚拟地址空间(virtual addressspace), 在32位经典模式下,它总是一个4GB的内存地址块。
  • 这些虚拟地址通过页表(pagetable)映射到物理内存,页表由操作系统维护并被处理器引用。
  • 每个进程都拥有一套属于它自己的页表,但是还有一个隐情,只要虚拟地址被使能,那么它将会作用于这台机器上运行的所有软件,包括内核本身,因此,有一部分虚拟地址必须保留给内核使用。

线程

轻量级进程,是进程内一个相对独立的、可调度的执行单元,是CPU调度的基本单元。

函数

包含某个特定功能的代码块,可以叫做子程序。

典型的内存空间布局

从低地址到高地址依次为:代码区、只读常量区、全局区/数据区、BSS段、堆区、栈区。

代码区:存放可执行指令。

只读常量区:存放字面值常量、具有常属性且被初始化的全局和静态局部变量(如:字符串字面值、被const关键字修饰的全局变量和被const关键字修饰的静态局部变量)。

全局区/数据区:存放已初始化的全局变量和静态局部变量。

BBS段:存放未初始化的全局变量和静态局部变量,并把它们的值初始化为0。

堆区:存放动态分配的内存。

栈区:自动变量和函数调用时需要保存的信息(逆向分析的重点)

补充:
代码区和只读常量区一般统称为代码段

栈区和堆区之间相对生长的,堆区的分配一般按照地址从小到大进行,而栈区的分配一般按照地址从大到小进行分配。
内存结构.png

相关文章

  • 6. 程序、进程、线程、内存结构的概念

    程序(静态的,磁盘上) 程序是完成某个功能的指令集。程序一般是指可执行的二进制文件。 进程(动态的,内存中) 进程...

  • 多线程(GCD)

    进程和线程的概念 进程:程序是运行在内存中,进程负责分配内存线程:负责程序中代码的实际运行。分类:主线程(一条),...

  • 进程和线程的内存组织结构

    进程和线程的内存组织结构 进程的内存组织结构 进程的地址空间 通用的栈结构 进程是操作系统对一个正在运行的程序的抽...

  • 多线程

    多线程基础概念 进程与线程 进程:进程是程序的执行过程(具有动态性),持有资源(共享内存,共享文件)和线程 (在一...

  • Java多线程中的10个面试要点

    1、进程与线程区别以及线程相关概念 进程就是运行中的程序,每个进程占用独自的内存空间;线程属于进程,一个进程可以有...

  • Java SE——线程

    1、基本概念描述 首先区分进程和线程的概念: 进程——即正在运行的程序,负责了这个程序的内存空间分配,代表了内存中...

  • Android进程和线程【概念和基础知识】

    1.Android进程和线程 1.1 进程和线程的概念 进程是资源(CPU、内存等)分配的基本单位,它是程序执行时...

  • 基本概念:程序、进程、线程

    1. 基本概念:程序、进程、线程 一个进程中的多个线程共享这个进程中的堆和方法区 补充:JVM内存解析

  • 单进程多线程vs多进程单线程

    进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程:进程中的一段代码,一个进程中...

  • iOS开发之多线程

    1、多线程概念 进程 正在进行中的程序被称为进程,负责程序运行的内存分配。每一个进程都有自己独立的虚拟内存空间。 ...

网友评论

    本文标题:6. 程序、进程、线程、内存结构的概念

    本文链接:https://www.haomeiwen.com/subject/xjsjrxtx.html