程序、进程、内存映射

简介:  程序如何产生的?源代码经过下面四个步骤:1、预编译2、编译3、汇编4、连接程序就产生了。这些工作都是编译器做的,可见编译器的重要性。程序执行的过程是什么?程序和进程有什么区别?程序是存储在硬盘上的静态的二进制可执行代码,进程是在内存中运行,并不断发生变化的活的二进制执行代码。

 程序如何产生的?源代码经过下面四个步骤:

1、预编译

2、编译

3、汇编

4、连接

程序就产生了。

这些工作都是编译器做的,可见编译器的重要性。

程序执行的过程是什么?程序和进程有什么区别?

程序是存储在硬盘上的静态的二进制可执行代码,进程是在内存中运行,并不断发生变化的活的二进制执行代码。

程序如何变成进程的?

当你执行程序时,内核首先将你的程序读入内存,并分配内存空间。

随后内核为你的程序分配进程标识符,以及运行需要的各种资源,这时进程已经产生了?

最后内核将你的进程放入调度队列,在合适的时候执行。

其中内核如何将程序读入内存的?在读入的过程中程序并没有发生变化,还保存的硬盘中。而是通过映射的方法,将程序复制到内存中,也就是内存映射。

所谓的代码段,数据段,堆栈等都是存在于内存之上。

最终:程序存储与硬盘之上,映射在内存。程序没有堆栈,映射到内存之后才分配内存以及堆栈。程序是静态的,映射到内存之后才会随着运行而发生改变。

目录
相关文章
|
4天前
|
存储 安全 Linux
深入理解操作系统:从进程管理到内存分配
【6月更文挑战第30天】在数字时代的心脏,操作系统是现代计算不可或缺的组成部分。本文将深入探讨操作系统的核心功能,包括进程管理、内存分配以及文件系统管理。我们将通过实际案例分析,揭示这些机制如何在提高计算机性能的同时保证资源的有效利用。文章旨在为读者提供对操作系统工作原理的深刻理解,并展示其在现代技术中的应用价值。
|
10天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
22 2
|
1天前
|
监控
LabVIEW程序内存泄漏分析与解决方案
LabVIEW程序内存泄漏分析与解决方案
|
3天前
|
存储 算法 程序员
深入理解操作系统:从进程管理到内存分配
【7月更文挑战第1天】在数字时代的心脏,操作系统(OS)扮演着枢纽的角色。本文将探索操作系统的核心概念,包括进程管理、内存分配和文件系统,同时揭示这些机制如何协同工作以确保计算机系统的高效运行。我们将从用户和程序员的视角出发,分析操作系统如何在幕后默默支撑着我们的数字生活。
|
7天前
|
监控 Linux
深入了解Linux的pmap命令:进程内存映射的利器
`pmap`是Linux下分析进程内存映射的工具,显示内存区域、权限、大小等信息。通过`/proc/[pid]/maps`获取数据,特点包括详细、实时和灵活。参数如`-x`显示扩展信息,`-d`显示设备。示例:`pmap -x 1234`查看进程1234的映射。注意权限、实时性和准确性。结合其他工具定期监控,排查内存问题。
|
7天前
|
Java UED 开发者
JVM逃逸分析原理解析:优化Java程序性能和内存利用效率
JVM逃逸分析原理解析:优化Java程序性能和内存利用效率
|
7天前
|
存储
程序与技术分享:C内存池的实现
程序与技术分享:C内存池的实现
|
7天前
|
开发框架 安全 .NET
程序技术好文:进程和线程的区别
程序技术好文:进程和线程的区别
|
8天前
|
存储 缓存 算法
深入理解操作系统:从进程管理到内存分配
本文深入探讨操作系统的核心组件,特别关注进程管理和内存分配机制。通过分析现代操作系统中这两个关键领域的设计原理和实现技术,文章揭示了它们如何共同确保系统资源的有效利用和任务的高效执行。我们将从理论到实践,逐步解析进程状态变迁、调度算法以及内存分配策略,旨在为读者提供对操作系统内部工作原理的深刻见解。
8 0
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;
有 3 个进程 P1、P2、P3 协作解决文件打印问题。P1 将文件记录从磁盘读入内存的缓冲区 1,每执行一次读一个记录 ;P2 将缓冲区 1 中的内容复制到缓冲区 2 中,每执行一次复制一个记录 ;