gem-universe / blog

0 stars 0 forks source link

[操作系统]20. C 标准库和实现 #24

Open supergem3000 opened 6 months ago

supergem3000 commented 6 months ago

20. C 标准库和实现 (jyywiki.cn)

libc简介

The C Standard Library,世界上 “最通用” 的高级语言库函数。 被很好地标准化:ISO IEC 标准的一部分;POSIX C Library 的子集。 libc基本功能:Freestanding环境也可以使用的定义(stddef.h - size_t... / stdint.h - int32_t, uint64_t...),字符串/数组操作(string.h)等等 注意:标准库只对 “标准库内部数据” 的线程安全性负责

操作系统对象与环境

*`FILE `** 背后其实是一个文件描述符,对操作系统对象的封装。

popen和pclose 打开另外一个程序,输入输出通过管道。

No such file or directory等出错信息 不同程序错误信息是相同的,是每个程序都把错误信息写在自己程序里了吗?是操作系统包装好的,通过errno区分。

`char environ环境变量** 这个环境变量是在main之前,_start阶段赋值的。char ** envp = argv + argc + 1;`,可以知道,操作系统做了一些操作,在所有argv后面放了一个0,再紧接着就是环境变量。这些内容也就是操作系统给进程的初始状态中的一部分。

动态内存管理

在大区间[L, R)中维护互不相交的区间的集合。 实现高效的malloc/free:根据不同workload做不同的优化。 指导思想:分配相应大小的对象,也应该有相应的读写,否则就是performance bug(不应该分配那么多) 小对象分配频繁,大对象分配频率低。设置两套系统:Fast Path/Slow Path Fast Path:性能极好、并行度极高、覆盖大部分情况,但有小概率会失败 (fall back to slow path)。 Slow Path:不在乎那么快,但把困难的事情做好。 例如,多处理器每个处理器分配一段本地内存,给Fast Path用,不用上锁;Slow Path再考虑全局分配上锁的事。