linux程序设计笔记7:内存管理

来源:互联网 发布:gta5捏脸数据萌妹子 编辑:程序博客网 时间:2024/05/22 04:51
 

1.malloc函数可以保证其返回的内存是地址对齐的,所以它可以被转换为任何类型的指针。
2.程序能够分配大大超出机器物理内存容量的内存。因为存在“虚拟内存”。
3.应用程序所分配的内存是由linux内核管理的,内核只是通过使用空闲的物理内存来满足应用程序的内存请求,但

是当物理内存消耗尽时,它便会开始使用所谓的交换空间。 在linux系统中,交换空间是一个在安装系统时分配的独

立的磁盘区域。
4.应用程序所看到的内存是:按需换页的虚拟内存系统. ITer看到的所有内存全是虚拟的。当所访问的内存在物理上

并不存在时,就会产生一个页面错误并将控制权交给内核。
5.当应用程序耗尽所有物理内存和交换空间时,或者当最大栈长度被超过时,内核将拒绝此后的内存请求,并可能提

取终止程序的运行。
6.在有必要的情况下,内核会把该页内存放入到交换空间中,以腾出实际物理内存供程序内存申请使用,需要使用时

,再重交换空间提取出来,然后把一块内存放入交换空间。(空间不够时,需要腾出一个页到交换空间,然后让交换

空间的页进入内存中去。)
7.程序常出的内存访问错:访问,写一个内存块之后的数据。 即超出了该内存块的写操作。
8.只有操作系统才知道物理内存是如何安排的,它不仅为用户程序管理内存,同时也为用户程序提供彼此之间的隔离

保护。
9。释放内存:使用free(),他会把内存释放给malloc内存管理器。这样分散的内存块又有可能重新合并在一起了哦。
10.调用free()使用的指针必须是指向malloc calloc realloc 调用所分配的内存。
11.free()之后的内存是不可以读写的哦。由malloc函数库来接手管理了哦。
12.calloc它所分配的内存将全部初始化为0. realloc 函数用来改变先前已经分配好的内存块的长度,增加或则减少

长度。


二。文件锁定
原子操作:即锁定时,系统将不允许任何其他的事情发生。
使用锁文件,也可以达到进程间的同步协调啊。所有的同步,东东,不虚使用具有全局性的变量或者文件,否则无法

通过这些东东来判断是否被占用,因为他们是不同的进程或者函数,需要协调的话,当然是全局了哦。
比如:锁文件。 他是保存在磁盘上的,当然具有全局性, 比如:线程信号量,互斥量,他们是由进程来管理的,而

不是线程函数。所以具有全局。 比如:IPC进程间通信机制:他们由操作系统来统一管理,所以也可以通过他们来同

步撒。 我去。

原创粉丝点击