T-Kernel 中提供了 Vmalloc / Kmalloc API 用于分配内存。原以为和Linux内核里的 vmalloc / kmalloc 类似 ,结果不是这么一回事。Vmalloc : 非常驻内存分配Kmalloc:  常驻内存分配,类似于 Linux 里的 mlockall()至于如何分配物理地址连续的内存空间,还不确定。可能可以用以下方式:调用 Ma
原创 2023-05-04 16:02:52
47阅读
文章目录内存映射实现进程间通信1. 内存映射相关系统函数2. 内存映射使用示例3. 内存映射函数使用注意事项4. 匿名映射 内存映射实现进程间通信内存映射,Memory-mapped I/O,是将磁盘文件的数据映射内存,用户通过修改内存就能修改磁盘文件。内存映射对应的虚拟地址空间是动态库/共享库所在的区域;映射内存数据修改,文件数据也会对应修改,如果文件也映射到另一个进程,那么另一个进程就可
前面简单地介绍了三种不同的地址空间,接下来重点讲述线性地址空间到物理地址空间的映射。我们先从32位系统开始。在32位系统中,线性地址空间的大小为 2^32,即4GB。Kernel一般会按照 3:1 的比例,把线性地址空间分为两部分:0~3GB 用户地址空间3GB~4GB 内核地址空间。用户地址空间的管理和映射是个大的topic。我们后面再详细讲述。内核地址空间只有1GB大小,最多只能映射1GB的物
原创 2015-08-06 18:15:05
4212阅读
1点赞
前面讲过,针对于内核地址空间中后面的128MB空间,Kernel提供了三种机制来映射物理内存。之前讲过了两种,即持久内核映射和临时内核映射。这两种机制的目的都是一样的:使Kernel能够访问到高端内存。今天讲一下第三种机制:非连续内存分配,也就是vmalloc。这个机制同样可以使Kernel能够访问到高端内存,不过这不是该机制的主要目的。该机制的主要目的是:把物理上不连续的页面映射到连续的内核线性
原创 精选 2015-08-12 18:25:46
6205阅读
2点赞
大家都知道,计算机的硬件设备在与系统进行交互时,需要通过 I/O 接口来实现数据的传输和控制。而内存映射则是将硬件设备的物理地址映射到系统的内存空间,以便操作系统能够直接访问这些设备。早期 I/O 内存映射在这个过程中扮演着重要的角色,它为内核提供了一种高效的方式来管理和访问硬件设备。 想象一下,当我们启动计算机时,系统需要快速地识别和配置各种硬件设备。早期 I/O 内存映射就像是一座桥梁,连接着
内核地址空间中后面这128MB的最后一部分,是固定映射 (fixed mappings)。固定映射是什么意思?为什么要有固定映射Kernel源代码的注释里有一句话,可谓一语中的:The point is to have a constant address at compile time, but to set the physical address only in the
原创 精选 2015-08-07 14:29:30
3381阅读
直接在 T-kernel
原创 2023-05-04 16:02:30
88阅读
什么 T-Kernel T-Kernel 实时操作系统是由T-Engine论坛开发的用以满足下一代普适计算环境设备性能要求的OS。“T-Engine” 是一个基于标准规格的硬件系列,用以作为“T-Kernel”的开发环境。 “T-Kernel”追求其自身的可扩展性,用以支持从小型系统到大型系统开发的广泛用途; "μT-Kernel" 支持8位和16位的CPU,并简化 μITRON 的移植
翻译 2023-05-04 16:03:18
378阅读
T-内核是一个实时操作系统,它是T-Engine的心脏。 T-Kernel,通过和称为T-Kerneel扩展的中间件的组合,能够配置适用于各种设备的实时操作系统。T-Kernel为了更容易发布中间件,规定了中间件API的两个标准:子系统和设备驱动程序。T-内核的功能是由三部分组成:T-Kernel/OS (Operating System) 它提供作为一个实时操作系统的基本功能。相当于传统的 μ
翻译 2023-05-05 14:38:34
263阅读
参考:tk/errno.h#define E_OK 0 /* Comp define E_NOSPT
转载 2023-05-04 16:03:25
137阅读
uT-Kernel 2.0 Specification3.1.1     General Data Typestypedef signed char B; /* signed 8- bit integer */ typedef signed short H; /* signed 16 - bit inte
转载 2023-05-04 16:21:46
91阅读
T-Kernel 是一款实时OS,这里介绍一下
php
原创 2023-05-05 01:11:13
294阅读
  NIO里对性能提升最显著的是内存映射(memory mapping),内存访问的速度往往比文件访问的速度快几个数量级。  在内存映射之前,还需要看NIO的一些其他的特性。 缓冲区分片  slice()方法根据现有的缓冲区创建一个子缓冲区。也就是说,它创建一个新的缓冲区,新缓冲区与原来的缓冲区的一部分共享数据。 package nio; import java.nio.ByteBuffer;
一、背景  项目开发中免不了各模块或系统之间进行消息通信,目前热门的消息中间件有Redis、RabbitMQ、Kafka、RocketMQ等等。以上几种组件中Redis在消息队列方面表现还可以,但是如果涉及发布订阅功能,就不行了,最近项目就使用了redis的发布订阅,每秒只能发出几千条,虽然目前绰绰有余,但是瓶颈可以预期。  其余的几种都是比较重量级的消息中间件,什么跨平台、分布式、集群、支持N种
T-Kernel 里有类似于 msleep() 的函数。 但是是忙等。参考:http://www.t-eng
原创 2023-05-04 16:21:36
86阅读
Android中的内存管理机制
转载 2023-06-26 11:03:37
258阅读
语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。对象的内存使用赋值语句是语言最常见的功能了。但即使是最简单的赋值语句,也可以很有内涵。Python的赋值语句就很值得研究。a = 1整数1为一个对象。而a是一个引用。利用赋值语句,
Linux内核是一个开源的操作系统内核,几乎被所有的Linux发行版所采用。在Linux内核中,有一个非常重要的数据结构被称为“slab”。Slab是一种高效的内存分配机制,它可以帮助操作系统更高效地管理内存。在这篇文章中,我将介绍Linux内核中的slab机制,并说明它对系统性能的重要性。 首先,让我们来了解一下什么是slab。在Linux内核中,slab是一种用于管理内存分配和释放的数据结构
原创 2024-04-03 10:47:19
95阅读
        映射是个术语,指两个元素的集之间元素相互“对应”的关系,为名词。“映射”或者“投影”,------------       内存映射文件,是由一个文件到一块内存映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存
转载 2018-07-14 21:48:03
613阅读
mmap 的原理 每一个进程都有一个列表 vm_area_struct,指向虚拟地址空间的不同的内存块,这个变量的名字叫 mmap。 其实内存映射不仅仅是物理内存和虚拟内存之间的映射,还包括将文件中的内容映射到虚拟内存空间。 这个时候,访问内存空间就能够访问到文件里面的数据。而仅有物理内存和虚拟内存 ...
转载 2021-06-30 23:49:00
266阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5