自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 收藏
  • 关注

转载 qemu-kvm 中断虚拟化

转自:http://www.kaixinwenda.com/article-luo_brian-8454002.html中断,这个概念相信大家已经不陌生了,我也没什么资格来介绍中断,就简单的说一下。我认为它从宏观上看可以分为软件部分和硬件部分。软件部分:软件部分在操作系统中实现,如Linux中断的x86,每一个中断对应一个中断门,中断门中包含中断处理函数(ISR

2015-09-11 13:45:47 831

转载 使用strace+pstack利器分析程序性能

引言有时我们需要对程序进行优化、减少程序响应时间。除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗?若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相比漫无目的地看代码,效率就高多了。将strace和pstack工具结合起来使用,就可以达到以上目的。strace跟踪程序使用的底层系统调用,可输出系统调用被执行的时间点以及各个调用

2015-08-24 16:58:46 482

转载 virsh 命​令​快​速​参​考

本文内容来自 http://docs.fedoraproject.org/zh-CN/Fedora/12/html/Virtualization_Guide/chap-Virtualization_Guide-Managing_guests_with_virsh.html virsh 命​令​快​速​参​考​ 下​表​提​供​所​有​ virsh 命​令​行​选​项​的​快​速​参

2015-08-12 20:26:17 708

转载 虚拟化:使用libvirt管理kvm虚拟机

说明:这篇笔记为更好的管理虚拟化服务,如果仅仅是测试虚拟化,查看另一篇笔记:http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=234090 web方式管理虚拟机,查看:http://blog.chinaunix.net/uid-1838361-id-3060330.html 补充:这

2015-08-11 16:13:41 3172

转载 在主机和虚机之间共享文件的N中方法

以下是我常用的在主机的虚拟机间通信(共享文件)的常用方法(未完待续):通过内建的 Samba 服务器很少有人知道 QEMU 内置了一个 Samba server, 按如下方式启动 QEMU, 即可启用 它.$ qemu-kvm -net nic -net user,smb=shared_directory ~/Image/XP.img或者在旧的 QEMU

2015-08-03 15:17:08 2438

转载 qemu-kvm 中断虚拟化代码分析

如果收到中断响应/* * callback when PIC0 irq status changed */static void pic_irq_request(void *opaque, int level){        struct kvm *kvm = opaque;        struct kvm_vcpu *vcpu = kvm->bsp_vcpu;

2015-07-05 10:23:52 702

转载 Qemu-kvm模拟APIC Timer中断

Qemu-kvm模拟APIC Timer中断qemu-kvm模拟两个时钟中断设备PIT(i8254)和APIC Timer设备,也就是产生中断源。两者电子线路连接不同,对于i8254设备来说首先连接到i8259中断控制器,i8259中断控制器再连接到ioapic设备中,送到lapic,最后注入到vcpu中。对于APIC Timer设备实际就是lapic的一个功能,意思就是通过编程可以触发l

2015-07-05 10:23:16 984

转载 qemu-kvm 内存虚拟化---ept

qemu-kvm内存虚拟化内存虚拟化实际就是进行地址转换从客户机虚拟地址-->客户机物理地址-->宿主机的物理地址,转换实现有两种硬件内存虚拟化和软件影子页表方式, 下面主要分析基于intel ept硬件内存虚拟化实现,此实现主要做两件事情1.开启ept功能2.构造转换页表。注意该页表构造采用动态方式(常说懒惰方式),就是不到完不得以情况不创建。此页表创建实现就是采用ept violati

2015-07-05 10:22:39 788

转载 KVM虚拟机创建功能详细讲解

⑶ 在cmdCreate主程序中有一个特别重要的函数:virDomainCreateXML(),这个函数的最初原型是: virDomainPtr virDomainCreateXML (virConnectPtr conn,const char*xmlDesc,unsigned int flags),这个函数是基于一个指定的XML文件来创建一个虚拟机,其中conn表示一个指向hypervisor的

2015-07-05 10:22:01 561

转载 Guest OS, Qemu, KVM工作流程

这里主要介绍基于x86平台的Guest Os, Qemu, Kvm工作流程,如图,通过KVM APIs可以将qemu的command传递到kvm:1.创建VMsystem_fd = open("/dev/kvm", xxx);vm_fd = ioctl(system_fd, KVM_CREATE_VM, xxx);2.创建VCPUvcpu_fd = kvm_

2015-07-05 10:21:17 582

转载 KVM系统调用说明

1. General description----------------------The kvm API is a set of ioctls that are issued to control various aspectsof a virtual machine. The ioctls belong to three classes- System io

2015-07-05 10:20:37 1666

转载 qemu-kvm 代码分析

物理计算机由处理器,存储器,输入与设备三大部件组成,虚拟机实际也是一台计算机,必然包括这三大组件,所以虚拟技术包括处理机虚拟化,存储器虚拟化,输入与输出设备虚拟化,这些虚拟化是通过软件虚拟还是硬件虚拟呢?接下来看看具体虚拟化软件qemu-kvm是如何处理的?qemu是采用纯软件模拟的技术,kvm暂且认为采用硬件模拟技术, 可见qemu-kvm的虚拟机是硬件辅助虚拟机,其中处理机虚拟化和存储器虚

2015-07-05 10:19:24 684

转载 Spice代码分析(三)——red_worker: red_init

Spice 的图形子系统是最Spice最核心也是最复杂的一块,它不像其他的几个子系统由spice server 主进程来处理,而是有一个单独的线程处理,而且与主进程是并行运行的,负责这个处理的线程就是Red worker。具体来说,redworker负责以下的处理:1)        处理QXL设备命令(如画,更新,光标处理等);2)        处理从Dispatcher接收到的消息;

2015-07-05 10:17:02 462

转载 Qemu, Spice 消息模型

作者“达沃时代”    原文链接:http://www.cnblogs.com/D-Tec/archive/2013/03/21/2973339.html网络事件处理是libspice设计中最关键的部分,可以说是整个Spice的骨架,用以支撑Spice的运行,是理解Spice运作方式的切入口之一(VDI是另一个阅读代码的切入口)。Spice的server和client通信方式采用了三种框架

2015-07-05 10:16:12 471

转载 spice client 和 spice server 通信机制

作者:“达沃时代”    原文链接:http://www.cnblogs.com/D-Tec/archive/2013/04/19/3030129.html〇、基本原理目前的Channel类型枚举值定义如下:enum { SPICE_CHANNEL_MAIN = 1, SPICE_CHANNEL_DISPLAY, SPICE_CHANNEL_IN

2015-07-05 10:15:20 738

转载 QXL驱动分析(二)——FindAdapter

QXL.c ULONG DriverEntry(PVOID context1, PVOID context2)是mini port的入口,其中初始化了一个很重要的结构:VIDEO_HW_INITIALIZATION_DATA。该结构定义中的HwFindAdapter是video miniport driver必须的,主要用来初始化显示适配器的存储和配置信息,它被video port driver调

2015-07-05 10:14:29 817

转载 QXL驱动分析(一)

QXL安照windows2000显示架构编写,见下图: QXL实现的功能主要包含两块:Display Driver 和 Video Miniport。1.  Display DriverDisplay Driver以动态链接库qxldd.dll的形式提供,处于内核态,主要是提供绘图API给GDI,这样当最上层的应用需要绘图的时候,通过调用GDI API(gdi32.

2015-07-05 10:13:59 810

转载 spice server qxl red_worker_main()代码分析

1.在qxl中red_dispatcher_init 非常重要[cpp] view plaincopyRedDispatcher *red_dispatcher_init(QXLInstance *qxl)  {      RedDispatcher *red_dispatcher;   // 创建RedDispatcher 结构指针  

2015-07-05 10:12:28 596

转载 VDI接口工作方式及具体实现

转载自:http://www.cnblogs.com/D-Tec/archive/2013/03/01/2939311.html〇、VDI接口工作方式Spice中的VDI(Virtual Device Interfaces)是一个经过专门设计的接口规范,其设计哲学可以推广到很多需要做功能扩展的软件项目中。此类接口设计的主要目标是在尽量不改变原有代码的情况下,通过动态库的方式来为原有

2015-07-05 10:11:40 3135

转载 Spice网络事件处理模型

作者:“达沃时代”    原文链接:http://www.cnblogs.com/D-Tec/archive/2013/03/21/2973339.html〇、概述网络事件处理是libspice设计中最关键的部分,可以说是整个Spice的骨架,用以支撑Spice的运行,是理解Spice运作方式的切入口之一(VDI是另一个阅读代码的切入口)。Spice的server和client通信

2015-07-05 10:10:45 364

转载 spice 图像压缩算法相关代码逻辑流程

下面是转载http://blog.csdn.net/zhoujiaxq/article/details/11201893 内容,是对图像算法的简单介绍接流程目前的spice图像压缩主要采用了quic,glz和jpeg。quic和glz是无损压缩算法,quic主要用于照片,glz用于人工图像,jpeg也主要用于照片压缩但是是有损的。jpeg能节省50%的带宽,glz只能节省20%,但是jpe

2015-07-05 10:05:49 694

转载 socket阻塞与非阻塞,同步与异步、I/O模型

转载于:http://blog.csdn.net/hguisu/article/details/74533901. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一

2015-05-06 12:46:01 360

转载 glib库线程池代码分析

本文章主要讲了两部分内容:一是分析了异步队列的原理和实现,二是分析线程池的原理和实现。在多线程程序的运行中,如果经常地创建和销毁执行过程相似而所用数据不同的线程,系统的效率,系统资源的利用率将会受到极大的影响。对于这一问题可用类似glib库中的线程池的解决办法。   我们可以这样想像线程池的处理,当有新的数据要交给线程处理时,主程序/主线程 就从线程池中找到一个未被使用的线程处理这

2015-05-05 08:56:00 1224

转载 TCP连接探测中的Keepalive 和心跳包

采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议层实

2015-04-08 15:00:41 336

转载 C语言实现封装、继承和多态

1、  概述C语言是一种面向过程的程序设计语言,而C++是在C语言基础上衍生来了的面向对象的语言,实际上,很多C++实现的底层是用C语言实现的,如在Visual C++中的Interface其实就是struct,查找Interface的定义,你可以发现有这样的宏定义:#ifndef Interface#define Interface struct#en

2015-03-27 20:18:20 978

转载 对于C++网络编程的一点了解

源码包下载;  http://download.dre.vanderbilt.edu/         http://blog.csdn.net/superyao2008/article/details/2576099        http://blog.csdn.net/sunny3106/article/details/7284172         因为我们通常用C进行后台

2015-03-25 15:53:05 1119

转载 linux 高并发socket通信模型

------select1 一个误区很多人认为它最大可以监听1024个,实际上却是文件描述符的值不能大于等于1024,所以除掉标准输入、输出、错误输出,一定少于1024个,如果在之前还打开了其他文件,那会更少2 select返回后,一般要轮询fd_set,发现新连接要加上,连接断开要去掉,这个过程一定要这样做:select之前把fd_set临时拷贝一份,轮询中对它的修改只在临时fd_set

2015-03-25 09:47:19 354

转载 epoll的LT和ET模式

转载自:http://kenby.iteye.com/blog/1162853epoll的两种模式 LT 和 ET二者的差异在于 level-trigger 模式下只要某个 socket 处于 readable/writable 状态,无论什么时候进行 epoll_wait 都会返回该 socket;而 edge-trigger 模式下只有某个 socket 从 unrea

2015-03-25 09:39:05 335

转载 Git常用命令

Git配置123456789git config --global user.name"robbin"  git config --global user.email"fankai#gmail.com"git config --global color.uitruegit config --glob

2015-01-28 14:05:41 261

转载 linux 内核与用户空间通信之netlink使用方法

Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(Named

2015-01-16 11:12:53 332

转载 C语言定义和声明区别

C语言定义和声明区别1. 变量的定义和声明C语言定义和声明分为变量的定义和声明和函数的定义和声明。由于,函数是具有全局外部特性,并且函数的定义和声明区别是很明显的。其声明需要返回值类型,函数名和参数列表。而函数的定义需要函数体。所以,很容易区别函数的声明和定义。对于变量的声明和定义,就不是那么明显。通常变量定义和声明的区别是有没有为变量分配内存。如果为变量分配内存就是定义,

2014-12-11 12:44:23 521

转载 scanf、sscanf中的正则表达式

1、定制自己的扫描集 %[abc]、%[a-z]、%[^abc]、%[^a-z],比isdigit()、isalpha()更加灵活。[]内是匹配的字符,^表示求反集。[c-sharp] view plaincopyint i;char str[80], str2[80];// scanf("%d%[abc]%s", &i, str, str2

2014-09-22 14:14:27 376

转载 Linux diff与patch的深入分析

diff(differential)功能说明:比较文件的差异。语  法:diff [-abBcdefHilnNpPqrstTuvwy][-;][-C ;][-D ;][-I ;][-S ;][-W ;][-x ;][-X ;][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]补充说明:diff以逐行

2014-08-07 14:00:34 645

转载 Linux 标准I/O函数库

标准I/O函数库: C标准库提供了文件的标准 I/O 函数库,相比前述的系统调用,主要差别是实现了跨平台的用户态缓冲的解决方案。标准I/O库使用简单,与系统调用I/O相似,也包括打开、读写、关闭这些操作,主要的函数列举如下。 ◆ 打开与关闭文件:fopen,fclose。 ◆ 读写文件:fread,fwrite。 ◆ 读写文本行:fgets,fputs。 ◆ 格式化读写

2014-07-18 09:50:00 361

转载 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)

首先,先稍微了解系统调用的概念:    系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(Application Prog

2014-07-18 09:48:42 423

转载 UDP并发技术

通常所见的的TCP服务器都 是并发实现的,即服务同时处理多个请求,而不是等待前一个完成再处理下一个请求,这个实现得益于TCP的listen()与connect()的分工处理 机制。具体为,服务器监听来自客户的连接,当一个请求到来时,服务器fork()一个子进程,处理该请求,然后父进程继续监听外部请求。   但在UDP中,没有这种监听和连接机制,所以它必须等待前一处理完成才能继续处理下一个客

2014-07-09 16:46:42 507

转载 2.6.30.4内核cmdline常用命令行参数与相应处理函数

看看initramfs加载的完整流程浅析blob到kernel传递tags参数和 cmdline处理流程arch/arm/mm/init.c|57| __tagtable(ATAG_INITRD, parse_tag_initrd);arch/arm/mm/init.c|66| __tagtable(ATAG_INITRD2, parse_tag_initrd2);arch/arm

2014-06-18 10:24:48 1071

转载 uboot启动阶段修改启动参数方法及分析

作者:围补本来启动方式这节不是什么复杂的事儿,不过想简单的说清楚明白,还真是不知道怎么组织。毕竟文字跟有声语言表达有别。但愿简单的东西别让我讲的太复杂!Arm板系统文件一般有三个——bootloader(uboot)、kernel(uImage)及根文件系统(rootfs)。在arm板上电后,按uboot->kernel->rootfs的顺序依次启动。由于开发板上有多种存储介质,三

2014-06-18 09:42:26 438

转载 Linux用户空间与内核空间

Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存

2014-06-03 10:52:28 375

转载 linux读取配置文件(C语言版)

一个通用的linux系统中C语言版读取配置文件的函数。123456789101112131415161718192021222324252627282930313233343536373839404142

2014-05-21 16:12:10 372

空空如也

空空如也

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

TA关注的人

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