空间分析

进程栈管理分析-基于龙芯64位处理器

一世执手 提交于 2020-02-13 00:56:18
一.Linux进程运行时分为用户态和内核态,用户态有其自有的内存布局,内核态有内核态的内存管理机制。进程栈的管理如图1所示。 图1 进程栈示意图 说明:1.内核栈的底端为thread_info结构体,栈顶开始为堆栈区,其中PT_SIZE为保存进程现场信息的区域。其中task变量指向进程的task_struct进程管理结构体。该结构体按ORDER分配,直接分配物理页。 2.task_struct为进程管理结构体,其中stack变量指向栈首地址。该结构体属于slab分配。 3.mm_struct用户管理进程用户态的内存空间,只用涉及用户态进程才分配该结构体,该结构体属于slab分配。 4.vm_area_struct 用户空间区管理结构体,比如管理用户栈,代码段,数据段等区域,该结构体属于slab分配。其中用户空间栈的管理在第三节讲解。 二.内核栈从何而来和如何使用 1.内核栈在其父进程调用fork时创建 图2 进程栈申请代码 说明:在龙芯2K/3A平台上该空间大小为16K;所有的进程都有自己的内核栈;0号进程(idle)的内核栈通过图3所示,其它所有进程都是调用dup_task_struct函数申请空间得到。 图3 init 进程内核栈生成代码 2.内核栈如何使用-进程工作于内核态时使用 2.1 场景1-程序运行在用户态,此时产生中断或者系统调用,用户态切换至内核态

ArcGIS Server(详细介绍)转

久未见 提交于 2020-01-28 06:16:31
ArcGIS Server(详细介绍)转 ArcGIS Server 是功能强大的基于服务器的 GIS 产品,用于构建集中管理的、支持多用户的、具备高级GIS功能的企业级GIS应用与服务,如:空间数据管理、二维三维地图可视化、数据编辑、空间分析等即拿即用的应用和类型丰富的服务。ArcGIS Server 是用户创建工作组、部门和企业级 GIS 应用的平台,通过 ArcGIS Server创建集中管理的、支持多用户的、提供丰富的GIS功能、并且满足工业标准的GIS应用。ArcGIS Server 提供广泛的基于 Web 的 GIS 服务,以支持在分布式环境下实现地理数据管理、制图、地理处理、空间分析、编辑和其它的GIS功能。 1. ArcGIS Server 的主要功能 ArcGIS Server 主要功能包括: 提供通用的框架在企业内部建立和分发GIS应用; 提供操作简单、易于配置的Web应用; 提供广泛的基于Web的空间数据获取功能; 提供通用的GIS数据管理框架; 支持在线的空间数据编辑和专业分析; 支持二维三维地图可视化; 除标准浏览器外,还支持ArcGISDesktop和ArcGISExplorer等桌面客户端; 可以集成多种GIS服务; 支持标准的WMS、WFS; 提供配置、发布和优化GIS服务器的管理工具; 提供.NET和Java软件开发工具包;

计算机系统大作业

半城伤御伤魂 提交于 2020-01-27 00:59:48
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机类 学   号 1180300412 班   级 1803004 学 生 yiguanghui 指 导 教 师 计算机科学与技术学院 2019年12月 摘 要 关键词:计算机系统、编译链接、异常控制流、虚拟内存 摘要:本文较详细地跟踪介绍了hello.c在Linux下的生命周期,从被程序员创建,到在系统上运行,然后输出简单的消息,最后终止。本文通过计算机系统课程中相关的知识来分析hello.c在Linux开发工具下经历预处理、编译、汇编、链接、加载、执行、终止、回收等过程和结果,跟踪程序的链接、进程创建及加载、虚拟内存转换、高速缓存访问、异常控制流、I/O管理等过程。 目 录 第1章 概述… - 4 - 1.1 Hello简介… - 4 - 1.2 环境与工具… - 4 - 1.3 中间结果… - 4 - 1.4 本章小结… - 4 - 第2章 预处理… - 5 - 2.1 预处理的概念与作用… - 5 - 2.2在Ubuntu下预处理的命令… - 5 - 2.3 Hello的预处理结果解析… - 5 - 2.4 本章小结… - 5 - 第3章 编译… - 6 - 3.1 编译的概念与作用… - 6 - 3.2 在Ubuntu下编译的命令… - 6 - 3.3 Hello的编译结果解析… - 6 - 3.4

redis源码分析(3)sds

丶灬走出姿态 提交于 2020-01-25 04:52:19
sds是redis中用来处理字符串的数据结构。sds的定义在sds.h中: 1 typedef char *sds; 简洁明了!简明扼要!(X,玩我呢是吧!这特么不就是c中的字符串么?!)。像redis这种高端大气上档次的服务器显然不会这么的幼稚。在sds的定义之后,还有一个结构体: 1 struct sdshdr { 2 int len; 3 int free; 4 char buf[]; 5 } 有len,有free,这就有点意思了。很明显,根据这个结构体的定义,这是sds的header,用来存储sds的信息。注意最后的buf定义,这个buf数组没有设置长度。这是为神马呢?在gcc中,这种方式可以使得buf成为一个可变的数组,也就是说,可以扩展buf同时又保证在使用的时候,感觉buf始终在struct sdshdr中。有点啰嗦,其实可以用下图展示: sdshdr sds | | V V ---------------------------- |len | free | buf … | ---------------------------- 这个就是sds的内存分布图。struct sdshdr这个结构体放在了真正的数据之前,且是紧挨着的。这样,通过buf引用的数组其实就是后面的数据。这个是利用了c中数组访问的特点。 下面我们来看看如何创建一个sds: 1 /* Create

做题报告模板

醉酒当歌 提交于 2020-01-22 16:35:53
题目链接: Remove All Adjacent Duplicates In String 题目大意: 。。。。 做题报告: (1) 该题涉及的算法与数据结构 。。。 (2) 自己的解答思路+代码+分析时间和空间复杂度 (3) 大神们的解答思路+代码+分析时间和空间复杂度 时间和空间复杂度: 时间复杂度:O( ) 空间复杂度:O( ) (4) 比较自己想的和参考答案的区别 来源: https://www.cnblogs.com/Aiahtwo/p/12228711.html

linux内存管理之vmalloc函数分析

谁说胖子不能爱 提交于 2020-01-21 09:05:54
2017-07-09 今天周末,闲来无事聊聊linux内核内存分配那点事……重点在于分析vmalloc的执行 流程 以传统x86架构为例,内核空间内存(3G-4G)主要分为三大部分:DMA映射区,一致映射区、高端内存区。其中前两者占据低端892M,而剩下的128M作为高端内存区。DMA映射区涉及到外部设备,咱们暂且不讨论,那么就剩下一致映射区和高端内存区。一致映射区的虚拟地址均一一对应了物理页框,因此此区间虚拟地址的访问可以直接通过偏移量得到物理内存而不需进行页表的转换。但是1G内核地址空间说实话有些捉襟见肘,如果都用作一致映射,那么当物理内存大于4G时,内核仍然无法利用。鉴于此,留下128M的地址空间作为高端内存,扮演着临时映射的作用。回想下PAE模式的原理,是不是有些相似呢?一致映射区既然都已经关联了物理内存就可以通过slab缓存来管理,以加速分配。而高端内存这点有些类似于用户进程的内存分配,但又并不完全相同,后面咱们会讲到。在这里咱们先回忆下用户空间内存分配流程,一个普通的进程调用malloc函数分配一段地址空间,有可能在 堆中,如果内存过大海有可能在mmap映射区,同时会由一个vm_area_struct记录下本次分配出去的地址空间信息,如大小,起始地址等由于进程独享虚拟地址空间,所以这些vm_area_struct都是按照进程为单位进行管理的。这也没毛病

计算机系统大作业 程序人生-Hello’s P2P From Program to Process

北慕城南 提交于 2020-01-13 04:10:37
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机 学 号 1180300327 班 级 11803003 学 生 黄锦洋 指 导 教 师 史先俊 附件:https://download.csdn.net/download/wyp237/12082603 计算机科学与技术学院 2019 年 12 月 计算机系统基础课程报告 1 - 摘 要 本文通过 hello.cP2P 和 020 的整体介绍,回顾了对计算机系统的学习,并稍做 拓展和深入,对相关存储与相关函数做了些许介绍。 关键词:计算机系统;P2P;020;存储;I/O (摘要 0 分,缺失-1 分,根据内容精彩称都酌情加分 0-1 分) 计算机系统基础课程报告 2 - 目 录 第 1 章 概述 … - 4 - 1.1 HELLO 简介 … - 4 - 1.2 环境与工具 … - 4 - 1.3 中间结果 … - 4 - 1.4 本章小结 … - 5 - 第 2 章 预处理 … - 6 - 2.1 预处理的概念与作用 … - 6 - 2.2 在 UBUNTU 下预处理的命令 … - 6 - 2.3 HELLO 的预处理结果解析 … - 6 - 2.4 本章小结 … - 7 - 第 3 章 编译 … - 8 - 3.1 编译的概念与作用 … - 8 - 3.2 在 UBUNTU 下编译的命令 … - 8

图像处理与分析

天大地大妈咪最大 提交于 2020-01-10 03:25:57
基本概念 图像的采样和量化 光照本身是连续的、但是转换成数字形式必然是不连续的 在坐标值(空间)上的数字化即为采样,对幅值的数字化即为量化 量化——每一像素值只能用有限位比特表示,故只能表现有限的精度 可以看作是笛卡儿积 Z 2 Z^2 Z 2 中的一对元素,映射到灰度值集合上的一个映射。 空间分辨率:如dpi每英寸点数;灰度分辨率直接用比特表示 图像插值 最简单的是最近邻方法,其次是双线性,最后是双三次 双线性:可以看作是在一个方格内拟合 f ( x , y ) = a + b x + c y + d x y f(x,y)=a+bx+cy+dxy f ( x , y ) = a + b x + c y + d x y ,比较好的特点是无论固定x还是固定y,关于另一个变量都是线性的。 像素间关系 4领域、8领域、m邻接(m邻接可以消除8邻接的二义性 连通性、区域、边界 距离的度量:非负、自反、交换、三角 常用计算 矩阵与阵列计算 灰度算术 集合和逻辑操作 空间操作(几何空间变换与图像配准 一般来说反向映射比前向映射要好,可以配合插值算法决定每个像素的输出值 把图像当作一个向量,然后乘以矩阵 图像变到某个变换域去(通常通过某个正交变换核 彩色图像 光的三原色为RGB 颜料的三原色为CMYK(青、品红、黄、黑 HSI 色调、饱和度、强度 图像增强 灰度变换 略 直方图处理 直方图

复杂度分析之空间复杂度

自古美人都是妖i 提交于 2020-01-07 17:46:36
几种空间复杂度 1. 常量空间 当算法的存储空间大小固定,和输入规模没有直接的关系时,空间 复杂度记作O(1)。例如下面这段程序: void fun1(int n){ int var = 3; … } 2. 线性空间 当算法分配的空间是一个线性的集合(如数组),并且集合大小和 输入规模n成正比时,空间复杂度记作O(n)。 例如下面这段程序: void fun2(int n){ int[] array = new int[n]; … } 3. 二维空间 当算法分配的空间是一个二维数组集合,并且集合的长度和宽度都 与输入规模n成正比时,空间复杂度记作O(n2)。 例如下面这段程序: void fun3(int n){ int[][] matrix = new int[n][n]; … } 4. 递归空间 递归是一个比较特殊的场景。虽然递归代码中并没有显式地声明变量或集合,但是计算机在执行程序时,会专门分配一块内存,用来存储“方法调用栈”。“方法调用栈”包括进栈和出栈两个行为。当进入一个新方法时,执行入栈操作,把调用的方法和参数信息压入栈中。当方法返回时,执行出栈操作,把调用的方法和参数信息从栈中弹出。 下面这段程序是一个标准的递归程序: void fun4(int n){ if(n<=1){ return; } fun4(n-1); … } 假如初始传入参数值n=5,那么方法fun4

HIT2019计算机系统大作业

本小妞迷上赌 提交于 2020-01-07 08:34:36
目 录 第1章 概述............................................................................................................. - 4 - 1.1 Hello简介...................................................................................................... - 4 - 1.2 环境与工具..................................................................................................... - 4 - 1.3 中间结果......................................................................................................... - 4 - 1.4 本章小结......................................................................................................... - 4