以下内容摘自亚马逊中国上对本书的简介。 这本书能得以出版,也是一种进步。 《大拐点》编辑推荐:袁剑,《奇迹的黄昏》的作者,当代中国最清醒、最锐利的思考者之一,在《大拐点》一书中,以全球的视野、顶层的分析、不妥协的思考和社会的立场,撇开所有无谓的争论与假问题,揭示中国奇迹的经济政治社会动力机制,剖析中国经济不可预知的未来。 《大拐点》内容简介:冷战之后,经济高速增长是一种全球性现象,并非中国所独有。在这个意义上,并没有所谓中国奇迹。中国的政府及企业之所以能够有亮丽的 报表,乃是因为那些本应该是由他们负担的大量成本从他们的资产负债表以及损益表中被悄悄挪走,并转移到了那些无法被统计到的匿名的社会之中。换言之,中国 政府及企业成本被社会化了。这也是中国模式最为关键的秘密所在。在这个模式中,经济增长是以中国社会的极度抑制和脆弱作为代价的。 冷战之后美元体 系在全球的迅猛扩张正在接近终点。所以,全球经济的中长期低迷,将可能是我们看到的最好前景。也由此,支持中国经济高速增长的基石就坍塌了关键一角。无论 从全球市场体系的视角看,还是从中国经济增长的内部逻辑看,中低速增长都是中国能够期望的最好前景。中国经济正在步入一个中长期的大型拐点。
READ MORE »Linux内存地址映射
在Intel体系结构的CPU中,现代操作系统如Linux都采用内存保护模式来管理内存。我们看Linux内核中的内存管理相关内容时,会遇到一个基本问题:普通用户程序中的地址是如何转换到内存上的物理地址的?IA-32架构的CPU规定地址映射过程是逻辑地址–>线性地址–>物理地址。Linux既然能在Intel架构的CPU上运行,就要遵守这个规定,那么Linux又是如何进行地址映射的?
READ MORE »Linux CPU占用率原理与精确度分析
Linux系统中CPU占用率是如何计算的?内核如何统计和更新CPU使用信息?Linux系统 计算CPU占用率方法是否准确? 本文将较为详细分析这些内容。文档内容目录如下: 1 CPU占用率计算原理… 3 1.1 相关概念… 3 1.2 CPU占用率计算… 4 2 CPU占用率内核实现… 6 3 Linux CPU占用率精确性分析… 10 3.1 /proc/stat中的数据单位精度… 10 3.2 CPU利用率统计信息更新… 11 3.3 CPU利用率精确性分析… 12 4 Linux CPU占用率是否准确?… 12 4.1 Linux CPU占用率不准确情形… 13 4.2 top命令CPU使用率准确吗?… 13 4.2.1 进程调度时机… 14 4.2.2 进程调度次数观察… 14 点击下载完整文章:Linux CPU占用率原理与精确度分析
READ MORE »Linux用户程序如何访问物理内存
用户态的程序都是在内存保护模式下使用内存,无法直接访问物理内存。同时用户程序使用的地址,也并不是物理地址,而是逻辑地址。至于这些逻辑地址对应的物理内存在哪里,用户进程本身并不知道。 通过用户程序若想访问物理内存,我们需要通过内核才能实现。本文介绍基于内核模块的方式,实现在Linux中用户态程序访问所有物理内存。 1、内核模块编写 通过文件读写的方式,实现物理地址访问。将物理地址,作为参数pos传递。 ssize_t my_read( struct file *file, char *buf, size_t count, loff_t *pos ) 在内核代码中,是无法直接访问物理地址的,代码能访问的都是逻辑地址。此时我们需要先将物理地址转换成逻辑地址,才能在代码中对地址读写。 物理地址转换成逻辑地址方法: 1)根据物理地址,计算出对应的页面号和页内偏移 page_number = *pos / PAGE_SIZE; page_indent = *pos % PAGE_SIZE; 2)将页面号找到对应的页面指针 注意在2.6.32及以上内核中,没有导出mem_map符号,只能通过 pfn_to_page()来找到对应的页面指针。 #if 0 pp = pfn_to_page( page_number); #else […]
READ MORE »Linux内核报错“No irq handler for vector (irq -1)”原因
系统运行过程中,报告错误“kernel:do_IRQ: 5.218 No irq handler for vector (irq -1)”。从错误打印来看,是中断向量-1没有中断处理程序。 我们来看一下该错误语句来源,在Linux中断处理函数do_IRQ()函数中打印(243~244行)。 00226: unsigned int __irq_entry do_IRQ(struct pt_regs *regs) 00227: { 00228: struct pt_regs *old_regs = set_irq_regs(regs); 00229: 00230: /* high bit used in ret_from_ code*/ 00231: unsigned vector = ~regs->orig_ax; 00232: unsigned irq; 00233: 00234: exit_idle(); 00235: irq_enter(); 00236: 00237: irq = __get_cpu_var(vector_irq)[vector]; 00238: […]
READ MORE »编译Hadoop Native Library时,“cannot find -ljvm”错误解决
在编译Hadoop原生态库时,总是提示“/usr/bin/ld: cannot find -ljvm”错误。 [exec] /bin/sh ./libtool –tag=CC –mode=link gcc -g -Wall -fPIC -O2 -m64 -g -O2 -m64 -o libhadoop.la -rpath /usr/local/lib -version-info 1:0:0 ZlibCompressor.lo ZlibDecompressor.lo getGroup.lo JniBasedUnixGroupsMapping.lo JniBasedUnixGroupsNetgroupMapping.lo file_descriptor.lo errno_enum.lo NativeIO.lo -ldl -ljvm -ldl [exec] gcc -shared .libs/ZlibCompressor.o .libs/ZlibDecompressor.o .libs/getGroup.o .libs/JniBasedUnixGroupsMapping.o .libs/JniBasedUnixGroupsNetgroupMapping.o .libs/file_descriptor.o .libs/errno_enum.o .libs/NativeIO.o -ljvm -ldl -m64 -m64 -Wl,-soname -Wl,libhadoop.so.1 […]
READ MORE »不重启系统,使硬盘分区生效命令:partprobe
我们通过fdisk给硬盘分区后,有时并不是立刻在系统中可以看到分区结果,此时执行partprobe命令即可。 PARTPROBE(8) GNU Parted Manual PARTPROBE(8) NAME partprobe – inform the OS of partition table changes SYNOPSIS partprobe [-d] [-s] [devices…] DESCRIPTION This manual page documents briefly the partprobe command. partprobe is a program that informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table. OPTIONS […]
READ MORE »[转]Embedded Linux kernel and driver development
非常好的Linux内核和驱动开发参考资料,强烈推荐。 来源:http://freeelectrons.com/docs/kernel 点击:下载 Loadable kernel modules Memory management I/O memory and ports Character drivers Processes and scheduling Sleeping, Interrupt management Handling concurrency Debugging mmap Device and driver model
READ MORE »Linux内核原子操作
本文基linux内核版本 2.6.32-131.17.1.el6.i686源码。 1、原子读、赋值 00016: /** 00017: *atomic_read-readatomicvariable 00018: * @v:pointeroftypeatomic_t 00019: * 00020: *Atomicallyreadsthevalueof @v. 00021: */ 00022: staticinlineint atomic_read(constatomic_t*v) 00023: { 00024: returnv–>counter; 00025: } 00026: 00027: /** 00028: *atomic_set-setatomicvariable 00029: * @v:pointeroftypeatomic_t 00030: * @i:requiredvalue 00031: * 00032: *Atomicallysetsthevalueof @vto @i. 00033: */ 00034: staticinlinevoid atomic_set(atomic_t*v,inti) 00035: { 00036: v–>counter= […]
READ MORE »Linux中硬盘转速查看
可以使用sg_vpd命令查看硬盘转速。 sg_vpd命令是sg3_utils其中一个工具,下载地址:http://sg.danny.cz/sg/sg3_utils.html VPD:Vital Product Data linux-suse11p1:~ # sg_vpd /dev/sg8 –page=0x89 ATA information VPD page: SAT Vendor identification: LSI SAT Product identification: LSI SATL SAT Product revision level: 0008 ATA command IDENTIFY DEVICE response summary: model: ST31000340NS serial number: 9QJ4VPL1 firmware revision: SN06 linux-suse11p1:~ # sg_vpd /dev/sg8 […]
READ MORE »