linux程序设计:第七章 数据管理
2016-09-23 15:24
211 查看
一. 内存管理
1.简单的内存分配
使用标准c语言函数库中的malloc调用来分配内存。
void * malloc(size_t size)
返回的是一个void*指针,因此需要通过类型转换。可以保证其返回的内存是地址对齐的,因此可以将其转换成任何类型的指针。
2.分配大量的内存
应用程序所需的内存是由linux内核管理的。刚开始,内核只是通过使用空闲的物理内存来满足应用程序的内存需求,但是当物理内存耗尽时,就开始使用交换空间。交换空间是安装系统时分配的独立的磁盘区域。
内核会在物理内存和交换空间之间移动数据和程序代码。Linux实现了一个按需换页的虚拟内存系统。
3.释放内存
动态使用内存的程序总是通过free调用,把不用的内存释放给malloc内存管理器。
void free (void * memory)
二.文件锁定
1. 创建锁文件
以原子操作的方式创建锁文件。锁文件只是建议锁而不是强制锁。open系统调用并带上0_CREAT和O_EXCL标志。
2.区域锁定
锁文件用来对资源的独占式访问。并不适合于访问大型的共享文件。
int fcntl ( int fildes,int command,...)
command选项:
F_GETLK 获取fileds打开的文件的锁信息,不会尝试去锁定文件。
F_SETLK 尝试对fileds指向的文件的某个区域加锁或解锁。
F_SETLKW 无法获取锁时,这个调用会一直等待到可以为止。
当对文件区域加锁之后,必须使用底层的read和write调用来访问文件中的数据,而不要使用更高级的fread和fwrite调用,因为他们会对读写的数据进行缓存。
有三种类型的锁:文件中的每一个字节任一时刻只能拥有一种类型的锁。
F_FDLCK 共享(读)锁
F_UNLCK 解锁或用来清除锁
F_WRLCK 独占(写)锁
3. 死锁
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
1.简单的内存分配
使用标准c语言函数库中的malloc调用来分配内存。
void * malloc(size_t size)
返回的是一个void*指针,因此需要通过类型转换。可以保证其返回的内存是地址对齐的,因此可以将其转换成任何类型的指针。
2.分配大量的内存
应用程序所需的内存是由linux内核管理的。刚开始,内核只是通过使用空闲的物理内存来满足应用程序的内存需求,但是当物理内存耗尽时,就开始使用交换空间。交换空间是安装系统时分配的独立的磁盘区域。
内核会在物理内存和交换空间之间移动数据和程序代码。Linux实现了一个按需换页的虚拟内存系统。
3.释放内存
动态使用内存的程序总是通过free调用,把不用的内存释放给malloc内存管理器。
void free (void * memory)
二.文件锁定
1. 创建锁文件
以原子操作的方式创建锁文件。锁文件只是建议锁而不是强制锁。open系统调用并带上0_CREAT和O_EXCL标志。
2.区域锁定
锁文件用来对资源的独占式访问。并不适合于访问大型的共享文件。
int fcntl ( int fildes,int command,...)
command选项:
F_GETLK 获取fileds打开的文件的锁信息,不会尝试去锁定文件。
F_SETLK 尝试对fileds指向的文件的某个区域加锁或解锁。
F_SETLKW 无法获取锁时,这个调用会一直等待到可以为止。
当对文件区域加锁之后,必须使用底层的read和write调用来访问文件中的数据,而不要使用更高级的fread和fwrite调用,因为他们会对读写的数据进行缓存。
有三种类型的锁:文件中的每一个字节任一时刻只能拥有一种类型的锁。
F_FDLCK 共享(读)锁
F_UNLCK 解锁或用来清除锁
F_WRLCK 独占(写)锁
3. 死锁
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
相关文章推荐
- [Linux] 第七章 数据管理 - 动态内存分配
- [Linux] 第七章 数据管理 - 文件锁定
- [Linux] 第七章 数据管理 - 文件锁定
- [Linux] 第七章 数据管理 - 动态内存分配
- [linux程序设计笔记]第7章:数据管理(省略了后面的数据库那个)
- linux学习(6)第七章、Linux 文件与目录管理
- 第二部分 第七章 Linux文件和目录管理
- Linux高级程序设计----线程与私有数据
- 第七章 linux文件与目录管理
- Linux集群管理中的核心-监控数据(1)
- 鸟哥的Linux私房菜基础学习篇(第三版)之第七章:Linux档案与目录管理
- 第七章 业务数据库的管理(十二)-- 设置业务数据共享
- linux下oracle数据文件管理操作命令
- Linux文件与目录管理常用命令详解(鸟哥的Linux私房菜基础学习篇第三版-第七章)
- 6)Linux程序设计入门--消息管理
- 《第七章》 数据管理 --之 动态内存分配
- Beginning Linux Programming 笔记(七)数据管理
- Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南
- Linux程序设计入门--消息管理
- makefile 工程管理---那些年我们一起学习linux程序设计