一些问题的整理
程序员文章站
2022-04-09 22:51:03
...
一 、 使用虚拟地址空间的好处是什么?
- 让每个进程拥有了相同的、独立内存空间,相互之间不会干扰
- 读写内存更安全。由于系统和MMU的限制,使得进程无法操作到其他进程的数据。
- 不连续的物理空间可以映射成连续的虚拟地址空间
- 进程分配的内存空间只有在实际使用时,才会触发缺页异常来分配实际物理空间,从而最大程度减少了内存空间的浪费。
【MMU:Memory Management Unit的缩写,中文名是内存管理单元,它是CPU中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。】
二、 如何设置一个文件重启后删除?
MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);·
WINBASEAPI
BOOL
WINAPI
MoveFileExA(
__in LPCSTR lpExistingFileName,
__in_opt LPCSTR lpNewFileName,
__in DWORD dwFlags
);
WINBASEAPI
BOOL
WINAPI
MoveFileExW(
__in LPCWSTR lpExistingFileName,
__in_opt LPCWSTR lpNewFileName,
__in DWORD dwFlags
);
#ifdef UNICODE
#define MoveFileEx MoveFileExW
#else
#define MoveFileEx MoveFileExA
#endif // !UNICODE
dwFlags的值 :
- MOVEFILE_REPLACE_EXISTING = 0x00000001; // 覆盖已存在的目标文件,如果来源文件和目标文件指定的是一个目录,则不能使用此标记。
- MOVEFILE_COPY_ALLOWED = 0x00000002; // 如果目标文件被移动到不同的卷上,则函数通过拷贝后删除来源文件的方法来模拟移动文件操作。
- MOVEFILE_DELAY_UNTIL_REBOOT = 0x00000004; // 在系统重新启动前,不执行移动操作,直到系统启动后,磁盘检测完毕后,创建页面文件之前,执行移动操作。因此,这个参数可以删除系统之前启用的页面文件。这个参数只能被拥有 管理员权限 或 LocalSystem权限 的程序使用。这个参数不能和 MOVEFILE_COPY_ALLOWED 一起使用。
- MOVEFILE_WRITE_THROUGH = 0x00000008; // 这个标记允许函数在执行完文件移动操作后才返回,否者不等文件移动完毕就直接返回。如果设置了 MOVEFILE_DELAY_UNTIL_REBOOT 标记,则 MOVEFILE_WRITE_THROUGH 标记将被忽略。
- MOVEFILE_CREATE_HARDLINK = 0x00000010; // 系统保留,以供将来使用
//后续的问题会继续补充
上一篇: crontab的一些问题
下一篇: Java服务MQ消息队列容灾方案