程序天空

系统程序开发
posts - 52, comments - 34, trackbacks - 1, articles - 28

Thursday, March 24, 2005

gcc基本的使用方法及常用指令
前言

  编译器在编译过程中,先将程式码编译成 object 档,然後再和程式库联结,成为可执行档。故一个编译器须提供的参数主要有几类:
  1.指定编译器编出的object 档或是可执行档档名。
  2.在编译过程做最佳化,可提升程式的执行速度。
  3.设定搜寻程式库的标头档 (header file) 及程式库档的目录及指定程式库档档名。
  提供进一步的资讯以便使用者找寻程式中的错误。

 

  以下便以这四个大类分别介绍。
  注意:下面在不同类别中所介绍的参数,几乎都可以混合著使用。
  1.设定编译出的 object 档档名或是可执行档档名:
  参数: -o out_put_filename
  说明: 指定编译出的档名为 out_put_filename。
  范例: 本例将程式码 'test.c' 编译成可执行档,并设定档名为 'test'。
  gcc test.c -o test

  2.在编译过程做最佳化
  参数: -O
  说明: 在编译过程做最佳化,以提升增快程式执行速度。
  范例: 本例将程式码 'test.c' 编译成可执行档 'test',并在编译过程做最佳化'。 
  gcc -O test.c -o test

  3.设定搜寻标头档目录、程式库档的目录及指定程式库档。
  3.1设定搜寻标头档目录
  参数: -Idir_name
  说明: 将目录 'dir_name' 设定为搜寻标头档目录之一。

  3.2设定搜寻程式库目录。
  参数: -Ldir_name
  说明: 将目录 'dir_name' 设定为搜寻程式库目录之一。
 
  3.3设定程式库档案。
  参数: -lname
  说明: 联结程式库 libname.a 。
  
  范例一:本例中假设你的程式档名为test.c,数学函数如 sin等,所要联结的程式库为 libm.a。
  gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
  范例二:本例中假设你的程式档名为 test.c,使用到 X window 函数,所需的 include 档放在 /usr/X11R6/include 中,所须联结的程式库放在 /usr/X11R6/lib,所要联结的程式库为 libX11.a。
  gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test 
  提供进一步的资讯以便使用者找寻程式中的错误。

  参数: -Wall
  说明: 输出较多的警告讯息,以便找出程式的错误。
  范例: 编译 test.c 时输出较多的警告讯息。
  gcc -Wall test.c
  
  参数: -g
  说明: 在编译出可执行档时,附加执行时除错资讯,以供 gdb 读取 (若要使用 ABSoft 的除错程式,则须将参数改为 -gdwarf )。
  范例: 将 'test.c' 编译成可执行档 'test',并附加除错资讯。
  gcc -g test.c -o test
  
  进阶参数
  1. 仅编译成 object 档。
  参数: -c
  说明: 仅编译成 object 档而不进行程式库联结。
  范例: 将 test.c 编译成 object 档 test.o。
  gcc -c test.c -o test.o
  
  2. 联结数个 object 成可执行档。
  范例: 将 'test1.o'、'test2.o' 和程式库联结後成为可执行档 test。
  gcc test1.o test2.o -o test
  
  3. 观察宏展开情形:
  参数: -E
  说明:展开程式中的宏以便了解巨集是否依照预期方式展开。
  范例:将 test1.c 中的宏展开後储存到 test1.c.ext 。
  gcc -E test1.c > test1.c.ext
  
  4. 产生组合语言程式码:
  参数: -S
  范例:编译 test.c 产生对应的组合语言程式码档 test.s。
  gcc -S test.c -o test.s


GCC(1)     GNU Tools     GCC(1)
NAME
    gcc, g++ - GNU project C and C++ Compiler (v2.7)

SYNOPSIS
    gcc [ option | filename ]...
    g++ [ option | filename ]...

WARNING
    The information  in this man page is an extract from the
    full documentation of the GNU C compiler, and is limited
    to the meaning of the options.

    This man page is not kept up to date except when volun-
    teers want to maintain it.  If you find a discrepancy
    between the man page and the software, please check the
    Info file, which is the authoritative documentation.

    If we find that the things in this man page that  are out
    of date cause significant confusion or complaints, we will
    stop distributing the man page. The alternative, updating
    the man  page when we update the Info file, is impossible
    because the rest of the work of maintaining GNU CC leaves
    us no time for that. The GNU project regards man pages as
    obsolete and should not let them take time away from other
    things.

    For complete and current documentation, refer to the Info
    file `gcc' or the manual Using and Porting GNU  CC (for
    version 2.0). Both are made from the Texinfo source file
    gcc.texinfo.

DESCRIPTION
    The C and C++ compilers  are integrated.  Both process
    input files through one or more of four stages: prepro-
    cessing, compilation, assembly, and linking. Source file-
    name suffixes identify the source language, but which name
    you use for the compiler governs default assumptions:

    gcc  assumes preprocessed (.i) files are C and assumes C
    style linking.

    g++  assumes preprocessed (.i) files are C++ and assumes
    C++ style linking.

    Suffixes of source file names indicate the language and
    kind of processing to be done:

    .c  C source; preprocess, compile, assemble
    .C  C++ source; preprocess, compile, assemble
    .cc  C++ source; preprocess, compile, assemble
    .cxx C++ source; preprocess, compile, assemble
    .m  Objective-C source; preprocess, compile, assemble
    .i  preprocessed C; compile, assemble
    .ii  preprocessed C++; compile, assemble


GNU Tools    1993/10/13    1
GCC(1)     GNU Tools     GCC(1)


    .s  Assembler source; assemble
    .S  Assembler source; preprocess, assemble
    .h  Preprocessor file; not usually named on command line

    Files with other suffixes are passed to the linker. Com-
    mon cases include:

    .o  Object file
    .a  Archive file

    Linking is always the last stage unless you use one of the
    -c, -S,  or -E options to avoid it (or unless compilation
    errors stop the whole process). For the link stage, all
    .o files corresponding  to source files, -l libraries,
    unrecognized filenames (including named .o object files
    and .a archives) are passed to the linker in command-line
    order.

OPTIONS
    Options must be separate: `-dr' is quite different from
    `-d -r '.

    Most `-f' and `-W' options have two contrary forms: -fname
    and -fno-name (or -Wname and -Wno-name).  Only the non-
    default forms are shown here.

    Here is  a summary of all the options, grouped by type.
    Explanations are in the following sections.

    Overall Options
    -c -S -E -o file -pipe -v -x language

    Language Options
    -ansi -fall-virtual -fcond-mismatch
    -fdollars-in-identifiers -fenum-int-equiv
    -fexternal-templates -fno-asm -fno-builtin
    -fno-strict-prototype -fsigned-bitfields
    -fsigned-char -fthis-is-variable
    -funsigned-bitfields -funsigned-char
    -fwritable-strings -traditional -traditional-cpp
    -trigraphs

    Warning Options
    -fsyntax-only -pedantic -pedantic-errors -w -W
    -Wall -Waggregate-return -Wcast-align -Wcast-qual
    -Wchar-subscript -Wcomment -Wconversion
    -Wenum-clash -Werror -Wformat -Wid-clash-len
    -Wimplicit -Winline -Wmissing-prototypes
    -Wmissing-declarations -Wnested-externs -Wno-import
    -Wparentheses -Wpointer-arith -Wredundant-decls
    -Wreturn-type -Wshadow -Wstrict-prototypes -Wswitch
    -Wtemplate-debugging -Wtraditional -Wtrigraphs
    -Wuninitialized -Wunused -Wwrite-strings

 

GNU Tools    1993/10/13    2
GCC(1)     GNU Tools     GCC(1)


    Debugging Options
    -a -dletters -fpretend-float -g -glevel -gcoff
    -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+
    -ggdb -p -pg -save-temps -print-file-name=library
    -print-libgcc-file-name -print-prog-name=program

    Optimization Options
    -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
    -fdelayed-branch -felide-constructors
    -fexpensive-optimizations -ffast-math -ffloat-store
    -fforce-addr -fforce-mem -finline-functions
    -fkeep-inline-functions -fmemoize-lookups
    -fno-default-inline -fno-defer-pop
    -fno-function-cse -fno-inline -fno-peephole
    -fomit-frame-pointer -frerun-cse-after-loop
    -fschedule-insns -fschedule-insns2
    -fstrength-reduce -fthread-jumps -funroll-all-loops
    -funroll-loops -O -O2

    Preprocessor Options
    -Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H
    -idirafter dir -include file -imacros file -iprefix
    file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P
    -Umacro -undef

    Assembler Option
    -Wa,option

    Linker Options
    -llibrary -nostartfiles -nostdlib -static -shared
    -symbolic -Xlinker option -Wl,option -u symbol

    Directory Options
    -Bprefix -Idir -I- -Ldir

    Target Options
    -b machine -V version

    Configuration Dependent Options
    M680x0 Options
    -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
    -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield
    -mrtd -mshort -msoft-float

    VAX Options
    -mg -mgnu -munix

    SPARC Options
    -mepilogue -mfpu -mhard-float -mno-fpu
    -mno-epilogue -msoft-float -msparclite -mv8
    -msupersparc -mcypress

    Convex Options
    -margcount -mc1 -mc2 -mnoargcount


GNU Tools    1993/10/13    3
GCC(1)     GNU Tools     GCC(1)


    AMD29K Options
    -m29000 -m29050 -mbw -mdw -mkernel-registers
    -mlarge -mnbw -mnodw -msmall -mstack-check
    -muser-registers

    M88K Options
    -m88000 -m88100 -m88110 -mbig-pic
    -mcheck-zero-division -mhandle-large-shift
    -midentify-revision -mno-check-zero-division
    -mno-ocs-debug-info -mno-ocs-frame-position
    -mno-optimize-arg-area -mno-serialize-volatile
    -mno-underscores -mocs-debug-info
    -mocs-frame-position -moptimize-arg-area
    -mserialize-volatile -mshort-data-num -msvr3 -msvr4
    -mtrap-large-shift -muse-div-instruction
    -mversion-03.00 -mwarn-passed-structs

    RS6000 Options
    -mfp-in-toc -mno-fop-in-toc

    RT Options
    -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
    -mfull-fp-blocks -mhc-struct-return -min-line-mul
    -mminimum-fp-blocks -mnohc-struct-return

    MIPS Options
    -mcpu=cpu type -mips2 -mips3 -mint64 -mlong64
    -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
    -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
    -mno-memcpy -mno-mips-tfile -mmips-tfile
    -msoft-float -mhard-float -mabicalls -mno-abicalls
    -mhalf-pic -mno-half-pic -G num -nocpp

    i386 Options
    -m486 -mno-486 -msoft-float -mno-fp-ret-in-387

    HPPA Options
    -mpa-risc-1-0 -mpa-risc-1-1 -mkernel -mshared-libs
    -mno-shared-libs -mlong-calls -mdisable-fpregs
    -mdisable-indexing -mtrailing-colon

    i960 Options
    -mcpu-type -mnumerics -msoft-float
    -mleaf-procedures -mno-leaf-procedures -mtail-call
    -mno-tail-call -mcomplex-addr -mno-complex-addr
    -mcode-align -mno-code-align -mic-compat
    -mic2.0-compat -mic3.0-compat -masm-compat
    -mintel-asm -mstrict-align -mno-strict-align
    -mold-align -mno-old-align

    DEC Alpha Options
    -mfp-regs -mno-fp-regs -mno-soft-float -msoft-float

    System V Options


GNU Tools    1993/10/13    4
GCC(1)     GNU Tools     GCC(1)


    -G -Qy -Qn -YP,paths -Ym,dir

    Code Generation Options
    -fcall-saved-reg -fcall-used-reg -ffixed-reg
    -finhibit-size-directive -fnonnull-objects
    -fno-common -fno-ident -fno-gnu-linker
    -fpcc-struct-return -fpic -fPIC -freg-struct-return
    -fshared-data -fshort-enums -fshort-double
    -fvolatile -fvolatile-global -fverbose-asm

OVERALL OPTIONS
    -x language
    Specify explicitly the language for the following
    input files (rather than choosing a default based
    on the file name suffix) . This option applies to
    all following input files until the next `-x' op-
    tion.  Possible  values of language are `c',
    `objective-c', `c-header', `c++',  `cpp-output',
    `assembler', and `assembler-with-cpp'.

    -x none
    Turn off  any specification of a language, so that
    subsequent files are handled according to their
    file name suffixes (as  they are if `-x' has not
    been used at all).

    If you want only some of the four stages (preprocess, com-
    pile, assemble, link), you can use `-x' (or filename suf-
    fixes) to tell gcc where to start, and one of the options
    `-c', `-S', or  `-E' to say where gcc is to stop. Note
    that some combinations (for example, `-x  cpp-output -E')
    instruct gcc to do nothing at all.

    -c   Compile or assemble the source files, but do not
    link. The compiler output is an object file corre-
    sponding to each source file.

    By default, GCC  makes the object file name for a
    source file by replacing the suffix `.c', `.i',
    `.s', etc., with `.o'.  Use -o to select another
    name.

    GCC ignores any unrecognized input files (those
    that do not require compilation or assembly) with
    the -c option.

    -S   Stop after the stage of compilation proper; do not
    assemble.  The output is an assembler code file for
    each non-assembler input file specified.

    By default, GCC makes the assembler file name for a
    source file by replacing the suffix `.c', `.i',
    etc., with `.s'. Use -o to select another name.

 

GNU Tools    1993/10/13    5
GCC(1)     GNU Tools     GCC(1)


    GCC ignores any input files that don't require com-
    pilation.

    -E   Stop after the preprocessing stage; do not run the
    compiler proper. The output is preprocessed source
    code, which is sent to the standard output.

    GCC ignores input files which don't require prepro-
    cessing.

    -o file
    Place output in file file. This applies regardless
    to whatever sort of output GCC is producing,
    whether it be an executable file, an object file,
    an assembler file or preprocessed C code.

    Since only one output file can be specified, it
    does not make sense to use `-o' when compiling more
    than one  input file, unless you are producing an
    executable file as output.

    If you do not specify `-o', the default is to put
    an executable file in `a.out', the object file for
    `source.suffix' in `source.o', its assembler file
    in `source.s', and all  preprocessed C source on
    standard output.

    -v   Print (on standard error output) the commands exe-
    cuted to run the stages of compilation. Also print
    the version number of the compiler driver program
    and of the preprocessor and the compiler proper.

    -pipe Use pipes rather than temporary files for communi-
    cation between the various stages  of compilation.
    This fails to work on some systems where the assem-
    bler cannot read from a pipe; but the GNU assembler
    has no trouble.


LANGUAGE OPTIONS
    The following options control the dialect of C that the
    compiler accepts:

    -ansi Support all ANSI standard C programs.

    This turns off certain features of GNU C that are
    incompatible with ANSI C, such as the asm, inline
    and typeof keywords, and predefined macros such as
    unix and  vax that identify the type of system you
    are using. It also enables the  undesirable and
    rarely used ANSI trigraph feature, and disallows
    `$' as part of identifiers.

    The alternate keywords __asm__,  __extension__,


GNU Tools    1993/10/13    6
GCC(1)     GNU Tools     GCC(1)


    __inline__ and __typeof__ continue to work despite
    `-ansi'. You would not want to use them in an ANSI
    C  program, of course, but it is useful to put them
    in header files that might be included in  compila-
    tions done with  `-ansi'.  Alternate predefined
    macros such as __unix__ and __vax__ are also avail-
    able, with or without `-ansi'.

    The `-ansi' option does not cause non-ANSI programs
    to be rejected gratuitously. For that, `-pedantic'
    is required in addition to `-ansi'.

    The preprocessor predefines a macro __STRICT_ANSI__
    when you use the `-ansi' option. Some header files
    may notice this  macro and refrain from declaring
    certain functions or defining certain macros that
    the ANSI  standard doesn't call for; this is to
    avoid interfering with any programs that might use
    these names for other things.

    -fno-asm
    Do not recognize asm, inline or typeof as a key-
    word. These words may then be used as identifiers.
    You can use __asm__, __inline__ and __typeof__ in-
    stead. `-ansi' implies `-fno-asm'.

    -fno-builtin
    Don't recognize built-in functions that do not be-
    gin with  two leading underscores. Currently, the
    functions affected include _exit, abort, abs, allo-
    ca, cos,  exit, fabs, labs, memcmp, memcpy, sin,
    sqrt, strcmp, strcpy, and strlen.

    The `-ansi' option prevents alloca and _exit from
    being builtin functions.

    -fno-strict-prototype
    Treat a function declaration with no arguments,
    such as `int foo ();', as C would treat it--as say-
    ing nothing about the number of arguments or their
    types (C++ only).  Normally, such a declaration in
    C++ means that the function foo takes no arguments.

    -trigraphs
    Support ANSI C trigraphs.  The `-ansi' option im-
    plies `-trigraphs'.

    -traditional
    Attempt to support some aspects of traditional C
    compilers. For details, see the GNU C Manual; the
    duplicate  list here has been deleted so that we
    won't get complaints when it is out of date.

    But one note about C++ programs only (not C).


GNU Tools    1993/10/13    7
GCC(1)     GNU Tools     GCC(1)


    `-traditional' has one additional effect for C++:
    assignment to this is permitted. This is the same
    as the effect of `-fthis-is-variable'.

    -traditional-cpp
    Attempt to support some aspects of traditional C
    preprocessors.  This includes the  items  that
    specifically mention the preprocessor above, but
    none of the other effects of `-traditional'.

    -fdollars-in-identifiers
    Permit the use of `$' in identifiers (C++ only).
    You can also use `-fno-dollars-in-identifiers' to
    explicitly prohibit use of `$'. (GNU C++ allows
    `$' by default on some target systems but not oth-
    ers.)

    -fenum-int-equiv
    Permit implicit conversion of int to enumeration
    types (C++ only). Normally GNU C++ allows conver-
    sion of enum to int, but not the other way around.

    -fexternal-templates
    Produce smaller code for template declarations, by
    generating only a  single  copy of each  template
    function where it is defined (C++ only). To use
    this option successfully, you must also mark all
    files that use templates with  either  `#pragma
    implementation' (the  definition)  or  `#pragma
    interface' (declarations).

    When   your code  is compiled   with
    `-fexternal-templates', all template instantiations
    are external.  You must arrange for all necessary
    instantiations to appear in the implementation
    file; you can do this with a typedef that refer-
    ences each instantiation needed. Conversely, when
    you  compile using  the default   option
    `-fno-external-templates', all template instantia-
    tions are explicitly internal.

    -fall-virtual
    Treat all possible member functions as virtual, im-
    plicitly.  All member functions (except for con-
    structor functions and new or delete member opera-
    tors) are treated as virtual functions of the class
    where they appear.

    This does not mean that all calls to these member
    functions will be made through the internal table
    of virtual functions. Under some circumstances,
    the compiler can determine that a call to  a given
    virtual function  can be made directly; in these
    cases the calls are direct in any case.

posted @ 7:52 AM | Feedback (2)

Wednesday, March 16, 2005

从IRQ到IRQL(APIC版)

发布日期:2005-01-24
文摘内容:
文摘出处:https://www.xfocus.net/bbs/index.php?act=ST&f=2&t=45502

从IRQ到IRQL(APIC版)

                                                    SoBeIt
    事实上,老久的PIC在很早以前就被淘汰了,取而代之的是APIC。由于APIC可以兼容PIC,所以在很多单处理器系统上我们看到的PIC实际是APIC的兼容PIC模式。APIC主要应用于多处理器操作系统,是为了解决IRQ太少和处理器间中断而产生的,当然,单处理器操作系统也可以使用APIC(不是模拟PIC)。APIC的HAL和PIC的HAL有很大的不同,很突出的一个特点就是APIC的HAL不用再象PIC的HAL那样虚拟一个中断控制器,IRQL的概念已经可以通过中断向量的形式被APIC支持。事实上,因为被APIC所支持,所以在APIC HAL里IRQL的实现比PIC HAL那样虚拟一个中断控制器要简单得多了。

    现在来简单介绍一下APIC的结构(关于APIC详细的描述请参考《IA-32 Inel Architecture Software Developer's Manual Volume 3 Chapter 8》)。整个APIC系统由本地APIC、IO APIC和APIC串行总线组成(在Pentium 4和Xeon以后,APIC总线放到了系统总线中)组成。每个处理器中集成了一个本地APIC,而IO APIC是系统芯片组中一部分,APIC总线负责连接IO APIC和各个本地APIC。本地APIC接收该处理器产生的本地中断比如时钟中断,以及由该处理器产生的处理器间中断,并从APIC串行总线接收来自IO APIC的消息;IO APIC负责接收所有外部的硬件中断,并翻译成消息选择发给接收中断的处理器,以及从本地APIC接收处理器间中断消息。

    和PIC一样,控制本地APIC和IO APIC的方法是通过读写该单元中的相关寄存器。不过和PIC不一样的是,Intel把本地APIC和IO APIC的寄存器都映射到了物理地址空间,本地APIC默认映射到物理地址0xffe00000,IO APIC默认映射到物理地址0xfec00000。windows HAL再进一步把本地APIC映射到虚拟地址0xfffe0000,把IO APIC映射到虚拟地址0xffd06000,也就是说对该地址的读写实际就是对寄存器的读写,本地APIC里几个重要的寄存有EOI寄存器,任务优先级寄存器(TPR),处理器优先级寄存器(PPR),中断命令寄存器(ICR,64位),中断请求寄存器(IRR,256位,对应每个向量一位),中断在服务寄存器(ISR,256位)等。IO APIC里几个重要的寄存器有版本寄存器,I/O寄存器选择寄存器、I/O窗口寄存器(用要访问的I/O APIC寄存器的索引设置地址I/O寄存器选择寄存器,此时访问I/O窗口寄存器就是访问被选定的寄存器)还有很重要的是一个IO重定向表,每一个表项是一个64位寄存器,包括向量和目标模式、传输模式等相关位,每一个表项连接一条IRQ线,表项的数目随处理器的版本而不一样,在Pentium 4上为24个表项。表项的数目保存在IO APIC版本寄存器的[16:23]位。APIC系统支持255个中断向量,但Intel保留了0-15向量,可用的向量是16-255。并引进一个概念叫做任务优先级=中断向量/16,因为保留了16个向量,所以可用的优先级是2-15。当用一个指定的优先级设置本地APIC中的任务优先级寄存器TPR后,所有优先级低于TPR中优先级的中断都被屏蔽,是不是很象IRQL的机制?事实上,APIC HAL里的IRQL机制也就是靠着这个任务优先级寄存器得以实现。同一个任务优先级包括了16个中断向量,可以进一步细粒度地区分中断的优先级。

    在HAL里虽然HalBeginSystemInterrupt仍然是IRQL机制的发动引擎,但是因为有APIC的支持,它和其它共同实现IRQL的函数要比PIC HAL里对应的函数功能简单得多。HalBeginSystemInterrupt通过用IRQL做索引在HalpIRQLtoTPR数组中获取该IRQL对应的任务优先级,用该优先级设置任务优先级寄存器TPR,并把TPR中原先的任务优先级/16做为索引在HalpVectorToIRQL数组中获取对应的原先的IRQL然后返回。若IRQL是从低于DISPATCH_LEVEL提升到高于DISPATCH_LEVEL,还需要设置KPCR+0x95(0xffdff095)为DISPATCH_LEVEL(0x2),表示是从DISPATCH_LEVEL以下的级别提升IRQL。HalEndSystemInterrupt向本地APIC的EOI寄存发送0,表示中断结束,可以接收新中断。并还要判断要降到的IRQL是否小于DISPATCH_LEVEL,若小于则进一步判断KPCR+0x96(0xffdff096)是否置位,若置位则表示有DPC中断在等待(在IRQL高于DISPATCH_LEVEL被引发,然后等待直到IRQL降到低于DISPATCH_LEVEL),则将KPCR+0x95和KPCR+0x96清0后调用KiDispatchInterrupt响应DPC软中断。否则做的工作就是和HalBeginSystemInterrupt一样的过程:把要降到的IRQL转换成任务优先级设置TRP,并把久的任务优先级转成IRQL返回。KfRaiseIrql、KfLowerIrql之类的函数也是这么一回事,把当前IRQL转成任务优先级修改TPR,并把原先TPR的值转成原先的IRQL并返回。而现在软中断的产生也有了APIC支持,APIC通过产生一个发向自己的处理器间中断,就可以产生一个软中断,因为可以指定该中断的向量,所以软中断就可以区分优先级别,如APC_LEVEL、DISPATCH_LEVEL。产生软中断的函数一样还是HalRequestSoftwareInterrupt,该函数会先判断KPCR+0x95是否和要产生的软中断IRQL一样,若是的话则置位KPCR+0x96并返回,表示现在IRQL大于DISPATCH_LEVEL所以不处理DPC中断。否则以要产生的软中断的IRQL为索引从HalpIRQLtoTPRHAL取出对应任务优先级,并或上0x4000,表示是发向自身的固定处理间中断,并用该值设置中断命令寄存器ICW的低32位,然后读取中断命令寄存器ICW的低32位是否为0x1000,确定中断消息已经发送后就返回,这时候软中断已经产生。值得注意的是APIC HAL里没有HalEndSoftwareInterrupt这个函数。HAL为软中断的IRQL提供了一个固定的中断向量:

#define ZERO_VECTOR             0x00    // IRQL 00
#define APC_VECTOR              0x3D    // IRQL 01
#define DPC_VECTOR              0x41    // IRQL 02
#define APIC_GENERIC_VECTOR     0xC1    // IRQL 27
#define APIC_CLOCK_VECTOR       0xD1    // IRQL 28
#define APIC_SYNCH_VECTOR       0xD1    // IRQL 28
#define APIC_IPI_VECTOR         0xE1    // IRQL 29
#define POWERFAIL_VECTOR        0xEF    // IRQL 30
#define APIC_PROFILE_VECTOR     0xFD    // IRQL 31


现在看一下一些重要的数据:

这是我写的代码输出的IO APIC重定向表内容:

Redirect Table Index:    0x17
Redirect Table[ 0]:      ff
Redirect Table[ 1]:      b3
Redirect Table[ 2]:      ff
Redirect Table[ 3]:      51
Redirect Table[ 4]:      ff
Redirect Table[ 5]:      ff
Redirect Table[ 6]:      62
Redirect Table[ 7]:      ff
Redirect Table[ 8]:      d1
Redirect Table[ 9]:      b1
Redirect Table[ a]:      ff
Redirect Table[ b]:      ff
Redirect Table[ c]:      52
Redirect Table[ d]:      ff
Redirect Table[ e]:      ff
Redirect Table[ f]:      92
Redirect Table[10]:      ff
Redirect Table[11]:      a3
Redirect Table[12]:      83
Redirect Table[13]:      93
Redirect Table[14]:      ff
Redirect Table[15]:      ff
Redirect Table[16]:      ff
Redirect Table[17]:      ff

这是IDT表中被注册的向量:

1f: 80064908 (hal!HalpApicSpuriousService)
37: 800640b8 (hal!PicSpuriousService37)
3d: 80065254 (hal!HalpApcInterrupt)
41: 800650c8 (hal!HalpDispatchInterrupt)
50: 80064190 (hal!HalpApicRebootService)
51: 817f59e4
(Vector:51,Irql:4,SyncIrql:4,Connected:TRUE,No:0,ShareVector:FALSE,Mode:Latched,ISR:serial!SerialCIsrSw(f3c607c7))
52: 817f5044
(Vector:52,Irql:4,SyncIrql:a,Connected:TRUE,No:0,ShareVector:FALSE,Mode:Latched,ISR:i8042prt!I8042MouseInterruptService(f3c57a2c))
83: 817d2d44
(Vector:83,Irql:7,SyncIrql:7,Connected:TRUE,No:0,ShareVector:TRUE,Mode:LevelSensitive,ISR:NDIS!ndisMIsr(bff1b794))
92: 81821384
(Vector:92,Irql:8,SyncIrql:8,Connected:TRUE,No:0,ShareVector:FALSE,Mode:Latched,ISR:atapi!ScsiPortInterrupt(bff892be))
93: 8185ed64
(Vector:93,Irql:8,SyncIrql:8,Connected:TRUE,No:0,ShareVector:TRUE,Mode:LevelSensitive,ISR:uhcd!UHCD_InterruptService(f3f0253e))
a3: 8186cdc4
(Vector:a3,Irql:9,SyncIrql:9,Connected:TRUE,No:0,ShareVector:TRUE,Mode:LevelSensitive,ISR:SCSIPORT!ScsiPortInterrupt(bff719f0))
b1: 818902e4
(Vector:b1,Irql:a,SyncIrql:a,Connected:TRUE,No:0,ShareVector:TRUE,Mode:LevelSensitive,ISR:ACPI!ACPIInterruptServiceRoutine(bffe14b4))
b3: 81881664
(Vector:b3,Irql:a,SyncIrql:a,Connected:TRUE,No:0,ShareVector:FALSE,Mode:Latched,ISR:i8042prt!I8042KeyboardInterruptService(f3c51918))
c1: 800642fc (hal!HalpBroadcastCallService)
d1: 80063964 (hal!HalpClockInterrupt)
e1: 80064858 (hal!HalpIpiHandler)
e3: 800645d4 (hal!HalpLocalApicErrorService)
fd: 80064d64 (hal!HalpProfileInterrupt)
fe: 80064eec (hal!HalpPerfInterrupt)

象a3、b1这类输出内容很多的是被硬件注册的中断向量,而象d1、e3这种输出内容少的是注册为了的HAL内部使用的中断向量和本地APIC中断向量

这是几个重要的数组:

HalVectorToIrql(这个数组是以向量除于16做索引):
8006a304  00 ff ff 01 02 04 05 06-07 08 09 0a 1b 1c 1d 1e

HalpIRQLtoTPR:
8006a1e4  00 3d 41 41 51 61 71 81-91 a1 b1 b1 b1 b1 b1 b1
8006a1f4  b1 b1 b1 b1 b1 b1 b1 b1-b1 b1 b1 c1 d1 e1 ef ff

HalpINTItoVector:
8006ada0  00 b3 61 51 a2 b2 62 91-a1 b1 71 81 52 82 72 92
8006adb0  00 a3 83 93 00 00 00 00-00 00 00 00 00 00 00 00

HalVectorToINTI:
8006a204  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a214  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a224  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a234  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a244  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a254  ff 03 0c ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a264  ff 02 06 ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a274  ff 0a 0e ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a284  ff 0b 0d 12 ff ff ff ff-ff ff ff ff ff ff ff ff
8006a294  ff 07 0f 13 ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2a4  ff 08 04 11 ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2b4  ff 09 05 01 ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2c4  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2d4  ff 08 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2e4  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff
8006a2f4  ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff  


vBucket:
8006ae30  02 02 02 03 03 03 03

    举个例子来说明一下,在我虚拟机里SCSI Controller的IRQ是17(注意,已经大于16了),到重定向表中查找第17项,得到中断向量为0xa3,再看IDT,0xa3对应处理例程是SCSIPORT!ScsiPortInterrupt。

    vBucket数组干啥用的?它就是用来分配新的向量。分配算法很简单,当要分配一个新的向量时,就在vBucket数组从右到左搜索最小的一个数i,该数对应在vBucket中索引为Index,新向量为(0x50+Index*16+i+1),新向量对应的IRQL为(4+i+1),同时会把vBucket中这个i加1,i不等大于16。象给出的这个vBucket,下一次计算时i=2, index=2。不过这些用于硬件的向量在IO系统初始化时调用HalpGetSystemInterruptVector分配好了,然后通过IoConnectInterrupt把IDT中注册的向量位置的例程注册为中断处理程序。这里并不是每个注册的向量都会对应中断处理程序,象上面给出的例子中,0xa1、0xa2、0xb1等向量就没有对应。

    IRQL机制为内核同步提供了很大的便利,既对驱动开发者隐藏了底层中断机制,也方便了驱动开发者的内核同步。LINUX从2.5内核开始引进的软中断和任务队列等机制,很大程度上也来自windows这套机制的借鉴。

    终于考完试,解放了,呵呵。这个东西其实还有很多可写的,只是没空再深入去分析了。在未来的64位系统里,APIC这种基于中断引脚的机制很快也要被SAPIC这种基于消息的更强大的机制所取代。

posted @ 9:36 AM | Feedback (2)

Friday, January 14, 2005

HTTP-GET和HTTP-POST

  HTTP-GET和HTTP-POST是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义。每个HTTP-GET和HTTP-POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。

  HTTP-GET以使用MIME类型application/x-www-form-urlencoded的urlencoded文本的格式传递参数。Urlencoding是一种字符编码,保证被传送的参数由遵循规范的文本组成,例如一个空格的编码是"%20"。附加参数还能被认为是一个查询字符串。

  与HTTP-GET类似,HTTP-POST参数也是被URL编码的。然而,变量名/变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。

posted @ 6:19 PM | Feedback (14)

常用ASP自定义函数集 (S.Sams)
文章来源: 视点设计 8see.net
http://blog.8see.net/
rem ---表单提示函数 Being-----------------------------
CODE Copy ...
Function Check_submit(str,restr)
  if str="" then
  response.write "<script>"
  response.write "alert('"&restr&"');"
  response.write "history.go(-1)"
  response.write "</script>"
  response.end
  else
  Check_submit=str
  end if
End Function


CODE Copy ...
Function Alert_submit(str)
  response.write "<script>"
  response.write "alert('"&str&"');"
  'response.write "location.reload();"
  response.write "</script>"
End Function


CODE Copy ...
Function localhost_submit(str,urls)
  response.write "<script>"
  if str<>"" then
  response.write "alert('"&str&"');"
  end if
  response.write "location='"&urls&"';"
  response.write "</script>"
End Function



rem ---生成自定义位随机数 Being-----------------------------
CODE Copy ...
Function makerndid(byVal maxLen)
  Dim strNewPass
  Dim whatsNext, upper, lower, intCounter
  RANdomize
  For intCounter = 1 To maxLen
  whatsNext = int(2 * Rnd)
  If whatsNext = 0 Then
    upper = 80
    lower = 70
  Else
    upper = 48
    lower = 39
  End If
  strNewPass = strNewPass & Chr(Int((upper - lower + 1) * Rnd + upper))
  Next
  makerndid = strNewPass
End Function



rem ---生成四位随机数 Being-----------------------------
CODE Copy ...
Function get_rand()
  dim num1
  dim rndnum
  Randomize
  Do While Len(rndnum)<4
  num1=CStr(Chr((57-48)*rnd+48))
  rndnum=rndnum&num1
  loop
  get_rand=rndnum
End Function



rem ---判断数据是否整型 Being-----------------------------
CODE Copy ...
Function IsInteger(para)
on error resume next
dim str
dim l,i
if isNUll(para) then
isInteger=false
exit function
end if
str=cstr(para)
if trim(str)="" then
isInteger=false
exit function
end if
l=len(str)
for i=1 to l
if mid(str,i,1)>"9" or mid(str,i,1)<"0" then
isInteger=false
exit function
end if
next
isInteger=true
if err.number<>0 then err.clear
End Function



rem ---数据库链接函数 Being-----------------------------
CODE Copy ...
Function OpenCONN
  Set conn = Server.CreateObject("ADODB.Connection")
  connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DB_login)
conn.Open connstr
End Function



rem ---中文字符转Uncode代码函数 Being-----------------------------
CODE Copy ...
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function



rem ---Html过滤函数 Being-----------------------------Function Htmlout(str)
CODE Copy ...
dim result
dim l
if isNULL(str) then
Htmlout=""
exit function
end if
l=len(str)
result=""
  dim i
  for i = 1 to l
   select case mid(str,i,1)
   case "<"
   result=result+"&lt;"
   case ">"
   result=result+"&gt;"
    case chr(13)
      if session("admin_system")="" then
   result=result+"<br>"
      end if
   case chr(34)
   result=result+"&quot;"
   case "&"
   result=result+"&amp;"
case chr(32)  
   'result=result+"&nbsp;"
   if i+1<=l and i-1>0 then
   if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9) then  
   result=result+"&nbsp;"
   else
   result=result+" "
   end if
   else
   result=result+"&nbsp;"  
   end if
   case chr(9)
   result=result+" "
   case else
   result=result+mid(str,i,1)
end select
next
Htmlout=result
End Function



rem ---textarea显示用---
CODE Copy ...
function htmlencode1(fString)
if fString<>"" and not isnull(fString) then
fString = replace(fString, "&gt;", ">")
fString = replace(fString, "&lt;", "<")
fString = Replace(fString, "&nbsp;", chr(32))
fString = Replace(fString, "</p><p>", CHR(10) & CHR(10))
fString = Replace(fString, "<br>", CHR(10))
htmlencode1=fString
else
htmlencode1=""
end if
end function



rem ---页面显示用---
CODE Copy ...
function htmlencode2(fString)
if fString<>"" and not isnull(fString) then
fString = replace(fString, ">", "&gt;")
fString = replace(fString, "<", "&lt;")
fString = Replace(fString, chr(32), "&nbsp;")
fString = Replace(fString, CHR(10) & CHR(10), "</p><p>")
fString = Replace(fString, CHR(10), "<br>")
htmlencode2=fString
else
htmlencode2=""
end if
end function


rem ---取出指定字符串前后的字符串方法---
CODE Copy ...
function GetStrs(str1,CharFlag,Dflag)
dim tmpstr
if Dflag=0 then'取左
pos1=instr(str1,charFlag)
if pos1<=20 then
tmpstr=left(str1,pos1-1)
else
tmpstr=mid(str1,pos1-20,20)
end if
else '取右
pos1=instr(str1,charFlag)+len(charFlag)
if len(str1)-pos1<=20 then
tmpstr=right(str1,len(str1)-pos1)
else
tmpstr=mid(str1,pos1+1,20)
end if
end if
GetStrs=tmpstr
end function


rem ---取出文件名---
CODE Copy ...
function getfilename(str)
pos=instr(str,".")
if str<>"" then
str=mid(str,pos,len(str))
end if
getfilename=str
end function



rem ---取到浏览器版本转换字符串---
CODE Copy ...
function browser()
dim text
text = Request.ServerVariables("HTTP_USER_AGENT")
if Instr(text,"MSIE 5.5")>0 then
browser="IE 5.5"
elseif Instr(text,"MSIE 6.0")>0 then
browser="IE 6.0"
elseif Instr(text,"MSIE 5.01")>0 then
browser="IE 5.01"
elseif Instr(text,"MSIE 5.0")>0 then
browser="IE 5.00"
elseif Instr(text,"MSIE 4.0")>0 then
browser="IE 4.01"
else
browser="未知"
end if
end function


rem ---取到系统脚本转换字符串---
CODE Copy ...
function system(text)
if Instr(text,"NT 5.1")>0 then
system=system+"Windows XP"
elseif Instr(text,"NT 5")>0 then
system=system+"Windows 2000"
elseif Instr(text,"NT 4")>0 then
system=system+"Windows NT4"
elseif Instr(text,"4.9")>0 then
system=system+"Windows ME"
elseif Instr(text,"98")>0 then
system=system+"Windows 98"
elseif Instr(text,"95")>0 then
system=system+"Windows 95"
else
system=system+"未知"
end if
end function


rem ---=删除文件---
CODE Copy ...
function delfile(filepath)
imangepath=trim(filepath)
path=server.MapPath(imangepath)
SET fs=server.CreateObject("Scripting.FileSystemObject")
if FS.FileExists(path) then
FS.DeleteFile(path)
end if
set fs=nothing
end function


rem ---得到真实的客户端IP---
CODE Copy ...
Public Function GetClientIP()
dim uIpAddr
' 本函数参考webcn.Net/AspHouse 文献<取真实的客户IP>
uIpAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If uIpAddr = "" Then uIpAddr = Request.ServerVariables("REMOTE_ADDR")
GetClientIP = uIpAddr
uIpAddr = ""
End function



posted @ 5:41 PM | Feedback (0)

Sunday, December 26, 2004

  的确,25年的改革,我们似乎从来没有像现在这样距离当初的改革目标如此接近,但也没有像现在这样与我们曾经"共同富裕"的誓愿如此遥远。安志文在会议的最后加了一句判断:"如果我们的社会变成权贵市场经济,那我们的改革就白改了,我们的国家将前途堪忧。" 2004年7月7日,56岁的杨小凯去世了。这位华裔经济学家的人生坎坷而传奇:"文化大革命"期间因发表《中国向何处去?》,入狱整整十年,改革开放后投身于经济学研究,最后任教于澳大利亚莫纳什大学,被1986年诺贝尔经济学奖得主、公共选择学派创始人詹姆斯·布坎南赞誉为"当今最好的经济学家之一"。   杨小凯的去世,引发了经济学界和公共知识分子群体集体式的追思,众多经济学研究院所和独立的公共研究机构自发举办追悼活动,遍寄哀念。杨小凯更被尊崇为"首位冲击西方主流经济学的中国本土经济学家",是"挑战了新古典经济学、开创出新兴古典经济学崭新学派的一代经济学宗师"。   但这一切无法充分解释杨小凯为何成了一个现象。或许杨的挚友、美国三一学院经济系副教授文贯中在纪念悼词中透露了其中的秘密--"期盼着中国早日展开双手,更无保留地欢迎他(杨小凯)的理论遗产,并对他个人崇高的学术地位给予更多的尊重"。   这个遗产就是杨生前饱受主流经济学家批判的"后发劣势"理论。   2002年4月,杨小凯在北京做了题为《后发劣势》的主题演讲。他原创地指出,其一,发展中国家模仿发达国家的技术易而模仿发达国家制度难;其二,发展中国家总是倾向于模仿发达国家的技术而不是制度;其三,这种"路径依赖"可以使发展中国家获得短期内经济的快速增长,但同时也会强化制度模仿的惰性,并从而给长期发展留下隐患,甚至使得长期发展变成不可能。由此他推导认为:后发国家不仅有后发优势,后发劣势也是国家发展基因中的隐含信息。   随后,在与杰弗里·萨克斯、胡永泰合作的一篇题为《经济改革与宪政转轨》的论文中,杨小凯直接提出警示:中国作为一个后发国家,尽管现在改革开放很成功,但由于没有进行根本的宪政体制改革,发展前景并不清晰明朗。他甚至预言,尽管俄罗斯震荡疗法后的短期社会效果相较于中国的渐进式转轨而言好像是一个失败,但由于俄罗斯进行了根本的宪政体制变革,其将来发展仍可能超越中国。以此,引发了他和林毅夫2002年开始的一场石破天惊的论争。   那场学者争论,被很多知识精英和政府高级官员定义为"改革开放以来,就战略级别上的中国发展所进行的最具原创性洞见、也是最有锋芒和理性精神的论辩"。通过这次论战,杨小凯有关渐进改革与激进改革的思维力量,对国内精英阶层产生了强烈的冲击力。   事实上,不是杨的英年早逝,也并非后发劣势理论是否是真理,而是在中国改革走到矛盾最激烈之时,杨的思想击中了国人对改革方向迷茫的神经:甚至与其说是中国知识精英们在哀恸一位学者的离世,还不如说是渐进式改革道路遭遇越来越多的思考。   11月7日,《俄罗斯共青团报》发表了一篇该报驻华记者采写的有关中国宏观调控的报道,认为中国此次宏观调控暴露的问题,更清楚的显示出中国改革仍然是不完整的,"一个国家的社会转轨,涉及到政治的、经济的、文化的等全方位的问题,但与俄罗斯的转轨不同的是,中国的转轨目前还基本上限于经济领域……"文章写道,"如果说俄罗斯现在面临的是如何长大的问题,那么东方巨龙仍然还没有看清楚自己成长的方向。"   这篇多少有些以偏盖全的文章不无得意地说,普京已经构建了市场经济的基本框架。实际上,俄罗斯从1999年开始,经济确实出现了转机。普京执政的前4年,经济增长了30%;2000-2002年俄罗斯居民的实际收入与上年相比分别增长了11.9%、8.5%和8.8%,多年来拖欠的工资和养老金全部补发到位,退休金大幅提高,居民消费和储蓄同步增长,失业率下降。世界银行2003年9月发表的《2004年全球经济展望》报告中指出,俄罗斯已经成为带动独联体经济增长的火车头,俄内需增长已经成为推动本国及地区经济发展的最强大动力。   无独有偶,目前国内知识圈流传的一篇《俄罗斯挑战中国模式》也引起了知识分子们心灵的震荡。剧变后的俄罗斯的命运,一直为中国所关注。由于历史的因缘,无论俄罗斯的转型是成功还是失败,中国对俄罗斯的认识都将影响中国的命运。经历了政治巨变和休克疗法改革的俄罗斯1991-1998年连续7年的经济衰退,也使它一直被中国的主流话语引为反面教材。 该文指出,从1999年开始,俄罗斯经济已经连续5年持续增长,政治趋于稳定,贫富差距比中国要小,曾经横行一时的寡头豪富也正面临来自政府和民间的清算。自1991年3月以来,俄罗斯已经举行了3次全民公决和4次总统选举,无论是经济处于什么状态,俄罗斯国民也没有用选票选择回头路,《宪法》的权威得到了尊重。   文章认为,在宪法的框架下,俄罗斯政治日益成熟,在未来的时间里,已经不会出现巨大的政治和社会动荡,政治争斗将继续在宪法的框架下,朝着文明、和平和合法的方向发展。文章写到:"这是比一时一地的经济增长更重要的财富,为国家的长治久安奠定了基础。因为人民将为自己的选择负责。"   中国社会科学院经济研究所研究员冒天启师从于著名经济学家孙冶方,一直从国际比较的视角致力于研究经济转型和发展。为了找到转轨的秘密,他在苏联解体前后两次远赴俄罗斯进行中国和俄罗斯转型经济的比较研究。"近百年的历史证明,市场经济对一个国家来说,搞不好也可能是一个毁灭的机制。我们应该清醒地看到:我国现在已经建立的市场经济的体制到底面临着一个什么样未来的发展方向?这是需要冷静评估的严肃问题。"他告诉记者,中国的现行市场经济体制还处在一个十字路口,虽然完善现行的市场经济体制,是要将现行的市场经济体制发展为一种良性的市场经济,但对许多别的因素如果考虑不足,"不排除会演变成恶性的市场经济"。   比如,如何评估现行资源控制的权力结构?现行的权力结构是否会成为完善现行经济体制一种障碍?这是冒天启深深担忧的。"在我看来,现行的权力结构,更多地表现为一种代表部门利益的权力结构,不同权力部门都在试图控制生产过程和生产领域的资源,形成分散化的利益格局,并通过政策设计,将部门利益、地方利益制度化。"他说,"国家利益部门化、地方化,部门利益、地方利益制度化,这种情况,造就了一代新的既得利益者集团。"   在他看来,由此带来的资源分配体制,很不适应市场经济的要求。"财政资金的分配,银行贷款的分配,在很大程度上是在传统的集权计划经济体制中兜圈子。微观竞争机制的不对称,就是由此而产生的。"他警告说,现行的资源分配体制,如果不下大的力气进行改革,就有成为社会动荡导火索的可能。   在这个宏观调控最热的日子里,不仅仅是经济学家关心着这一切,或多或少,知识精英们都在注视改革的命运。丁东、谢泳、高增德、赵诚和智效民5位山西人文知识分子"操练思想",话题直指黄炎培与毛泽东1946年谈到的中国历史循环怪圈。在这本2004年1月出版的名为《思想操练》的对话录中,他们试图回答这样一个问题:"迅速实现现代化,是鸦片战争以来中国面临的最迫切问题。1980年代末,我们就曾提出现代化应该是全方位的,它包括政治、经济、文化和思想观念等各个方面。但是现代化为什么迟迟不能实现?"   来自山西省社会科学院的智效民教授以日本和中国的对比分析说,日本和中国的现代化几乎同时开始,但两者的差别在1860年代就形成了,"当时中国搞的是洋务运动,这个运动的实质用现在的话来说就是'经济体制可以改、政治体制不能动'。日本从一开始就搞明治维新,搞政治体制改革,为以后的发展奠定了政治基础。   历史最冷酷,科学最无情,无论我们面临渐进式改革遭遇激进式改革再次撞击的尴尬,还是改革内容不充分让中华民族的现代化步履重新凝重,我们必须有勇气深思英年早逝的杨小凯遗留下的这一思想片段:"成功的经济发展不仅需要市场,还需要宪政秩序和法治来保护个人权利并提供对政府权力的有效制衡。"他留下了一个我们没有走出的背影。

posted @ 4:40 PM | Feedback (0)

  据中国中央电视台《经济半小时》报道,常州市常务副市长俞志平对此的看法是,"我感觉到这是一种选择的问题。假如说这个企业不让它生存下去的话,那它造成的损失是100%。"在国务院严厉处分众多涉案官员后,未受处分的官员口吻竟然如此强硬,颇令外界惊诧。采访中,常州市政府反复向中央电视台强调,"对铁本项目的资产进行重组、尽量减少损失是国务院提出的一个明确要求"。   4天后,...再赴华东。在5月25日苏、浙、沪两省一市负责人座谈会上发言。他指出,要看到中央宏观调控效应不明显,阻力还是很大,有一些地方的领导干部在会上表态很好,回到地方又搞自己的一套;中央批评了,也下达文件纠正了,可还是这样搞。   针对一些领导以"个人乌纱帽不要"的辩解,...总理反诘道:"个人来负责?我说你个人负责不起,大局利益的得失,个人或某个部门能负责、承受得起吗?我劝不要把自己抬得太高,不要自以为是另搞一套,不要知错再错,不要再搞不实用、不切实际的政绩工程,不要认为在经济建设上、政策上出格,造成恶性后果是工作方法问题,别忘了自己的公职身份,自己对国家、人民要负职责。"   温度终于开始下降了。   从5、6月份的数据来看,4月以来的这一系列措施显然起到了作用。尤其是"铁本事件"的威慑作用,使地方政府的投资冲动得到了遏制。一直节节高攀的投资出现了明显的下滑,由4月份的34.7%高位迅速降至5月份的18.3%。贷款的增幅也出现下滑。市场上的钢材价格明显回落。来自发改委、央行、国家统计局等各部门的通报都强调:"宏观调控已见成效。" 但不能不承认,对于调控双方来说,都是一场惨胜。以江苏为例,上半年全省全社会固定资产投资比上年同期增长33.5%,较一季度回落30.3个百分点。其中,工业投资增幅比一季度回落67.1个百分点。一季度平均每月新增贷款300多亿元,4月份骤降为158.99亿元,5月更探至54.59亿元的低谷。纵向比较,该省2003年贷款年增长率接近30%,2004年4、5月份,新增贷款年增长率已猛然低至12%左右。江苏盐城甚至出现了贷款负增长。 有媒体将江苏的这个场景描述为"宏观调控下的喘息"。 赢家   11月1日,国家发展和改革委员会主任马凯以中国人民大学经济学院兼职教授的身份,在该院发表演讲。在这位身陷调控工作最中心的强势部门主脑以非官方身份,对2004年中国实行的宏观调控政策所做的系统回顾中,首先逐条批驳了许多批评宏观调控的意见,然后马凯也不无忧虑地坦陈:"当前宏观调控仍处在关键时期。如果稍有放松,就可能出现反复,甚至前功尽弃。加强和改善宏观调控仍是当前经济工作的重点,必须充分认识市场经济条件下宏观调控的长期性、艰巨性和复杂性。"   这几句话从一个侧面证实了中国经济10余年的市场经济建设,没有因为宏观调控的不断出现而逃脱"松紧带"经济的怪圈,地方与中央的利益争夺也没有因为宏观调控的高压而失去其背后强大的利益驱动--按照经济学家杨小凯的说法,这算得上是"没有宪政制衡国家权力结构所不得不承受的代价"。   实际上,目前遭受的体制困境,早在1994年的分税制财政改革上就种下了"因果"。作为"槛内人",北京市政协委员蔡金水解释了其中的奥妙,"那次税改中,作为第一大税的增值税按75∶25比例中央和地方共用,这部分税款对于地方财政开支举足轻重。如果争取到更多的投资项目,当地的财政收入自然扩大,当地的经济发展和社会发展就能得到较大的改观,同时也凸显出政府的政绩。"   各地方政府为了确保财源,自然是想方设法加大投资上项目,而且争取的都是大项目,造成各地在招商引资方面引发竞争。他以铁本事件举例说:"铁本是个自有资金只有3亿元,却要投资100多亿元、占地6000多亩的项目,没有地方政府从中将项目化整为零办理审批手续,没有地方政府动用行政资源参与征用土地,没有地方政府协助获得项目所需银行贷款,这一切不可想像。"   政府出手的现实根源,还是财政税收。大部分地方政府其实只是吃饭"财政",要加速当地经济发展和投入城市基础建设,很难有巨额资金来源,而另一些资源,比如土地、银行贷款和国债,无疑成为可以最快捷获得的资源和财源。   据《人民日报》报道,近3年全国土地出让金收入累计达9100亿元,而1998-2003年全国实现积极财政政策发行的国债总额一共是9300亿元。也就是说,过去3年全国土地出让金的收入接近过去5年的国债总额。   而且,一些市县区的土地出让金收入已经占到财政收入的一半,有的作为预算外收入甚至超过同期财政收入。蔡金水认为,这9100亿元的巨额土地收益基本上都作为地方政府的小金库在体制外循环,为遍地开花的形象工程和政绩工程提供了源源不断的资金。   "地方政府通过以土地批租为核心的经营城市带动固定资产投资的快速增长,加上获得土地是计划经济,用地上是市场经济。巨大的利益空间使地方政府成为巨大的'地主'。"蔡金水说,也因此,一面是中央政府强调保护耕地,另一面地方政府的真正动机是获得土地双轨制的巨大利益,"结果就是地方政府甘冒违法乱纪、农民失地的危险,也要大力圈占土地。" 这一利益分割的"潜规则",经过10年的固化,已经形成了难以冲破的制度"死结"。至少在目前,这种"诸神之争"的机制仍然看不到结束的前景。   但其结果却可以预见。北京师范大学金融研究中心主任钟伟讲述了这个"神话"的中国结局:西方的"诸神之争"有两个前提,一是"上帝存在",也就是说司法体系是通的,而中国还不习惯用法来约束政府,常常是政府用法约束百姓;二是"灵魂不灭",也就是说这个国家多少还是有传统道德的,而中国经过文革后,很多传统规范已经荡然无存了。在钟伟的眼中,中国版的"诸神之争",最后只能是没有赢家的"战争"。   11月29日,在中央财经大学举办的"中国财经法律论坛"上,我国经济学和法学界的两位泰斗级人物--吴敬琏和江平,上演了一场经济学家和法学家的"双高"对话,话题是"改善宏观调控需要法治基础"。   吴敬琏直言批评道:"现在有人把投资项目的审批也叫做宏观调控,这不对,这是行政对微观主体的干预,已经超出了市场经济意义下宏观调控的范围。"他认为,宏观调控必须建立在法治的基础上,首先是要界定政府的职能,什么能做,什么不能做。   江平则运用"公权"与"私权"的法学概念解读了宏观调控:"只有私权已经危害到公共利益时,公权才可以去限制私权。而且,公权对私权的限制和剥夺,程序要合法、透明,要有统一的准绳,适用于任何人。"他打比方说,地方政府批准的项目,又让更高一级政府叫停了,风险最终转嫁到企业等市场主体身上,这就应当由政府给企业家损失赔偿。   对于此次宏观调控出现的种种问题,江平感慨地说,"吴敬琏以前讲过一段话,大意是经济学家在刚刚改革开放的时候,有一个天真的想法,我们只要搞了市场经济,就一切问题都解决了。后来才发现,市场经济有好的市场经济,也有坏的市场经济。我曾回应他说,我们搞法律的人也曾有过天真的想法,以前中国的法律是一片空白,以为只要更多地制定法律,一切问题也就解决了。后来才发现,法律也有好也有坏。所以说,我们真正需要的是法治,而不是法制。"   脆弱的"哑铃"社会   7月28日,中国社会科学院"当代中国社会阶层结构研究"课题组推出他们最新的报告《当代中国社会流动》,得出的结论是:"(中国社会)已经形成的十大阶层中,该缩小的阶层还没有小下去,农业劳动者还占44%;该扩大的阶层还没有大起来,如社会中间阶层只占约15%;几个处于较为优势地位的国家与社会管理者、经理人员、专业技术人员中,子女代际继承性明显增强,而同代内的流动明显减少,出多进少;可处于经济社会位置较低阶层的子女进入较高阶层的门槛明显增高,两者间的社会流动障碍在强化;社会的经济资源、组织资源和文化资源有向上层积聚的趋势。"   这显示出中国社会结构正在呈现出一种"哑铃"趋势,一头是财富,另一头是贫困,中间是没有长大的中间阶层。加上基尼系数超过0.4的警戒线、接近0.5,扩大的贫富差距使得中国社会积累着严重的不稳定因素。   一位社会学家告诉记者,第一轮改革之所以漂亮,是因为"交够政府的,留下的都是自己的",谁的利益都没有缩小,都同步扩大了。城市改革后,多了两级政府,地级都变市了,乡变得有财政了,养活的人多了。"1994年税制改革,提高'两个比重'后,中央和省里多拿一些,再由他们承担转移支付的平衡调剂,但一个代价是,总有一部分人的获得少了。"在他看来,无论是去年南京因强制拆迁导致的翁彪"自焚",还是最近四川等地发生的民众聚集事件,虽大都触发原因属于偶然,但从根本上都是利益分配不公造成的必然结果。   全球最大投资银行之一美林集团与凯捷资讯刚刚联合发布的《2004年世界财富报告》显示,中国内地的富裕人数比2002年增长了12%,人数达23.6万人,总财富达到9690亿美元,成为亚洲地区仅次于日本的第二大百万富翁聚集地。   对着这份报告,一位经济学家惊叹道:"中国富豪们在短时间内积累数亿元的财富,在世界资本史上都是不多见的,资本主义国家早期的原始积累大都经历了100多年的努力,而他们只需十几年便完成了。"   对这种神速的财富积累的合法性持怀疑态度的,还有香港中文大学经济学教授郎咸平。   8月上旬,格林格尔老总顾雏军以诽谤罪将郎咸平告上法庭。事因郎咸平的分析报告指责顾雏军巧取豪夺国有资产。3年前,郎咸平初入内地,便以"炮轰"德隆扬名股市;3年后,郎咸平又将枪口对准新目标,三叩TCL、四问海尔、七敲格林格尔,同时北大方正、清华紫光、三九、复星悉数受其关注。此次"郎顾之争",更是将郎推进了社会舆论中心。   在宏观调控最紧张的时刻,谁也没有想到这件事竟然将几乎中国所有"有头脸"的经济学家都卷了进来。事件发生后开始还少有人说话,有媒体即发难说"经济学家集体失语"。此言一出,天下大乱,赞成不赞成郎咸平竟然成了经济学家的道德标杆,"郎顾之争"像"导火索"一样引爆了社会对财富分配不公正的声讨。   在"新左派"、"新自由主义者"等等派别打得不可开交的时候,国资委研究中心战略部部长赵晓呼吁,"不要贸然引爆仇恨国资流失的情绪"。但不管"郎顾之争"谁对谁错,事件演变到超出学术争议的地步,已经从侧面证明分配不公引发的社会情绪,成了我们必须面对的现实。   中国社会科学院农村发展研究所所长张晓山在一次内部研讨会上称,以往的发展模式公平严重失衡。"在不同的利益集团之间,政府应起协调作用,但20多年的实践是,当资本肆无忌惮地挤压劳动力的时候,有些政府没有起到仲裁和协调的作用,反而带有鲜明的倾向性,站在强势群体一边。"他批评道。   在这种情况下,企业家的资本权力化也全面启动,一是在政府内寻找代言人,二是本身参政--这或许并不为错,但相应的弱势群体却没有代言人,博弈的公平性失衡。   但对社会伤害最大的还是权力的资本化。2月12日,河南省人民检察院证实,河南省高速公路发展有限公司董事长童言白外逃。这是河南省交通厅三任厅长出事后,最新的一个交通官员落马。   这还只是一个开始。2月13日,江苏省十届人大常委会八次会议上,章俊元被宣布免去江苏省交通厅长职务,同时,江苏京沪高速有限公司董事长王文锦停职接受调查。   2月20日,"鉴于安徽省交通厅厅长王兴尧有重大经济违纪等问题",经安徽省委批准,安徽省纪委决定对其立案审查。   8月15日,北京市交通局原副局长兼首都公路发展有限公司原党委书记、董事长毕玉玺,因涉嫌受贿罪被北京市检察院第一分院批准逮捕。   有媒体将2004年定义为"交通厅长的事故发生年"。事实上,1997年至今,国内已有14名交通厅长"落马",涉及10个省市自治区,而交通行业中被查处的大小官吏更多。   频繁落马的原因非常清楚。当国家的基础设施建设开始侧重于交通系统,而其投资结构又以地方融资为主,交通部门的权力就是以"投资额"数目的多少来判断其大小了。尤其交通系统对外融资长期采用统贷统还模式,意味着资金全部集中于交通厅,由交通厅决定投向什么项目什么地市县。而交通厅的决定,很大程度上又是交通厅长的决定。   这种权钱结构安排的结果,不应让人感觉意外。以河南为例,2001年河南省高速公路通行费收入比2000年翻了一番,但由于建设质量事故需要大面积维护,致使两年来河南省高速公路仍然处于亏损状态。更为严重的是,2001年虽然年投资额比上一年翻了一番,实际新增在建公路里程却没有翻番,其主要原因就是把资金大量投入到了无休止的维护中,维护资金高达40亿元左右。   许漯高速公路1999年投入使用,耗资9.57亿元。在远未达到设计规定的大修年限内,就出现了严重的质量问题,不得不进行大规模整修。最严重的地段,开挖长度20公里,而该条路的总长不过48.95公里。   张晓山感叹,世界上可能没有哪个国家像我国这样,不同部门、不同地区、不同阶层的民众,因为接近资源的情况不同,因为本身所处的位置不同,所享有的经济利益差别很大。"这种分配格局下,只有靠自身的利益驱动,通过垄断、管制来保护自身的既得利益,"他说,"现在总在讲规范和转移支付,但常常贯彻不下去,就是因为有既得利益在其中。扭曲的分配格局背后都是利益关系。"   但另一方面,在他看来,简单地企图用"均贫富"的办法也不可能解决分配不公的问题,反而会使"富人"、"穷人"乃至整个社会陷入整体性的不安定状态。"如果要转变,短期内经济增长会受到影响,收入分配矛盾会更为突出;如果要矫正,会在顾及公平时损及效率,影响中国的劳动力资源优势。也就是说光着眼于分'蛋糕','蛋糕'做不大,分也分不好,结果必然是这条路走不通。"他认为,改变问题的惟一之途是,"有不同声音,有不同利益的相应代言人,彼此达到对话、妥协",而这其中一个重要前提是,"要有质询、问责,不仅有自上而下的监管,也要有自下而上的监督机制"。 渐进改革道路何处去?   "我们的改革走到哪里去?我感觉,现在的改革不是经济改革,而是权力改革。如果只讲经济,经济学可以现学,大家可以讲很多意见。但是,我担心的是经济生活中有许多深层次的问题,现在最深层次的问题是社会问题比经济问题还大。收入分配在城乡中的扩大,在城市中的扩大,预示着不同利益阶层的出现。现在最大的问题是怎样照顾弱势群体的利益。如果这个问题不解决,国家就不能长治久安。   "大家都讲政治体制改革滞后,滞后就应该改。政治体制改革就是民主法治,或者宪政民主。中央提出积极地、稳妥地推进政治体制改革,下一步怎么办?   "政治体制改革如何启动,是否从维护弱势群体的利益作为突破口?对于群众上访,我们的观念要转变,不要认为是群众闹事,而是公民争取自己的权益。我们应该同情他们,帮助他们。"   原中顾委委员、中国体改研究会名誉会长安志文在2004年的一次讨论会上脱口而出了这番话,整个会场一阵沉默,而后爆发出长久的掌声。这位中国改革的亲历者和观察者已经到了"从心所欲不逾矩"的年龄,他直言了自己对这场改革步履艰难的焦灼心情。

posted @ 4:39 PM | Feedback (1)

甲申二零零四 【2004.12.22 16:00】商务周刊   11月30日,19岁的张云向工地老板请假回乡祭父。   坐在K177次列车上等待开车的他,不愿意多说话,显得非常疲惫,只是不断催促送行的朋友下车。   他来京打工已经整整一年,这 一年对他来说,"整个世界好像翻了个跟斗"。   去年年初,张云所在的西北小城要上一条8车道的环城大道,家里族宅必须拆迁。"补偿金不够买新房。为这事我爸一直在跑。"张云说,身体原本就差的父亲病倒了,不但没有争取到更多的补偿金,仅有的也被花了个干净。为了弥补家用,张云外出打工。来京不到一周,传来了父亲去世的消息,家庭的负担压在了这个瘦小的孩子身上。   曾经也有过"公子哥儿"生活的张云,现在习惯了沉默,吸烟成了他每天最大的安慰。他说自己除了为父亲烧周年纸,什么也不想,也不会想。"想又能想什么?"他扭过脸说,语句冷淡。   火车开动了,窗里的张云表情平静。窗外,是2004年的暖冬。   在这个暖冬,12月3日,中央经济工作会议召开。中央认为,2004年国内外经济形势变化剧烈,一年来宏观调控成效巨大,中央关于加强宏观调控的决策是必要的、及时的,所采取的政策措施是正确的、有效的。无论从当前看还是从长远看,搞好这次宏观调控的意义都不可低估,它有利于防止局部性问题演变为全局性问题,避免经济的大起大落,保持经济平稳较快增长。   2004年,这些言词、这种语调不断冲击着张云们的听觉,也深刻地影响了张云们的生活。这一个甲申年,宏观调控激荡起的风浪,上至庙堂之高,下至江湖之远,中国民生无不领受了它的波及。   回望2004年,无论是中国经济"着陆"还是没有"着陆",生民们的生计有着落还是没有着落,在年末的暖冬里感受到的都更像一场惨胜。改革依然气宇轩昂,但已不再像《春天里的故事》那般温情脉脉;开放继续势不可挡,越来越多的国人却不得不接受"丛林法则"下全球化竞争的残酷。新世纪的阳光温暖着山坡上的中国,那么,山坳里的中国呢?   作为这个历史节点上的任何一个亲历者,现在做出全局式的判断几乎是一种奢望,惟一确有把握的就是,忠实的记录下甲申2004年,这个民族365天里的命运思考   航行在调空洪流中的改革   "诸神之战"   2004年刚开年的1月5日,发生了一个惹眼的事件,被北京市二商集团告倒的国家商务部不服北京市第二中级人民法院撤销其行政复议决定的一审判决,向北京市高级人民法院递交上诉状。 此案利害关系人主要是北京二商局下属的北京二商集团公司和香港嘉利来公司。二者于1994年成立中外合作企业,前者出地,后者出钱,开发毗临昆仑饭店、燕莎友谊商城的寸土寸金宝地---北京朝阳区新源南路1-3号。   合作公司连续5年通过了北京市工商局、北京市外经委联合年检,但没有想到2001年北京市工商局以嘉利来投资资金不是纯粹的外币为理由,突然宣布嘉利来公司没有履行应认缴注册资本出资义务,原北京市对外经济贸易委员会(现更名北京市商务局)批复北京二商集团更换合作公司外商股东。嘉利来被逐出局。此时,合作公司项目随着北京房地产市场的升温已经升值数亿元人民币。   嘉利来公司不服原北京市外经贸委批复,向原国家外经贸部提出行政复议。外经贸部认为,嘉利来公司向合作公司出资的部分币种不符合规定,属履约瑕疵,不应导致被取消股东资格的后果,因此撤销原北京市外经贸委更换外商股东的批复。北京二商集团不服,随后将国家商务部告上法庭,要求撤销原国家外经贸部做出的行政复议决定。而2003年7月和8月,国务院办公厅下函、商业部也连续两次发督办文,要求北京市外经贸委立即执行行政复议决定,下发恢复北京嘉利来房地产有限公司各合作方股东地位的书面通知。最后的结果是,北京市第二中级人民法院判决商务部败诉,国务院的文件无效。   经济学家、《中国改革》杂志总编辑温铁军非常重视这一事件透露出的重要信息。"权威系统正在发生一种真正具有博弈性质的冲突,也就是精英集团内部发生了冲突。"他把这称之为"诸神之战","因为权力与资本结合中牵涉到新利益分配,形成了新的资源占有关系和新的资源转化成资本收益的分配关系,所以不同利益集团之间的斗争正在开始。"   他举出了更多的例子佐证这个判断:"2003年1月中央农村工作会议上,中央要把财政新增的科教文卫'四大类'公共品开支用于县以下农村基层,但教科文卫四大部委全反对,结果是政治局开会,文件才通过。但是到年底,经过检查,四大部委全没执行。"   温对这一现象的解释是,国家计委要把财政用于农业的投资向县以下和农民切身利益相关的"15小"倾斜,之所以倾斜不出去,是因为"没腿"--到了县以下、乡以下、村一级,没有这些利益下伸的腿,部门不能参与分肥,当然不会把它转到县以下。   他在2004年1月《中国改革》"点评2003年十大新闻"中就指出:"十六届三中全会提出五个统筹,各地无言照转,只附了一份文件,没有配套措施。为什么?条块分割,利益结构已经形成,尾大不掉。"   博弈   在某种程度上,2004年的这次宏观调控,也上演的是这样一场"诸神之争"的话剧。   进入2004年后,中国经济运行的宏观数据变得发烫。前两月,占全社会投资八成的城镇固定资产投资暴增53%。即使在经济全面过热的1992年,投资增长也只有50%。在钢铁进口猛增等影响下,中国的进出口贸易连续几个月逆差,2004年一季度甚至出现了80多亿美元的逆差,这种情况多年来少有。而银行信贷增长则延续了2003年以来的势头。CPI除春节期间的2月略有回落外,已经连续多月超过3%的涨幅。   愈演愈烈的高烧,让中央政府顾不上再理会经济学家们"热不热"的文字游戏,开始向地方政府频发警告。但是投资增长依然很快,尤其是钢铁、水泥、电解铝等行业投资以翻番的速度上升。2004年前两个月,钢铁投资的增幅甚至达到惊人的202%。围绕土地这一资源的争夺也急剧升温,从中央到省到市到县甚至乡镇都有开发区,大量农田被圈,城市里的房价飞涨。   事态越来越严重,中央政府曾经期望的劝诫和市场手段已经"远水难解近渴"了。春节刚过,国务院召开电视电话会议,要求严格控制部分行业过度投资,明确提出要制止钢铁、电解铝和水泥行业的过度投资。随后,中央金融工作会议要求,要加强货币信贷调控,严格控制这些行业的贷款。银监会开始对钢铁、水泥、电解铝三大行业的信贷资金进行专项检查,此后,国家环保总局、证监会、国土资源部也加入检查队伍。显然,中央政府希望,这些行政调控措施能够有效地解决当前过热行业的投资问题。   但是,从各地传来的信息显示,地方政府有不同的看法。   "两会"召开,北京一时成了地方意见的表达中心。一位来自江苏的官员人大代表就畅言,宏观调控要注意从各地实际出发,区别情况,不一刀切,不急刹车。他介绍说,江苏省曾提出了"快的不用刀子砍,慢的不用鞭子赶"的理念,"十几年的历史证明,我们抓住了宏观调控的历史机遇,既没有放任不管,盲目搞重复建设,又没有不分青红皂白地急刹车,而是从实际出发,为江苏经济进一步发展打下了基础"。   在他看来,当前投资大幅增加的原因,是外力和内力共同作用的结果,"外力,国际资本持续向中国转移,长江三角洲地区尤其受到国际资本的青睐,投资领域逐渐向重化工业、服务业覆盖。中国作为一个尚未完全开放、增长潜力巨大的经济体,对国际资本有着极大的吸引力,不能轻易丧失这个机遇;内力,一是日益庞大的民间资本,二是快速成长的工业化和城市化带动的对基础设施、基础产业的巨大需求。"   这位官员判断,从全局看,中国的发展需要更多投资,某种意义上讲,目前不是投资过多,而是投资不足或滞后。"上起来爬坡非常难,下起来滑坡快得很,力度太大容易导致通货紧缩,将来再启动困难会很大。"他委婉地指出,"调控既要控制住部分行业的过度投资,又要注意把各地方、各方面及干部群众的积极性保护好、引导好、发挥好,在工作指导上仍应本着有条件的地方能快则快,有基础的产业能大则大,应该办而又有能力办的事能早则早,可以达到的目标能高则高的思路。"   这一思路道出了很多地方政府的心里话。4月21日,甘肃省财政厅厅长苏志希在《甘肃日报》发表了《学习江苏经验做好财政工作》的文章。这位3月份考察学习江苏经验的西部官员感慨万分,在赞扬了江苏"两个率先"(率先全面建成小康社会、率先基本实现现代化)的战略后,迫切地要求甘肃一定要加快学习江苏经验,"按照思想上放心放胆、工作上放手放开、政策上放宽放活的要求,采取激励政策,充分调动各地和企业发展经济,把促进经济发展,做大财政收入蛋糕作为财政工作的中心,充分发挥财政职能,为发展抓项目、为改革抓企业"。 惨胜 "人人争先"的局面之下,三大行业投资自然叫停不停,反而愈演愈烈。地方政府和一些部门从各自利益出发,不但没有严格执行中央的决定,而且一些地方的投资额加快了增长速度,被列为低水平重复建设的一些行业更是顶风而上。   3月18日,在两会之后的记者招待会上,国务院总理...说,今年宏观调控面临的困难不亚于去年的非典。3月25日到27日,...考察江苏,再次现场强调了中央宏观调控政策的必要性和执行决心。但总理前脚走,后脚"铁本项目"就上马了。   4月25日,中国人民银行副行长吴晓灵在博鳌亚洲论坛上承认,中国经济确实出现了一些问题,不能光靠中央政府和央行的努力和调节,还需要上下共同配合,她公开呼吁各界不要与央行博弈。"不要因为央行现在出手还比较温和,就想趁这个机会赶快'干一把',导致经济出现大的波动,造成今后的政策更加严厉,"她出人意料地措辞强硬,"希望各有关部门自觉控制,以免矛盾激化,导致央行采取大家不愿看到的更强硬措施,对大家都不好。"   话音刚落,暴风雨就真的降临了。4月28日,...主持召开国务院常务会议,研究整顿土地市场治理工作,责成江苏省和金融监管部门对"铁本项目"涉及的有关责任人做出严肃处理。铁本公司法人代表戴国芳涉嫌经济犯罪被刑拘,常州市委书记范燕青被党内严重警告,江苏省国土资源厅副厅长王明祥被责令辞职。   但这并没有引来更多的反思,而是激起了一些地方一种多少有些不服气的情绪。距"铁腕"叫停江苏铁本项目后不到一个月,甚至就在5月21日...总理主持国务院常务会议、严厉要求宏观调控"必须坚持不懈、不折不扣地贯彻执行"的一天之前,常州市仍然在位的领导公开发言,暗示把项目完全喊停并不是最佳处理手法。

posted @ 4:37 PM | Feedback (0)

Friday, December 10, 2004

New Page 2
ID 2507:   HOWTO mount very large Ext2/Ext3 partitions
Q. I have a very large Ext2 partition (>150GB) on a disk. I can mount this partition in the Ext2FS Manager.
However, when I tried to browse this partition in Windows Explorer, I receive the error message:
"Insufficient system resources ...". How to solve this problem?

A.
SOLUTION (for Windows NT/2000/XP/2003):
1) Run REGEDIT

2) Open the following Registry key:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
This Registry key controls memory management parameters.

3) Set the "PagedPoolSize" Registry value to the value of 0xFFFFFFFF.

4) In addition, check the following Registry values:
- "PagedPoolQuota" should be either 0 (default) or 0x80 (decimal 128, maximum value).

5) Close REGEDIT and reboot Windows in order to activate new system settings.

COMMENTS:
The error message is generated by Windows in case there are insuffisient resources in the System Memory Pool to supply
memory requests of the Ext2FS driver. Setting "NonPagedPoolSize" and "PagedPoolSize" to the value of 0xFFFFFFFF allows
Windows to use maximum memory for system needs.

hanges of mentioned Registry keys may slowdown system performance and/or memory-consuming applications.

See the attached file for more information.

Covered Products :
1Rescue Kit 4.x Professional ,   4.x Personal
2Ext2FS Anywhere 3.x Personal
3Mount Everything 3.x Professional ,   3.x Personal

posted @ 12:02 PM | Feedback (0)

Wednesday, December 08, 2004

joyfire linux笔记 V2002.6

版本 全部 系统管理 内核分析 项目专题 上载时间
V2002.6 .htm.tar.gz
.tfl
.htm.zip .htm.zip .htm.zip 20/11/2002

系统管理

Running Linux(EN)上载:23/9/2003

Learning Red Hat Linux(EN)上载:23/9/2003

Learning the Unix Operating System(EN)上载:23/9/2003

Linux Programming Unleashed(EN)上载:23/9/2003

Setting up a Local Area Network (EN)上载:5/9/2002

linux for mainframe (EN)上载:5/9/2002

Linux Consultants Guide (EN)上载:1/9/2002

LPI认证复习资料1 2 3 4 5 6 7 8上载:13/7/2002

Red Hat Network Basic User Reference Guide (EN)上载:13/7/2002

Red Hat Network Enterprise User Reference Guide (EN)上载:13/7/2002

Linux FAQ 在线浏览 上载:11/6/2002

Linux系统分析与高级编程技术上载:4/5/2002

RedHat Linux网络管理工具上载:4/5/2002

Linux管理指南上载:4/5/2002

GNU Linux 高级网络应用服务指南上载:4/5/2002

linux环境数据库管理员手册上载:4/5/2002

Complete Linux Command Reference (EN)上载:4/5/2002

Bugzilla-Guide (EN) 上载:20/4/2002

linuxcookbook (EN) 在线浏览 上载:20/4/2002

Linux HOWTO (EN)(9.8M) 在线浏览 中文版miniHOWTO (EN) 中文版上载:13/3/2002

Advanced Bash-Scripting Guide(EN) 在线浏览 上载:11/3/2002

Securing and Optimizing Linux RedHat Edition -A Hands on Guide(EN) 在线浏览 上载:11/3/2002

CVS Best Practices(EN) 在线浏览 上载:11/3/2002

The Linux System Administrators' Guide(EN) 在线浏览 中文版上载:1/1/2002。

The Linux Network Administrator's Guide, 2e (EN) 在线浏览 上载:1/1/2002

Linux System Administration Made Easy (EN) 在线浏览 上载:1/1/2002

AKA讲座(a link)上载:1/1/2002

ORACLE for linux install handbook (EN)上载:1/1/2002

Redhat 7.2 install handbook (EN)上载:1/1/2002


代码编写

Intel 80386 Reference Programmer's Manual 上载:31/10/2003

UNIX编程FAQ(cn) 在线浏览 上载:23/10/2003

i386 Reference Programmer's Manual(EN)上载:6/10/2003

POSIX threads explained(EN)上载:5/9/2002

Emacspeak User's Guide (EN)上载:1/9/2002

MICO文档 (EN)上载:1/9/2002

GNU Autotools Guide (EN)上载:13/7/2002

Linux Threads FAQ 在线浏览 上载:11/6/2002

Linux系统分析与高级编程技术上载:4/5/2002

ELF文件格式 (EN)上载:10/5/2002

Bugzilla-Guide (EN) 在线浏览 上载:20/4/2002

The Linux Programmer's Guide (EN) 在线浏览 上载:11/3/2002

CVS Best Practices(EN) 在线浏览 上载:11/3/2002

Advanced Bash-Scripting Guide(EN) 在线浏览 上载:11/3/2002

Linux设备驱动程序(CH)(Linux Device Drivers): 在线浏览 上载:1/3/2002

The Linux Kernel Module Programming Guide (EN) 在线浏览 中文版上载:1/1/2002

AKA讲座(a link)上载:1/1/2002


内核分析

Intel 80386 Reference Programmer's Manual 上载:31/10/2003

Linux内核情景分析(上),Linux内核情景分析(下)上载:6/10/2003

netxiong linux内核分析笔记上载:28/7/2003

CML2 Language and Tools Description(EN)上载:12/ 7/2003

Z8530 Programming Guide(EN)上载:11/ 7/2003

Synchronous PPP and Cisco HDLC Programming Guide(EN)上载:11/ 7/2003

Video4Linux Programming(EN)上载:11/ 7/2003

The Linux 2.4 Parallel Port Subsystem(EN)上载:11/ 7/2003

MCA Driver Programming Interface(EN)上载:11/ 7/2003

The Linux Kernel API(EN)上载:9/ 7/2003

Unreliable Guide To Hacking The Linux Kernel(EN)上载:9/ 7/2003

Unreliable Guide To Locking(EN)上载:9/ 7/2003

OSDesign上载:18/3/2003

Linux Kernel 2.4 Internals(EN)上载:18/3/2003

Compiling the linux kernel(EN)上载:5/9/2002

OSKit项目源代码论文文档上载:13/7/2002

GNU Autotools Guide (EN)上载:13/7/2002

Compile linux kernel (EN)上载:12/7/2002

Intel体系结构参考手册 (EN)Intel体系结构手册 (EN)上载:16/5/2002

IA32体系结构设计手册卷一 (EN)上载:16/5/2002

IA32体系结构设计手册卷二 (EN)上载:16/5/2002

IA32体系结构设计手册卷三 (EN)上载:16/6/2002

ELF文件格式 (EN)上载:10/5/2002

Linux系统分析与高级编程技术上载:4/5/2002

The Linux Kernel (EN) 在线浏览 中文版上载:10/3/2002。

Linux From Scratch (EN) 在线浏览 上载:10/3/2002。

Linux设备驱动程序(CH)(Linux Device Drivers): 在线浏览 上载:1/3/2002

华中理工大学98级研究生linux系统分析报告上载:10/2/2002。

华中理工大学96级本科生linux系统分析报告上载:10/2/2002。

The Linux Kernel Module Programming Guide (EN) 在线浏览 中文版上载:1/1/2002

The Linux Kernel Hackers' Guide (EN) 在线浏览 上载:1/1/2002

AKA讲座(a link)上载:1/1/2002。


原代码

"虚地址空间基于文件OS"内核源代码和文档上载:8/8/2002

OSKit上载:17/7/2002

linux-2.5.10上载:26/4/2002

Global-4.4上载:22/4/2002

linux-2.4.18上载:22/4/2002(据说有错,请到自由软件库下载)

重新上载的linux-2.4.18上载:15/7/2002


Hackerdom

Hacker文化简史 在线浏览

大教堂和市集