#wasm #os #linux
https://telegra.ph/Linux-中-RISC-V-的-mmap-的重大问题-01-29
冷知识Q&A
> RISC-V Linux 内存页表(vm_area)适配问题在供应链的什么层级?
首先man 上写的支持sv48,但代码支持不到 且语义错误 这不符合Linus的严谨度
答:在JVM,gcc-libs 层级,影响交叉编译
mmap还用于0copy fwrite() ,拒绝在用户态搞 IO Buffers
brk 是ELF体系下自带的内存池,暂存碎片化的小对象(4K分页后 lazy分配的)。其实 open() fd 也是个Refcount对象,因此,rm -rf 不像NT总提示文件未close()拒绝访问(还有内存不能BE READ ,坐和放宽,哈哈)
> x64 等ISA更费内存吗
确实,每个指针都占8byte,.so.text 段也会膨胀,只是整数计算和GPU无需这么高精度。(.rodata/bss 段不会,因为依然 int=i32,char=u8 , 另外这些段Addr<heap)
这不利于嵌入式,每条指令都耗电的。但SSE等特性、游戏的流畅度需要大量内存,所以32转64是种进步,更何况小白用户眼里下载 1G值1刀啊
.so段可以用
> 47bit?
在 webVM.io 试玩Linux(su密码是 password)是查不了这种运维命令:它只实现 ext2fs(on http byterange) 和 net 的沙盒
> 寻址?
对CPU和内存分时复用(并发,容器化..统一设备格式API)是kernel的基本功。
btw. sshfs,squashfs,overlayfs,snap 不是必须链接到FUSE,这只是微/宏内核之辩,类似于Android的反GPL C/S架构: system_server-AIDL-HAL.sysfs.dts
https://xiaolincoding.com/os/2_os_structure/linux_vs_windows.html#linux-的设计
线程,就是完全共享内存的多进程,使用strace 就会发现main()线程只是个进程组。免root gdb 据此实现AOP
内存段,能下载内存条~如swap分区就是时间换空间,反义词是ramdisk=rd
WinXP 启用/PAE后多进程可以突破4G内存限制。在分段寻址数组的DOS, size_t < void*
获取堆起始只需在putenv,asprintf,. 前调用 sbrk(0)。 stack可以在 gdb cat 里看 bt; 或
tcmalloc等堆分配器不会比GC简单。它们不会线性地查找4~?KB空闲链表或建正好够大的块,从而减少难以复用的碎片。这里不是说二叉"堆"算法,但它涉及 Hash桶,BitSet,Trie,线段树,SortedSet(RBt)—反正 Doug Lea 都会!
> BIT(38)?
作者希望一直使用sv48 MMU 模式,和x86一致
不然就需要先if(mmap) 一下,看是否支持sv57,我猜的
AI: 当 mmap 的文件大小超过虚拟地址空间的大小时,RISC-V 会返回 -ENOMEM 错误,而其他架构会返回成功。可能会给 RISC-V 的软件移植带来一些灾难问题。
> mmap() 到的bytes比read()更快吗?
从编程范式来讲,read+write(另存为式) IO 反而是最FP、最全拷贝的做法,而 mremap(mount,但挂载是对象树) 更适合随处+单次修改增长
FP的性能都很差。mmap 除了对碎片(npm,pip缓存..) 慢,不适合 line/request-buffered 等IO 需求(.sock vs SHM),它可以表示任何文件格式
只有从 load即拷贝+dump(csv/ini/bytes) 统一为单YAML编辑指针,才能完全避免
说人话: Linux 内存分页器和 FAT 等文件系统间只是算法的差异。今天,睡休眠已经取代开关机,内存和磁盘何必隔着序列化?像CRIU那样进程快照如何? C对数据结构的僵化早该退场了
#暴论 OSdev一点不比各语言的stdlib人聪明。 Linux内存段本该是C对象(不止有bytes)、而进程本该是C协程(不止能exit0),你看 ps|head 就知道那是
async 说白了,就是拿retAddr闭包"链表"当线程栈用,手动
只是DOM把内核允许死循环的洞补好罢了,让parallel,SIMD被严谨的 numpy,ForkJoin(PySpark~多线下载) 取代,用
DOM渲染器和linux/sched就是一类东西。如果学习WASM拒绝int指针,检查每次索引越界,userspace 内存地址完全隔离有鬼用?直接拿inode改文件内容,核内核外大和谐
反正Android,Web框架也必须做权限和apt管理,fd,cookie那就是RPC句柄嘛。SQL注入不就本来是想传bool函数来RPC,无奈PHP的operator重载力(DSL悟性)太差 只好去eval代码致RCE。 markdown 渲染杀死了评论区XSS。剩下的复杂性就是libs表现欲过剩,矫枉过正。我这就是唱Powershell 打POSIX
再比如eBPF抓包,这种程度的AOP,ruby js DevTools 玩烂了的东西,换API集 换到 globalThis=ld-linux(ver.so) 就变科技了,其实就是工具链烂 语法丑 👎
C 编译器总是做能截断struct val 的访问,做不检查接口的union{}多态,暴露不含size的list(美其名曰buffer&支持多返回),CLR和Go可没有,RESTful 则更加安全。py只靠ctypes+Rc 就干爆了strcat和各种野指针
C也没有匿名函数,所以
如果我们摒弃所有术语,只从语意和用户需求,自顶向下地谈,IT和CS的技术,往往只是被不断地跨端复制 👎
btw. so文件是 Singleton Object 的缩写 \: section-segment 则是常量池和堆。 gcc -static 只会打包有符号表的.o 汇编,是做tar 不涉及ld导出表
https://telegra.ph/Linux-中-RISC-V-的-mmap-的重大问题-01-29
冷知识Q&A
> RISC-V Linux 内存页表(vm_area)适配问题在供应链的什么层级?
首先man 上写的支持sv48,但代码支持不到 且语义错误 这不符合Linus的严谨度
答:在JVM,gcc-libs 层级,影响交叉编译
glibc.malloc() 会请求 brk(<128KB)或 mmap(-1=/dev/mem)
py.mmap(*fpage, access=PROT_EXEC); fpage=fd+len+offset
mmap(vaddr+len, PROT_EXEC, MAP_PRIVATE, fd+offset); MAP_FIXED=dup2=replace
mmap还用于0copy fwrite() ,拒绝在用户态搞 IO Buffers
brk 是ELF体系下自带的内存池,暂存碎片化的小对象(4K分页后 lazy分配的)。其实 open() fd 也是个Refcount对象,因此,rm -rf 不像NT总提示文件未close()拒绝访问(还有内存不能BE READ ,坐和放宽,哈哈)
> x64 等ISA更费内存吗
确实,每个指针都占8byte,.so.text 段也会膨胀,只是整数计算和GPU无需这么高精度。(.rodata/bss 段不会,因为依然 int=i32,char=u8 , 另外这些段Addr<heap)
这不利于嵌入式,每条指令都耗电的。但SSE等特性、游戏的流畅度需要大量内存,所以32转64是种进步,更何况小白用户眼里下载 1G值1刀啊
.so段可以用
readelf -Sd; ldd
查询, Termux.dev waydro.id MSYS2.org 能够跨 glibc,bionic,msvc libc 平台, just like webVM.io 😋 #recommend > 47bit?
2**32 /1024**3 =4GB, fat32单文件最大
2**47 /1024**4 =128TB, linux v6.6 单进程最大工作集
cat /proc/cpuinfo
可以看到CPU最大寻址范围在 webVM.io 试玩Linux(su密码是 password)是查不了这种运维命令:它只实现 ext2fs(on http byterange) 和 net 的沙盒
> 寻址?
对CPU和内存分时复用(并发,容器化..统一设备格式API)是kernel的基本功。
sudo cat /proc/self/maps|grep ]
里,地址从低到高是 heap(brk) stack vsyscall(类似 fakeroot,libfuse 等AOP)btw. sshfs,squashfs,overlayfs,snap 不是必须链接到FUSE,这只是微/宏内核之辩,类似于Android的反GPL C/S架构: system_server-AIDL-HAL.sysfs.dts
https://xiaolincoding.com/os/2_os_structure/linux_vs_windows.html#linux-的设计
线程,就是完全共享内存的多进程,使用strace 就会发现main()线程只是个进程组。免root gdb 据此实现AOP
内存段,能下载内存条~如swap分区就是时间换空间,反义词是ramdisk=rd
WinXP 启用/PAE后多进程可以突破4G内存限制。在分段寻址数组的DOS, size_t < void*
获取堆起始只需在putenv,asprintf,. 前调用 sbrk(0)。 stack可以在 gdb cat 里看 bt; 或
info proc all
tcmalloc等堆分配器不会比GC简单。它们不会线性地查找4~?KB空闲链表或建正好够大的块,从而减少难以复用的碎片。这里不是说二叉"堆"算法,但它涉及 Hash桶,BitSet,Trie,线段树,SortedSet(RBt)—反正 Doug Lea 都会!
> BIT(38)?
作者希望一直使用sv48 MMU 模式,和x86一致
不然就需要先if(mmap) 一下,看是否支持sv57,我猜的
AI: 当 mmap 的文件大小超过虚拟地址空间的大小时,RISC-V 会返回 -ENOMEM 错误,而其他架构会返回成功。可能会给 RISC-V 的软件移植带来一些灾难问题。
> mmap() 到的bytes比read()更快吗?
从编程范式来讲,read+write(另存为式) IO 反而是最FP、最全拷贝的做法,而 mremap(mount,但挂载是对象树) 更适合随处+单次修改增长
FP的性能都很差。mmap 除了对碎片(npm,pip缓存..) 慢,不适合 line/request-buffered 等IO 需求(.sock vs SHM),它可以表示任何文件格式
只有从 load即拷贝+dump(csv/ini/bytes) 统一为单YAML编辑指针,才能完全避免
malloc(手动"黏包"BUFSIZE)
和样板代码。但最前沿的,JSON的增量性序列化库 tree-sitter 都不好用。 为了0拷去用strcat,printf()
而拒绝模板字符串亏大了说人话: Linux 内存分页器和 FAT 等文件系统间只是算法的差异。今天,睡休眠已经取代开关机,内存和磁盘何必隔着序列化?像CRIU那样进程快照如何? C对数据结构的僵化早该退场了
#暴论 OSdev一点不比各语言的stdlib人聪明。 Linux内存段本该是C对象(不止有bytes)、而进程本该是C协程(不止能exit0),你看 ps|head 就知道那是
def pipe(): yield line
,再比较下 Promise.{all,race}
与O_NONBLOCK的 epoll 呢?async 说白了,就是拿retAddr闭包"链表"当线程栈用,手动
for(;;)getEvListeners(events.poll轮询)()
跑这些小线程,只为了更轻量(隔绝于竞态的 SIGINT等抢占式异步)只是DOM把内核允许死循环的洞补好罢了,让parallel,SIMD被严谨的 numpy,ForkJoin(PySpark~多线下载) 取代,用
job或yield(x).then(回调自身)
而无所谓"线程" "阻塞" 🐴DOM渲染器和linux/sched就是一类东西。如果学习WASM拒绝int指针,检查每次索引越界,userspace 内存地址完全隔离有鬼用?直接拿inode改文件内容,核内核外大和谐
反正Android,Web框架也必须做权限和apt管理,fd,cookie那就是RPC句柄嘛。SQL注入不就本来是想传bool函数来RPC,无奈PHP的operator重载力(DSL悟性)太差 只好去eval代码致RCE。 markdown 渲染杀死了评论区XSS。剩下的复杂性就是libs表现欲过剩,矫枉过正。我这就是唱Powershell 打POSIX
再比如eBPF抓包,这种程度的AOP,ruby js DevTools 玩烂了的东西,换API集 换到 globalThis=ld-linux(ver.so) 就变科技了,其实就是工具链烂 语法丑 👎
C 编译器总是做能截断struct val 的访问,做不检查接口的union{}多态,暴露不含size的list(美其名曰buffer&支持多返回),CLR和Go可没有,RESTful 则更加安全。py只靠ctypes+Rc 就干爆了strcat和各种野指针
C也没有匿名函数,所以
pthread_create(fn,必须绑定arg)
。对象和闭包都是代码+数据 是双指针。OOP就是FP,class是共享构造参数的多函数如果我们摒弃所有术语,只从语意和用户需求,自顶向下地谈,IT和CS的技术,往往只是被不断地跨端复制 👎
btw. so文件是 Singleton Object 的缩写 \: section-segment 则是常量池和堆。 gcc -static 只会打包有符号表的.o 汇编,是做tar 不涉及ld导出表
Telegraph
Linux 中 RISC-V 的 mmap 的问题
目前RISC-V Linux的mmap出现了一个和x86/arm都不一样的行为,我提交了一个patch希望得到一些Linux Kernel开发者声援,比较希望得到关注尽快合并进6.8 Kernel,否则可能随着sv48/sv57的机器越来越普及,rv的软件移植会带来一些灾难问题,也会影响一些内存需求较大的软件在RISC-V平台上的使用。 之前在linux v6.6的时候有人交了一个patch希望把rv上的mmap默认返回47bit以内的虚拟地址空间,因为一些JIT翻译的应用可能使用虚拟地址指针的高位用于…
螺莉莉的黑板报
【本报讯】首个超越 GPT-4o 的开源模型!Llama 3.1 泄露:4050 亿参数即将登场! 近日,Meta 的新一代大模型 Llama 3.1 在 Reddit 上被泄露,引发广泛关注。Llama 3.1 包含 8B、70B 和 405B 参数版本,基准测试显示其性能在多个领域超过了 OpenAI 的 GPT-4o 和 Claude Sonnet 3.5 等闭源模型。模型卡泄露的信息显示,Llama 3.1 使用了 15T+ tokens 进行训练,支持多语言,并进行了指令微调和合成数据训练。尽…
https://tttttt.me/danteslimbo/3368
duangsuse: #谈政事 UBI红利
这个普法现金是资本主义版的,收支透明,加上有新的AI奴隶, 结果会不一样
大跃进主要的问题不是大锅饭,而是完全禁止多劳多得,zz挂帅瞎指挥、浮夸风、高税收
UBI不是的,只是一种提升消费的福利,中国目前基本上还是负福利
某党普遍有一种错觉,饥荒都是福利陷阱导致的
那完全是错误归因,因为他们发的福利,是伴随政治经济翻天覆地变化来的。波波没有给人发福利,为什么也代来灾难? 美团讲师每天蹭吃蹭喝捡鸡腿,为啥没影响其他润人奋斗?
其实只要留一点点小产权,不要打鸡血瞎指挥,哪怕继续吃大锅饭、继续充胖子还鹅爹的粮,灾害情况都会好一半
那三年末,某些人要求「宁要核子不要裤子」,又说抗美援朝之流是「大仁政」,对农B救亡图存只是小的,它就是为了核子剥光衣服的🤡
多少地方农民吃观音土第二天就要撑死了,这核弹,保护的是他们的生命么? 幸好它抗美援朝,不然中国就是西朝鲜
duangsuse: #谈政事 UBI红利
这个普法现金是资本主义版的,收支透明,加上有新的AI奴隶, 结果会不一样
大跃进主要的问题不是大锅饭,而是完全禁止多劳多得,zz挂帅瞎指挥、浮夸风、高税收
UBI不是的,只是一种提升消费的福利,中国目前基本上还是负福利
某党普遍有一种错觉,饥荒都是福利陷阱导致的
那完全是错误归因,因为他们发的福利,是伴随政治经济翻天覆地变化来的。波波没有给人发福利,为什么也代来灾难? 美团讲师每天蹭吃蹭喝捡鸡腿,为啥没影响其他润人奋斗?
其实只要留一点点小产权,不要打鸡血瞎指挥,哪怕继续吃大锅饭、继续充胖子还鹅爹的粮,灾害情况都会好一半
那三年末,某些人要求「宁要核子不要裤子」,又说抗美援朝之流是「大仁政」,对农B救亡图存只是小的,它就是为了核子剥光衣服的🤡
多少地方农民吃观音土第二天就要撑死了,这核弹,保护的是他们的生命么? 幸好它抗美援朝,不然中国就是西朝鲜
Telegram
Dante's Limbo
#吐槽 #暴论
当然,更大规模更深入的 UBI 其实是有做过实验的,这个实验的结果,惨不忍睹。所有中国人都知道——大跃进。
之所以吐这个槽,是因为我在读萧冬连的 #筚路维艰
https://weibo.com/1560906700/OoUkbgQRs
当然,更大规模更深入的 UBI 其实是有做过实验的,这个实验的结果,惨不忍睹。所有中国人都知道——大跃进。
之所以吐这个槽,是因为我在读萧冬连的 #筚路维艰
https://weibo.com/1560906700/OoUkbgQRs