Kernel qestion
Question && Reading material
- [x] dcache
- [x] file-lock
- [x] cgroup
- [ ] irq
- [ ] https://os.phil-opp.com/ : 用于理解CPU 这边的底层,一共三篇文章
- [ ] vmscan 和 cgroup 和配合使用,page-writeback 和 cgroup 的配合使用
- [x] KSM
- [x] CAM : https://zhuanlan.zhihu.com/p/105745299
- [ ] struct page 的各种 flags 的作用
- [ ] pet_young && pte_dirty
- [x] pte_young works with dma ?
- [ ] pet_young && pte_dirty
- [x] exec 如何准备即将切换的程序的地址空间,是不是首先需要将当前的 mm 的地址空间的移动上去
- [x] scheduler 的 weight share 计算
- [x] thread_info 的构造和作用,在 context switch 的作用
- [x] slub freeze
- [x] lock : Runing kernel chapter
- [x] rework slab, now that we have so many info
- [x] today, linux softirq
- [x] kdump
- [x] test it with qemu
- [ ] eBPF internal
- [ ] seccomp
- [ ] watchdog
- [x] kdump
- [x] swapper 进程,总是在火焰图中遇到
- [ ] 网络,从 nfs 开始入手吧!
- [ ] linux kernel labs have related material for socket and netfilter
- [ ] 并不是非常相信,/proc 中内容是不受 cgroup 影响的。
- [ ] 如果在 QEMU 中间 perf,其结果是真实的吗 ?
- [ ] 了解一下,如何实现 fd 在进程之间的发送 : https://stackoverflow.com/questions/909064/portable-way-to-pass-file-descriptor-between-different-processes
- [x] 一个 kvm 正在执行虚拟机,其代表的是 qemu 的一个进程,如何被 host scheduler 通知该结束了。
- [ ] why device driver need major and minor number ?
- [ ] synthesis lectures
- [ ] Hardware and Software Support for Virtualization
- [ ] The Memory SystemYou Can’t Avoid It, You Can’t Ignore It,You Can’t Fake It
- [ ] Architectural and Operating System Support for Virtual Memory
- [ ] I NEED ALL THE PDF
- [ ] https://www.cnblogs.com/LoyenWang/default.html?page=3
- [ ] https://zhuanlan.zhihu.com/p/88883239
- [ ] https://zhuanlan.zhihu.com/p/261669249
- [ ] There is a typo in
check_vma_flags
- VM_MAYWRITE VM_SHARED !VM_WRITE
+ VM_MAYWRITE !VM_SHARED !VM_WRITE
- [x] how mkfifo works internally ?
mknod("aaa", S_IFIFO|0666) = 0
man is easy, but what's relation with pipe.
- [ ] mmdrop()
- [ ] mmgrab()
- [ ] vm_normal_page()
- [ ] why some page can work without
struct page - [ ] check comments above it
- [ ] do_wp_page's reference
- [ ] why some page can work without
- [ ] https://www.kernel.org/doc/html/latest/core-api/mm-api.html# : check the doc
- [ ] https://www.kernel.org/doc/gorman/html/understand/ : check the book
- [ ] access_ok()
- [ ] update_curr() scheduler_tick()
- [ ] redo hack linux kernel labs, so we can understand kobjs / sys / again
- [ ] https://kernelnewbies.org/FAQ
- [ ] why Linux need major and minor number?
- [ ] how mknod(2) works, it provides a dev_t to specify to which the device will link to
- 在写 bmbt 的时候,通过 cat /proc/partition 可以获取到 block 设备,需要 mknod 才可以将创建 /dev/nvme0n1,之后才可以将设备 mount 上去,感觉根本没有必要,我的感觉是, /dev 这个目录就是多余的
Tencent inspired my, actually.
- [ ] https://github.com/Tencent/TencentOS-kernel : it tells what an OS related work would be done in cloud platform
- [ ] https://github.com/Tencent/TencentOS-tiny
- [ ] DAX 和 direct_io 的区别 ? https://blog.csdn.net/maokelong95/article/details/107195192
什么是 LVM : https://opensource.com/business/16/9/linux-users-guide-lvm
- [ ] https://mp.weixin.qq.com/s/Libck5PxN9fMl3r_ZIYYF : 有趣的文档
- [ ] CMA https://biscuitos.github.io/blog/CMA/
- [ ] https://mp.weixin.qq.com/s/yHHYjxZjF7nc7urbilGzSA coredump 文件如何生成的
- [ ] netlink 机制 : https://zhuanlan.zhihu.com/p/386405400
- [ ] softirq 的执行一部分可以继续, 上下文中,也可以在 softirqd 中间执行,如何选择的
- [ ] fd , file struct, inode
到底什么是 loop devices ➜ uefi git:(master) ✗ for g in /dev/loop*;do lsblk $g done NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 4K 1 loop /snap/bare/5 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop1 7:1 0 30.9M 1 loop /snap/bash-language-server/13 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop10 7:10 0 61.9M 1 loop /snap/core20/1169 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop11 7:11 0 55.5M 1 loop /snap/core18/2253 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop12 7:12 0 167M 1 loop /snap/gitkraken/184 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop13 7:13 0 78.9M 1 loop /snap/flameshot/127 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop14 7:14 0 100.4M 1 loop /snap/drawio/134 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop15 7:15 0 65.2M 1 loop /snap/gtk-common-themes/1519 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop16 7:16 0 31.6M 1 loop /snap/bash-language-server/27 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop17 7:17 0 219M 1 loop /snap/gnome-3-34-1804/77 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop18 7:18 0 129.4M 1 loop /snap/slack/48 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop19 7:19 0 78.9M 1 loop /snap/flameshot/135 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop2 7:2 0 147.8M 1 loop /snap/chromium/1827 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop20 7:20 0 162.9M 1 loop /snap/gnome-3-28-1804/145 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop21 7:21 0 51M 1 loop /snap/snap-store/547 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop22 7:22 0 260.7M 1 loop /snap/kde-frameworks-5-core18/32 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop23 7:23 0 222.2M 1 loop /snap/code/82 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop24 7:24 0 79.4M 1 loop /snap/veloren/545 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop25 7:25 0 168.1M 1 loop /snap/gitkraken/185 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop26 7:26 0 311.7M 1 loop /snap/multipass/5317 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop27 7:27 0 144.6M 1 loop /snap/chromium/1810 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop28 7:28 0 11.7M 0 loop /tmp/tmp.YDeXk3PoRL NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop29 7:29 0 129.3M 1 loop /snap/slack/47 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop3 7:3 0 217.4M 1 loop /snap/code/81 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop30 7:30 0 93.5M 1 loop /snap/poedit/35 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop31 7:31 0 247.9M 1 loop /snap/gnome-3-38-2004/87 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop32 7:32 0 242.4M 1 loop /snap/gnome-3-38-2004/76 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop33 7:33 0 219M 1 loop /snap/gnome-3-34-1804/72 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop34 7:34 0 164.8M 1 loop /snap/gnome-3-28-1804/161 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop35 7:35 0 42.2M 1 loop /snap/snapd/14066 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop36 7:36 0 26.1M 1 loop /snap/taskbook/23 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop37 7:37 0 79.4M 1 loop /snap/veloren/546 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop38 7:38 0 54.2M 1 loop /snap/snap-store/558 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop39 7:39 0 32.5M 1 loop /snap/snapd/13640 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop4 7:4 0 99.5M 1 loop /snap/core/11798 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop40 7:40 0 65.1M 1 loop /snap/gtk-common-themes/1515 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop41 7:41 0 93.5M 1 loop /snap/poedit/40 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop42 7:42 0 27.8M 1 loop /snap/onefetch/1634 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop43 7:43 0 140K 1 loop /snap/gtk2-common-themes/13 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop44 7:44 0 228.1M 1 loop /snap/netease-music/2 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop45 7:45 0 27.8M 1 loop /snap/onefetch/1640 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop5 7:5 0 55.5M 1 loop /snap/core18/2246 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop6 7:6 0 99.4M 1 loop /snap/core/11993 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop7 7:7 0 61.9M 1 loop /snap/core20/1242 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop8 7:8 0 127.4M 1 loop /snap/multipass/6130 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop9 7:9 0 100.4M 1 loop /snap/drawio/133 lsblk: /dev/loop-control: not a block device ➜ uefi git:(master) ✗
-
__init__是做啥用的?- 显然,是用于将一些函数放到一个 section 上,但是,为什么需要将这些函数放到一个 section, 放或者不放的依据是什么。
- [ ] what's percpu's meaning in handle_irq_event_percpu?
- 了解一下 mkinitrd 这个命令吧
分析 https://github.com/torvalds/linux/blob/master/drivers/irqchip/irq-loongson-liointc.c 才知道 generic irqchip ,感觉好迷惑啊
viritofs 如何实现的 ?
- qemu 的 common-user/ 存在架构的 hacking 的代码,信号和 syscall
- [ ] 到底一共存在多少总线类型 ? PCI PCIE I2C ()
内核模块动态装载的原理是什么?export_symbols 的原理是什么?
- virtio 和设备模拟都是发生在 IO 线程中的,为什么还是会降低性能。
libos 的工作原理:
- 例如 https://github.com/hermitcore/libhermit-rs
https://github.com/mengning/mykernel : 检查一下,为什么这里就是只要 qemu -kernel 就是运行的,顺便帮忙其回答的为什么 make allnoconfig 是不能运行的
需要过一遍的 blog
- http://linuxperf.com/
- http://blog.chinaunix.net/uid/28541347.html
- https://www.hanbaoying.com/2017/04/07/qemu-hot-migration.html
- https://www.zhihu.com/column/c_1356539764733218816
- https://www.zhihu.com/column/openEuler-serial
- https://a13xp0p0v.github.io/2022/05/24/pwn-fuchsia.html
- https://a13xp0p0v.github.io/2018/07/07/kconfig-hardened-check.html
- https://a13xp0p0v.github.io/2018/04/28/Linux-Kernel-Defence-Map.html