自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北方南方

枚举14亿,不信找不到你!!

  • 博客(50)
  • 收藏
  • 关注

原创 PG原理解读之进程交互机制

postgresql是多进程模型,其进程之间通过信号、共享内存等机制来通信,并形成了独有的latch触发机制。

2022-12-11 23:05:03 742 2

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

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

2018-08-23 00:17:34 6009

原创 数组越界如何产生段错误

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

2018-08-10 14:32:14 5063

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

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

2018-08-07 11:47:35 7406

原创 QEMU/seaBIOS启动流程分析

1 QEMU函数执行流程  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 8390

原创 qemu多线程技术的实现

1 qemy_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 6004

原创 招聘之笔试题目

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

2018-08-02 01:49:45 2416

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

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

2018-07-30 11:40:50 2835

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

QEMU的函数处理流程图

2018-07-28 17:27:00 2737

原创 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 4601 3

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

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

2018-07-20 16:03:15 2391

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

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

2018-07-09 10:05:56 2340

原创 linux线程栈与进程栈

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

2018-07-07 17:09:00 3612

原创 malloc()函数有始有终

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

2018-07-05 19:43:10 2722

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

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

2018-07-05 15:02:57 3802

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

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

2018-07-01 19:04:50 5129

原创 Linux系统编程之daemon进程创建

1 umask 1.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 2370

原创 从程序员角度来看ELF文件

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

2018-06-26 11:55:19 2632

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

1、错误提示 root@sunshine:~/libvirt# virsh net-start default 错误:开始网络 default 失败 错误:内部错误:Failed to apply firewall rules /sbin/iptables -w –table nat –insert POSTROUTING –source 192.168.122.0/24 ‘!...

2018-06-19 11:16:31 5425

原创 qmp—QEMU Machine Protocol介绍

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

2018-04-23 20:16:18 7587

原创 CPU cache的读写机制

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

2018-03-29 20:35:16 10339 9

原创 libvmi在qemu上的patch解读—kvm-qemu-v2.8-libvmi.patch

(1)打开一个UNIX socket,用于对客户机物理内存的访问。具体做法:创建在固定的端口上建立本地通信的监听服务,服务程序设置为函数memory_access_thread(……)。(2)accept连接请求,调用函数connection_handler(...)来处理请求,最后关闭连接。(3)解析请求中的数据,并根据请求数据选择具体的处理函数,一般有两个主要的任务—内存读、内存写,然后调用内...

2018-03-29 19:38:41 781

原创 &符号取出的地址到底是什么

&,取地址符号,可以获得一个变量在内存中的存储地址,但是获得的地址有异同,有的是偏移地址,有的是全局虚拟地址。1、对于栈中的变量来说,&地址取得的是变量的偏移地址:测试程序:test.c 编译后运行,结果如下: 查看test的maps文件得: 计算得到变量test的真实虚拟地址为:0x7ffd8c365000 & 0xffff00000000 | 0x8c383bc

2017-07-14 16:50:48 18803

原创 极值栈的设计—以最小栈为例

2017-07-08 15:59:47 284

原创 qemu源码编辑注意事项—暨HACKING文档翻译

1. 预处理器1.1. 变体宏对于变体宏来说,坚持使用类似C99的语法:#define DPRINTF(fmt, ...)                                       \    do { printf("IRQ: " fmt, ## __VA_ARGS__); } while (0)1.2. include指令

2017-06-09 14:05:05 908

原创 英语课小话剧之When Amish met IT

Tim: I've tried it is … it's not even workingout … won't even let me access the server, could you send someone up please?nope, not …  is there anyone else? allright send him up then I guess…Jacob: I

2017-04-17 19:36:12 512

原创 linux文件的普通权限和特殊权限

linux文件的权限一般是读(r)、写(w)和执行(x),其次还有两个特殊的权限,使用字母表示分别是r和t。          普通权限:rwx     r:读权限,4,表示该用户可对文件进行读取     w:写权限,2,表示该用户可对文件进行写入     x:执行权限,1,表示该用户可执行该文件     特殊权限:rt     r:该种特殊权限的意思是:让一般

2016-07-20 20:17:02 1003

转载 美丽的茧

作者:简媜      让世界拥有它的脚步,让我保有我的茧。当溃烂已极的心灵再不想做一丝一毫的思索时,就让我静静回到我的茧内,以回忆为睡榻,以悲哀为覆被,这是我唯一的美丽。   曾经,每一度春光惊讶着我赤热的心肠。怎么回事呀?它们开得多美!我没有忘记自己站在花前的喜悦。大自然一花一草生长的韵律,教给我再生的秘密。像花朵对于季节的忠实,我听到杜鹃颤微微的倾诉。每一度春天之后,我更忠实于我所

2016-07-20 18:32:46 394 1

转载 破碎的美丽

作者:乔叶有时候,我甚至相信:只有破碎的东西才是美丽的。我喜欢断树残干枯枝萎叶,也喜欢旧寺铸钟磕门颓墙,喜欢庭院深深一蓬秋草,石阶横斜玉栏折裂,喜欢云淡风冷星陨月缺,根竭茎衰柳败花残,喜欢一个沉默的老人穿着褪色的衣裳走街串巷拣拾破烂,喜欢一个小女孩瘦弱的双肩背着花布块拼成的旧书包去上学,我甚至喜欢一个缺了口的啤酒瓶或一直被踩扁的易拉罐在地上默默地滚动,然后静止。每当我看到这些零星琐屑的人情

2016-07-20 18:26:14 345

原创 libvirt问题解决

问题一:libvirt error: permission denied一般出现此种错误是因为libvirt的所属用户或者用户组的权限不足或者selinux服务开启的原因,解决方法如下:(1)修改libvirt所属用户以及用户组:修改/etc/libvirt/qemu.conf,修改内容为:user='root' cgroup='root',然后保存退出编辑;重启libvirtd服务:

2016-07-19 15:26:57 12692 2

转载 在Xshell中使用sz、rz进行本机和远程主机(或虚拟机)之间文件的传输

借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。     其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):     sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载。     rz中的r意

2016-07-15 18:44:40 7641

原创 在忘记原密码无法登录桌面的情况下,修改centos7的用户密码

修改centos7的用户(包含root)的密码 (1)非常规启动,进入编辑启动菜单、a) 在系统启动的选择界面,选择要修改的系统的启动项,然后点击’e’进入该系统的启动菜单中去。b) 找到linux16开头的一行,在该行中寻找’ro’的所在地点,改为’rw init=sysroot/bin/sh’,然后Ctrl+x开始执行,进入单用户界面。(2)在单用户界面执行用户的密

2016-07-11 21:29:33 7313

转载 当世界对你说“不”

当亨利·沃德·比彻还是小男孩时,一天,老师把他叫到讲台前,要他将新学的课文背诵一遍,比彻是个勤奋的学生,背诵一篇课文并不是什么难事。        他满怀信心地清清嗓子,张口就开始背诵。才背了个开头,比彻就听到身旁的老师重重地对他说了一个字——“不”。        比彻停顿了几秒,心想,是不是自己背错了。看到老师和同学并无反应,他犹豫着继续住下背。几分钟后,比彻的背诵又被老师一连几声“不

2016-04-30 17:59:27 566

转载 MATLAB函数汇总

Matlab 函数参考汇总

2015-11-03 09:20:48 860

原创 VoIPER测试工具的使用

VoIP测试之VoIPER工具的使用。@1.准备软件:Python-2.4.4.msiwxPython2.6-win32-ansi-2.6.0.0-py24.exectypes-1.0.2.win32-py2.4.exevoiper-0.06.tar.gzQuteCom-2.2-setup-release.exe@2.安装软件    在两台PC上相同

2015-10-29 19:30:15 1568

原创 不可执行内存页保护攻击--return to libc attack

@1. 基本思路    控制eip使程序流程流向glibc函数,而不是shellcode所在的堆栈上。system(),exit()……@2. 规划如下:                缓冲区  --> 溢出                ebp     --> 溢出                eip     --> system()地址

2015-10-24 11:39:03 1274

原创 树莓派简单应用总结

1、准备材料:@1:硬件:笔记本(win7系统,网卡两张—有线和无线)、树莓派(2B)、网线一根、SDHC卡一张(8G以及以上、尽量加一个读卡器—本人使用的读卡器)、手机充电线一根(给树莓派充电使用)。@2:软件:raspbian系统(http://downloads.raspberrypi.org/raspbian_latest)、win32diskimager(烧录SDHC卡使

2015-10-23 12:44:49 4390

原创 wireshark工具应用之简单总结

1、wireshark是一个网络shuju

2014-09-02 23:46:00 824

原创 nmap介绍

Nmap背景:这是一个主要用于扫描主机或者网络的基本状态信息的工具,普遍被用来搜集信息。另外,zenmap是nmap的图形化,实现了nmap操作的便捷。 1、核心功能介绍:a) 主机发现(检测主机是否处于活跃状态)b) 端口扫描(扫描主机的端口状态)c) 版本侦测(用于识别主机端口上运行的应用程序与程序的版本等基本信息)d) 操作系统侦测(识别出操作系统的类型、版本编号以及

2014-08-31 10:55:29 572

原创 常见图片格式简单分析总结--JPG、PNG、GIF、BMP

1、JPG文件格式

2014-08-15 17:42:01 9170

空空如也

空空如也

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

TA关注的人

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