首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++&linux

    【C++】vector的模拟实现(SGI版本)

    下面是SGI版本的stl_vector.h的源码实现,我们模拟实现的就是SGI版本的源码。 = v.end()) { v.erase(it); } //读 cout << *it << endl;//PJ版实现的非常复杂,相对于SGI版本。

    80630编辑于 2023-04-12
  • 来自专栏乐行僧的博客

    SGI STL二级空间配置器--内存池源码剖析

    一、STL容器一级空间配置器 通过SGI STL vector底层源码逐步分析内存池。

    77320编辑于 2022-02-25
  • 来自专栏GPUS开发者

    【号外】惠普砸2.75亿美元收购超级电脑制造商SGI

    惠普执行副总裁涅里(Antonio Neri)表示:“SGI包含大数据资料分析和高效能计算解决方案在内的创新技术和服务,可望与惠普的资料中心解决方案互为表里。” 就是利用SGI图形工作站制作完成的. SGI不敌SUN等对手的激烈竞争,曾两度声请破產保护,并在2009年将资產出售予Rackable Systems公司,后者将SGI的技术整合至自家的產品组合,并将其更名为SGI。 近几年来SGI开始将重心专注于高性能电脑、和专为分析大数据的储存硬体和软体。 研究机构Moor Insights & Strategy总裁穆海德(Patrick Moorhead)表示:“SGI格外受政府和研究机构敬重。”

    80250发布于 2018-03-30
  • 来自专栏镁客网

    卖电脑的惠普,这次竟然收购了一家超级计算机厂商

    SGI的主打产品是超级计算机,产品受到政府部门和科研机构青睐。对于此次收购,惠普似乎是希望通过它推动其数据分析业务和大型计算机系统。 SGI原名“Silicon Graphics,Inc.”,创办于1981年。这些年来,除了员工的跳槽,SGI一直面临Sun Microsystems的激烈竞争。 随后,Rackable Systems将SGI的技术整合到了自己的产品线中,并将其更名为“SGI”。 其实,关于此次收购,惠普主要是奔着SGI所谓的内存超级计算机(in-memory supercomputer)“UV”而去。 因为HPE的直销网络和渠道是SGI所没有的。

    77130发布于 2018-05-28
  • 来自专栏分布式系统进阶

    Influxdb Cluster下的数据写入

    . // 创建ShardGroup data.MaxShardGroupID++ sgi := ShardGroupInfo{} sgi.ID = data.MaxShardGroupID sgi.StartTime = timestamp.Truncate(rpi.ShardGroupDuration).UTC() sgi.EndTime = sgi.StartTime.Add sgi.Shards = make([]ShardInfo, shardN) for i := range sgi.Shards { data.MaxShardID++ sgi.Shards[i] = ShardInfo{ID: data.MaxShardID} } // Assign data nodes to shards via round robin func (sgi *ShardGroupInfo) ShardFor(hash uint64) ShardInfo { return sgi.Shards[hash%uint64(len(sgi.Shards

    1.3K20发布于 2018-12-12
  • 来自专栏代码随想录

    栈与队列:来看看栈和队列不为人知的一面

    SGI STL 由Silicon Graphics Computer Systems公司参照HP STL实现,被Linux的C++编译器GCC所采用,SGI STL是开源软件,源码可读性甚高。 接下来介绍的栈和队列也是SGI STL里面的数据结构,我们一般使用的STL也是SGI STL,知道了使用版本,才知道对应的底层实现。 来说一说栈,栈先进后出,如图所示: ? 「我们常用的SGI STL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的低层结构。」 deque是一个双向队列,只要封住一段,只开通另一端就可以实现栈的逻辑了。 「SGI STL中 队列底层实现缺省情况下一样使用deque实现的。」 队列 先进先出的数据结构,同样不允许有遍历行为,不提供迭代器, SGI STL中队列一样是以deque为缺省情况下的底部结构。

    56130发布于 2020-09-21
  • 来自专栏代码随想录

    来看看栈和队列不为人知的一面

    SGI STL 由Silicon Graphics Computer Systems公司参照HP STL实现,被Linux的C++编译器GCC所采用,SGI STL是开源软件,源码可读性甚高。 接下来介绍的栈和队列也是SGI STL里面的数据结构, 知道了使用版本,才知道对应的底层实现。 来说一说栈,栈先进后出,如图所示: ? 我们常用的SGI STL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的低层结构。 deque是一个双向队列,只要封住一段,只开通另一端就可以实现栈的逻辑了。 SGI STL中 队列底层实现缺省情况下一样使用deque实现的。 队列中先进先出的数据结构,同样不允许有遍历行为,不提供迭代器, SGI STL中队列一样是以deque为缺省情况下的底部结构。

    38310发布于 2021-07-16
  • 来自专栏学习

    深入剖析:C++ 手写实现 unordered_map 与 unordered_set 全流程指南

    本文将从底层原理、SGI STL 源码出发,手动模拟并完整实现一套泛型、可扩展、支持迭代器的 unordered_map 与 unordered_set 容器。 二、STL 哈希容器的历史与演进 2.1 SGI STL 的哈希家族 早期 C++ 标准未引入哈希表类容器,SGI STL 率先推出 hash_map 与 hash_set,底层封装自定义 hashtable 纳入 STL,头文件分别是: #include <unordered_map> #include <unordered_set> 标准库中 unordered_* 使用开放寻址或拉链法实现,底层逻辑与 SGI 三、深入源码:SGI STL 的 hashtable 架构 SGI STL 的 hash_map 与 hash_set 都建立在 hashtable 基础上。

    46610编辑于 2025-08-18
  • 来自专栏C++学习历程

    【C++】STL之空间配置器

    容易造成内存碎片 频繁向系统申请小块内存,影响程序运行效率 直接使用malloc与new进行申请,每块空间前有额外空间浪费 申请空间失败怎么应对 代码结构比较混乱,代码复用率不高 未考虑线程安全问题 SGI-STL SGI-STL 以 128 作为小块内存与大块内存的分界线,将空间配置器其分为两级结构,一级空间 配置器处理大块内存,二级空间配置器处理小块内存 一级空间配置器 一级空间配置器原理非常简单,直接对 SGI-STL 采用了内存池的技术来提高申请空间的速度以及减少额外空间的浪费,采用哈希 桶的方式来提高用户获取空间的速度与高效管理 。 内存池 SGI-STL中二级空间配置器设计 SGI-STL 中的二级空间配置器使用了内存池技术 ,但没有采用链表的方式对用户已经归还的空间进 行管理 ( 因为用户申请空间时在查找合适的小块内存时效率比较低 因此: SGI-STL 将用户申请的内存块 向上对齐到了 8 的整数倍 ( 同学们请思考为什么是 8 的整数倍,而不是 4) 。

    23800编辑于 2025-05-17
  • 来自专栏FPGA技术江湖

    Altera cyclone V HPS GIC

    每个核都有16个一组的软件中断(SGI)及16个一组的私有中断(PPI)。这32个中断占用了GIC的0-31中断号,也称为interrupt ID。但是这32个中断采用了中断与寄存器分区抽像。 ---- PL330支持三种中断类型,PPI,SPI,SGI。 PPI中断为CPU核私有中断,只连接到指定CPU核。 SPI由PL330路由到相应的CPU核。 这种方式在SGI上使用,用于CPU核间通信。 所有的中断都经过Distributor,SGI中断只是能edge触发。 三、GIC编程模型 CPU接口寄存器如下图所示,在CYCLONE V中的偏移地址是0xfffec000。 ? GICC_IAR(中断确认寄存器) 当接收到中断时,读取该寄存器并读取中断ID及SGI中产生中断的CPUID,通知gic中断处理程序已被确认。

    1.1K30发布于 2020-12-29
  • 来自专栏热爱C嘎嘎

    C++空间配置器

    目录 1.什么是空间配置器 2.为什么需要空间配置器 3.SGI-STL空间配置器实现原理 3.1一级空间配置器 3.2二级空间配置器 3.2.1内存池 3.2.2 SGI-STL中二级空间配置器设计 3.SGI-STL空间配置器的实现原理 以上提到的几点不足之处,最主要还是:频繁向系统申请小块内存造成的。那什么才算是小块内 存? SGI-STL采用了内存池的技术来提高申请空间的速度以及减少额外空间的浪费,采用哈希桶的方式来提高用户获取空间的速度与高效管理。 3.2.2 SGI-STL中二级空间配置器设计 SGI-STL中的二级空间配置器使用了内存池技术,并且为了更方便更好的管理内存,二级空间配置器采用了哈希桶的方式。 中该宏没有定义,因此:默认情况下SGI_STL使用二级空间配置器。

    51640编辑于 2023-03-30
  • 来自专栏Linux Python 加油站

    Linux学习----在Linux环境下如何使用XFS文件系统

    来源:马哥教育链接:https://mp.weixin.qq.com/s/UupllldADYE0sHbRs0uouQXfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。 所幸的是SGI将其移植到了Linux系统中。在linux环境下。目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工作在2.4核心下。 SGI提交的核心有两种,分别供smp及单处理器的机器使用。创建XFS文件系统完成对核心的编译后,还应下载与之配套的XFSprogs工具软件包,也即mkfs.xfs工具。 所幸的是SGI将其移植到了Linux系统中。在linux环境下。目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工作在2.4核心下。 SGI提交的核心有两种,分别供smp及单处理器的机器使用。 创建XFS文件系统 完成对核心的编译后,还应下载与之配套的XFSprogs工具软件包,也即mkfs.xfs工具。

    3.7K20发布于 2018-08-03
  • 来自专栏CSDN搜“看,未来”

    走进STL - 空间配置器,STL背后的故事

    b、SGI STL专属空间配置器 SGI STL 的空间配置器与众不同,且与STL标准规范不同,其名为alloc,而非allocator。 SGI STL allocator未能符合标准,不过这并不会给我们造成困扰,因为我们没什么事儿不会自己去配置这个。而SGI的每一个容器都已经预设好了alloc。 SGI对此的设计原则如下: 向system heap索要空间 考虑多线程状态 考虑内存不足时的应变措施 考虑过多小型区块造成的内存碎片问题 考虑到小型区块可能造成的内存破碎问题,SGI为此设计了双层级配置器 (索求任何一块内存,都得有一些“回扣”要交给系统) SGI第二级配置器解决了多少问题呢?那就看各位的理解到什么程度了。 SGI第二级配置器的做法是“:sub-allocation (层次架构): 每次分配一大块内存,并维护对应之自由链表(free-list)。

    2.4K30发布于 2020-08-26
  • 来自专栏学习

    C++ 手写实现 unordered_map 和 unordered_set:深入解析与源码实战

    二、STL 哈希容器的演进 2.1 SGI STL 与 C++11 早期的 SGI STL 中并没有 unordered_map 和 unordered_set,而是提供了 hash_map 和 hash_set 它们并不属于 C++ 标准委员会制定的 STL 标准库,而是由 SGI 组织实现并广泛流传。 三、SGI STL 哈希容器源码结构分析 SGI STL 的 hash_map 和 hash_set 都基于通用模板类 hashtable 实现,示例如下: // hash_set class hash_set * next; Value val; }; class hashtable { vector<node*> buckets; size_t num_elements; }; SGI

    34210编辑于 2025-06-11
  • 来自专栏北京马哥教育

    在Linux环境下如何使用XFS文件系统

    XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。所幸的是SGI将其移植到了Linux系统中。在linux环境下。 XFS文件系统的使用 下载与编译内核 下载相应版本的内核补丁,解压补丁软件包,对系统核心打补丁 下载地址:ftp://oss.sgi.com/projects/xfs/d … .4.18-all.patch.bz2 SGI XFS filesystem support ##说明:以动态加载模块的方式支持XFS文件系统 另外还有两个选择: Enable XFS DMAPI ##说明:对磁盘管理的API,存储管理应用程序使用 安装核心: #make bzImage #make module #make module_install #make install 如果你对以上复杂繁琐的工作没有耐心或没有把握,那么可以直接从SGI SGI提交的核心有两种,分别供smp及单处理器的机器使用。 创建XFS文件系统 完成对核心的编译后,还应下载与之配套的XFSprogs工具软件包,也即mkfs.xfs工具。

    3.9K00发布于 2018-07-31
  • 来自专栏瓜大三哥

    Zynq中PS的MIO中断

    Zynq中断大致可分为三个部分 第一部分为SGI,软件生成的中断,共16个端口; 第二部分为PPI,CPU私有外设中断,有5个; 第三部分为SPI,共享外设中断,来自于44个PS端的IO外设以及16个PL 以下为中断控制器框图,主要的控制器部分为ICC和ICD,ICD连接SGI和PPI,ICD连接SPI,可配置两者的寄存器来控制中断。 ? SGI中断(软件产生中断),共16个IRQ ID号 ?

    2.3K30发布于 2019-11-05
  • 来自专栏基础知识文章

    STL之空间配置器

    SGI-STL空间配置器实现原理 以上提到的几点不足之处,最主要还是:频繁向系统申请小块内存造成的。 SGI-STL以128作为小块内存与大块内存的分界线,将空间配置器其分为两级结构,一级空间配置器处理大块内存,二级空间配置器处理小块内存。 SGI-STL采用了内存池的技术来提高申请空间的速度以及减少额外空间的浪费,采用哈希桶的方式来提高用户获取空间的速度与高效管理。 3.2.2 SGI-STL中二级空间配置器设计 SGI-STL中的二级空间配置器使用了内存池技术,但没有采用链表的方式对用户已经归还的空间进行管理(因为用户申请空间时在查找合适的小块内存时效率比较低), 因此:SGI-STL将用户申请的内存块向上对齐到了8的整数倍 ?

    60830发布于 2020-08-27
  • 来自专栏CPP开发前沿

    从vector扩容看STL空间分配器的本质

    C++没有提供相应的realloc()方法,因此SGI不能直接只用C++的set_new_handler()。 SGI二级配置器主要的功能是:如果空间大于128个字节就移交给一级配置器进行处理,如果空间小于128个字节则使用内存池(memory pool)的方式进行管理。这种处理方法也叫做次层配置。 如果块大小不合适时,SGI也会自动将块大小扩展为2的次方继续分配。如:申请一个56字节的空间,如果没有SGI会为其匹配64字节的。 { union obj* free_list_link; char client data[1]; } free-list的链表结构如下图所示: 图2 图片来源于网络 从面的图中可以看出,SGI

    1.3K20发布于 2021-11-25
  • 来自专栏数通

    堂堂华为企业级AP怎么还不如家用TP的速度”快“呢?(优化篇)

    看下怎么提速 提速需要配置的可能就两个,第一个是需要开启SGI、第二个信道捆绑,其实还是有一些细节的内容,下面来讲解下。 2个信号,一个2.4G一个5G,这样好区分对比,我们可以看到默认速率下,2.4G是130M,5G是173M,注意这里2.4G是N协议,用的是2:2空间流,5G是AC协议,也是2:2空间流,这是没有开启SGI (2)开启SGI功能 这里说下,关于接下来很多功能都是属于射频相关的,所以我们直接去射频模板更改即可,那么说到模板,肯定也想到了默认内置了相关的模板的, radio-2g-profilename default display radio-2g-profile name default display radio-5g-profile name default 在默认模板里面,不管是2.4G还是5G,关于SGI 不是默认选项,默认选项是normal也就是(GI,正常模式),这里说下,博主这便使用的是V2R7,默认是SGI不是默认选项,到了V2R10以及V2R19的版本,这个选项就变了,默认是SGI选项,所以这里要了解

    55700编辑于 2025-03-19
  • 来自专栏鸿蒙开发笔记

    浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400

    SGI(Software-generated Interrupt),软件中断,由软件触发引起的中断,通过向寄存器GICD_SGIR写入数据来触发,系统使用SGI中断来完成多核之间的通信。 在图中,SGI是软件(软件运行在CPU上)触发,所以SGI中断源头是各个CPU上的应用,另外SGI和PPI一样,每个CPU都有属于自己的SGI,所以必须指定CPU。 1020 个ID包含了PPI、SPI和SGI,那么这三类中断是如何分配这 1020 个中断 ID 的呢? 比如 I.MX6U 的总共使用了128个中断ID,加上前面属于PPI和SGI的32个ID,I.MX6U的中断源共有128+32=160个。 4、触发路径下面总结下SGI、PPI、SPI三种类型中断的触发路径:SGI(ID0-ID15):是由CPU内部软件触发,所以从CPU CORE-->CPU interface-->Distributor

    57320编辑于 2025-04-23
领券