自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hshopeful

Sharing changes the world

  • 博客(26)
  • 资源 (41)
  • 收藏
  • 关注

转载 深入理解Hadoop集群和网络

本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系。最开始我们先学习一下Hadoop集群运作的基础原理。Hadoop里的服务器角色Hadoop主要的任务部署分为3个部分,分别是:Client机器,主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce

2012-08-31 16:37:38 1028

原创 linux内存管理伙伴算法(一:基本概念介绍)

在系统初始化进行到伙伴系统分配器能够承担内存管理的责任后,必须停用bootmem分配器,毕竟不能同时用两个分配器管理内存。在UMA和NUMA系统上,停用分别由free_all_bootmem和free_all_bootmem_node完成(前面的博客已经详细讨论过)。伙伴系统基于一种相对简单而令人吃惊的强大算法,它结合了优秀内存分配器的两个关键特性:速度和效率。Linux内核中采用了一种同时适用于

2012-08-21 15:23:05 4898 1

原创 Linux内存管理中内存的组织及主要数据结构分析(pg_data_t&&page&&zone)

在讲解内核中用于组织内存的数据结构之前,考虑到术语不总是容易理解,所以先来看看几个概念。我们首先考虑NUMA系统,这样,在UMA系统上介绍这些概念就非常容易了。下图给出内存划分的图示:首先,内核划分为结点。每个结点关联到系统中的一个处理器,在内核中表示为pa_data_t的实例(稍后定义该数据结构)。各个结点又划分为内存域,是内存的进一步细分。例如,对可用于(ISA设备的)DMA操

2012-08-20 19:30:39 5191

原创 boot memory allocator——自举内存分配器(五:停用bootmem)

在系统初始化进行到伙伴系统分配器能够承担内存管理的责任后,必须停用bootmem分配器,毕竟不能同时用两个分配器管理内存。在UMA和NUMA系统上,停用分别由free_all_bootmem和free_all_bootmem_node完成。在伙伴系统建立以后,特定于体系结构的初始化代码需要调用这两个函数。本文还是选择讨论UMA系统。free_all_bootmem如下:unsigned

2012-08-17 15:10:40 2231 2

原创 boot memory allocator——自举内存分配器(四:内存释放)

在bootmem阶段,内核提供了free_bootmem函数来释放内存。它需要两个参数:需要释放的内存区的起始地址和长度。不出意外,NUMA系统上等价函数的名称为free_bootmem_node,它需要一个额外的参数来指定结点。void __init free_bootmem(unsigned long addr, unsigned long size){ free_bootmem_co

2012-08-16 22:55:09 2440

原创 boot memory allocator——自举内存分配器(三:内存分配)

内核提供了各种函数,用于在初始化期间分配内存。在UMA系统上有下列函数可用。alloc_bootmem(size)和alloc_boormem_pages(sizes)按指定大小在ZONE_NORMAL内存域分配内存。数据是对齐的,这使得内存或者从可适用于L1高速缓存的理想位置开始,或者从也边界开始。尽管alloc_boormem_pages(sizes)的名字暗示所需内存长度是以页为单位,但

2012-08-16 21:37:03 1830

原创 boot memory allocator——自举内存分配器(二:在IA-32系统下的初始化)

bootmem分配器的初始化时一个特定于体系结构的过程,此外还取决于所述计算机的内存布局,在IA-32系统下使用setup_memory,该函数又调用setup_bootmem_allocator来初始化bootmem分配器,如下所示的代码流程图说明了IA-32系统上初始化bootmem分配器涉及的各个步骤。static void __init setup_memory(void)

2012-08-16 15:04:31 2370

原创 boot memory allocator——自举内存分配器(一:基本介绍)

在启动过程期间,尽管内存管理尚未初始化,但内核仍然需要分配内存以创建各种数据结构。bootmem分配器用于在启动阶段早期分配内存。显然,对该分配器的需求集中于简单性方面,而不是性能和通用性。因此内核开发者决定实现一个最先适配(first-fit)分配器用于在启动阶段管理内存。这是可能想到的最简单的方式。该分配器使用一个位图来管理页,位图比特位的数目与系统中物理内存页的数目相同。比特位位1,

2012-08-16 10:12:06 3718

转载 LINUX设备驱动之设备模型五--device&driver&bus(三)

接上一篇文章,继续device_add()中的代码:      error = bus_add_device(dev);       if (error)              goto BusError;在对应总线目录下的device目录下创建几个到device的链接文件。       error = dpm_sysfs_add(dev);       if (err

2012-08-13 22:23:31 2345

转载 LINUX设备驱动之设备模型四--device&driver&bus(二)

接上一篇文章,在往总线注册注册设备前要先创建device,我们可以静态的定义device结构变量,然后调用device_register()将其注册,或者通过内核提供的device_create()接口函数创建和注册device。先看看device的数据结构定义:struct device {       struct device          *parent;

2012-08-13 22:21:28 1507

转载 LINUX设备驱动之设备模型三--device&driver&bus(一)

在清楚了kobject之后,就可以继续分析device、driver、bus了,这三者是设备驱动程序的基本数据结构。我们可以这样理解,内核用device来表示各种设备,然后用driver来表示它的驱动,而设备有很多种,也属于相同类型或不同类型,而其对应的驱动可能同时也是另外一个设备的驱动,为了管理这些设备和驱动,就引入了总线bus_type,总线上有两个集合(也可以理解为两

2012-08-13 22:19:23 1133

转载 LINUX设备驱动之设备模型二--kset

我们已经知道了kset内嵌了kobject来表示自身的节点,创建kset就要完成其内嵌kobject,注册kset时会产生一个事件,事件而最终会调用uevent_ops字段指向结构中的函数,这个事件是通过用户空间的hotplug程序处理。下面我们一步一步分析。内核同样提供了创建和注册kset的函数kset_create_and_add()struct kset *kset_create_a

2012-08-13 22:17:20 932

转载 LINUX设备驱动之设备模型一--kobject

LINUX设备驱动驱动程序模型的核心数据结构是kobject,kobject数据结构在\linux\kobject.h中定义:struct kobject {       const char             *name;       struct list_head       entry;       struct kobject         *parent;

2012-08-13 22:14:44 1130

转载 页面交换守护进程kswapd

从原理上说,kswapd相当于一个进程,它有自己的进程控制块task_struct结构。与其它进程一样受内核的调度。而正因为内核将它按进程来调度,就可以让它在系统相对空闲的时候来运行。不过,与普通进程相比,kswapd有其特殊性。首先,它没有自己独立的地址空间,所以在近代操作系统理论中把它称为“线程”以与进程相区别。那么,kswapd的地址空间是什么?实际上,内核空间就是它的地址空间。在这一点上,

2012-08-13 19:18:20 3474

转载 Linux 内存管理 -- 高端内存的映射方式

解释一: 高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射

2012-08-13 16:32:05 1382

原创 使用Filezilla在主机和虚拟机中传输文件

由于实验室里面有很多东西要在Linux下完成,但是本人暂时又离不开Windows,所以给自己装了一个XP+ubuntu的双系统。这样在ubuntu里面访问XP里面的文件很方便,但是两个系统的切换让人很是不爽,于是后来把双系统给费了,改成在XP里面运行虚拟机,在虚拟机里面安装ubuntu,这样一来在ubuntu中访问XP里面的文件又不爽了,开始的时候在网上查了一下可以在虚拟机里面设置一下,将XP里面

2012-08-09 14:52:46 15219 1

原创 远程登录

1.实验室的服务器上装了CentOs操作系统,在其上面安装一个ssh-server,命令如下:  yum -y install openssh-server   然后运行ssh-server,命令如下:  /etc/init.d/sshd start  就会显示ssh-server已经开始运行.2.我在自己的ubuntu上通过如下命令实现远程连接:  ssh 192

2012-08-08 21:34:32 841

转载 Linux系统学习方法

首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux。是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux瞬娜椿故分紧?到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!        如果在论坛里来一次调

2012-08-08 15:46:38 1827

转载 linux CFQ IO调度算法分析笔记

CFQ调度器是四种IO Scheduler中最复杂的一个,redhat有个文档可以做为入门的文档先了解下 red-hat-enterprise-linux-5-io-tuning-guide.pdfThe cfq scheduler maintains a maximum of 64 internal request queues; each process running on th

2012-08-08 10:15:25 6999

转载 Linux Anticipatory (预测)I/O 调度算法分析笔记

as_add_request是调度算法的入口。AS和Deadline比较类似,都是先把request加入sector 排序的红黑树,然后再把requst加入fifo。只不过AS因为加入了预测,需要在加入requst时,调用as_update_rq来更新当前算法所维护的状态。此外,二者不同之处是,Deadline是以读写来区分request的方向,而AS是以是否同步来区分方向:data_dir =

2012-08-08 10:08:23 3240

转载 linux deadline I/O调度算法分析笔记

deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点:(1)请求超时时,对超时请求的选择。(2)没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。基于以上两点,平衡了系统i/o吞吐量和响应时间。此外,该算法还考虑到了读操作对写操作造成的饥饿。算法核心数据结构:struct deadline_data {

2012-08-08 10:05:35 4267

原创 在ubuntu12.04中安装Hammerora-2.10测试mysql性能

最近这段时间实验室的黄博在研究将Linux IO Scheduler的四种调度算法应用在SSD中。(在ubuntu12.04中只有3种调度算法Noop、Deadline、Cfq)       他就给我分配了一个任务:通过测数据库的tmp值来反映底层IO的性能(我对这真心不清楚)。任务下来之后他就给了我一个TPC的官网,我看了好久也不知道怎么个测量方法,起初看到貌似还得自己写代码去实现测量都有点

2012-08-07 18:05:57 2958

原创 ubuntu中查看软件安装目录

dpkg -L 包名这里的包名是你用apt-get安装时的名称,不是文件名apt-get下载后软件所在路径是/var/cache/apt/archives

2012-08-07 10:22:04 963

原创 TPCC简介

TPCC值被广泛用于衡量C/S环境下,由服务器和客户端构筑的整体系统的性能,它由事物处理性能委员会(TPC,Transaction Processing Corp)制定,TPC为非赢利性国际组织。TPCC值可以反映出系统的性能价格比。TPCC测试系统每分钟处理的任务数,单位为tpm,(transactions per minute)。系统的总体价格(单位为美元)除以TPCC值,就可以衡量出

2012-08-06 17:00:34 3033

转载 ubuntu-E:Encountered a section with no Package: header的解决办法

刚才打开ubuntu,我的版本是12.04.正想使用sudo apt-get install build-essential 时,出现了如下错误:E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dis

2012-08-06 16:29:54 27477 2

原创 ubuntu12.04里面安装mysql

sudoapt-get installmysql-server sudoapt-get installmysql-workbench

2012-08-06 15:47:38 791

Windows下修复mbr的软件(MbrFix)

安装windows和linux双系统,需要卸载linux时,需要先修复mbr

2013-11-07

深入理解linux内核(中文第三版可复制粘贴)第20章 程序的执行

深入理解linux内核,中文第三版,关键是可以随便复制粘贴。 第20章 程序的执行

2013-04-08

libmysqlclient.so.16(64bit)

这是一个用于64位系统的libmysqlclient.so.16

2012-08-09

QT实例教程(偏于入门级的一些简单例子)

本资源是QT程序设计的一些实例,但偏于入门级的一些小例子,但是讲解真的很好懂,特适合入门!

2011-01-18

设计模式(C++描述)

这是GOF的经典之作,是讲述设计模式最早,而且是最好的一本书。并且现在市面上讲设计模式的大多都是用JAVA讲的,然而这确实用C++讲述的!

2011-01-04

深度探索C++对象模型

这里面是有关面向对象程序设计的讲解,如果说你没有好好研究过这本书,真的不能说你学过面向对象程序设计,从而也就不能说你学习过C++!真的,这是面向对象程序设计的经典之作啊!

2011-01-04

计算机组成原理(唐塑飞)课件

有关计算机组成原理的课件,唐塑飞版的,也就是考研指定的教材!

2010-11-04

C++标准程序库(简体中文版)第三部分

这里是C++标准程序库(简体中文版)第三部分

2010-11-04

C++标准程序库(简体中文版)第二部分

这里是C++标准程序库(简体中文版)第二部分

2010-11-04

C++标准程序库1-7章

花了好大的经历才找到这本C++标准程序库的简体中文版,跟大家分享一下!

2010-11-04

C++标准程序库源代码

这里面包含C++标准程序库里面所以例子的源代码,对于书上哪个地方不是很明白的话,可以直接用源代码建立项目,看着结果便一目了然!

2010-11-04

局域网构建与管理实训

在计算机网络的基础之上讲解局域网的构建与管理

2010-09-15

Visual C++ 2008中有关MFC程序设计

本书稿为张孝祥、袁龙友两位老师在2000 年依据张孝祥的vc++讲课记录整理,由于时间关系,仅仅是写成了草稿,欢迎大家使用!

2010-09-15

校友录用户信息的管理

本资源是一个校友录用户信息管理的C++源码实现,完全通过调试,运行成功

2010-07-23

影碟租赁系统的程序设计

本资源是一个小巧但是功能健全的影碟租赁系统的C++源码实现

2010-07-23

单链表的各种操作的程序设计

本资源是单链表的建立、插入、删除、遍历、清空等等操作的源码实现

2010-07-23

多关键字排序的程序设计

本资源是一个多关键字排序的程序设计,里面包含冒泡排序、快速排序、基数排序的完整代码实现

2010-07-23

员工考勤系统的分析与设计

这是一个用C++语言写的员工考勤系统的分析与设计,里面不仅包含调试成功的代码,还包括课程设计书的完整书写。

2010-07-23

数据结构中有关多维数组的课程设计

本资源关于数据结构中的多维数组的设计与使用

2010-07-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除