C语言该怎么继续提高

不过国内的那个PG社区就算了,感觉就是为了社区而社区.

我是读完 C Programming Language 之后去读了 Advanced Programming in UNIX Environment 和 UNIX Network Programming, 然后试着读了一些 GNU 项目和Linux内核的源码,然后就该干什么干什么去了。

干就完了。编程语言这东西越用越熟悉。

看看手头有什么需要的小工具,可以尝试来写写。实在没想法,可以参考下面的链接: https://github.com/karan/Projects

问一下:鱼佬是谁?

正好我对存储有点了解,或许有空了也可以从这里看看。 :thinking:

telegram群里大佬把

这个有点兴趣,我很想搞清楚文件系统,虽然还不知道是什么

推荐先装个 linux 系统,用 C 语言学习一下 open/read/write/close 的使用。

文件系统就是负责在内核中实现这些接口和将数据写到磁盘,这是最基本的层面。

如果学完这些还有兴趣那可以深入考虑数据库原理和文件系统的具体实现。


唯一的问题这只能算是 C 语言的练习(基本功),和提高 C 语言能力大概是没啥关系(误。

2 个赞

PostgreSQL的内核使用POSIX标准的文件接口
所以你只会看到对mkdir等函数的封装
至于为什么封装,因为PostgreSQL需要将这些操作记录到日志,以及需要保证事务的隔离性
你说的文件系统和PG的储存代码不是一个层次的,前者更加底层.

哦。。我算是搞文件系统的吧。。看过zfs的一些设计,所以关注的是文件系统实现。

1 个赞

我会用linux,也会用c语言的操作文件的读写。我对操作系统的文件系统感兴趣,很好奇到底是什么玩意儿

2个我都想搞清楚,有可能吗?

当然可以,祝你好运!

1 个赞

又到了我最爱的列书单时间(误

文件系统包含在操作系统中,主要是两本书:

现代操作系统 MINIX作者写的,看完四舍五入就和linus当初写Linux时一个水准了。

现代操作系统:原理与实现 国内的书,包含了一些新的内容,据说评价不错。

关于文件系统的实现如果有兴趣的话最好了解一下历史,这里仅列出最重要的两篇论文:

A fast file system for UNIX 可以说现在文件系统的源头就在这。

The design and implementation of a log-structured file system 大名鼎鼎的LSM tree,搞kv数据库的都听说过。

上面两篇是针对机械磁盘的,新的SSD的物理特性可以看这篇论文:

A comprehensive survey of issues in solid state drives

当然还有最新的pmem设备这里就不列出来了(主要是我也没看过

数据库的话没啥好说的,初学看这个就行了。

数据库系统概念 这本书最好看英文原版。

然后可以参考一下PingCAP的资料:

https://github.com/pingcap/awesome-database-learning

8 个赞

收到!
非常感谢

关于 flash-memory SSD 的文件系统,可以看 F2FS: A New File System for Flash Storage | USENIX

关于 pmem 的文件系统可以看 NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories | USENIX

总的来说,存储系统是一个人概念上简单,细节上复杂的系统。有很多东西可以玩儿,但是玩儿多了容易头秃。

1 个赞

哦F2FS也挺重要,被我漏了。顺便老哥也是搞存储的啊 :joy:

研究生的时候搞了一些。很简单基础。都是皮毛知识 :laughing:

很好的建议,记住了

好的,收下…