自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangji

集中精力,专心做事

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

原创 arm64地址与页表的杂记 一

地址的一些宏定义CPU不可能一直执行位置无关指令,所以必须将 kernel 本身的虚拟地址(运行地址)映射到它实际所在的物理地址,这个通过为 MMU 创建页表来实现,一旦页表创建完成,并打开了MMU,CPU发出的虚拟地址,可以由 MMU 转换成实际的物理地址,这样CPU执行kernel代码将不再受限。KIMAGE_VADDR定义:arch/arm64/include/asm/memory.h#define KIMAGE_VADDR (MODULES_END)default 39 if ARM64

2020-11-09 11:17:18 1114

原创 在 x86_64平台下 调试 arm 的用户态程序

在 x86_64平台下 调试 arm 的用户态程序实验:arm 用户态程序是本地交叉编译出来的,如果是别的程序直接拷贝过来,可能会有兼容性问题;file hellohello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=dcfe92f8af30811bd3ca0

2020-07-18 19:25:18 667

原创 gcc 中的 unspec 与 unspec_volatile

gcc 中的 unspec 与 unspec_volatile未完待续。。。。。。。。。case 1:Dump of assembler code for function main: 0x00000000000006aa <+0>: push rbp 0x00000000000006ab <+1>: mov rbp,rsp 0x00000000000006ae <+4>: sub rsp,0x30 0

2020-06-25 12:00:30 979

原创 gcc中如何控制寄存器一

gcc中如何控制寄存器一case 1控制寄存器的分配,最直接的方法是改源码,不过这里打算介绍一点case,来说明不修改源码的情况下,一些编译选项或者代码中的声明方式是如何影响寄存器分配的。代码int main(){ int b = 0x100; int i; int v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15; v1 = v1 + b; v2 = v2 + b;

2020-06-21 14:27:07 966

原创 gcc 插件实践 一

gcc 插件实践 一重要内容参考自 https://zhuanlan.zhihu.com/p/49490338在ubuntu中直接实践以下代码,通常会遇见以下几种错误。/* ------ plugin1.c ------ */#include "gcc-plugin.h"#include "plugin-version.h"int plugin_is_GPL_compatible;...

2020-02-24 21:12:53 1992 5

转载 深入理解 Linux 的 RCU 机制

深入理解 Linux 的 RCU 机制转载 https://www.cnblogs.com/qcloud1001/p/7755331.html欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~作者:梁康RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完...

2020-02-23 23:02:37 251 1

转载 Linux中的spinlock机制[三] - qspinlock

原文转载自 https://zhuanlan.zhihu.com/p/100546935Linux中的spinlock机制[三] - qspinlock上文说到,MCS lock可以解决在锁的争用比较激烈的场景下,cache line无谓刷新的问题,但它内含一个指针,所以更消耗存储空间,但这个指针又是不可或缺的,因为正是依靠这个指针,持有spinlock的CPU才能找到等待队列中的下一个节点,...

2020-02-05 22:02:26 988

转载 对优化说不 - Linux中的Barrier

原文引用自 [https://zhuanlan.zhihu.com/p/96001570]感谢原作者对优化说不 - Linux中的Barrier我们编写的源代码需要经过编译器转换成机器指令,最后由CPU执行这些指令。编译器作为一个“翻译官”,并不会老老实实地逐条翻译,而是会对我们的代码按照自己的“想法”进行调整和重组。CPU作为一个执行部件,对交给它的指令也不会规规矩矩的逐条执行,而是会重...

2020-02-05 21:32:52 930

转载 Linux内核Makefile文件

本文是冷烟花原创,转载请注明出处!https://www.cnblogs.com/jason-lu/p/3728198.htmlLinux内核Makefile文件(翻译自内核手册)–译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt)kbuild(kernel build)内核编译器This docume...

2020-01-03 11:18:37 909

转载 Linux内核升级

本文作者: Jason hu本文链接: http://jasonhzy.github.io/2019/02/06/ubuntu-kernel-upgrade/版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!Linux内核升级本文作者: Jason hu本文链接: http://jasonhzy.github.io/2019/02...

2019-12-22 22:02:26 217

原创 实现64位操作系统的问题解决系列:(三)程序4-11 因为__switch_to符号未定义,编译失败

实现64位操作系统的问题解决系列:(三)程序4-11 因为__switch_to符号未定义,编译失败ub16或者ub18上实践田宇大佬的64位操作系统的设计与实现,因为环境的原因,书中提供的代码并不能完全编译成功,前面我写了实现64位操作系统的问题解决系列:(一)和(二)基本编译到程序4-10都不会出问题,但是到程序4-11就会 因为__switch_to符号未定义,编译失败。问题描述经过实...

2019-12-14 20:19:32 452 2

原创 简单的内核内存查看方法

简单的内核内存查看方法有时候需要调试内核的内存,又不想搭建qemu调试环境的话,可以简单写一个内核模块,来测试一下。直接看代码注意:环境ub16函数__get_free_page不要用get_free_page$ cat hello.c#include <linux/module.h>#include <linux/slab.h>#include <l...

2019-12-11 23:15:09 1194

原创 group test

void list_from_chunks(Elem **ptr, Elem **chunks, int avoid, int group_len){ int next = (avoid+1)%group_len; Elem *other = chunks[avoid]; Elem *tmp = other; other->prev = NULL; p...

2019-10-13 16:47:06 272

原创 linux 怎么看自己cache info

linux 怎么看自己cahce info到如下:root@zhangji16vm:/sys/devices/system/cpu/cpu0/cache# pwd/sys/devices/system/cpu/cpu0/cacheroot@zhangji16vm:/sys/devices/system/cpu/cpu0/cache# ls -a. .. index0 index1 ...

2019-09-24 16:07:08 874

转载 linux 下设置线程优先级

linux 下设置线程优先级原文链接:http://www.cnblogs.com/xiaotlili/p/3510224.htmlroot@ubuntu:tmp# cat test2.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>...

2019-09-12 11:44:24 6671

转载 Linux perf 1.1、perf_event内核框架

转载 感谢原文作者 Linux perf 1.1、perf_event内核框架 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-09-07 14:54:34 1429 1

原创 mmap 持续跟进

mmap 函数demo1zhangji16@zhangji16vm:/tmp$ cat demo.c #include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <stdbool.h>#include <sig...

2019-08-31 10:21:03 168

转载 驱动参数传递

驱动参数传递直接看代码root@zhangji16vm:/home/zhangji16/c_study/ko_study/prj1# cat hello.c#include <linux/init.h>#include <linux/module.h>#include <linux/moduleparam.h> MODULE_LICENSE("Du...

2019-08-30 14:55:30 818

原创 virsh xml创建kvm虚拟机

virsh xml创建kvm虚拟机准备工作sudo apt-get updatesudo apt-get install qemu-kvm sudo apt-get install vnc4serversudo apt-get install bridge-utils增加网卡内容如下:root@zhangji16vm:/home/prj1# cat /etc/network/in...

2019-08-24 16:00:31 2719

转载 Linux shell实现多进程并发执行

二次转载自 https://blog.csdn.net/hellojoy/article/details/77340238在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况:实例一:正常情况脚本———————————————————————————–#!...

2019-08-15 11:57:10 3665

转载 linux下把进程/线程绑定到特定cpu核上运行

转载自 https://blog.csdn.net/guotianqing/article/details/80958281 感谢原文作者的分享概述现在大家使用的基本上都是多核cpu,一般是4核的。平时应用程序在运行时都是由操作系统管理的。操作系统对应用进程进行调度,使其在不同的核上轮番运行。对于普通的应用,操作系统的默认调度机制是没有问题的。但是,当某个进程需要较高的运行效率时,就有必要考...

2019-08-14 20:20:52 758

原创 ubuntu 切换内核镜像

ubuntu 切换内核镜像产生initramfs image映像zhangji16@zhangji16vm:/usr/src/linux-4.14.1$ sudo mkinitramfs -o /boot/initrd.img-4.14.1更新initramfszhangji16@zhangji16vm:/usr/src$ sudo update-initramfs -c -k 4.14....

2019-08-11 08:32:48 805

原创 PyQt5中设置QtreeWidget水平滚动条

PyQt5中设置QtreeWidget水平滚动条这个问题,困惑我好一段时间,网上找了很多资料,各种尝试都没解决,隐隐约约在一个论坛中一个作者提到一句话,才得到解决。问题描述如下:开发过程中,有时候会去开发树形展示的界面,尤其文件管理系统时。由于pyqt5 单独python的文档比较少,大多是基于C++写的文档,所以大家在开发的时候,基本都是经验加摸着石头过河的方式在python中开发Qt界面...

2019-08-07 11:24:14 3098

转载 signal 阻塞与屏蔽

signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下: 1 #include <signal.h> 2 #include <stdio.h> 3 #include <unistd.h> 4 5 void ouch(int sig) 6 { 7 pr...

2019-08-04 19:28:36 2408

转载 ucontext

转载自 https://blog.csdn.net/qq910894904/article/details/41911175谢谢原文作者1.干货写在前面协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。首先我们可以看看有哪些语言已经具备协程语义:比较重量级的有C#、erlang、golang*轻量级有python、lua、javascript、ruby还有函数式的sc...

2019-08-04 16:54:00 1037

转载 “ucontext” 机制 简介

转载自http://blog.csdn.net/kobejayandy/article/details/41779837 谢谢原文作者原理简介所谓 “ucontext” 机制是 GNU C 库提供的一组用于创建、保存、切换用户态执行“上下文”(context)的API,可以看作是 “setjmp/long_jmp” 的“升级版”,主要包括以下四个函数:void makecontext(uc...

2019-08-04 15:54:10 1304

原创 Linux内核漏洞环境搭建方法二

Linux内核漏洞环境搭建方法二检查本地内核版本号假如即将调试的内核版本是 4.14.1,先检查一下本地内核的版本号,如下:zhangji16@zhangji16vm:~/c_study/kernel_prj$ uname -aLinux zhangji16vm 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x...

2019-07-28 22:57:28 646

原创 python2 手动安装Crypto

python2 手动安装Crypto在 IDA 的命令行敲击如下命令,报错from Crypto import RandomImportError: No module named Crypto说明我们需要给IDA 的python安装一个包 Crtpto本来打算pip 安装的,但是似乎这个安装方式,网上异口同声都说很坑,对于python2来讲,所以打算手动安装。下载 Crypto 的...

2019-07-28 09:22:26 4670 1

原创 命令记录操作

命令记录操作有时候在终端写了很多命令干一个事情,但是之后,可能就容易忘记掉当时做这件事的命令写入过程,还有一种场景就是,找了大牛来自己电脑上帮自己干个事,可以把大牛的命令都自动化的记录下来,是很方便的。其实命令记录操作的使用命令很简单,至少ubuntu是自带安装的,其他linux发行版估计也是。基本使用方法/tmp$ script -helpUsage: script [options...

2019-07-14 08:15:46 144

转载 欢迎使用Markdown编辑器 盗用了,记录一下

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-07-14 07:55:30 86

转载 python单例模式Singleton

转载自 https://blog.csdn.net/lqxqust/article/details/51910007python单例模式SingletonSingleton模式即单例对象必须必须保证只有一个实例存在。可以说Singleton是设计模式中最基本一种设计模式,在学习设计模式时一般都会先了解该模式。在Python中实现单例模式有很多方法,下面简单总结以下,可以根据情况选择适合自己业务...

2019-07-06 07:38:21 188

转载 Python标准库14 数据库 (sqlite3)

作者:Vamei 出处:http://www.cnblogs.com/vamei感谢作者 同意转载Python标准库14 数据库 (sqlite3)Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库...

2019-06-26 21:35:00 129

原创 objdump按照指定架构反汇编 裸二进制文件

objdump按照指定架构反汇编 裸二进制文件因为某些特殊原因,不会把汇编代码直接编译成一个完整的可执行文件,直接编译成纯二进制的文件,以便读到内存中,供其他程序执行使用。例如:/prj1$ cat bin.S.globl _start .code16_start: mov $0x3f8, %dx add %bl, %al add $'0', %al ...

2019-06-23 11:13:14 4064

转载 无边框自定义标题栏及最大化最小化窗体大小调整

无边框自定义标题栏及最大化最小化窗体大小调整转自:https://www.cnblogs.com/jyroy/p/9461317.html陈述隐藏掉系统的控制栏,实现了自定义的标题控制栏,以及关闭/最大化/最小化的功能,自由调整窗体大小的功能,代码内有详细注释只要把MainWindow类自己实现就可以了vm16/wangyiyun_prj$ cat run.py #!/usr/bin/...

2019-06-19 16:54:05 1951 4

转载 PyQt5 多线程相关一些例子

PyQt5 多线程相关一些例子demo1 from https://www.cnblogs.com/hhh5460/p/5175322.htmlfrom PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayoutfrom PyQt5.QtCore import QThread, QObject, pyqtSignal, ...

2019-06-14 13:44:11 22707

原创 partial 函数之参数传入

partial 函数之参数传入zj@zj-virtual-machine:/tmp$ cat callback.py#!/usr/bin/env python# coding=utf-8from functools import partialclass D(object): def __init__(self, num): self._num = num ...

2019-06-08 22:19:43 1084

原创 python 继承顺序系列 二

python 继承顺序系列 二直接给出例子,你知道函数的继承顺序吗? 看下面的例子#!/usr/bin/env python# coding=utf-8class Ser(object): def build(self): print("Ser build self: %s"%self)class Def(Ser): def build_default(...

2019-06-03 21:34:55 333

原创 使用类型来初始化字典

使用类型来初始化字典可以按照所需类型来初始化字典>>> from collections import defaultdict>>> dd = defaultdict(list)>>> dddefaultdict(<type 'list'>, {})>>> dd = defaultdict(list)...

2019-06-02 09:03:05 370

转载 python 元类系列三

转载自 https://blog.csdn.net/weixin_34015860/article/details/88923287python 元类系列 一先简单介绍下Python中的元类(metaclass)。元类就是创建类的类,对于元类来说,类是它的实例,isinstance(cls, metaclass)将返回True。Python中的所有类,都是type的实例,换句话说,type是元...

2019-05-31 17:11:27 104

转载 python 元类系列 二

本文转载自 https://www.cnblogs.com/zhaoshizi/p/9180886.html关于six.with_metaclass(ABCMeta, object)的理解在学习Python过程中,看到了生成虚基类的方式,class PeopleBase(six.with_metaclass(ABCMeta, object)): @abstractmethod ...

2019-05-31 07:55:09 144

空空如也

空空如也

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

TA关注的人

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