6 北方南方

尚未进行身份认证

我欲乘风破浪,踏破黄沙海洋!

等级
TA的排名 5w+

QEMU是如何以后台进程运行的?

当使用libvirt启动QEMU后,QEMU进程便成为后台进程在运行,刚刚分析了QEMU启动的代码,将其转换为daemon进程的过程简单解释如下(QEMU-2.3.0):1概述  QEMU在被libvirt启动的时候,可以传入一些参数来设置QEMU进程的运行状态,主要参数有:-runas指定以某个用户的权限运行虚拟机、-chroot改变当前QEMU的工作根目录、-daemoniz...

2018-08-23 00:17:34

数组越界如何产生段错误

数组越界VS段错误1栈中数组越界访问1.1示例代码#include<stdio.h>intmain(intargc,char*argv[]){printf("0x%x\n",(unsignedint)(-2));inta[5]={0};inti;printf("%d\n"...

2018-08-10 14:32:14

QEMU内部:整体架构和线程模型

  HOST将qemu当做一个普通的进程和其他进程统一调度,可以使用资源对qemu进行资源预留隔离(cpuset)和优先级提升(chrt)。qemu进程包含多个线程,分配给GUEST的每个vcpu都对应一个vcpu线程,另外qemu还有一个线程循环执行select专门处理I/O事件。    QEMU的主要线程:    主线程(main_loop),一个    vCPU线程,一个或者多个...

2018-08-07 11:47:35

QEMU/seaBIOS启动流程分析

1QEMU函数执行流程  machine_init(pc_machine_init)–>pc_machine_init(void)–>注册QEMUMachine结构体变量pc_i440fx_machine_v2_3–>pc_init_pci–>pc_init1–>pc_memory_init–>pc_

2018-08-06 17:27:44

qemu多线程技术的实现

1qemy_mutex_*  qemu_mutex_init–>pthread_mutex_init、qemu_mutex_destroy–>pthread_mutex_destroy、qemu_mutex_lock–>pthread_mutex_lock(如果锁被占据,则阻塞当前线程)、qemu_mutex_trylock–>pthread_mute...

2018-08-03 11:00:08

招聘之笔试题目

1阿里巴巴—简历投递后的编程测试题目给出一个有向无环图,有向边“A->B”的含义是:节点A依赖于节点B,并且每个节点给出一个附加消耗值Vi,i=>[1,n],定义一条有向链条为”从入度为0的节点”沿着有向边一直到达一个”出度为0的节点”的所有边和节点的集合,有向链条上所有节点的消耗值的和为该有向链条的消耗值。求:最大的有向链条的深度,所有有向链条对应消耗值的最大...

2018-08-02 01:49:45

KVM/QEMU2.3.0 虚拟机动态迁移分析(三)

QEMU的函数处理流程图动态迁移的接收方

2018-07-30 11:40:50

KVM/QEMU2.3.0 虚拟机动态迁移分析(二)

QEMU的函数处理流程图

2018-07-28 17:27:00

KVM/QEMU2.3.0 虚拟机动态迁移分析(一)

1迁移源端QEMUmigrate命令–>hmp_migrate–>qmp_migrate–>qemu_savevm_state_blocked判断当前虚拟机状态适不适合迁移–>migrate_init迁移初始化–>根据uri来选择迁移函数,如表1所示。Uri跳转函数Tcp:tcp_start_outgoi...

2018-07-27 12:20:27

高精度整数加法、减法与乘法

1大数加法#include<stdio.h>#include<string.h>intjudge(char*num){char*p=num;intc=0;while(*(p+c)){if(*(p+c)<'0'||*(p+c)>'

2018-07-20 16:03:15

从程序员角度来看ELF文件(二)

接上篇从程序员角度来看ELF文件5GCC、GNU链接器和Linux对于ELF的支持5.1共享C库文件首先使用gcc-fPIC-O-clibbar.c来生成位置无关的中间代码,然后使用gcc-shared-olibbar.solibbar.o来根据上述位置无关的代码生成共享链接库。使用共享链接库的方式如下:#gcc-O-cbaz.c...

2018-07-09 10:05:56

linux线程栈与进程栈

1线程使用方法pthread_create用于创建一个线程,pthread_join用于等待线程执行完毕,简单应用如下:#include<stdio.h>#include<pthread.h>#include&

2018-07-07 17:09:00

malloc()函数有始有终

1malloc()malloc()函数是申请一块堆区内存的常用函数,简单应用如下:#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){char*test=(char*)malloc(100);te

2018-07-05 19:43:10

fork()之父子进程页表权限的设置

1fork()系统调用fork()系统调用用来生成子进程,而现有Linux系统运行在写时拷贝的机制下,于是fork()函数在为子进程建立内核中各种管理结构的时候,并没有将真实的物理资源分配给子进程,而只是将父进程的物理资源共享给子进程,比如:fork()函数会将父进程的物理内存共享给子进程,即将父进程多级页表的内容复制到子进程新建立的多级页表中。然而在这种机制下,对于父进程中那些原本可读可写...

2018-07-05 15:02:57

linux系统编程之signal信号处理程序

1信号处理程序1.1概述信号,软中断信号,用来通知进程发生了某些事件,是一种软件层面上对中断机制的一种模拟。信号本身是一段非常小的信息,一般都只是一个整数。信号的目的有两个:(1)通知进程一个特定的事件发生了;(2)让进程执行一个信号处理函数。使用kill-l查看系统支持的信号类型如下:其中,1-31是定期信号,32-64是实时信号。两者的区别在于:内核不支持定期信号的...

2018-07-01 19:04:50

Linux系统编程之daemon进程创建

1umask1.1对应系统调用sys_umask,源码实现在/kernel/sys.c中,SYSCALL_DEFINE1(umask,int,mask)利用传进来的参数mask对当前进程的文件结构体掩码进行赋值:xchg(&current->fs->umask,mask&S_IRWXUGO);task_struct结构体中fs的...

2018-06-30 12:27:39

从程序员角度来看ELF文件

1介绍ELF文件是一种linux/unix上通用的可执行文件格式,其比a.out和COFF二进制格式有更多的灵活性和功能。2类型三种类型:(1)可执行文件,包含代码和数据,指定了进程的地址空间分布;(2)可重定位文件,包含代码和数据,用于被其他的可重定位文件或者共享库文件链接使用;(3)共享库文件,包含代码和数据,在静态链接和动态...

2018-06-26 11:55:19

libvirt问题之virbr0虚拟网卡启动出错

1、错误提示root@sunshine:~/libvirt#virshnet-startdefault错误:开始网络default失败错误:内部错误:Failedtoapplyfirewallrules/sbin/iptables-w–tablenat–insertPOSTROUTING–source192.168.122.0/24‘!...

2018-06-19 11:16:31

qmp—QEMU Machine Protocol介绍

1、基于JSON(http://www.ietf.org/rfc/rfc4627.txt)的协议,便于其他应用控制QEMU2、QMP本质上是一种unixsocket本地通信机制,通信内容基于JSON格式,当其他的应用成功连接qemu的QMP监听服务后,会得到一个欢迎消息(表明连接成功),具体的消息如下:{"QMP":{"version":json-objec

2018-04-23 20:16:18

CPU cache的读写机制

cache,高速缓存,其原始意义是指访问速度比一般随机存取内存(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。cache的读写一般遵循两种机制:cache-through和cache-back。cache-through:数据更新时,在写入缓存之后,立即也将数据写入内存,如果此时请求指定的地址没有对应的缓存,那么直接写入内存。cache-back...

2018-03-29 20:35:16

查看更多

勋章 我的勋章
    暂无奖章