- 浏览: 142457 次
文章分类
最新评论
传统的 UNIX 系统实现在内核中都设有缓冲区高速缓存或页高速缓存,大多数磁盘 I/O 都通过缓冲区进行。当向文件写入数据时,内核通常首先将数据复制到缓冲区中,然后排入队列,晚些时候再写入磁盘。这种方式被称为“延迟写(delayed write)”。
通常,当内核需要重用缓冲区来存放其他磁盘块数据时,它会把所有延迟写数据块写入磁盘。为了保证磁盘上实际文件系统与缓冲区中内容的一致性,UNIX 系统提供了 sync、fsync 和fdatasync 三个函数。
sync 只是将所有修改过的块缓冲区排入写队列,然后就返回,并不等待实际写磁盘操作结束。通常,称为 update 的系统守护进程周期性地调用(一般每隔 30 秒)sync 函数,这就保证了定期冲洗(flush)内核的块缓冲区。UNIX 命令 sync(1) 也调用 sync 函数。
fsync 函数只对由文件描述符 fd 指定的一个文件起作用,并且等待写磁盘操作结束才返回。fsync 可用于数据库这样的应用程序,这种程序需要确保修改过的块立即写到磁盘上。
fdatasync 类似于 fsync,但它只影响文件的数据部分。而除数据外,fsync 还会同步更新文件的属性。
通常,当内核需要重用缓冲区来存放其他磁盘块数据时,它会把所有延迟写数据块写入磁盘。为了保证磁盘上实际文件系统与缓冲区中内容的一致性,UNIX 系统提供了 sync、fsync 和fdatasync 三个函数。
#include <unistd.h> int fsync(int fd); int fdatasync(int fd); /* 返回值:若成功,返回0;否则,返回 -1 */ void sync(void);
sync 只是将所有修改过的块缓冲区排入写队列,然后就返回,并不等待实际写磁盘操作结束。通常,称为 update 的系统守护进程周期性地调用(一般每隔 30 秒)sync 函数,这就保证了定期冲洗(flush)内核的块缓冲区。UNIX 命令 sync(1) 也调用 sync 函数。
fsync 函数只对由文件描述符 fd 指定的一个文件起作用,并且等待写磁盘操作结束才返回。fsync 可用于数据库这样的应用程序,这种程序需要确保修改过的块立即写到磁盘上。
fdatasync 类似于 fsync,但它只影响文件的数据部分。而除数据外,fsync 还会同步更新文件的属性。
发表评论
-
打开伪终端设备
2018-07-09 20:50 1252在伪终端概述一节中已对 PTY进行了初步的介绍。尽管 ... -
伪终端概述
2018-06-02 11:05 1550伪终端就是指,一个应用程序看上去像一个终端,但事实上它 ... -
终端窗口大小和 termcap
2018-05-29 22:39 800多数 UNIX 系统都提供了一种跟踪当前终端窗口大小的 ... -
终端规范模式和非规范模式
2018-05-29 00:25 950终端规范模式很简单:发一个读请求,当一行已经输入后,终 ... -
终端标识
2018-05-23 11:18 569尽管控制终端的名字在多数 UNIX 系统上都是 /de ... -
波特率和行控制函数
2018-05-22 07:53 944虽然大多数终端设 ... -
终端属性和选项标志
2018-05-20 07:40 710tcgetattr 和 tcsetattr ... -
终端特殊输入字符
2018-05-17 06:33 815终端支持下表所示的特殊输入字符。 为了更改 ... -
终端 I/O 综述
2018-05-10 07:56 439终端设备可认为是由内核中的终端驱动程序控制的。每个终端 ... -
POSIX 信号量
2018-05-09 00:03 579在XSI IPC通信之信 ... -
XSI IPC 通信之共享存储
2018-04-25 07:18 947在XSI IPC通信之消息队列和XSI IPC通信之信 ... -
XSI IPC通信之信号量
2018-04-17 23:38 617在XSI IPC通信之消 ... -
XSI IPC通信之消息队列
2018-04-15 10:54 497消息队列是消息的链接表,存储在内核中,由消息队列标识符 ... -
XSI IPC 相似特征介绍
2018-02-08 23:48 485有 3 种称作 XSI IPC ... -
IPC 通信之 FIFO
2018-02-06 22:55 421FIFO 也被称为命名管道,未命名的管道只能在两个相关 ... -
IPC 通信之管道
2018-01-30 22:22 389管道是 UNIX 系统 IPC 的最古老但也是最常用的 ... -
readv/writev 函数及存储映射 I/O
2018-01-19 00:57 889readv 和 writev 函数可用于在一次函数调用 ... -
POSIX 异步 I/O
2018-01-16 21:33 455POSIX 异步 I/O 接口为对不同类型的文件进行异 ... -
fcntl 记录锁
2018-01-06 23:48 615记录锁的功能是:当有进程正在读或修改文件的某个部分时, ... -
守护进程惯例
2018-01-06 23:52 439UNIX 系统中,守护进程遵循下列通用惯例。 ...
相关推荐
php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。php变量缓存到文件的函数 SAVE函数有用哦。...
Python中的Cashier库是一个用于实现持久化缓存功能的库,它可以帮助开发者高效地存储和检索函数的结果,避免了重复计算,从而提升了程序性能。在处理大数据或计算密集型任务时,这种缓存机制尤其有用。本文将深入...
Python 函数的简单 redis 缓存 python-redis-缓存Python 函数的简单 redis 缓存要求Redis 5+Python 3.8+(应该可以在 Python 3.6+ 中使用,但未经测试)如何安装pip install python-redis-cache如何使用from redis ...
首先,写入缓存文件的函数`write_static_cache`可以将数据保存到静态文件中。该函数需要两个参数,`$cache_name`作为缓存文件的名称,`$caches`是要缓存的数据。如果程序处于调试模式(`DEBUG_MODE`为2),则不执行...
2. **启用缓存**:相反,如果要模拟有缓存的情况,可以使用`web_cache_enable()`函数开启缓存,并通过`web_cache_control()`来控制缓存策略。例如,可以设置`web_cache_control("cache", "on")`来开启缓存,并通过`...
PHP 缓存函数 PHP 设置COOKIE,并且加密COOKIE函数 PHP不缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历函数 PHP分页函数 PHP判断字符串是否UTF8格式 php判断爬虫函数 PHP判断远程文件是否存在 PHP...
callback 实现:在缓存实现中,我们使用了 callback 来实现缓存的回调函数。callback 函数将 request 作为参数,并返回缓存的结果。在我们的例子中,callback 函数返回的是一个字符串,代表着缓存的结果。 测试代码...
通过 Memoization 函数,再次查找相同的值时,直接获取事先缓存好的 value,立刻返回; Memoization 函数 代码如下: var Memoize = function(fn, cache, refetch, obj){ cache = cache || {};//用来缓存结果 return ...
Flush 函数是 PHP 中的一个输出函数,用于刷新 PHP 的输出缓存,尽量将缓存中的内容输出到用户的浏览器。该函数不返回任何值。 Print 函数是 PHP 中的一个基本输出函数,用于输出所有的参数。如果输出成功,返回 ...
`ob_flush()`函数则负责将当前缓存中的数据写入到上级缓存(这里是Apache缓存),而`flush()`函数则用于将Apache缓存中的数据发送到浏览器。通过这种方式,“1”会被立即发送到客户端,而“2”则会在5秒后输出。 ##...
- `unsignedcharGetServerBufferStatus()`函数用于检查缓存状态,即判断缓存是否已满或为空,并据此更新`gucServerCmdOut`和`gucServerCmdIn`变量。 - `unsignedcharGetServerBuffer(unsignedcharOut)`函数用于获取...
除了以上基础用法,C#的缓存机制还支持事件监听,例如`CacheEntryRemovedCallback`,可以在缓存项被移除时执行回调函数。此外,可以使用`CacheItemPriority`设置缓存项的优先级,优先级高的项在内存不足时更不容易被...
该函数刷新 PHP 的输出缓存,将缓存中的内容输出到用户的浏览器。 2.Print 函数:print(string arg, string[arg], …); 该函数输入所有的参数,返回值若输出成功,返回 true(1),否则返回 false(0)。 二、字符...
实现 `store` 方法时,使用了 `apc_store` 函数来存储缓存项。需要注意的是,实际的存储键是由 `_storageKey` 方法生成的,该方法未在提供的代码片段中给出,但可以推测它是用来添加前缀并可能进行其他处理的。 ###...
在 `ClearMemory` 子程序中,我们首先使用 `FindFirstUrlCacheEntry` 函数来获取缓存的第一个条目,然后使用 `FindNextUrlCacheEntry` 函数来遍历缓存的所有条目,并使用 `DeleteUrlCacheEntry` 函数来删除指定 URL ...
本篇文章将深入探讨PHP中的缓存技术,特别是关于`memcache`函数的使用。 `Memcache`是一种分布式内存对象缓存系统,它能够存储数据到内存中,从而加快数据的读取速度,减轻数据库的压力。在PHP中,`memcache`扩展...
CACHEDCALL可用于将慢速函数调用的结果缓存到磁盘您可以使用 cachedcall 调用任意函数。 然后它会检查如果您之前使用相同的参数进行过相同的调用。 如果你然后它会快速加载先前计算的结果磁盘缓存而不是再次计算它们...
在PHP中,可以利用输出缓冲函数如ob_start()和ob_get_contents()来实现页面内容的捕获和保存。 二、页面部分缓存 页面部分缓存针对的是动态页面中的某些部分,它缓存不变的数据片段,而动态变化的数据实时更新。这...
3. **应用程序缓存配置**:在代码中配置缓存生命周期、容量限制等参数,例如 PHP 使用 `apcu_store` 和 `apcu_fetch` 函数进行缓存操作。 4. **CDN 设置**:在 CDN 提供商的控制面板中,可以设置缓存规则,指定哪些...