Martins3.github.io icon indicating copy to clipboard operation
Martins3.github.io copied to clipboard

Kernel qestion

Open Martins3 opened this issue 5 years ago • 30 comments

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 ?
  • [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 进程,总是在火焰图中遇到

Martins3 avatar Nov 13 '20 06:11 Martins3

  • [ ] 网络,从 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

Martins3 avatar Nov 13 '20 11:11 Martins3

  • [x] 一个 kvm 正在执行虚拟机,其代表的是 qemu 的一个进程,如何被 host scheduler 通知该结束了。

Martins3 avatar Nov 15 '20 17:11 Martins3

  • [ ] why device driver need major and minor number ?

Martins3 avatar Nov 26 '20 01:11 Martins3

  • [ ] 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

Martins3 avatar Nov 28 '20 13:11 Martins3

  • [ ] https://www.cnblogs.com/LoyenWang/default.html?page=3
  • [ ] https://zhuanlan.zhihu.com/p/88883239
  • [ ] https://zhuanlan.zhihu.com/p/261669249

Martins3 avatar Mar 13 '21 12:03 Martins3

  • [ ] There is a typo in check_vma_flags
- VM_MAYWRITE VM_SHARED !VM_WRITE 
+ VM_MAYWRITE !VM_SHARED !VM_WRITE 

Martins3 avatar Mar 26 '21 07:03 Martins3

  • [x] how mkfifo works internally ?
mknod("aaa", S_IFIFO|0666)            = 0

man is easy, but what's relation with pipe.

Martins3 avatar Mar 31 '21 06:03 Martins3

  • [ ] mmdrop()
  • [ ] mmgrab()
  • [ ] vm_normal_page()
    • [ ] why some page can work without struct page
    • [ ] check comments above it
    • [ ] do_wp_page's reference
  • [ ] 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

Martins3 avatar Apr 09 '21 12:04 Martins3

  • [ ] 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 这个目录就是多余的

Martins3 avatar May 25 '21 06:05 Martins3

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

Martins3 avatar Jun 01 '21 14:06 Martins3

  • [ ] DAX 和 direct_io 的区别 ? https://blog.csdn.net/maokelong95/article/details/107195192

Martins3 avatar Jul 20 '21 03:07 Martins3

什么是 LVM : https://opensource.com/business/16/9/linux-users-guide-lvm

Martins3 avatar Jul 30 '21 11:07 Martins3

  • [ ] https://mp.weixin.qq.com/s/Libck5PxN9fMl3r_ZIYYF : 有趣的文档
  • [ ] CMA https://biscuitos.github.io/blog/CMA/

Martins3 avatar Aug 05 '21 04:08 Martins3

  • [ ] https://mp.weixin.qq.com/s/yHHYjxZjF7nc7urbilGzSA coredump 文件如何生成的

Martins3 avatar Aug 06 '21 02:08 Martins3

  • [ ] netlink 机制 : https://zhuanlan.zhihu.com/p/386405400

Martins3 avatar Aug 06 '21 13:08 Martins3

  • [ ] softirq 的执行一部分可以继续, 上下文中,也可以在 softirqd 中间执行,如何选择的
  • [ ] fd , file struct, inode

Martins3 avatar Sep 01 '21 12:09 Martins3

到底什么是 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) ✗

Martins3 avatar Nov 28 '21 13:11 Martins3

  • __init__ 是做啥用的?
    • 显然,是用于将一些函数放到一个 section 上,但是,为什么需要将这些函数放到一个 section, 放或者不放的依据是什么。

Martins3 avatar Jan 15 '22 07:01 Martins3

  • [ ] what's percpu's meaning in handle_irq_event_percpu?

Martins3 avatar Mar 09 '22 15:03 Martins3

  • 了解一下 mkinitrd 这个命令吧

Martins3 avatar Apr 02 '22 14:04 Martins3

分析 https://github.com/torvalds/linux/blob/master/drivers/irqchip/irq-loongson-liointc.c 才知道 generic irqchip ,感觉好迷惑啊

Martins3 avatar Apr 20 '22 14:04 Martins3

viritofs 如何实现的 ?

Martins3 avatar May 03 '22 13:05 Martins3

  • qemu 的 common-user/ 存在架构的 hacking 的代码,信号和 syscall

Martins3 avatar May 03 '22 13:05 Martins3

  • [ ] 到底一共存在多少总线类型 ? PCI PCIE I2C ()

Martins3 avatar May 13 '22 02:05 Martins3

内核模块动态装载的原理是什么?export_symbols 的原理是什么?

Martins3 avatar May 13 '22 09:05 Martins3

  • virtio 和设备模拟都是发生在 IO 线程中的,为什么还是会降低性能。

Martins3 avatar May 26 '22 09:05 Martins3

libos 的工作原理:

  • 例如 https://github.com/hermitcore/libhermit-rs

Martins3 avatar Jun 08 '22 08:06 Martins3

https://github.com/mengning/mykernel : 检查一下,为什么这里就是只要 qemu -kernel 就是运行的,顺便帮忙其回答的为什么 make allnoconfig 是不能运行的

Martins3 avatar Jun 17 '22 05:06 Martins3

需要过一遍的 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

Martins3 avatar Jul 03 '22 12:07 Martins3

  • 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

Martins3 avatar Jul 03 '22 13:07 Martins3