- 博客(104)
- 资源 (4)
- 收藏
- 关注
原创 Git配置详解
由于重装系统和不同的电脑都需要重新配置git,记录下来,就可以节约配置git的时间。1. 配置全局邮箱和姓名git config --global user.email "c15271843451@outlook.com"git config --global user.name "chengshuyi"必须用上面的命令进行配置,不然无法进行git commit命令git c...
2018-12-18 19:08:26 294
原创 程序员的ubuntu软件配置
1. 插件部分2. windows下面的配置vscode默认一行可以超过80个字符,但是会造成看代码不方便,需要让他自动换号文件>首选项>设置搜索editor.wordWrap将off改成on3. linux下面的配置...
2018-12-17 09:35:35 509
原创 linux异步IO:io_uring
为了改善posix aio目前存在的问题,新的异步IO驱动:io_uring如何解决了posix aio的问题。围绕这个问题,本文首先介绍了异步IO的概念,然后介绍了posix aio存在的问题,最后根据io_uring的源码分析io_uring为什么比posix aio优异。同步IO和异步IOposix定义如下:同步IO:导致请求进程阻塞,知道IO操作完成。异步IO:不导致请求进程阻塞。...
2020-03-18 21:23:56 1365
原创 Unexporting kallsyms_lookup_name
kallsyms_lookup_name函数可以通过函数名字获取对应的地址。unexporting kallsyms_lookup_name意味着out-of-tree的驱动不能够利用kallsyms_lookup_name函数调用未导出的内核函数。unexporting kallsyms_lookup_name可能会造成的影响如下:live patch:live patch需要kallsy...
2020-03-16 17:22:14 1284
原创 linux high memory机制引发的问题
linux high memory32bit操作系统:linux将逻辑地址空间分为两部分:0-3G是用户地址空间,3-4G是内核地址空间。所以linux内核只能够访问物理地址空间大小为1G,也就是物理地址0-1G。为了能够访问所有的物理地址空间,linux提出了high memory机制:从内核地址空间划分出一部分作为high memory,该区域的逻辑地址可以动态的去映射到其他的物理地址。...
2020-03-15 12:38:03 899
原创 CMU 15213:malloc笔记和malloc实验
1. malloc笔记1.1 基础概念1.dynamic memory allocators:应用程序运行期间申请的内存(malloc)。2.堆:dynamic memory allocator管理的进程内存区域3.types of allocator:隐式分配器(new and garbage collection)和显示分配器(malloc & free)1.2 expli...
2020-03-13 14:20:14 1647
原创 CMU 15213:cache memories笔记和cache实验
1. 笔记cache基本概念1.cache:S、E、BS:setsE:the number of lines per setB:the number of bytes per block2.地址格式:一般:tag bits+set index+block offset可选:set index + tag bits + block offset3.直接映射:one line...
2020-03-12 20:38:29 1290
原创 CMU 15213:attack实验
attack实验主要讲了攻击程序的两种方法:一种是利用程序可能导致栈溢出的地方注入代码;另一种是利用栈溢出,利用程序中原有的指令来达到同代码注入一样的效果,比如“mov pop”等。part I: code injection attackspart 1包含三部分内容:利用stack overflow修改return address,让程序跳转到其它的地方运行;利用stack overf...
2020-03-09 15:16:42 561
原创 CMU 15213:machine-level programming课程笔记和bomb实验
文章目录1. 笔记1.1 basics1.2 control1.3 Procedures2. bomb lab2.1 phase 12.2 phase 22.3 phase 31.4 phase 41.5 phase 51.6 phase 61. 笔记本章的主要讲了编程语法,包括:汇编和C语言。1.1 basics1.介绍了intel x86 processors的发展历史(AMD和ARM...
2020-03-06 19:17:36 1176
原创 sel4源码分析
sel4源码解析(一) - sel4内核对象sel4源码解析(二) - CSpacesel4源码解析(三) - sel4系统调用处理流程sel4源码解析(四) - ipcsel4源码解析(五) - Notificationsel4源码解析(六) - 进程sel4源码解析(七) - vspace...
2020-02-17 08:38:36 1738
原创 sel4源码解析(六) - 进程
6.1.Tcb结构体/* TCB: size >= 18 words + sizeof(arch_tcb_t) + 1 word on MCS (aligned to nearest power of 2) /struct tcb {/ arch specific tcb state (including context)*/arch_tcb_t tcbArch;/* Thread...
2020-02-16 07:27:20 1669 1
原创 sel4源码解析(五) - Notification
Sel4的通知机制类似于信号量– Async endpoint: size = 32 bytes (64 bytes on mcs)block notification {padding 16field_high ntfnBoundTCB 48 //该notification绑定的TCBfield ntfnMsgIdentifier 64 //padding 16field...
2020-02-16 07:26:38 1074
原创 sel4源码解析(四) - ipc
4.Inter-process communicate4.1.结构体4.1.1.endpoints结构体– Endpoint: size = 16 bytesblock endpoint {field epQueue_head 64padding 16field_high epQueue_tail 46field state 2}block endpoint_cap(capEP...
2020-02-16 07:25:35 2281 1
原创 sel4源码解析(三) - sel4系统调用处理流程
系统调用指令是svc,通过x0-x7通用寄存器传递相关参数。在sel4中,x0寄存器保存capability或者badge参数、x1寄存器保存message的信息、x2-x5寄存器保存传递的message实体、x7寄存器保存系统调用编号。具体如下所示:/* These are the indices of the registers in the saved thread context....
2020-02-16 07:24:50 3035 2
原创 sel4源码解析(二) - CSpace
Sel4采用基于capability的访问控制模型,进程对系统资源的访问控制权限组成一个capability space,所有的cap存放在CNode里。CSpace是由CNode构成,CNode可以看成一个数组,数组元素称为slot,每一个slot里面可以存放一个cap或者为空。Sel4提供CDT(capability derive tree)结构保存权能的拷贝、2.1.Capability...
2020-02-16 07:23:50 2992 6
原创 sel4源码解析(一) - sel4内核对象
Sel4提供了七个内核对象,分别是:1.CNodes:CNodes本质是一个结构体数组,该数组的元素是cte(capability table entry),该cte中包含一个cap_t结构体和mdb_node_t结构体(todo)。一个进程的CNodes称为Cspace,CNodes的cte称为slot。2.Thread Control Blocks:同一般的进程控制块类似,表示一个进程的运...
2020-02-16 07:22:21 4274 2
原创 leetcode 72. Edit Distance
1. 状态方程令f(word1[:i],word2[:j])f(word1[:i],word2[:j])f(word1[:i],word2[:j])表示为:word2[:j]可由word1[:i]最少经过f(word1[:i],word2[:j])f(word1[:i],word2[:j])f(word1[:i],word2[:j])次insert、delete和replace操作后得到。则原问...
2019-10-31 16:40:58 157
原创 leetcode 940. Distinct Subsequences II
1. 相关表示符号含义备注S[n]S[n]S[n]表示长度为n的字符串S[n][n]S[n][n]S[n][n]二维状态数组二维状态数组二维状态数组S[i][j]表示前i个字符组成的distinctsubsequences的个数,且该subsequences的长度为j+1(从0开始)S[i][j]表示前i个字符组成的distinct subsequences的...
2019-10-30 17:10:14 216
原创 kvm架构分析(三):设备管理
kvm设备管理包括:设备的创建、初始化、释放、卸载等。arm上支持的设备类型主要有两种:vfio和中断控制器。所以,用户程序上想要申请的设备也只能是这两种。至于qemu上网卡、串口等IO设备并不属于kvm设备,它们属于virtio部分。kvm使用eventfd机制管理virtio设备。1. kvm设备struct kvm_device是kvm设备的数据结构,其中ops包含着设备的操作,比较重要...
2019-10-17 14:08:52 781
原创 kvm架构分析(二):中断管理
本文讲述了kvm中断管理的框架,(以armv8架构为例)涉及到以下几个问题:采用什么样数据结构管理中断;qemu和kvm之间的中断;kvm如何将一个中断注入到相应的guest os;关于arm架构的中断的基本知识,可以参考本文。关于kvm arm中断处理流程,可以参考本文本文第一部分讲述qemu和kvm之间的中断机制,第二部分回答了kvm如何将一个中断传到相应的guest os。...
2019-10-16 15:45:59 1493
原创 kvm架构分析(一):IO设备管理架构
kvm io设备管理架构采用IO总线方式,涉及到guest os陷入到hypervisor进行IO的设备都挂载在总线上。kvm提供四种总线:mmio(memory map input/output)pio(port input/output)virtiofast mmiommio和pio是常见的访问硬件设备寄存器的两种方式,所以mmio和pio总线是用来挂载支持硬件虚拟化的硬件设备,...
2019-10-15 20:05:39 933
原创 操作系统内核加载过程
计算机上电,自动加载ROM里面的BIOS程序。硬件自检。BIOS根据设置,加载指定的硬盘第一个扇区的内容到内存地址0x7c00(比如,用u盘装Windows时,可以选择u盘启动)。跳转到0x7c00运行,此时一般是内核的bootloader。bootloader读取设定好的位置,读取内核到内存,然后将管理权交给内核。...
2019-02-15 11:23:39 1184
原创 cpprestsdk跨域问题解决方案
跨域问题可以采用OPTIONS协议,在收到一方的OPTIONS请求之后,另一方应该设置好相应的headers。表示允许对应的服务的跨域请求。1. cpprestsdk新增OPTIONSm_listener.support(methods::OPTIONS, std::bind(&Command::handle_options, this, std::placeholders::_1))...
2018-12-26 11:28:10 1553 1
原创 windows system32和sysWOW64文件下面的dll丢失-解决方案
用vs2017编写一个程序,发现丢失api-ms-win-downlevel-shlwapi-l1-1-0.dll文件,去网上找了下解决方案,其实单独的安装api-ms-win-downlevel-shlwapi-l1-1-0.dll并不可靠,因为后面还会有更多的dll文件丢失。完美的解决方案就是利用windows update,更新系统组件。dll丢失,大部分原因是因为安装的windows镜...
2018-12-23 08:52:53 6032
原创 使用opengl绘制太阳、地球、月球,有纹理,有鼠标功能,有亮光
源码下载链接 https://download.csdn.net/download/mr0cheng/108313801.实现效果图如下2. 环境配置windows7 64位vs2015使用vs2015自带的NuGet工具,下载opengl库 Install-Package nupengl.core3. 核心功能3.1 太阳、地球、月球纹理实现准备bmp文件构建ope...
2018-12-06 08:57:49 5561 2
原创 复制CSDN原创博客的代码(带格式)
现在CSDN原创博客的代码,一次性不能复制粘贴过多,不然得到的是无格式的代码。虽然现在编辑器可以将代码格式化,但是效果并不好,特别是有注释的时候。1. 复制代码用火狐浏览器,选中复制的代码右键选择查看选中部分源代码在新建的窗口,ctrl+c就行了2. 去html标签有的时候会带有html标签,所以需要用正则表达式去除标签。而且,现在的编辑器都会带有正则表达式的替换功能。在编辑器...
2018-11-26 20:15:38 6145 2
原创 ubuntu18版本使用S32DS遇到的问题
1. S32DS编译项目时,没有出现elf文件;出现错误:arm-none-eabi-gcc not found去Cross_Tools/gcc-arm-none-eabi_4_9/bin发现有arm-none-eabi-gcc尝试运行./arm-none-eabi-gcc,出现./arm-none-eabi-gcc:没有那个文件或目录的错误百度下错误,安装sudo apt install...
2018-11-20 11:24:18 2979
转载 深入浅出down_interruptible
https://blog.csdn.net/ce123_zhouwei/article/details/7547973int down_interruptible(struct semaphore *sem)这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。下面是该函数...
2018-10-24 17:24:19 243
转载 一年后再次回头看container_of宏的作用
https://blog.csdn.net/morixinguan/article/details/54343360container_of宏在很久以前的文章我就已经有分析写过了,但是看回去,感觉以前自己对这个宏的表达描述分析能力还是有待提高,毕竟那时候刚接触linux内核不久,整个人都懵懵哒,无法说得让别人通俗易懂。那么这个宏整体是什么样子的呢?//获取结构体成员相对于结构体的偏移 ...
2018-10-24 17:15:18 226
转载 浅析字符设备驱动程序__register_chrdev_region
https://blog.csdn.net/lizuobin2/article/details/52695533在 2.4 的内核我们使用 register_chrdev(0, “hello”, &hello_fops) 来进行字符设备设备节点的分配,这种方式每一个主设备号只能存放一种设备,它们使用相同的 file_operation 结构体,也就是说内核最多支持 256 个字符设备...
2018-10-24 16:52:35 200
转载 linux内核、驱动和硬件之间的关系和通信
linux驱动是直接和硬件打交道的软件程序。层次结构上它处于操作系统和硬件之间。驱动与linux内核的关系驱动程序提供的一组设备驱动接口函数Device Driver Interface给操作系统在linux中,这一组设备驱动接口函数一般包括open,close,read,write,ioctl等。 这一组函数是通过一个叫做file operations的结构体注册给linux内核的。 ...
2018-10-23 13:16:38 5425
转载 用户态切换到内核态的过程
https://www.tldp.org/HOWTO/KernelAnalysis-HOWTO-3.html1. When do we switch?Once we understand that there are 2 different modes, we have to know when we switch from one to the other.Typically, the...
2018-10-20 13:40:35 891
原创 Jetson TX2重新编译内核过程记录
因为要装dpdk,需要uio模块,但是tx2原装的系统没有这个模块,故重新编译内核。1. 获取TX2 linux内核源码wget http://developer.download.nvidia.com/embedded/L4T/r28_Release_v1.0/BSP/source_release.tbz22. 获取当前系统的配置文件进入内核目录下,即kernel-4.4/zcat...
2018-10-17 18:05:30 3601 3
翻译 Autosar Parallel Processing Design Guidelines 的翻译
11.1本篇文档详述了AP之上的Parallel Processing。本篇文档的主要目的是给使用AP Parallel Processing技术者提供guildlines。该技术主要涉及软件方面,特别是应用层(包含service)。通用的硬件Parallel Processing技术是Software的基础,本篇文章也会有涉及。1.222.1本篇文档并没有很严谨的给parallel...
2018-10-09 23:03:50 749
翻译 Autosar udp网络管理的翻译
文件名是:AUTOSAR_PRS_UDPNetworkManagementProtocol.pdf1 Introduction and overview本篇说明主要详细说明了Autosar UDP网络(UdpNm)的operational states, message format and semantics。UdpNm可以与TCP/IP协议栈完美结合,也就是说不考虑同TCP/IP协议栈分...
2018-10-09 20:27:32 4028
原创 数字电路测试题五
上面两张图片,一个考察了双精度浮点数,一个考察了单精度浮点数。只要了解了单-双精度浮点数的组成和浮点数同十进制小数之间的转换就容易求解。上图是浮点数的构造,下面的链接是754的标准,目前浮点数都是按照754标准来的。IEEE Standard 754 Floating Point Numbers...
2018-10-09 18:32:50 356
原创 数字电路测试题四
可以实际跑程序来解决,运行结果如下:7a0000d862000048fe0000dc9c000094也可以手动计算,注意xxx和yyy是无符号整数,计算就行了。
2018-10-09 18:27:37 441
原创 数字电路测试题三
可以实际跑程序来解决,运行结果如下:000000b3ffffff4c0005c000 00a30000fffffe60 d7000000也可以手动计算:输出aaa的十六进制先算出aaa在计算机存储的二进制是什么aaa = 179aaa的补码是0000 0000 0000 0000 0000 0000 1011 0011将aaa的二进制转换成十六进制 000000...
2018-10-09 18:24:39 569
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人