请输入您要查询的百科知识:

 

词条 COW
释义

车载基站

英文缩写: COW (Cell On Wheels) 中文译名: 车载基站

解 释: 安装在平板拖车上的基站设备,这种设备可用于紧急状态时,例如某个基站的发射塔发生倒塌,或基站设备发生意外事故时,车载基站就可以迅速暂时替代,保持小区内的通信。

英语单词

名词 n.

1.母牛

Most cows run dry in about 10 months.

大多数乳牛约10个月后就不再有奶了。

2.雌象,雌鲸(及某些大型雌性动物)

3.婆娘;娘儿们及物动词

vt.

1.恐吓;吓唬;威胁;胁迫

写时复制技术

英文缩写:COW (copy-on-write) 中文译名:写时复制技术。

原理

有一定经验的程序员应该都知道Copy On Write(写时复制)使用了“引用计数”(reference counting),会有一个变量用于保存引用的数量。当第一个类构造时,string的构造函数会根据传入的参数从堆上分配内存,当有其它类需要这块内存时,这个计数为自动累加,当有类析构时,这个计数会减一,直到最后一个类析构时,此时的引用计数为1或是0,此时,程序才会真正的Free这块从堆上分配的内存。

通俗理解

Scott Meyers在《More Effective C++》 中举了个例子,在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里,做出一副正在复习功课的样子,其实你在干着别的诸如给班上的某位女生写情书之类的事,而一旦你的父母出来在你房间要检查你是否在复习时,你才真正捡起课本看书。这就是“拖延战术”,直到 你非要做的时候才去做。

当然,这种事情在现实生活中时往往会出事,但其在编程世界中摇身一变,就成为了最有用的技术,正如C++中的可以随处声明变量的特点一样,Scott Meyers推荐我们,在真正需要一个存储空间时才去声明变量(分配内存),这样会得到程序在运行时最小的内存花销。执行到那才会去做分配内存这种比较耗时的工作,这会给我们的程序在运行时有比较好的性能。必竟,20%的程序运行了80%的时间。

copy on write思想应用

当 然,拖延战术还并不只是string这样一种类型,这种技术被我们广泛地应用着,特别是在操作系统当中,当一个程序运行结束时,操作系统并不会急着把其清除出内存,原 因是有可能程序还会马上再运行一次(从磁盘把程序装入到内存是个很慢的过程),而只有当内存不够用了,才会把这些还驻留内存的程序清出。

写时复制(Copy-On-Write)技术,就是编程界“懒惰行为”——拖延战术的产物。举个例子,比如我们有个程序要写文件,不断地根据网络传来的数据写,如果每一次fwrite或是fprintf都要进行一个磁盘的I/O操 作的话,都简直就是性能上巨大的损失,因此通常的做法是,每次写文件操作都写在特定大小的一块内存中(磁盘缓存),只有当我们关闭文件时,才写到磁盘上 (这就是为什么如果文件不关闭,所写的东西会丢失的原因)。更有甚者是文件关闭时都不写磁盘,而一直等到关机或是内存不够时才写磁盘,Unix就是这样一个系统,如果非正常退出,那么数据就会丢失,文件就会损坏。

为了性能我们需要冒这样大的风险,还好我们的程序是不会忙得忘了还有一块数据需要写到磁盘上的,所以这种做法,还是很有必要的。

而我们最经常使用的fork()函数,在父进程创建子进程时,就是采用此技术,不是立刻将父进程的进程空间拷贝一份给子进程用,而是让子进程共享父进程的进程空间,只在需要写入时才进行拷贝,让它们拥有各自的进程空间。这是很有用的,因为拷贝进程空间是一个开销很大的过程,而很多情况下并不需要对进程空间进行写操作,比如创建一个进程只是执行,或者子进程马上启动一个新的进程,这些情况下,并不需要独立的进程空间,写时复制就显得很“高明”。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 5:59:48