文章目录
前言
本系列文章是用于自学linu内核有关内容,本篇文章记录一下第一章学习的作业
提示:以下是本篇文章正文内容,下面案例可供参考
1.程序的作用以及计算机运行程序的目的
? ? ? ? 程序用于描述人类希望计算机完成工作的逻辑。计算机运行程序的目的就是为了告诉计算机按照人类的意图去运行,最后控制硬件执行命令。
2.简单描述内存的管理
? ? ? ? 内存的管理大致分为两类:有操作系统(OS)和无操作系统的
没有OS的:没有操作系统的时候,计算机运行的就是裸机程序,内存的开辟和释放全部由裸机程序自己运行。
由OS的:有操作系统的时候,操作系统会帮助我们管理内存空间,并且留下一些用于管理内存的借口,这些借口能让我们直接控制内存的管理。
操作系统的内存管理方式大概分为动态空间管理和静态空间管理。
动态空间管理:栈、堆
????????1、栈:栈能自动管理内存,是一种用来管理内存的数据结构,栈的规则是先进后出,而和它相似的对列则是先进先出。栈多用于局部变量的定义和函数的调用,当我们在C语言当中定义一个局部变量时(int a),编译器会在栈中分配一段内存空间(4字节)给这个局部变量用,栈顶指针也会相应的移动4个字节,将这4字节的栈内存的内存地址和我们定义的局部变量名a关联起来,这里对应的操作叫做入栈,就是将数据存入变量a中。等我们函数退出时,局部变量就会被释放。对应的操作叫做弹栈(出栈)。使用栈时切忌内存溢出。
????????2、堆:堆是需要程序员自己去定义的内存管理方式,它容量不限,动态分配(这里的动态指的是程序在运行中取得内存空间,而不是编译时就确定好固定大小的内存空间),堆的申请(malloc)和释放(free)都需要手工进行。这里注意堆的使用意外,如果程序员申请内存后不释放,这段内存就丢失了(在管理器中,这段内存仍然属于这个进程,但是进程会认为这一段内存已经被占用了,再用这个进程的时候又会去申请新的内存),这种情况称之为内存泄漏,是使用C语言很严重的BUG。
静态空间管理:
????????静态区的特点是,在程序编译时,就已经完成了这些内存空间的分配,一旦程序运行,就无法重新分配和释放内存空间,只有在程序结束的时候,它们才会被自动释放。
总结
????????今天太晚宿舍要关门了,暂时记录这两道题,溜也!
|