自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Small_Pond的博客

</>执着于学习</></>纸上得来终觉浅,绝知此事要躬行</>

  • 博客(42)
  • 资源 (2)
  • 收藏
  • 关注

原创 程序运行时Trace: DynamoRIO

1. 程序运行时Trace,DynamoRIO最近在做一个trace程序执行路径的项目,了解到DynamoRIO可以实现这个功能,在此记录学习以下。首先,DynamoRIO是什么:DynamoRIO是一个运行时代码控制系统(runtime code manipulation system),支持程序运行时对程序的任一部分进行修改。DynamoRIO exports an interface fo...

2019-09-18 11:22:59 624

原创 MIT6.824 Lab1 MapReduce 通关攻略

1. 简介在这个 Lab 中,我们将建立一个 MapReduce 库,作为使用 GO 编程和构建一个分布式容错系统的初步。在第一个部分,我们将会写一个简单的 MapReduce 程序。在第二个部分,我们将会写一个 Master,去向 workers 分发任务已经 handle workers 的错误。2. Software2.1. Go 环境官方下载 go1.9 源码golang.org...

2019-07-27 17:23:51 922

原创 Lab6_Network Driver

1. Introduction在本实验中,我们将为 NIC(Network Interface Card, 网络接口卡)编写驱动程序。这个网卡基于Intel 82540EM芯片,也称为E1000。除了编写驱动程序之外,我们还需要创建一个system call 来访问我们的驱动程序。我们将实现缺失的网络服务器代码,以在网络堆栈和驱动程序之间传输数据包。我们还可以通过完成Web服务器将所有内容绑定...

2019-07-17 16:37:39 846

原创 Lab5_File system, Spawn and Shell

1. Introduction在本实验中,我们将实现spawn,一个加载并运行磁盘可执行文件的库调用。 然后,我们要充分利用内核和操作系统库,以便在控制台上运行shell。 这些功能需要一个文件系统,本实验室引入了一个简单的读/写文件系统。You should run the pingpong, primes, and forktree test cases from lab 4 again...

2019-07-13 16:54:57 754

原创 MIT6.828_HW11_xv6 log

MIT6.828_HW11_xv6 logFirst, you’ll artificially create a crash which illustrates why logging is needed. Second, you’ll remove one inefficiency in the xv6 logging system.1.1. Creating a Problemxv6日志...

2019-07-09 17:01:35 818

原创 MIT6.828_HW10_Bigger file for xv6

MIT6.828_HW10_Bigger file for xv6当前 xv6 文件大小限制在 140 个扇区。直接索引节点 12 个, 以及一个一级索引节点,其指向一个 sector,可包含 512/4 = 128个扇区。即总和为12+128 = 140个扇区。我们需要为xv6的文件节点添加一个二级索引节点,其包含128个一级索引节点的地址,每个一级索引节点又包含了128数据扇区。最终一个文件...

2019-07-07 17:43:19 1094

原创 MIT6.828_HW9_barriers

MIT6.828_HW9_barriers在这个任务中,我们使用由pthread库提供的条件变量来实现barrier。barrier 是一个应用程序点,必须所有线程到达这个点才能继续执行。条件变量是一种类似于xv6的 sleep 和 wakeup 的序列协调技术。下载源码,编译执行。$ gcc -g -O2 -pthread barrier.c$ ./a.out 2pthread_co...

2019-07-07 10:27:55 929

原创 LAB4_Preemptive Multitasking_PartC Preemptive Multitasking and IPC

1. LAB4_Preemptive Multitasking_PartC: Preemptive Multitasking and Inter-Process communication (IPC)在PartC 部分,我们要实现抢占非协作式环境,并且实现进程间通信。1.1. Clock Interrupts and Preemption如果一个进程获得CPU后一直死循环而不主动让出CPU的...

2019-07-06 15:39:38 508

原创 MIT6.828_HW8_User-level threads

MIT6.828_HW8_User-level threadsuthread creates two threads and switches back and forth between them. Each thread prints “my thread …” and then yields to give the other thread a chance to run.对thread...

2019-07-04 11:09:23 738

原创 LAB4_Preemptive Multitasking_PartB Copy-on-Write Fork

1. LAB4_Preemptive Multitasking_PartB Copy-on-Write Fork但是,对子进程中的fork调用几乎会立即调用exec,后者用新程序替换子进程的内存。 例如,这就是shell通常所做的事情。更高版本的 Unix 利用虚拟内存硬件来允许父子进程共享映射到各自地址空间的内存,直到其中一个进程实际修改它。 这种技术称为写时复制(Copy-on-Writ...

2019-07-03 13:49:01 715

原创 LAB4_Preemptive Multitasking_PartA Multiprocessor Support and Cooperative Multitasking

1. Introduction激动人心的时刻,我们终于走到了Lab4,OS开始实现进程调度了~在本实验中,我们将在多个同时活动的用户模式环境中实施抢占式多任务处理。PartA:为 JOS 增添多处理器支持特性。实现 round-robin scheduling循环调度。添加一个基本的环境(进程)管理系统调用(创建和销毁环境,分配和映射内存)。PartB:实现一个类Unix...

2019-06-21 21:02:04 837

原创 MIT6.828_HW7_xv6 locking

MIT6.828_HW7_xv6 lockingDon’t do thisMake sure you understand what would happen if the xv6 kernel executed the following code snippet: struct spinlock lk; initlock(&lk, "test lock"); acqui...

2019-06-21 15:52:44 1552

原创 MIT6.828_HW6_Threads and Locking

MIT6.828_HW6_Threads and Locking在此作业中,您将使用哈希表探索使用线程和锁的并行编程。 你应该在具有多个核心的真实计算机(不是xv6,而不是qemu)上完成这项功课。开的虚拟机只有单CPU单核,所以两个线程与一个线程的程序跑出来是两倍的效果。需要先关闭虚拟机,修改处理器数1,核心数2。再次运行。./a.out 20: put time = 0.007024...

2019-06-19 17:19:55 1514

原创 MIT6.828_HW5_xv6 CPU alarm

1. MIT6.828_HW5_xv6 CPU alarm在本练习中,您将向xv6添加一个功能,该功能会定期向使用CPU时间的进程发出警报。 这可能对计算密集型进程有用,这些进程希望有效降低它们占用的CPU时间,或是即需要计算但又要采取某些定期操作的进程。 更一般地说,您将实现一种原始形式的用户级中断/故障处理程序。您应该添加一个新的alarm(interval,handler)系统调用。 如...

2019-06-19 17:18:49 1098 1

原创 LAB3_User-Level Environments_PartB Page Faults, Breakpoints Exceptions, and System Calls

1. PartB: Page Faults, Breakpoints Exceptions, and System Calls1.1. 处理页错误1.1.1. Exercise 5.修改 trap_dispatch() 将 page fault exceptions 分配到 page_fault_handler(). 记住你可以用make run-xor make run-x-nox是启动...

2019-06-19 10:33:46 550

原创 LAB3_User-Level Environments_PartA_User Environments and Exception Handling

1. Part A: User Environments and Exception Handling新的头文件inc/env.h包含JOS中用户环境的基本定义。内核使用Env数据结构来跟踪每个用户环境。 在本实验中,最初只会创建一个环境,但您需要设计JOS内核以支持多个环境; lab4将通过允许用户环境fork其他环境来利用此功能。1.1. Exercise1-分配环境数组Modify...

2019-06-17 19:34:53 815

原创 MIT6.828_HW4_xv6 lazy page allocation

1. LEC6_HW4_xv6 lazy page allocation操作系统可以与页表硬件一起使用的许多巧妙技巧之一是堆内存的惰性分配。Xv6应用程序使用sbrk()系统调用向内核请求堆内存。 在我们给你的内核中,sbrk()分配物理内存并将其映射到进程的虚拟地址空间。 有些程序分配到内存但从不使用它,例如实现大稀疏数组。精妙的内核延迟每页内存的分配,直到应用程序尝试使用该页面 - 如页面错...

2019-06-08 18:11:07 2141

原创 MIT6.828_HW3_XV6 System calls

1. LEC5_HW3_XV6 System calls修改xv6来添加一个系统调用。1.1. Part1: System call tracing修改xv6的内核,每个系统调用打印一行信息。需要使用从github上down下来的xv6-public工程。Hint: modify the syscall() function in syscall.c.proc结构体// Per-pr...

2019-06-08 16:02:50 2658 4

原创 LAB2_Part3_Kernel Address Space(内核地址空间)

1. LEC3_LAB2_Part3_Kernel Address Space1.1. 初始化内核地址空间1.1.1. Exercise 5.Fill in the missing code in mem_init() after the call to check_page().Your code should now pass the check_kern_pgdir() and c...

2019-06-08 08:56:56 821

原创 LAB2_Part2_Virtual Memory

1. Part2:Virtual Memory首先要熟悉x86的保护模式的内存管理体系,也就是分段和页转换。1.1. Exercise 2如果您还不熟悉分段与分页,请查看“Intel 80386参考手册”的第5章和第6章。 仔细阅读有关页面转换和基于页面的保护的部分(5.2和6.4)。 我们建议您浏览有关细分的部分; 虽然JOS使用分页硬件进行虚拟内存和保护,但在x86上无法禁用分段转换和...

2019-06-06 08:59:19 669

原创 LAB2_Part1_Physical Page Management

1. 简介在本实验中,我们将编写操作系统的内存管理代码。 内存管理有两个组成部分。第一个部分是内核的物理内存分配器,以致于内核可以分配和释放内存。 分配器将以4096字节为操作单位,称为一个页面。 我们的任务是维护一个数据结构,去记录哪些物理页面是空闲的,哪些是已分配的,以及共享每个已分配页面的进程数。 我们还要编写例程来分配和释放内存页面。内存管理的第二个组件是虚拟内存,它将内核和用户软件...

2019-06-02 19:07:51 958 1

原创 MIT6.828_HW2_Boot_xv6_MIT6.828

1. LEC_2_HW_Boot_xv61.1. 寻找_start地址并设定断点nm 命令:names, nm命令主要是用来列出文件中的某些符号(一些函数和全局变量等)。$ nm kernel | grep _start8010a48c D _binary_entryother_start8010a460 D _binary_initcode_start0010000c T _star...

2019-05-29 09:49:58 2505 1

原创 LAB1_Part3_The Kernel

1. Part 3: The Kernel我们现在将开始更详细地研究JOS内核。(最后你会写一些代码!)。与引导加载程序一样,内核从一些汇编语言代码开始,这些代码设置可以使C语言代码正确执行。1.1. 使用虚拟内存来解决位置依赖问题操作系统内核通常被链接到非常高的虚拟地址(例如0xf0100000)下运行,以便留下处理器虚拟地址空间的低地址部分供用户程序使用。 在下一个lab中,这种安排的原...

2019-05-29 09:47:35 663

原创 LAB_1_Part2_The Boot Loader

1. LEC1_LAB_1_Booting a PC1.1. Part 2: The Boot Loader对于6.828,我们将使用传统的硬盘启动机制,这意味着我们的boot loader必须满足于512字节。boot loader由一个汇编语言源文件boot / boot.S和一个C源文件boot / main.c组成。1.1.1. boot.SBIOS将boot.S这段代码从硬盘的...

2019-05-27 14:57:46 2629

原创 LAB_1_Part1_PC Bootstrap

1. LEC_1_LAB_1_Booting a PCLab 1: Booting a PCGDB调试中常用指令:1.1. 简介实验分为三个部分:熟悉汇编语言、QEMU x86模拟器、PC上电启动过程检查我们的6.828内核的boot loader程序,它位于lab的boot目录下。深入研究6.828内核本身的初始模板,位于kernel目录下。1.2. QEMU安装在VMw...

2019-05-27 14:53:02 1287

原创 MIT6.828_Homework_Shell_MIT_6.828

1. step_3_Homework_Shell_MIT_6.828下载sh.c文件1.1. 源码阅读每个Step里的基础知识都不包括xv6讲义里的知识。 讲义的下载链接 Sep 3, 2014基础知识execv, strchr, access.在parsecmd中使用到strchr:查找字符串s中首次出现字符c的位置。execv:// 函数原型 程序...

2019-05-25 10:53:13 7939 4

原创 Linux服务(service)注册以及开机启动

以frp内网穿透为例编辑好frpc.service文件放入路径/etc/systemd/system下,需要修改ExecStart那一行。[Unit]Description=frpcAfter=network.targetWants=network.target [Service]TimeoutStartSec=30ExecStart=/etc/bin/frpc_0.16/...

2019-04-22 13:02:10 5405

原创 MATLAB更改默认JAVA虚拟机

MATLA更改默认JAVA虚拟机设置 MATLAB_JAVA:点击开始菜单右击我的电脑,选择属性点击高级系统设置,然后点击环境变量按钮在系统环境变量栏中,设置或者添加 MATLAB_JAVA,指向 JRE 的路径。(确保jre/lib路径下存在rt.jar文件,否则为安装版本不对)以上设置会在下一次开启 MATLAB 时起作用。如下:MATLAB_JAVA C:\Pro...

2019-04-18 20:51:06 1051 2

原创 wiringPi的安装使用,读取 DHT 温度湿度数据

1. WiringPi简介WiringPi是应用于树莓派平台的GPIO控制函数,WiringPi遵守GUN Lv3。2. Wiring Pi 安装Please note that the official way to get wiringPi is via git from git.drogon.net and not GitHub.ie.git clone git://git....

2019-04-13 11:11:46 867

原创 树莓派(Raspberry Pi)安装使用 Eclipse paho C库

1. 树莓派(Raspberry Pi)安装使用 Eclipse paho C库MQTT C Client for Posix and WindowsThe Paho MQTT C Client is a fully featured MQTT client written in ANSI standard C. C was chosen rather than C++ to maximize...

2019-04-11 19:33:01 1584

原创 我用代码做过的有趣的东西

Special Gift两个月前偶然在知乎上看到有人用树梅派制作了魔镜,感觉挺神奇的,第一想法就是作为一个程序员,做一个魔镜出来送给女朋友多么酷炫啊。因为我对于单片机比较熟悉,我觉得使用STM32来做更方便,更便宜一点。到现在也基本完成了,在这记录一下我做的过程,也给大家提供一个思路。话不多说,直接开始干。材料准备 STM32开发板一套,含2.8寸液晶屏 。(价格在180左右)cc2541蓝牙模

2017-12-14 11:31:05 3087 1

原创 Linux C 多人网络聊天室(UDP)

Linux C 多人聊天室(UDP) 任何直接甩代码的都是耍流氓!一、客户端设计客户端实现简单流程图 1.创建连接套接字 ConnectSocket()函数在socket.c中实现sClient = ConnectSocket(serverIp, serverPort, "udp");if(sClient == -1){ ErrorHandler("ConnectS

2017-11-25 16:36:45 1931 2

原创 树莓派摄像头配置与使用

树梅派摄像头配置与使用一、使能摄像头 网络上很多教程都说执下面一条命令便可以看到Camerasudo raspi-config 其实不然,我执行命令后出现了下面的界面,我感觉大多数人都会跟我一样。 在这一步之后需要选择 Interfacing Options便能看到Camera选项 选择使能后重启就好了。二、简单图片与视频捕获图片捕获 # 两秒钟(时间单位为毫秒)延迟后拍摄一张照

2017-11-22 22:58:03 1475

原创 阿里云服务器上git配置与使用方法

阿里云服务器搭建GIT服务器 环境:ubuntu16.04阿里云服务器二、服务器端配置 需要用root用户来执行以下命令1. 添加用户adduser git_xxxcd /home/git_xxxmkdir .ssh2. 创建公钥文件touch ./.ssh/authorized_keys3. 添加用户公钥vim ./.ssh/authorized_keys4. 初始空的远程

2017-11-20 21:20:04 5109

原创 树莓派Ubuntu mate 16.04 首次安装配置(中文输入法,显示配置等)

1.树梅派开机自动登录配置 我们希望能在跳过登陆界面,自动登陆后直接启动程序,可以进行一下配置。sudo vim /etc/lightdm/lightdm.conf 如果没有vim,终端执行安装sudo apt-get install vim 纯个人意见 , vim 比自带的vi好用一点 如果没有以上文件则创建此文件。在其中输入一下配置:[Seat:*] autologin

2017-11-10 16:40:29 3293

原创 static inline声明

一、static inline 函数 此声明一般出现在 .h 头文件中。 声明的作用:这类希望全局使用又希望增加效率的函数实现在头文件中static inline。二、以此方式声明函数易出现编译错误.\Libraries\inc\fsl_clock.h(707): warning: #260-D: explicit type is missing ("int" assumed)s

2017-10-15 22:42:52 1788 2

原创 python转exe可执行程序在其他系统上运行时出现的错误

关于python转exe可执行程序在其他系统上运行时出现的错误说明:python转exe在win10上执行,无法运行在win7系统上一.win7旗舰版x64运行错误提示解决办法 下载api-ms-win-crt-runtime-l1-1-0.dll复制到系统文件中就行了 (1)下载文件api-ms-win-crt-runtime-l1-1-0.dll文件到您的桌面上。

2017-07-19 11:50:01 4340

原创 C语言有无符号数据运算错误

C语言有符号与无符号运算易出现的错误一、例子 例如:c语言中在带符号数据的运算过程中,若同时存在有符号和无符号变量,则会隐式的将有符号数转换为无符号数进行运算。其中典型的程序#include <stdio.h>float sum(float a[], unsigned length) { int i; float result = 0; for (i = 0; i <=

2017-06-25 21:24:05 669

原创 启动虚拟机错误 Transport(VMDB) error -44:Message

VM虚拟机无法启动 error -44 使用VM启动虚拟机出现如下错误解决办法 1.快捷键 WIN+R启动services如下图,点击运行 找到VMware Authorization Services右键点击启动稍等即可

2017-05-28 00:03:17 2533

原创 matlab验证线性卷积与圆周卷积的关系

数字信号处理实验一.线性卷积和圆周卷积的关系1.线性卷积    设X1为N1点的有限长序列,X2为N2点的有限长序列(0 < n < N2)    则两序列的线性卷积为:    线性卷积y1(n)的长度为N2+N2-12.圆周卷积   设有限长序列x(n)和h(n)的长度分别为N1和N2,取N>=max(N1,N2),分别对x(n)和h(n)取N点的DFT,将结果取

2017-05-20 23:13:56 13455 2

汇编语言(斐波拉契数列)

使用汇编语言,产生斐波拉契数列并显示

2017-05-29

汇编语言(排序)

使用 汇编语言实现数据排序。 运行在Dos-box环境下

2017-05-29

空空如也

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

TA关注的人

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