自己动手写操作系统(三)

这篇文章先乱入一下,这几天一直在写内存分配器(coalition,姑且这么叫吧)。参考的主要还kernel的伙伴内存分配方式。 这里先 一下为什么要用参考伙伴分配方式重新写内存分配器吧。 原先的内存分配设计是采用一个bitmap来记录所有的free page,每次分配都从bitmap里面找4k的页。例如我申请一个16K的内存,我直接找2个4K的页,然后更新PGD表和TLB表,这样的确内存碎片会比较少(基本就没有碎片),但是每次更新TLB表会导致MMU会变慢。而且如果需要的是连续内存,那需要先找
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

自己动手写操作系统(四)

今天主要接着(二)来看一下stage2.asm。stage2.asm的功能主要有下面几个: ============================= 1.将系统从实模式切换到保护模式 2.找到core.sys(就是kernel)的位置,并且将core.sys导入内存 3.跳转到core.sys的入口函数处 ============================= 首先看一下代码流程 call GDT_INSTALL GDT即全局描述符表。[span]在英特尔x86[span]系列处理器的8
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

自己动手写操作系统(五)

这里开始就进入了core的启动流程(类似于linux的kernel)。core的入口函数是start_core,如何定义如何函数呢?我们这里通过编译指令就可以了。参看下面的配置文件: ENTRY (start_core) SECTIONS { . = 0x100000; .text :{ *(.text) } .rodata ALIGN (0x1000) : { *(.rodata) } .data ALI
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

自己动手写操作系统(六)

今天开始进入内存管理的编写。按照顺序,我们首先要实现的是kmalloc。在arale os中我们用coalition_allocator来进行kmalloc对应的内存管理。实际上,coalition_allocator的内存管理方法是参照了buddy来的。有兴趣的同学可以在网上找到很多关于buddy的内存管理文章,这里就不在多说了。 我们先来看几个比较关键的结构体: 1.已分配内存头: typedef struct pmm_stamp { int type; union
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

自己动手写操作系统(七)

今天主要分析coalition_allocator的内存分配流程。看过linux相关数据的同学都听说过kernel的buddy内存管理。实际上coalition内存分配的远离和buddy基本相同:将物理内存分为4k,8k,16k,32k......2的幂。例如,目前需要分配一个9k的内存,步骤如下: ======================================== 1.调用GET_ALIGN_PAGE向上取整,最后变为申请一个16k的内存。 2.在16k的free_page_l
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

RK3368 selinux 权限调测小技巧

selinux 开关在parameter文件中指定。 androidboot.selinux=enforcing 或者 androidboot.selinux=permissive parameter 在 mkimage.sh 脚本中有指定: if [[ $TARGET_BOARD_PLATFORM = "rk3399" ]]; then PARAMETER=device/rockchip/$TARGET_BOARD_PLATFORM/$TARGET_PRODUCT/parameter.t
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android: fence timeout

串口会打印出fence timeout、Mali ERR等问题,请问可能是什么原因呢 http://dev.t-firefly.com/forum.php?mod=viewthread&tid=8919 fence timeout Receiving GPU fence timeouts and GPU crashes on Android 5.1.1. Mali-400 MP OpenGL ES 2.0 Android Rockchip 3126 processor. EGL impleme
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android / Linux : free 命令

Android / Linux : free 命令 free 命令 free命令详解 https://blog.csdn.net/u011616400/article/details/80198398 2、参数详解 参数 释义 total 内存总数,物理内存总数 used 已经使用的内存数 free 空闲的内存数 shared 多个进程共享的内存总额 buffers Buffer 缓存内存数 cached Page 缓存内存数 -buffers/cache 应用使用内存数 +buffers/c
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android CPU使用率:top和dump cpuinfo的不同

Android CPU使用率:top和dump cpuinfo的不同 https://blog.csdn.net/oujunli/article/details/51463707 1、top top是比较经典的CPU计算方法,top的代码在androidm/system/core/toolbox/top.c下面,输出process的cpu使用率在print_procs里面: 2、dump cpuinfo dump cpuinfo是Android特有的命令(我一直都android的各种dump、
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android: bug: The application may be doing too much work on its main thread.

The application may be doing too much work on its main thread. Android 界面加载卡顿严重,Skipped 56 frames! The application may be doing too much work on its main thread https://blog.csdn.net/qunqunstyle99/article/details/82633811 13、主线程任务太多导致异常退出(The applic
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android中获取CPU负载和进程cpu时间

Android 性能测试实践(三)Cpu http://www.51testing.com/html/44/15020244-3569602.html Android中获取CPU负载和进程cpu时间 https://my.oschina.net/u/262208/blog/378660 android系统中有一个ProcessStats类,我们可以使用它来获取系统的负载情况及进程时间。 实现原理是读取/proc目录下的文件。linux系统运行时,内核会去更新 /proc目录下的文件,将PID的
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Android多种格式的异步解压/压缩解决方案

Android多种格式的异步解压/压缩解决方案 原文地址:https://www.jianshu.com/p/339ab9048f91 Android多种格式的异步解压/压缩解决方案 NKming 2016.08.28 16:48* 字数 2082 阅读 10149评论 24喜欢 58 前言 最近由于项目需要,需要我谅解一下关于在移动平台的解压功能,在移动平台解压,我个人感觉是没有太大必要的,毕竟手机的性能有限。但是,不口否认,移动端的解压功能又是必备的,因为如果对于一些资源管理器类的应用,接
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

unlink函数 与 remove函数的区别

unlink函数 与 remove函数 https://blog.csdn.net/linlin2178/article/details/57412568 通过描述,可以看出在remove比unlink多了个删除目录的功能,在删除文件时,remove和unlink的功能是一样的。 unlink 和 remove 的区别 https://blog.csdn.net/z2066411585/article/details/78966585 当remove() 中的pahtname指定为目录时,相当
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Understanding AUC - ROC Curve

在机器学习中,性能测量是一项重要任务。 因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。 当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线下面积)ROC(接收器操作特性)曲线。 它是检查任何分类模型性能的最重要的评估指标之一。 它也被写为AUROC(接收器工作特性下的区域) 本博客旨在回答以下问题: 1.什么是AUC - ROC曲线? 2.定义AUC和ROC曲线中使用的术语。 3.如何推测模型的性能? 4.灵敏度,特异性,FPR和阈值之间的关系。 5.如何使用AU
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Understanding Confusion Matrix

当我们获得数据时,在数据清理,预处理和争论之后,我们要做的第一步是将其提供给一个出色的模型,当然,还要获得概率输出。 但坚持下去! 我们如何能够衡量模型的有效性。 更好的效果,更好的性能,这正是我们想要的。 而这正是混乱矩阵引人注目的地方。 混淆矩阵是机器学习分类的性能测量。 这个博客旨在回答以下问题: 1,混淆矩阵是什么以及为什么需要它? 2,如何计算2类分类问题的混淆矩阵? 今天,让我们一劳永逸地理解混淆矩阵。 What is Confusion Matrix and why you ne
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

你知道如何在7种不同类型中选择合适的机器学习算法吗?

This is a generic, practical approach that can be applied to most machine learning problems: 1-Categorize the problem 下一步是对问题进行分类。 按输入分类:如果是标记数据,则是监督学习问题。 如果它是用于查找结构的未标记数据,那么这是一个无监督的学习问题。 如果解决方案意味着通过与环境交互来优化目标函数,那么这就是强化学习问题。 按输出分类:如果模型的输出是数字,那就是回归问题
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

3D Style Transfer

3D Style Transfer 代码源参见:(https://github.com/tensorflow/lucid) 通过使用[可区分图像]实现从纹理3D模型和样式图像到3D模型的新纹理的样式转换参数](https://distill.pub/2018/differentiable-parameterizations/#section-style-transfer-3d)。 这款笔记本没有介绍清晰的抽象背后; 您可能还希望阅读[Lucid教程](https://colab.researc
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

Reducing Overfitting

Cat vs. Dog Image Classification Exercise 2: Reducing Overfitting Estimated completion time: 30 minutes In this notebook we will build on the model we created in Exercise 1 to classify cats vs. dogs, and improve accuracy by employing a couple strate
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

猫和狗分类器---降低过拟合

猫与狗图像分类 练习2:减少过度拟合 预计完成时间:30分钟 在这个笔记本中,我们将基于我们在练习1中创建的模型来对猫与狗进行分类,并通过采用一些策略来减少过度拟合来提高准确性:数据增加和退出。 我们将遵循以下步骤: 1.通过对训练图像进行随机变换来探索数据增强的工作原理。 2.将数据扩充添加到我们的数据预处理中。 3.将退出添加到预定。 4.重新训练模型并评估损失和准确性。 让我们开始吧! 探索数据扩充 让我们熟悉数据增强的概念,这是对抗计算机视觉模型过度拟合的重要方法。 为了充分利用我们的
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0

sketch-rnn

在这个笔记本中,我们将展示如何加载预先训练的模型并使用sketch-rnn绘制内容 # import the required libraries import numpy as np import time import random import cPickle import codecs import collections import os import math import json import tensorflow as tf from six.moves import xr
分类: 其他 发布时间: 04-14 23:11 阅读次数: 0