网站建设信用卡取消,网站怎样投放广告位,合肥瑶海区网站建设费用,关于申请网站建设经费的报告文章目录 问题引入操作系统宏观认识操作系统与进程程序地址空间进程地址空间问题解释 问题引入
在Linux操作系统中、vim编译器下#xff0c;出现了变量同地址但不同值的现象。 下面以解释该现象产生的原因为主线#xff0c;在过程中学习Linux操作系统的知识。
运行代码展示… 文章目录 问题引入操作系统宏观认识操作系统与进程程序地址空间进程地址空间问题解释 问题引入
在Linux操作系统中、vim编译器下出现了变量同地址但不同值的现象。 下面以解释该现象产生的原因为主线在过程中学习Linux操作系统的知识。
运行代码展示 运行结果展示
操作系统宏观认识
操作系统是什么 操作系统是一个专注于“管理“功能的软件。 管理的对象是什么 资源。
操作系统与进程
什么是进程 课本概念程序的一个执行实例正在执行的程序等。 内核观点担当分配系统资源CPU时间内存的实体。 详细介绍
操作系统是如何管理进程的 先描述再组织。 描述用名为PCBprocess control block的struck结构体记录进程的基本信息在Linux中描述进程的结构体叫做task_struct。 组织用如链表的的数据结构组织起来。
操作系统创建系统的过程
分配进程控制块PCB操作系统为新进程分配一个独立的PCB用于存储进程的相关信息。分配地址空间操作系统为新进程分配一段内存空间用于存储进程的代码、数据和堆栈等信息。加载程序操作系统将进程的可执行文件从磁盘或其他存储设备中读入内存并将其复制到进程的地址空间中。初始化进程操作系统为新进程初始化一些必要的数据结构和变量如文件描述符表、信号处理表等。设置进程优先级操作系统为新进程设置一个优先级用于决定进程在系统中的调度顺序。将进程加入就绪队列操作系统将新进程加入就绪队列等待CPU分配资源并执行
程序地址空间 Linux验证地址空间分布图
进程地址空间 什么是虚拟内存
虚拟内存是一种计算机内存管理技术它允许操作系统将物理内存和磁盘空间组合使用从而扩展可用内存的大小。虚拟地址空间通过页表映射到物理内存或者磁盘上。当进程需要访问某个页面时操作系统会从磁盘读取到物理内存中然后将该程序地址空间的虚拟地址映射到物理地址使得进程可以访问该页面。当物理内存不足时操作系统会将一些不常用的空间从物理内存中换出到磁盘上从而腾出空间给其他进程使用。虚拟内存技术可以提高系统的内存利用率使得多个进程可以同时运行而不会因为内存不足而导致系统崩溃。
虚拟内存存在的意义
扩大可用内存空间虚拟内存可以将磁盘空间作为扩展内存使用从而扩大了可用内存空间。这样即使物理内存不足也可以运行更多的程序。因为页表可以映射外存提高程序运行效率虚拟内存可以将不常用的内存数据暂时存储到磁盘上从而释放物理内存空间让更常用的数据可以被加载到内存中提高程序的运行效率。(由于页表的存在在进程视角内存中分配的空间是有序的)有些分配了内存也不会立刻使用虚拟内存的存在就提高了实际内存的使用效率保护系统稳定性虚拟内存可以将程序的内存空间隔离开来防止程序之间相互干扰从而保护系统的稳定性。物理内存是一个硬件既可以读也可以写虚拟内存只可以读在物理内存的设计下如果进程1中出现野指针那么有可能实际访问到其他进程的内容如果其他进程中存有密码类的东西那么这样就是不安全的直接使用物理内存缺点很多可以查查。实现内存共享虚拟内存可以实现内存共享多个进程可以共享同一块内存空间从而减少内存的使用量提高系统的效率。
什么是写时拷贝
写时拷贝Copy-on-write简称COW是一种内存管理技术它允许多个进程共享同一块内存但只有在进程试图修改该内存时才会进行实际的拷贝操作。这种技术可以减少内存的使用量提高系统的性能。
在写时拷贝的实现中当一个进程试图修改共享内存中的某个数据时操作系统会先检查该内存块是否已经被其他进程共享。如果是则操作系统会为该进程分配一块新的内存将原始内存块中需要修改的数据拷贝到新的内存块中然后让该进程修改新的内存块。其他进程仍然共享原始内存块直到它们也试图修改该内存块中的数据。
在C语言中malloc的是什么地址 虚拟地址malloc的空间被写入时才会在物理空间上有实际的空间。 相关知识操作系统在第一次构建页表时并不会为进程分配实际的物理内存而是只是为进程分配了虚拟地址空间。当进程第一次访问某个虚拟地址时操作系统才会为该虚拟地址分配实际的物理内存。
地址空间在编译中也生效编译时地址空间是指程序在编译时所使用的虚拟地址空间。
问题解释
frok创建进程时再父进程中返回所创建的子进程的值在子进程中返回了0也就是说此时发生了写时拷贝在子进程中写入了 0 发生了写时拷贝物理内存会重新分配一块地方作为新的虚拟内存也就是说这里两个地址相同的变量只是虚拟内存的地址相同实际物理地址并不相同。