Differences

This shows you the differences between two versions of the page.

linux-kernel-internals [2014/04/04 09:41]
segoon
linux-kernel-internals [2014/04/28 13:57] (current)
segoon
Line 13: Line 13:
==== Лекции ==== ==== Лекции ====
-Предполагаемый список тем:+Cписок тем:
  - Роль операционной системы.   - Роль операционной системы.
  - Общая информация о Linux.   - Общая информация о Linux.
  - Адресное пространство процесса.   - Адресное пространство процесса.
 +  - Единицы планирования и контекст исполнения.
  - Режим пользователя и супервизора.   - Режим пользователя и супервизора.
-  - Синхронизация и синхронизационные примитивы. 
  - Модули ядра.   - Модули ядра.
-  - Единицы планирования и контекст исполнения.+  - Синхронизация и синхронизационные примитивы.
  - Виртуальная файловая система.   - Виртуальная файловая система.
 +  - Обработка событий ОС.
  - Загрузка ОС.   - Загрузка ОС.
 +
 +==== Рекомендуемая литература и сетевые источники ====
 +
 +  * Д. Бовет, М. Чезати.  Ядро Linux. Издательство: БХВ-Петербург.  (англ.: Understanding the Linux Kernel) (http://www.ozon.ru/context/detail/id/3589107/)
 +  * Robert Love.  Linux Kernel Development (3rd Edition).  Publisher: Addison-Wesley Professional  (http://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468)
 +  * Michael Kerrisk.  The Linux Programming Interface.  Publisher: No Starch Press.  http://man7.org/tlpi/
 +  * Linux: сетевая архитектура. Структура и реализация сетевых протоколов в ядре. Издательство: КУДИЦ-Образ.  (http://www.ozon.ru/context/detail/id/2441431/)
 +  * Intel® 64 and IA-32 Architectures Software Developer Manuals (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html)
 +  * https://www.kernel.org/
 +  * https://lkml.org/
 +  * https://lwn.net/
 +  * http://kernelnewbies.org/
 +
 +=== Литература и материалы к лекции 2 (Общая информация о Линукс) ===
 +
 +  * [[https://www.debian.org/releases/stable/i386/ch01s02.html.en|What is GNU/Linux?]], [[http://www.gnu.org/gnu/gnu-linux-faq.ru.html, Ричард Столмен. Вопросы о GNU/Linux]]
 +  * [[http://www.busybox.net/about.html|busybox]], [[https://lwn.net/Articles/440246/|ABS: The guts of Android]], [[https://www.debian.org/ports/kfreebsd-gnu/|Debian GNU/kFreeBSD]]
 +  * [[http://www.lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt|Just for fun]]
 +
 +
 +=== Литература и материалы к лекции 3 (адресное пространство процесса) ===
 +
 +  * Ядро Linux (Главы 2, 9).
 +  * Linux Kernel Development (Глава 15).
 +  * The Linux Programming Interface (Глава 49).
 +  * Intel® 64 and IA-32 Architectures Software Developer Manuals (Глава 4).
 +  * [[http://manpages.ubuntu.com/manpages/precise/en/man5/proc.5.html|proc(5)]].
 +  * Системные вызовы: [[http://manpages.ubuntu.com/manpages/precise/en/man2/mmap.2.html|mmap(2)]], [[http://manpages.ubuntu.com/manpages/precise/en/man2/mprotect.2.html|mprotect(2)]], [[http://manpages.ubuntu.com/manpages/precise/en/man2/brk.2.html|brk(2)]], [[http://manpages.ubuntu.com/manpages/precise/en/man2/ipc.2.html|ipc(2)]].
 +  * Структуры и функции ядра: [[https://github.com/torvalds/linux/blob/v3.8/include/linux/mm_types.h#L324|mm_struct]],     [[https://github.com/torvalds/linux/blob/v3.8/include/linux/mm_types.h#L227|vm_area_struct]],    [[https://github.com/torvalds/linux/blob/v3.8/include/linux/mm.h#L191|vm_operations_struct]],    [[https://github.com/torvalds/linux/blob/v3.8/arch/x86/mm/fault.c#L1005|__do_page_fault]],     [[https://github.com/torvalds/linux/blob/v3.8/mm/memory.c#L3672|handle_mm_fault]].
 +
 +=== Литература и материалы к лекции 4 (контекст исполнения и единицы планирования) ===
 +
 +  * Ядро Linux (Глава 3, Глава 4)
 +  * Linux Kernel Development (Глава 3, Глава 7, Глава 8)
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/sched.h#L144|process states (TASK_XXX)]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/sched.h#L1238|struct task_struct]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/interrupt.h#L412|XXX_SOFTIRQ]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/interrupt.h#L450|raise_softirq*()]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/interrupt.h#L446|open_softirq()]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/kthread.h#L22|kthread_run()]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/kthread.h#L41|kthread_stop()]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/kthread.h#L42|kthread_should_stop()]], [[https://github.com/torvalds/linux/blob/v3.8/kernel/kthread.c#L143|kthreadd()]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/interrupt.h#L129|request_irq()]]
 +
 +=== Литература и материалы к лекции 5 (Режим пользователя и супервизора) ===
 +
 +  * Ядро Linux (Глава 4).
 +  * Linux Kernel Development (Глава 5).
 +  * Intel® 64 and IA-32 Architectures Software Developer Manuals (Главы 5, 6).
 +  * [[https://github.com/torvalds/linux/blob/v3.8/arch/x86/kernel/entry_64.S#L576|system_call]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/arch/x86/include/asm/uaccess.h#L161|get_user()]], [[https://github.com/torvalds/linux/blob/v3.8/arch/x86/mm/extable.c#L17|fixup_exception()]]
 +
 +=== Литература и материалы к лекции 6 (модули ядра) ===
 +
 +  * Ядро Linux (Приложение 2)
 +  * Linux Kernel Development (Глава 17, Глава 6)
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/module.h#L100|MODULE_LICENSE,MODULE_AUTHOR,MODULE_DESCRIPTION]]
 +
 +
 +=== Литература и материалы к лекции 7 (Синхронизация и синхронизационные примитивы) ===
 +
 +  * Ядро Linux (Глава 5).
 +  * Linux Kernel Development (Глава 15).
 +  * Intel® 64 and IA-32 Architectures Software Developer Manuals (Глава 8, 8.1-8.3).
 +  * Примитивы: [[https://github.com/torvalds/linux/blob/v3.8/Documentation/atomic_ops.txt|atomic_t, barriers]], [[https://github.com/torvalds/linux/blob/v3.8/Documentation/spinlocks.txt|spinlock_t]], [[https://github.com/torvalds/linux/blob/v3.8/Documentation/mutex-design.txt#L116|mutex]]
 +  * [[https://github.com/torvalds/linux/blob/master/Documentation/lockdep-design.txt|lockdep]].
 +  * [[http://lwn.net/Articles/281938/|Big Kernel Lock]]
 +  * RCU:
 +    * [[https://github.com/torvalds/linux/blob/v3.8/Documentation/RCU/rcu.txt]]
 +    * [[https://lwn.net/Articles/262464/]]
 +    * [[https://lwn.net/Kernel/Index/#Read-copy-update]]
 +
 +
 +=== Литература и материалы к лекции 8 (виртуальная файловая система) ===
 +
 +  * Ядро Linux (Глава 12, Глава 14)
 +  * Linux Kernel Development (Глава 13, Глава 14)
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs_struct.h#L8|struct fs_struct]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fdtable.h#L46|struct files_struct]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L761|struct file]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1515|struct file_operations]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L521|struct inode]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1546|struct inode_operations]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/dcache.h#L103|struct dentry]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L406|struct address_space]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1234|struct super_block]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1590|struct super_operations]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L1802|struct file_system_type]], [[https://github.com/torvalds/linux/blob/v3.8/include/linux/fs.h#L431|struct block_device]]
 +  * [[https://github.com/torvalds/linux/blob/master/Documentation/filesystems/proc.txt|procfs]], [[https://github.com/torvalds/linux/blob/master/Documentation/filesystems/sysfs.txt|sysfs]], [[https://github.com/torvalds/linux/blob/master/Documentation/filesystems/tmpfs.txt|tmpfs]], [[https://github.com/torvalds/linux/blob/master/Documentation/filesystems/fuse.txt|fuse]], [[https://github.com/torvalds/linux/blob/master/Documentation/cgroups/cgroups.txt|cgroups]]
 +
 +=== Литература и материалы к лекции 9 (Обработка событий ОС) ===
 +
 +  * [[https://github.com/torvalds/linux/blob/master/Documentation/kernel-parameters.txt|kernel-parameters.txt]]
 +  * [[http://linux.die.net/man/8/acpid|acpid(8)]], [[http://wireless.kernel.org/en/users/Documentation/wpa_supplicant|wpa_supplicant]], [[https://wiki.ubuntu.com/AutomatedProblemReports|apport]]
 +  * [[http://w3.linux-magazine.com/issue/71/Dynamic_Device_Management_in_Udev.pdf|Dynamic_Device_Management_in_Udev.pdf]], [[https://web.archive.org/web/20110709174547/http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs|udev_vs_devfs]].
 +  * [[http://linux.die.net/man/8/modprobe|modprobe(8)]], [[http://linux.die.net/man/8/insmod|insmod(8)]], [[http://linux.die.net/man/8/depmod|depmod(8)]]
 +
 +=== Литература и материалы к лекции 10 (загрузка ОС) ===
 +
 +  * Ядро Linux (Приложение 1)
 +  * [[https://github.com/torvalds/linux/blob/v3.8/init/main.c#L468|start_kernel()]], [[https://github.com/torvalds/linux/blob/v3.8/init/main.c#L807|kernel_init()]], [[https://github.com/torvalds/linux/blob/v3.8/Documentation/init.txt|init errors]]
 +  * [[https://github.com/torvalds/linux/blob/v3.8/Documentation/initrd.txt|initrd]], [[https://github.com/torvalds/linux/blob/v3.8/Documentation/x86/boot.txt|boot header]]
 +  * [[http://devicetree.org/Device_Tree_Usage|device tree here]], [[https://github.com/torvalds/linux/blob/v3.8/Documentation/devicetree/usage-model.txt|and here]]
=== Дополнительное задание ==== === Дополнительное задание ====
 
linux-kernel-internals.txt · Last modified: 2014/04/28 13:57 by segoon
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki