Profil von 培杰AcmeFotosBlogListenMehr Extras Hilfe

Blog


    12 März

    Xen学习 细节设计

    3.1 控制传递:hypercalls和事件

        有两种机制用于Xen和其上的domain之间进行控制的交互:使用hypercall产生从domain到Xen的同步调用;使用异步事件机制完成从Xen到domain的通告递交。

        hypercall接口允许domain通过执行一个同步软陷阱陷入到hypervisor执行一个特权操作,这类似于在传统的操作系统中对系统调用的使用。举一个使用hypercall的例子:一组页表更新的请求,要经过Xen确认并且完成相应的更新操作(//更新是要由Xen确认并完成的,需要特权操作,所以这时要利用hypercall陷入到hypervisor中),在更新完成后再由Xen将控制返回给产生本次调用的domain.

        从Xen到domain的通信是由一个异步事件机制提供的。这个机制取代了常用的利用设备中断的递交机制,它允许那些重要事件(如domain-termination request)采用轻量级的通告形式。和传统的Unix信号类似,这些重要事件的个数比较少,但每一个都用作针对某一特定类型事件的标记。例如,用于在网络上指出新的数据已经被接收到的事件,或者表示一个虚拟磁盘请求已经完成的事件。

        那些未决的事件存放在每个domain的bitmask(//一个专门的数据结构)中。bitmask的更新要由Xen在调用一个和guest OS相应的事件调用返回句柄之前完成(//Xen针对某类事件要向上发通告,如果Xen调用了guest OS相应的事件调用返回句柄,就说明该事件完成了,下面要把控制交回给domain,所以必然要在调用事件调用返回句柄之前由Xen将bitmask更新)。调用返回句柄负责重新设置未决事件集合(//调用返回句柄仍旧是由Xen操作,更新bitmask),同时以相应的行为和通告相呼应。一个domain可以通过设置一个Xen可读的软件标记来显式地推迟对事件操作:这一点是与在真实的处理器中禁止中断的过程类似的。

     

    3.2 数据传递:I/O环

        hypervisor的存在意味着在guest OS和I/O设备之间有一个额外的保护域,所以数据的传递机制就变得至关重要。数据传递机制使得数据能够在系统中沿着竖直方向移动,同时具有尽量小的开销。

        有两个主要方面构成了我们对I/O传递机制的设计:资源管理和事件通告。为了做到resource accountability,我们在接收到一个来自设备的中断后,要尽量减少在将多路数据分解(//demultiplex data:分解多路数据,数据自硬件设备传来,需要传递给各个指定的domain中的guest OS中执行,这里就存在一个多路选择的问题来确定究竟把数据传给哪个domain;一旦确定了数据是传给哪个domain的,也就说明了此时是哪个domain在使用相关设备,做到了resource accountability)到一个特定的domain中所做的工作 —

        管理缓冲区带来的开销是在计算任务分配给相应的domain后产生的(//任务分给domain后,domain才开始对任务数据所处的那部分缓冲区进行管理,而并非用其它的机制对整个缓冲区统一管理,那样会增加复杂性,而且缺乏保障)。类似的,设备I/O的访存操作也是由相应的domain提供的,这么做可以防止由于共享缓冲池导致的相互间的干扰(//如果I/O能够直接访存而不经过domain管理的话,就会产生混乱,比如不清楚I/O操作存取到的数据是属于哪个domain的);I/O缓冲在数据传递过程中通过Xen内部绑定(pin)到底层页框上面的方法来获得保护。

        I/O描述符环是一个循环队列,它由domain分派的描述符组成,可以从Xen内部访问到。描述符中并不直接包含有I/O数据;取而代之的是,I/O数据缓冲被guest OS在带宽外分配再间接地由I/O描述符引用(//I/O描述符环的容量是有限的,所以I/O数据要先进行分配,再做向I/O描述符环上的映射;所谓out-of-band:带宽外,就是在分配数据时可以超出I/O描述符环的限制)。每次环访问都要基于两对生产者-消费者指针:domain通过推进请求生产者指针将一个请求放置在环上;Xen处理这些请求,推进一个相关的请求消费者指针。响应被放回在环上也是类似的,只是由Xen作为生产者,guest OS作为消费者。这里是不要求请求是被按顺序被处理的:guest OS给每个请求都建立了一个唯一的相关标识符,这个标识符会在相关的响应上被复制(//描述符环只是限定了能够处理请求的规模,并不规定处理顺序,谁先被处理谁后被处理是在将数据映射到描述符环上的时候决定的)。这就允许Xen出于调度和优先级的考虑,重新排定I/O操作的顺序。

        这个结构是通用的,足以支持很多不同的设备范例。例如,如果一组“请求”要为网络数据包的接收提供缓冲,那么相应的后续“响应”就是数据包已经到达缓冲区的信号。重新排序在处理磁盘请求时是很有用的(//比如两个domain请求都要读同一块数据,那么就可以把这两个请求的处理放到一起完成,提高效率),它允许它们在Xen内部被调度以提高效率;使用带宽外缓冲的描述符使得能够容易地实现零复制传输(//减少了数据拷贝,如果不用描述符的话,那么就务必要将缓冲区的数据内容在I/O环中进行复制,而现在做的只是映射操作,即零复制)。

        我们将请求和响应的产生和其它的通告分开:在请求的情况下,一个domain可以在调用一个hypercall陷入Xen之前将多个项排入队列;在响应的情况下,一个domain能够通过划定一个相应的阀值来推迟通告事件的递交。这使得每个domain能够权衡延迟和吞吐量的需求,类似在ArseNIC吉比特以太网接口的flow-aware(//流优化?)的中断分派[34].

     

    3.3 子系统虚拟化

        前文描述的控制和数据传递机制被使用在我们对各个子系统的虚拟化实现中。在下面,我们讨论如何获得对CPU,定时器,内存,网络和磁盘的虚拟化。

        3.3.1 CPU调度

        Xen当前对domain的调度采用的是Borrowed Virtual Time(BVT)调度算法[11].我们之所以选择这个特别的算法是因为它是工作保养型的,同时还具有特殊的机制使得它能够在接收到一个事件时可以低延迟地唤醒(或者说分派)一个domain.快速的分派(//dispatch,就是类似前面说的demultiplex data)对于减少虚拟化对那些对时间敏感的操作系统子系统造成的影响是尤其重要的(//分派越快速,事件就越能及时到达操作系统);例如,TCP要依赖于确认信息的及时递交以正确地估测在网络上往返所用的时间(//如果确认信息没有及时到达,那么时间估测就有问题了)。BVT provides low-latency dispatch by using virtual-time warping, a mechanism which temporarily violates `ideal' fair sharing to favor recently-woken domains(//不很明白BVT算法的实现)。当然,其它调度算法也能够在我们的通用调度器抽象上实现。每个domain的调度参数可以由运行在Domain 0的管理软件进行调整。

    3.3.2 时间和定时器

        Xen为每个guest OS提供了真实时间,虚拟时间和挂钟时间(wall-clock time)等三个概念。真实时间是以纳秒为单位给出的,是从机器引导起来开始计算的时间,它记录的是精确的处理器执行的时钟周期数,时钟周期能够被外部时钟源锁频(例如,通过NTP时间服务)。domain的虚拟时间只是在它运行的时候才会被记入:这主要供guest OS的调度器使用来确保guest OS上的应用进程能够正确地共享时间片。最后,挂钟时间是一个偏移,用于加到当前的真实时间上。挂钟时间能够被调整(//比如在各个guest OS中的时间可以不同,有的是上午九点,有的是下午三点,改的就是这个值),同时不会影响真实时间的流逝。

        每一个guest OS能够对一对警钟定时器进行编程,一个用于真实时间,另一个用于虚拟时间。guest OS能够维护内部的定时器队列(//很多应用程序都有定时需求,真实的或者虚拟的,特别是网络应用;guest OS要对这些定时需求排队以确定谁的时间要求最紧迫,然后就尽量依次满足它们;只要有一个定时需求没被满足,即超时了,那么系统就产生异常)并使用Xen提供的警钟定时器来触发最早的超时。超时事件将会使用Xen事件机制来递交。

    3.3.3虚拟地址转换

        和其它子系统一样,Xen也努力以尽可能小的开销实现存储访问的虚拟化。正如2.1.1中讨论的,由于x86架构使用的是硬件页表,因此达到这个目标有些难度。VMware中使用的方法是为每个guest OS提供虚拟的页表,这个页表对于存储管理单元(MMU)是不可见的[10].然后由hypervisor负责陷入对虚拟页表的访问,确认更新,再将这些改变传播到虚拟页表和MMU可见的“影子”页表(//“影子”页表在第2部分提到过)。这大大增加了这个guest

        OS操作的代价,比如创建一个新的虚拟地址空间,需要对“访问过的”和“脏的”比特位上的硬件更新进行显式地传播。

        之所以完全虚拟化要强迫使用影子页表,是因为它要给出连续的物理内存的假象,而Xen就不拘泥于此。实际上,Xen只需要考虑对页表的更新,来防止guest OS导致不可接受的改变。因此我们避免了和使用影子页表相关的开销和额外的复杂度 — Xen中的方法是直接地由MMU记录guest OS的页表,并且限制住guest OS只能做读访问。页表更新通过hypercall传递给Xen;更新请求在被采纳以前经过确认,这么做就确保了安全性。

        为了有助于确认,我们给机器的每个页框都建立了一个相关的类型和引用数。一个页框在任何时候都会排它地具有下述的某一个类型:页目录(PD),页表(PT),局部描述符表(LDT),全局描述符表(GDT)。同时,这个页框还可能是可写(RW)的类型。一个guest OS可以为它自己所属的页框创建可读的映射,而不必理会页框的当前类型。一个页框只有在它的引用数为0的时候,才能被安全地重新分配给其它任务使用。这个机制被用于满足系统对安全性一贯的需求;例如,一个domain不能够任意地对页表的某个部分建立可写的映射,如果要这么做的话就必须要求页框同时具有PT和RW类型(//什么情况下是可读的映射?什么情况下又是可写的映射呢?)。

    类型系统还要被用于跟踪那些用于页表的页框中哪些是已经被确认过的(//页框用于页表,即页内容填入页框)。这时,guest OS要指出页框是否被分配用作页表 — 这就需要在页框的类型被定为PD或者PT后(//说明页框是用于页表的),由Xen对页框中的每一项做一次性地确认,直至后来由guest OS发出释放(unpin)的请求(//由guest OS释放页框)。这在改变页表基指针的时候是很有用的,因为它不需要在每一次上下文切换时都对新页表进行确认(//因为现在只确认页框了)。注意,一个页框在被释放并且引用数为0之前是不能够被重新分配给其它任务的,这样就避免了guest OS可能会绕开引用数机制而直接利用释放请求导致的危险。

        为了减少所需的hypercall调用的次数,guest OS能够在利用一个hypercall进行整批处理之前在局部将更新排入一个队列。特别是在创建新的地址空间的时候,这一点是尤其有好处的。但是无论怎样,我们必须确保更新被提交得足够早以保证准确性。幸运的是,一个guest OS在第一次使用一个新的映射前要执行一次TLB刷新:这确保了任何被缓存的改变(//这些改变目前仅存于TLB中,还没有被写入内存页表项)都是没有经过确认的。因此,在TLB刷新之前立即提交那些待处理的更新就可以满足正确性(//更新的时间,解决了什么时候进行成批更新操作以保证正确性的问题)。可是,有一些guest OS会在TLB中没有陈旧表项存在(//没有陈旧表项意味着更新都已经送达内存中?)的时候省略掉这个刷新的步骤。在这种情况下,就有可能发生第一次试图使用新的映射时会发生缺页错误(//因为没有刷新TLB)。 这时,guest OS错误句柄就必须要核查是否需要更新;如果需要的话,TLB就要被刷新(//加入所缺的内容),并且将导致刚才缺页错误的指令重新执行。

     

    3.3.4物理内存

        为各个domain进行的初始的内存分配,或者说内存保留,都是在domain被创建的时候进行的;因此,内存在domain之间是静态划分的,这就提供了强大的隔离性。最大允许的内存保留量是被规定了的:如果某个domain中的内存压力增加了,那么它就可以从Xen争取额外的内存页,直到达到规定保留量的上限。反过来,如果一个domain希望节省些资源,避免不必要的开销,它也能够通过释放内存页给Xen来减少它的内存保留量。

        XenoLinux实现了一个气球驱动 [42](//没看相关文献),它能够通过在Xen和XenoLinux的页面分配器之间传递内存页来调整domain的内存使用。虽然我们能够直接修改Linux的内存管理例程,但是气球驱动能够利用现有的操作系统功能来进行调整,因此简化了Linux的移植工作。无论怎样,准虚拟化能够被用于扩展气球驱动的能力。例如,guest OS中的内存越界处理机制能够被修改为通过向Xen请求更多的内存页来自动地减轻内存压力。

        大部分操作系统都假定内存空间是由大量的较大规模的连续区域组成的。由于Xen并不保证它为guest OS分配的内存区域是连续的,所以guest OS需要为它们自己创建连续的物理内存的假象,即使它们实际在底层分配到的硬件内存是稀疏的。guest OS通过简单地维护一个以实际分得的页框号为索引的数组,来完全负责从实际分得的地址(physical)到硬件地址的映射。Xen提供了一个共享的地址转换数组,这个数组用于支持从硬件地址到各个domain实际分得地址的映射,它是所有的domain都可读的 — 更新这个数组是经过Xen确认的,以确保guest OS能够拥有相应的硬件页框。

        即使一个guest OS在大多数情况下选择了忽略硬件地址(//因为guest OS喜欢在连续的地址空间上运行),但是在它访问它所拥有的页表的时候(这时必须使用硬件地址)必须使用转换表。硬件地址也可以暴露给操作系统存储管理系统中的有限的某些部分以优化存储访问(//具体是哪些部分可以直接“看到”硬件地址呢?)。例如,一个guest OS可以分配特定的硬件页用于优化以实际分得地址为索引的缓存中的布局,或者使用超级页将硬件内存中的连续部分作自然对齐的映射。

    Xen学习 设备I/O

           在完全虚拟化环境下需要仿真现有的硬件设备,而Xen不同于此。Xen给出了一套清楚、简单的设备抽象。这就使得我们能够设计一个接口以有效地满足我们对保护性和隔离性的需求。为了做到这一点,I/O和各个domain之间的数据传递都是要经过Xen的,可以使用的方法有共享内存,异步缓冲区描述符环等。这些方法能够在Xen有效地执行确认检查(例如,检查缓冲区是否包括在了domain的存储空间内)的同时,为在系统中的竖直方向上传递缓冲区…………(乱码)支持一个轻量级的事件递交机制用于为一个domain传送异步通告(notification)。这些通告是在对未决事件类型的位图进行更新的时候产生的,也可以通过调用一个guest OS专有的事件句柄产生。这些调用的返回可以由guest OS来决定是否进行“拖延”处理。例如,这么做(//拖延处理)可以避免在频繁唤醒通告时带来的额外开销。

    Xen学习 CPU

    虚拟化CPU对guest OS提出了几个要求。因为hypervisor插在操作系统的下层违背了惯常的关于操作系统在整个系统中特权最高的假设。为了保护hypervisor不会受到操作系统不正确行为的影响(即domain不受另一个domain的影响),guest OS就必须被改造为能够运行在较低的特权级上。

        很多处理器体系结构只是提供了两个特权级。在这些情况下,guest OS和应用程序共享较低的特权级。同时,guest OS运行在单独的地址空间中以保护自己不会受到应用程序执行的影响。guest OS通过hypervisor设定虚拟的特权级和改变当前的地址空间来间接地和应用之间进行控制传递。另外,如果处理器的TLB支持地址空间标记,那么也就可以避免TLB刷新带来的高昂代价。

        在x86架构上有效地实现特权级的虚拟化是可能的,因为x86架构在硬件上支持四个不同的特权级。x86架构的特权级往往用圈(ring)来表示,从ring 0(最高特权)到ring 3(最低特权)。操作系统的代码运行在ring 0这个特权级上,因为再没有其它的ring能够执行那些特权指令。ring 3通常用于执行应用代码。就我们所知,自OS/2起到现在的各个知名的x86 架构上的操作系统都还没有利用ring 1和ring 2这两个特权级的。那么,任何遵循这个通常的安排的操作系统(//没有利用ring 1和ring 2)就都可以移植到Xen上来。

        这个移植过程只需要做一些改动使操作系统改为运行在ring 1特权级上。这就防止了guest OS会直接执行特权指令,也保证了操作系统与运行在ring 3上的应用程序之间相隔离的安全性。

        特权指令需要被Xen确认和执行以达到准虚拟化的目的,这主要应用于诸如安置新的页表,或者在处理器idle时放弃之(而不是去hlt它)等操作。因为只有Xen有足够高的特权级来执行这些指令,所以任何guest OS试图直接运行特权指令都会失败,后果要么是“沉默”要么是产生错误。

        异常,包括内存错误和软件陷阱,都可以在x86架构的基础上直接进行虚拟化。有一个表,内容为对每类异常进行描述的句柄。表中所列的异常都是在Xen中有记录的,以用作确认。表中给出的句柄都是与真正的x86硬件中相同的;之所以这一点是可能做到的,主要是因为在我们的准虚拟化架构中,异常堆栈框架是没有被修改的。唯一的一个改动是在页面错误句柄上。因为该句柄的操作需要从特权处理器寄存器(CR2)中读出出错的地址;但是这是不可能的(//因为特权级别不够了),我们就将它(//页面错误句柄?CR2的值?)写入扩展的堆栈框架中(后来发现,在移植XP的时候,将这个值写入一个预先商定的共享存储位置上要比修改堆栈框架简单一些)。当系统在ring 0以外执行时有异常发生,Xen的句柄就会在guest OS堆栈中创建一个异常堆栈框架的拷贝,并且会将控制交给相应的已经记录过的异常句柄。

        典型的,只有两类异常会经常发生而影响到系统的性能:系统调用(一般都是通过软件异常实现)和页面错误。我们让每个guest OS都记录一个“快速的”异常操作句柄来改进系统调用的性能。这个异常操作句柄可以直接由处理器使用,而不必非要间接地经过ring 0;这个句柄在放置进硬件异常列表中之前就是经过确认的(//所以不必经过Xen)。不幸的是,我们不可能使用同样的技术来处理页面错误句柄,因为只有那些运行在ring 0的代码才能够从寄存器CR2中读出错误的地址;因此,页面错误必须要经过Xen才能提交,Xen保存该寄存器的值供来自ring 1的访问使用。

        当Xen发现异常产生时,它会对异常句柄进行确认以确保安全性。这只需要检查句柄的代码段中是否含有指明要在ring 0中执行的操作。既然没有guest OS能够创建这样一个段,那么只需要将专门的段选择符和少量的保留在Xen中的静态值作比较即可。除了这点以外,任何其它的句柄问题都会在异常传播(exception propagation)(//一个异常导致了另一个异常的产生)的过程中被修正。例如,如果句柄缺少相应代码段或者句柄没有分配到内存页,那么在Xen为将控制返回给句柄而执行iret指令的时候就会有一个相应的错误产生。Xen通过检查出错的程序计数器值来检测这些“双错误(//double faults:之前已经出错了,现在到了iret已经是第二个错误了;第二个错误是由第一个错误传播而来)”:如果地址是处于异常虚拟化的代码中(//说明异常处理没有完成,iret没成功),那么guest OS就要被终止。

        对于直接的系统调用句柄来说,这种“懒惰(//第一个错误发生的时候,没有被检查到;直到Xen执行了iret之后才报错)”的检查也是安全的:当CPU试图直接跳至guest OS句柄的时候,会发生访问错误(//之前的过程都一样,只是直接的系统调用是不经过Xen的)。在这种情况下,产生错误的地址将处于Xen之外(因为Xen不会去执行guest OS系统调用),因此错误就以上文讲过的一般方式进行虚拟化即可。如果由于错误的传播导致了进一步的“双错误”,那么guest OS会像上文谈及的一样被终止。

    Xen学习 存储

    存储

        管理分段不能够使用具有完全特权级的段描述符,不能够与线性地址空间的最顶部交迭(//因为最顶部是Xen)。

        分页guest

        OS直接对硬件页表做读访问,但是更新(//就是写)是分批进行的而且要经过hypervisor确认。一个domain可以被分配在不连续的页面上。

        CPU保护  guest OS必须运行在低于Xen的特权级上。

        异常  guest OS必须将异常句柄的描述符表在Xen中记录。除了页面错误外,其它句柄和真实的x86架构相同。

        系统调用  guest OS为系统调用提供一个“快速”的句柄。允许应用直接调用它所在的guest OS,而不必间接地通过Xen完成每次调用。

        中断  硬件中断被一个轻量级的事件系统替换。

        时间  每个guest OS具有一个定时器接口,可以得到“真实的”和“虚拟的”时间。

        设备I/O  网络,磁盘,……虚拟设备访问起来很简单。数据传递使用的是异步I/O环。由一个事件机制替换硬件中断来发布通告。

        2.1.1存储管理

        虚拟化存储毫无疑问是准虚拟化一个体系结构中最困难的部分,它包括hypervisor所需的机制和移植各个guest

        OS所需的改动。如果在架构中提供了由软件管理的TLB的话,那么这个任务会变得轻松些,它们可以以比较简单的方式被有效地虚拟化[13].带标记的TLB是另外一个在大部分RISC架构(这些RISC架构主要用于构建服务器,比如Alpha,MIPS和SPARC)中支持的有用特征。其中,每个TLB项都有和地址空间标识符相关的标记,这使得hypervisor和各个guest OS能够有效地在被隔离开的地址空间内共存。这时在执行转移(//transferring execution:在进程执行间切换的时候,执行的指令序列从一个进程转移到另一个进程,称为执行转移)的时候,是不需要刷新(flush)整个TLB(//只对具有和自己的地址空间标识符相吻合的TLB项进行操作)。

        不幸的是,x86架构并没有由软件管理的TLB;取而代之的是在发生TLB失效的时候,处理器会自动通过遍历硬件页表结构来处理。因此为了获得最好的可能达到的性能,当前地址空间内所有的有效页传输)都要在硬件可访问的页表中给出(//最好情况理应如此,但实际如何做得到呢?)。此外,因为TLB是没有标记的,所以地址空间的切换需要整个TLB的刷新。在这些限制下,我们作出了两个决定:(i)由guest OS负责分配和管理硬件页表,这么做最小化了Xen对页表操作的影响,确保了安全性和隔离性;(ii)Xen处于每个地址空间的最顶部的64MB空间内,因此避免了在进入和离开hypervisor时进行TLB刷新操作(//这个要看源代码才能最后搞清楚)。

        每当guest OS需要一个新的页表,例如创建了一个新进程,它就在自己保留的内存空间内分配和初始化一个页面,并且将其在Xen中记录。此时操作系统必须放弃对页表存储空间直接写的权限:所有后续的更新操作都必须由Xen进行确认。这就在很多方面限制了更新操作,包括只允许操作系统它自己所属的页进行映射操作,不允许对页表进行可写的映射操作。guest OS可以成批地进行更新操作以减少每次更新都要进入hypervisor带来的代价(//因为每次更新都要hypervisor确认)。每个地址空间顶部的64MB区域是保留给Xen的,是不能够被guest OS访问或者重新进行映射的。因为任何通常的x86架构中的ABI都不会使用到这个区域中的地址,所以这个约束不会破坏到应用程序的兼容性。

       分段机制也是以类似的方式,通过对硬件段描述符表的更新确认来进行虚拟化(//这样做就达到虚拟化的目的了么?哦,应该是Xen在确认后接着由Xen执行,嗯)。对于x86架构上段描述符的限制只有:(i)它们的特权级别必须比Xen要低;(ii)它们不能够对地址空间中Xen的保留部分进行访问。

    08 März

    如何应对这一轮google排名算法的调整?

    最近业内传出google调整了大品牌在搜索结果中的权重,具了解调整目前还只是在美国,还没有在其他国家或地区展开,但这个调整是必然的趋势。因为信息时代信息泛滥,让人很难区分哪些信息是有价值的,而人们获取信息、搜索知识往往向搜索引擎索取,因此搜索引擎不仅要给出正确的答案,而且也要方便的给出答案。如果搜索引擎做不到这一点,那它必将被淘汰、死亡,Google作为搜索引擎的老大更是责无旁贷。Goolge除了看中域名权重外,而且还很看中政府、机构、组织类的网站的权重,把政府、机构、组织类的网站的排名放在最前面,让搜索则尽快获得可信的信息。
    同样,大品牌的信誉、产品、服务要比小品牌的好,网站的信息也比较有价值,按道理说,大品牌网站应该排在前面,然而有相当多的大品牌的网站内容不能迎合搜索引擎的喜好,排名并不靠前。因此,搜索引擎有必要修改算法将大品牌密切关联的信息页面排名排在前面,以提高大品牌的权重。
    如果这一调整真的应用在中文网站,结果将会出现以下几种情况:
    1、原来没有出现在前面的大品牌出现在了最靠前的位置;
    2、除了赞助商链接外,已经出现在前面的大品牌得到的结果数量也又少变多。
    3、知识性、品牌介绍性的页面也将排在前面,比如在google英文中输入IBM,会看到wikipedia的结果排在前三的位置。
    4、大型行业门户的结果也会靠前,因为他们除了将品牌之外,还有大量内容讲产品和该品牌的资讯。
    5、原来一些通过seo大品牌关键字而排在前面的网站,排名将会下降,给seo也增加了难度。
    针对这样的状况,网站要想获得好的排名,必须做出相应的调整:
    1、向大品牌靠拢
    如果您的网站与大品牌有正当的业务往来,最好能在大品牌网站上能够获得推介;两个网站能互相提到对方的名字;
    2、加强大品牌内容的建设
    不但只卖他们的产品、报道他们的资讯,更要不惜笔墨地去讲述大品牌内容和价值。
    3、加强知识性、行业门户网站的攻势
     如果能得到知识性、行业门户类网站的链接,网站就会获得多的点击,这样搜索引擎对网站的评级也就高,获得的排名也将考前,这将是一个良性循环。
    4、不要忘记和忽略搜索引擎优化的一些基本方法。
    什么样的品牌是Google眼中的大品牌?线下是大品牌线上如何成为大品牌?我想google有它自己的评判标准和方法,毕竟真正的算法还不得而知。
    以上仅供参考交流,欢迎共同探讨。

    Mininova并非关闭 - 遭受不明DDoS攻击

    全球最大的BT网站之一Mininova最近透露在过去的几天里遭受横跨三大洲的僵尸网络攻击,而并非业内风传的被关闭.
    此次针对mininova的DDoS攻击流量相当不寻常,攻击的僵尸网络容量成千上万,据流量计显示攻击最高阶段超过1000MB/S的传送数量,上行流量已经破表,他们也从来没有看过如此规模的攻击.

    虽然Mininova被设计为每日服务数百万计访客,但依然没有力处理这样的攻击.mininova负责人Niek告诉媒体正在研究解决方案,希望网络会很快恢复正常.

    1000MB/S 牛掰啊

    07 März

    恩 从今天开始用Writer写

         嘿嘿,发现Windows提供的东西还挺好用的,现在每天开始试用下咯

    06 Januar

    arm-elf-gdb

    网上找的 copy下来 操作系统是ubuntu6.1,安装了uClinux的官方开发工具arm-elf-tools-20030314.sh,arm-elf-gcc完全正常,编译u-boot和uClinux都没有问题,但我在运行arm-elf-gdb的时候,出现了错误。 错误1.)提示库文件libncurses.so.4找不到 其实,在ubuntu下已经安装libncurses,但是版本比较新,是libncurses.so.5,google出来的解决方法是建立一个软链接libncurses.so.4,指向libncurses.so.5即可。 运行命令: sudo ln -s libncurses.so.5 libncurses.so.4 错误2.)再次运行arm-elf-gdb,没有libncurses错误提示了,但提示找不到libgtk, 解决:ubuntu的默认安装没有libgtk的,在同步软件中选中,安装即可。 这样,arm-elf-gdb已经可以在ubuntu上面跑起来了。
    08 Dezember

    额 牢骚牢骚....

                             额...   纯粹牢骚...
                             看来平常人太笑呵呵了不是好事啊....
                             知道得寸进尺是咋回事了吐舌
     
                             不过失望列 哎....
                             第一学期才结束而已......
     
                             做自己
                             人敬我一尺    我敬他一丈
     

    多周期流水线的实现——MIPS设计与开发

                             恩,周末弄了下,下条指令hazard和下两条指令hazard已经消除,按照的是体系结构课程上的forwording方法,指令实现上除了在执行sw后再接着执行lw时会出现bug外,基本都可以连续执行。
                             恩,然后不准备进行中断,cache,虚存的设计,但设计思路清楚.....
              
                             恩,好久没写了....
                             下周一就开始考试了列~
                             复习复习~~~~
                             每天十点后才回宿舍~~~(除了和项目相关的紧急情况)
                             日志为证!!!
                             hoho
    01 Dezember

    Chinese seize opportunity to recruit western staff

    关于中国延揽海外金融人才的文章。看过,想起前段时间看过的一篇报道,日本财团收购了雷曼兄弟全球大部分的子公司,意欲何为? 抢人才! 相比泡沫经济崩溃以前的日本(那个时候的日本财团大规模的收购美国的财团,产业,最后导致消化不良),进步了列困了

    不过文章中也提到,即时海外的人才被招到中国,但由于薪酬,语言,以及我们国家能够提供的高管位置极其有限等原因,也许延揽不会非常顺利,所以这样看来,国内重点大学或者说社会上出来的本土金融人才有强大实力的话还是有比较大的发展空间热烈的笑脸

     

     

    Out-of-work finance professionals in the UK and US have a new reason for optimism about their employment prospects - especially if they speak Mandarin.

    Chinese financial institutions are set to exploit the widespread job losses in western financial centres as a result of the credit crunch by next month embarking on a hunt for financial experts willing to relocate.

    The Shanghai Financial Service Office has told state media the city is sending a delegation to New York, Chicago and London to recruit specialists in risk management, asset management, product research and development, macro-economics and policy analysis.

    The head of human resources at the office said at least 27 financial institutions in Shanghai, China's commercial and financial hub, had listed more than 170 vacancies specifically targeting foreigners.

    The global financial turmoil has led to tens of thousands of job losses in financial services.

    London and New York have been hit especially hard, while many of those still in employment fear for their future.

    However, the salaries on offer in China are unlikely to meet international standards and a preference for those who understand and speak Mandarin Chinese will probably rule out many potential candidates.

    In addition, China's unique political environment, in which the Communist party exercises ultimate control over all aspects of the financial, legal and commercial systems, means foreign passport-holders are unlikely to be given senior positions in state-run institutions.

    China Investment Corp, the country's sovereign wealth fund, launched a global recruitment drive earlier this year but was unable to match salaries on offer in the City or on Wall Street.

    Shanghai officials said organisations interested in recruiting in the UK and US included the nascent China Financial Futures Exchange, the Pudong financial district government, and state-run securities agencies, insurance companies and banks.

    The delegation will also try to recruit an assistant to the president of Shanghai Financial University, a chief economist for the SFU's International Finance Research Institute and a dean for its International Finance and Insurance School.

     --------------------------------------------------------------------------------------------------------------------------------------------------------------

    英美失业的金融专业人员有了新理由对自己的就业前景保持乐观,尤其是那些会讲普通话的人。

    对于此次信贷危机在西方金融中心内造成的大量失业,中国金融机构计划予以充分利用,将于本月着手寻找愿意迁往中国的金融专家。

    上海市金融服务办公室向官方媒体表示,上海将派一个代表团去纽约、芝加哥和伦敦招募风险管理、资产管理、产品研发、宏观经济以及政策分析方面的专家。

    该办公室人力资源主管表示,作为中国商业和金融中心,上海市至少有27家金融机构列出了170多个专门针对外国人的职位空缺。

    全球金融动荡已经导致数万名金融服务人员失业。

    伦敦和纽约受打击尤为严重,与此同时,许多尚未失业的人正为自己的未来感到担心。

    不过,中国提供的薪酬不太可能达到国际标准,而对普通话听说能力的偏爱,有可能排除许多潜在的候选人。

    此外,中国共产党对金融、法律和商业体系的所有方面行使最终控制,这种独特政治环境意味着,外国护照持有者不大可能被授予国营机构的高级职位。

    中国主权财富基金(SWF)中国投资公司(China Investment Corp)在今年早些时候启动了一次全球招聘活动,但无法达到伦敦金融城或华尔街普遍提供的薪资水平。

    上海官员表示,有意在英美招聘的组织包括刚刚成立的中国金融期货交易所(China Financial Futures Exchange)、浦东金融区政府,以及国营的证券公司、保险公司和银行。

    代表团还将试图为上海金融学院(Shanghai Financial University)校长招聘一位助理,为该学院国际金融研究中心招聘一位首席经济学家,以及为国际金融保险学院招聘一位院长。                                           

    hazard问题解决ing——MIPS设计

                             今天基本完成了用forwording方法来进行hazard问题的解决,但在解决问题的同时发现了程序中的bug,对systemc的敏感参数的正确反应么有掌握清楚,弄一个小问题弄了N长时间....
                             然后copy矩阵作业...  体力活啊,半个本子.....
                             惭愧惭愧...
    30 November

    中国消费增长放缓

    Signs are emerging that the anxiety gripping consumers around the world is spreading to China, says Jing Ulrich, managing director and chairman of China equities at JPMorgan.

    摩根大通中国证券市场部主席兼董事总经理李晶(Jing Ulrich)表示,目前有迹象表明,笼罩着全球消费者的焦虑情绪正在蔓延到中国。

    “Despite the global economic slowdown, falling stock markets, multiple natural disasters and a stagnant housing sector, Chinese consumer spending had been remarkably resilient for most of this year – until what appears to have been markedly slower growth following the Golden Week holiday in early October,” she says.

    她表示:“尽管全球经济放缓、股市持续下跌、自然灾害频发以及房地产行业陷入停滞,但在今年的大多数时间里,中国的消费支出一直表现得相当有弹性。直到10月初的黄金周(Golden Week)假期之后,增长似乎明显放缓了。”

    Ms Ulrich says leading Chinese department stores have recorded lighter traffic in recent weeks and the outlook is for continued deceleration in sales growth.

    李晶表示,近几周来,各大百货公司的生意较为冷清,预计销售增长将会持续减速。

    “Our discussions with operators have found a similar slowdown among some apparel and luxury goods retailers. Even mass-market food retailers and fast-food chains have shown signs of moderation since mid-October.”

    “我们在与经营者讨论时发现,一些服饰和奢侈品零售商也出现了类似的放缓。甚至连大众食品零售商和快餐连锁店,10月中旬以来也已显示出增长放缓的迹象。”

    She believes the slowing Chinese economy presents a major test to consumer resilience, but retains an optimistic long-term view of consumption.

    她认为,中国经济日益放缓是对消费弹性的重大考验,但从长期来看,她仍对消费情况持乐观态度。

    “The government’s plans to expand the social safety net should reduce the need for precautionary saving and encourage consumption in the long run,” she says.

    她表示:“政府扩大社会保障网络的计划,应会减少预防性储蓄的需求,从长期角度讲会鼓励消费。”

    “In the near term, however, consumer confidence will be tied to the government’s success at reviving the country’s property and stock markets, and improving employment and income security.”

    “不过,从短期来看,消费者信心将取决于政府能否成功地再度激活国内楼市和股市,及改善就业和收入保障状况。”

    MIPS流水线实现-------MIPS设计与实现

    经过周末大概4-5个小时的编写与调试,五周期流水线MIPS可以跑起来了。 各方面来说,在周末前完成中间寄存器的编写后(这部分的代码量不大,主要理顺了在各个寄存器该保存哪些内容),周末主要进行了模块间的连接与调试,这两大部分耗的时间量前者非常繁琐,看到大量的信号与模块实例时,容易昏头.... 在调试阶段的话大问题基本没有,因为原来的模块都是单周期的基础上过来的,调试过程中解决了中间寄存器的一些数据转移和保存错误。 接下来的问题主要是解决hazard问题,看能不能找出一种不用forwroding和加泡的方法。热烈的笑脸

    26 November

    媳妇儿语录再现!

                         语录一:“干嘛拿我开涮...生气
                                    “人家不开心嘛...尴尬
                                     “那干嘛找你男朋友开涮?生气
                                     “你撞枪口了嘛吐舌
                                       “......破碎的心
     
                          语录二:“我哭的伤心,你笑的抽筋?”大笑
                      

    打架?.....

    昨天媳妇儿问偶打过架没?.... 汗... 不过回想,确实打过列,不过是初一的时候 "打过架没?” “......-_- 打过....” “为女孩子打过没?” “......@-@... 没有....” PS:开玩笑,这里要是说打过,那不是要等着跪键盘了!有也要说没有的列,当然,我确实是没有的..... “什么时候打的?” “初中” PS:中国还是很和平滴... “几V几?” “6V1” "你是六个中的一个?“ ”我是那一个中的唯一一个...“ ”切.... 我才不信,肯定是六个中的那一个,踹了几脚而已“ "....." PS:其实确实是那唯一的一个... 丫的,当时读小学的弟弟被擂肥,做哥哥的当然出头了列,然后后来结果在一个小区碰到了,Y的,老大还是个高中的! 说好1V1,圈圈,刚说完,就一群人上来了,还好抓住了一个人猛踹了几脚,不然亏大了。 ———————————————————————————————华丽滴分割——————————————————————————————— 然后? 然后被过路的一个老爷爷给解救了...... 太阳!

    单周期实现了... ——MIPS设计

    昨天终于整好了,绝对跳转,加法... 没有测试条件跳转... 做完之后觉得没有技术含量.... 哭了... 感觉好像就学会了SystemC和对MIPS以及到体系结构理解的更深入些,当然仅限于单周期...... 傻叉了快@-@ 对照单周期电路图模块化设计出来,具体运算直接运用的‘+’ ‘-’ 等.... 接下来实现多周期的吧... 恩 写日志时对多周期理解还不够深刻,有些模糊的东西.. 恩! 继续继续!!!
    24 November

    单周期调试记录2——MIPS实现

                       初学SystemC ,还不大熟悉,一步步摸索。
                       好歹编译通过,可以运行。取指正确,取指耗时20 us......
                       但很奇怪的是,在取指出来时进行范围取值后,取得的值为倒序的...    估计是取值操作错误...  今天不弄了,明天继续整微笑

                       

    单周期CPU编译记录1——MIPS实现

                       典型错误一:Error: (E109) complete binding failed: port not bound: port 'mpscpuwith5segment.regs11.port_0' (sc_in)         先前是出现了一个port_1的错误    一直盯着第一个看    其实port_1代表的是第二个   切记切记!热烈的笑脸


                       典型错误二:编译通过,但运行时候出现段错误    典型原因是申请了一个指针,没有指向一个实例,直接调用实例内容,则会出现这种类型错误(不知道解释的正确否...)   我的程序便是如此:  pc *pc1;   没有没有进行 pc1 = new pc("pc111");而直接进行pc->操作...  编译通过,但运行出错! 直接提示段错误.....
    23 November

    燃油税啊燃油税

           学习学习.....

     

     

    China is taking the opportunity created by low oil prices to prepare a shake-up of its pricing system that could include a new fuel tax and fewer price controls, the government’s top planning body said yesterday.

    中国最高规划部门昨日表示,中国正准备利用国际原油价格下跌带来的机会,对其成品油定价体系进行改革,可能包括实施新的燃油税和放松价格管制。

    The National Development and Reform Commission (NDRC) said the government was studying a series of reforms to oil pricing that officials say are designed to stimulate more efficient use of energy and encourage greater use of smaller cars.

    中国国家发改委(NDRC)称,政府正研究一系列油价定价机制改革。官员称,此举的目的是刺激人们以更高效率利用能源,并鼓励人们更多使用小型汽车。

    Although the NDRC gave few details of the substance of the reform or the timing, the statement follows heavy speculation in the Chinese media in recent days about forthcoming policy changes and analysts said it indicates that the government must be close to making a final decision.

    尽管发改委没有给出有关具体改革内容或时间的细节,但声明发布之前几天,中国媒体纷纷对即将来临的政策改变进行了猜测。分析师表示,这表明,政府肯定已接近做出最后决定。

    “This shows the NDRC is going to issue the new policy soon,” said Qiu Xiaofeng, analyst from China Merchants Securities. “This is absolutely good news for Sinopec and PetroChina [China’s two oil refiners] and it will also promote the sale of compact cars with low emissions.”

    中国招商证券(China Merchants Securities)分析师邱晓峰(音译)表示:“这表明,发改委将很快发布新政策。对中国两家炼油企业中石化(Sinopec)和中石油(PetroChina)来说,这是绝对利好的消息,同时这也将提高排放较低的小排量汽车的销售。”

    China has been debating the introduction of a fuel tax for nearly a decade and the discussion has been particularly intense over the past three years, pitting environmental and energy security concerns against several powerful vested interests.

    近10年来,中国一直在辩论实施燃油税,过去3年里的争论尤其激烈,环境和能源安全担忧与多个强大的既得利益集团之间各执一词。

    Officials have also discussed for a number of years a move to more free-market oil prices rather than the system of government- dictated prices that have helped at times to damp inflation when oil prices were high but at the cost of imposing heavy losses on the country’s refiners.

    许多年来,官员们也在讨论实行更加市场化、而不是由政府主导的定价体系。政府定价固然在原油价格高企的时候有助于抑制通胀,但代价是造成该国炼油商严重亏损。

    Under one version of the reform being discussed, the government would introduce the long-awaited tax on retail petrol and diesel but would soften the blow to consumers by cutting petrol prices. Petrol in China is about 50 per cent more than the retail price in the US. However, brokerage CLSA said it expected a 15 per cent price cut to be announced next week.

    正在讨论的改革的一个版本是,政府将推出期待已久的零售汽油和柴油税,但将通过降价减轻对消费者的冲击。和美国相比,中国汽油零售价格大约高出50%,不过,经纪商里昂证券(CLSA)表示,预计下周将宣布下调15%。