Unfortunately, a key part of the program above, where the shared counter is incremented, takes three instructions: one to load the value of the counter from memory into a register, one to increment it, and one to store it back into memory. Because there three instructions do not execute atomically(all at once), strange things can happen.
keyword: OSTEP
最近公司开始准备有人分享操作系统相关的内容了,推荐了这本书。可以考虑看下英文版的。
官网? pdf 豆瓣 bilibili
虚拟化
一个 cpu 当做多个 cpu 用,一个物理内存当做多个内存使用。
内存虚拟化的时候,按道理每次内存地址是一样的,但是现在为了安全考虑,每次分配的虚拟内存地址就不一样了。
还推荐了一本什么书的第九章?
《程序员的自我修养》里面有关于这个这部分的内容
可执行文件有 header,操作系统读取这个 header 来获取这个可执行文件的基本信息。
gdb
命令,一个调试可执行文件代码的工具w
命令不知道什么意思?微内核,宏内核。 ring0, ring3
原子操作
之前在听后端分享的时候知道了这个内容,就是不能再拆分的操作。当时的理解是表面的,其实真正的意义是这个操作是一次性完成的,中途不会被打断。这个在看 ostep 的时候了解的,在 2.3,第 10 页中,有这样一段话:
这里面的 atomically 就是原子化操作的意思。