数据管理

数据管理涉及三个方面:

1:动态内存管理:linux程序决部允许直接访问物理内存

1.1:简单的内存分配

      #include<stdlib.h>

      void* malloc(size_t size);

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
using namespace std;

#define A_MEGABYTE (1024*1024)

int main()
{
    char* some_memory;
    int megabyte=A_MEGABYTE;
    int exit_code=EXIT_FAILURE;


    some_memory=(char *)malloc(megabyte);
    if(some_memory!=NULL)
    {
        strcpy(some_memory,"Hello world!\n");
        cout<<some_memory<<endl;
        exit_code=EXIT_SUCCESS;
    }

    exit(exit_code);
}

1.2:malloc函数可以保证其返回的内存是地址对齐的,所以可以被转换成任意类型的指针。

1.3:linux内核使用空闲的物理内存满足应用程序的内存请求,当物理内存使用完后,它开始使用交换空间,相当于windous的交换文件。

1.4:释放内存

        #include<stdlib.h>

        void free(void *ptr_to memory);
1.5:其他内存分配函数

        void *calloc(size_t number_of_elements,size_t element_size);

        void *realloc(void *existing_memory,size_t new_size);

2:文件锁定:linux提供多种特性实现文件锁定,最简单的方式就是创建锁文件。锁文件仅仅是充当一个指示器的角色,程序间通过相互协作来使用他们。

2.1:创建锁文件

    #inclue<fcntl.h>

    open("pathname",O_RDWR|O_CREAT|O_EXCL,mode_t mode);

    以原子方式同时完成两个工作:确定文件不存在,然后创建它。

2.2:临界区:在进入临界区之前,使用open系统调用创建锁文件,然后在退出临界区时使用unlink系统调用删除锁文件


你可能感兴趣的:(数据管理)