Главная страница
Навигация по странице:

  • Книги по основам построения операционных систем

  • Книги о ядрах других операционных систем

  • Второе издание


    Скачать 3.09 Mb.
    НазваниеВторое издание
    Дата08.09.2019
    Размер3.09 Mb.
    Формат файлаpdf
    Имя файлаLav_Robert_Razrabotka_yadra_Linux_Litmir.net_264560_original_254.pdf
    ТипДокументы
    #86226
    страница52 из 53
    1   ...   45   46   47   48   49   50   51   52   53
    г
    Библиография
    и список литературы
    С
    писок литературы отсортирован и содержит некоторые из самых интересных и полезных книг, которые близки по теме, или дополняют материал данной книги.
    Полезность этих книг проверена временем. Некоторые из них представляют со- бой "священные писания" но соответствующим темам, в то время как другие просто кажутся автору интересными, глубокими или занимательными. Автор надеется, что читателю они тоже окажутся полезными.
    Наилучшая ссылка на "дополнительное чтение", которая лучше всего дополняет материал данной книги — это исходный код ядра. Для работы с ОС Linux у нас есть неограниченный доступ к полному исходному коду ядра современной операционной системы. Не принимайте это как должное! Разберитесь с ним! Читайте код! Пишите код!
    Книги по основам построения
    операционных систем
    В этих книгах рассмотрены принципы работы операционных систем в объеме учебных курсов. В них описываются основные понятия, алгоритмы и проблемы, свя- занные с построением высокофункциональных операционных систем, а также реше- ния указанных проблем. Все эти книги могут быть рекомендованы, но если нужно выделить одну, то это, конечно, книга Н. Deitel.
    • Deitel H., Deitel P. and Choffnes D. Operating Systems. Prentice Hall, 2003.
    Прекрасная книга по теории операционных систем с отличными примерами из теории и практики. Автор помогал в техническом редактировании этой книги, что, может быть, и является причиной его предвзятого отношения, но все же хочется верить, что от этого книга стала значительно лучше.
    • Tanenbaum Andrew. Operating Systems: Design and Implementation. Prentice Hall, 1997.
    Хорошие начальные сведения об оснопах построения, принципах работы и ре- ализации Unix-подобной операционной системы Minix.

    • Tanenbaum Andrew. Modern Operating Systems. Prentice Hall, 2001. Детальный об- зор стандартных проблем разработки операционных систем, а также обсужде- ние многих концепций, которые используются в современных операционных системах, таких как Unix и Windows.
    • Silberschatz A., Galvin P. and Gagne G. Operating System Concepts. John Wiley and
    Sons, 2001. Также известна, как "книга про динозавров", в связи с тем что на обложке нарисованы динозавры, которые не имеют никакого отношения к теме. Хорошее введение в основы построения операционных систем. Книга часто перерабатывается, но все издания должны быть хорошими.
    Книги о ядрах Unix
    В этих книгах описываются принципы работы и особенности реализации ядер
    Unix. В первых пяти рассмотрены конкретные варианты Unix, в двух последних —
    общие моменты всех вариантов Unix.
    • Bach Maurice. The Design of the Unix Operating System. Prentice Hall, 1986.
    Обсуждение особенностей построения операционной системы Unix System V,
    Release 2.
    • McKusick M., Bostic K., Karcls M. and Quarterman J. The Design and Implementation
    of the 4.4BSD Operating System. Addison-Wesley, 1996. Описание особенностей по- строения и реализации операционной системы 4.4BSD от разработчиков этой системы.
    • McKusick M. and Neville-Neil G. The Design and Implementation of the FreeBSD
    Operating System. Addison-Wesley, 2004. Основы построения операционной систе- мы FreeBSD 5.
    • Mauro J. and McDougall R. Solaris Internals: Core Kernel Architecture. Prentice Hall,
    2000. Интересное обсуждение основных подсистем и алгоритмов работы ядра
    ОС Solaris.
    • Cooper С. and Moore С. HP-UX Lli Internals. Prentice Hall, 2004. Обзор внутренне- го устройства операционной системы HP-UX аппаратной платформы PA-RISC.
    • Vahalia, Uresh. Unix Internals:The New Frontiers. Prentice Hall, 1995. Отличная кни- га о возможностях современных Unix-подобных операционных систем, вклю- чая управление потоками и вытеснением кода в режиме ядра.
    • Schimmel Curt. UNIX Systems for Modern Architectures: Symmetric Multiprocessing and
    Caching for Kernel Programmers. Addison-Wesley, 1994. Прекрасная книга о пробле- мах поддержки современных аппаратных платформ современными Unix-подоб- ными операционными системами.
    Книги о ядрах Linux
    В этих книгах, как и в текущей, рассказывается о ядрах Linux.
    • Rubini A. and Corbet J. Linux Device Drivers. O'Reilly and Associates, 2001. Прекрасная книга о том, как писать драйверы устройств для ядер Linux серии 2.4.
    434 Приложение Г

    • Bovet D. and Cesati M. Understanding the. Linux Kemel O'Reilly and Associates, 2002.
    Обсуждение основных алгоритмов работы ядер Linux серии 2.4. Основное вни- мание уделено основополагающим принципам функционирования ядра.
    • Mosberger D. and Eranian S. IA-64 Linux Kernel: Design and Implementation. Prentice
    Hall, 2002. Отличная книга, посвященная аппаратной платформе Intel Itanium и ядру Linux серии 2.4 для этой аппаратной платформы.
    Книги о ядрах других операционных систем
    Понимать врагов, точнее не врагов, а конкурентов, — никогда не повредит. В этих книгах обсуждаются основы работы и особенности реализации операционных си- стем, отличных от операционной системы Linux. Смотрите, что у них хорошо, а что — плохо.
    • Kogan M. and Deitel H. The Design of OS/2. Addison-Wesley, 1996. Интересный об- зор операционной системы OS/2 2.0.
    • Solomon D. and Russinovich M. Inside Windows 2000. Microsoft Press, 2000.
    Интересный взгляд на операционную систему, которая чрезвычайно отличает- ся от Unix.
    • Richter Jeff. Advanced Windows. Microsoft Press, 1997. Описание низкоуровневого и системного программирования под ОС Windows.
    Книги по API Unix
    Детальное описание системы Unix и API этой операционной системы важно не только для того, чтобы писать мощные прикладные программы, но и для понимания того, что требуется от ядра.
    • Stevens W. Richard. Advanced Programming in the UNIX Environment. Addison-Wesley,
    1992. Отличное, если не самое полное, обсуждение интерфейса системных вы- зовов Unix.
    • Stevens W. Richard. UNIX Network Programming, Volume 1. Prentice Hall, 1998.
    Классический учебник по API сокетов операционной системы Unix.
    • Johnson M. and Troan E. Linux Application Development. Addison-Wesley, 1998.
    Общий обзор операционной системы Linux и интерфейсов, которые специ- фичны для этой операционной системы.
    Другие работы
    Книги, которые не посвящены операционным системам, но имеют к ним прямое отношение.
    • Knuth Donald. The Art of Computer Programming, Volume 1. Addison-Wesley, 1997.
    Бесценный курс по фундаментальным алгоритмам и теории вычислительных систем, который включает лучшие и не самые лучшие алгоритмы управления памятью. (Имеется русский перевод: Кнут Дональд Эрвин. Искусство програм- мирования. Том 1. Основные алгоритмы, 3-е издание. - М: "Вильяме", 2000.)
    Библиография и список литературы 435

    • Kernighan В. and Ritchie D. The С Programming Language. Prentice Hall, 1988.
    Наилучшая книга по языку программирования С. (Имеется русский перевод:
    Брайан Керниган, Деннис Ритчи. Язык программирования С— М: "Вильяме",
    2005 г.)
    • Hofstadter Douglas. Godel, Escher, Bach: An Eternal Golden Braid. Basic Books, 1999.
    Глубокий взгляд на человечество через исследование различных предметов,
    включая компьютерные науки.
    Web-сайты
    Эти WWW-сайты предоставляют последние новости и другую информацию, свя- занную с операционной системой Linux и ее ядром.
    Kernel Traffic. Отличный обзор сообщений в списке рассылки разработчи- ков ядра Linux (lkml) за последнюю неделю (очень рекомендуется), h t t p : / /
    www.kerneltraffic.org/
    Linux Weekly News. Хороший сайт новостей о том, что произошло касательно ядра Linux за последнюю неделю, с прекрасными комментариями (очень реко- мендуется), http://www.lwn.net/
    Kernel Newbies. Сайт "Kernel Newbies" — это проект сообщества разработчиков с целью предоставления информации и помощи начинающим хакерам, которые стремятся заниматься разработкой ядра. http://www. kernelnewbies -org/
    Kernel.org. Официальный архив исходных кодов ядра. Здесь также находятся до- машние страницы многих разработчиков основных подсистем ядра с соответ- ствующими заплатами http://www.kernel.org/
    KernelTrap. Сайт, посвященный всему, что связано с ядром операционной систе- мы, с большим уклоном в сторону ядра Linux. На сайте много информации о новостях и обзорах из области разработки ядра Linux. Здесь также в большом количестве размещаются интервью с ведущими разработчиками ядра. h t t p : / /
    www.kerneltrap.org
    OS News. Новости об операционных системах, а также статьи, интервью и обзо- ры из этой же области. http://www.osnews.com/
    Сайт, посвященный этой книге. Новости, сообщения об ошибках и другая инфор- мация, которая касается этой замечательной книги. h t t p : / / t e c h 9 . n e t / r r a l /
    kernel_book/
    436 Приложение Г

    Предметный указатель
    А
    Application Programing Interface, API, 96
    E
    Exception, 99; 110
    G
    gec, 40
    аннотация ветвлений, 41
    встроенный ассемблер, 41
    функции с подстановкой тела, 40
    Granularity, 174
    L
    Linux Kernel Mail List, 405
    lkml, 405
    P
    POSIX, 96
    S
    SHA, 425
    SMP-привязка, 71
    T
    Task, 46
    Translation lookaside buffer, TLB, 329
    V
    Virtual memory area, 316
    VMA, 316
    A
    Адресное пространство плоское, 311
    процесса, SI 1; 313
    сегментированное, 311
    структура address_space, 297; 333
    address_space_operations, 334
    Алгоритм, 429
    Аппаратная платформа, 391
    Атомарные операции, 177
    битовые, 181
    change_bit(), 182
    clear_bit(), 182
    set_bit(), 182
    test_and_change_bit(), 182
    test_and_clear_bit(), 182
    test_and_set_bit(), 182
    test_bit(), 182
    отладка, 381
    тип atomic_t, 178
    целочисленные, 178
    atomic_add(), 180
    atomic_add_negative(), 180
    atomic_dec_and_test(), 180
    atomic_inc(), 180
    atomic_inc_and_test(), 180
    atomic_read(), 180
    atomic_set(), 180
    atomic_sub(), 180
    atomic_sub_and_test(), 180
    Б
    Бинарное дерево, 314
    базисное, 335
    красно-черное, 320
    Блок, 294
    Блокировки advisory, IBS
    dcache_lock, 282
    deadlock, 172
    deadly embrace, 172
    dentry->d_lock, 282
    inode_lock, 273
    lock contention, 174
    mmlist_lock, 314
    page_table_lock, 329
    sell-deadlock, 172
    voluntary, 168
    xtime_lock, 219
    большая блокировка ядра (BKL), 197
    lock_kernel(), 198
    unlock_kernel(), 198
    захват, 198
    освобождение, 198
    взаимоблокировка, 172
    типа AВВА, 172
    в обработчиках нижних половин, 159
    защита данных, 186
    конфликт при захвате, 168; 174
    навязываемые, 168
    необязательные, 168
    обязательные, 168
    порядок захвата, 173
    преемптивность, 184
    применение, 167
    рекомендуемые, 168
    рекурсивность, 185
    самоблокировка, 172; 189
    секвентные, 199; 222
    read_seqbegin(), 199
    read_seqretry(), 199
    write_seqlock(), 199
    write_sequnlock(), 199
    захват на запись, 200
    проверка чтения, 200
    семафоры, 184; 190
    DECLARE_MUTEX(), 193
    DECLARE_RWSEM(), 195
    down(), 192; 193
    down_interruptible(), 193
    down_read(), 195
    down_write(), 195
    init_MUTEX(), 193
    init_rwsem(), 195
    sema_init(), 193
    up(), 192
    up_read{), 195
    up_write(), 195
    бинарные, 192
    захват, 194
    захват на запись, 195
    захват на чтение, 195
    инициализация, 193; 194
    инкремент, 192
    использование, 196
    мьютекс, 192
    освобождение, 194
    особенности, 191
    осовобождение, 195
    проверка, 192
    реализация, 190
    счетчик, 192
    чтения-записи, 195
    состояние конфликта, 183
    спин-блокировки, 183
    read_lock(), 188
    read_unlock(), 188
    spin_is_locked(), 186
    spin_lock(), 184
    spm_lockbh(), 187
    spin_lock_init(), 186
    spin_lock_irq{), 186
    spin_lock_irqsave(), 185
    spin_try_lock(), 186
    spin_unlock(), 184
    spin_unlock_bh(), 187
    spin_unlock_irq{), 186
    spin_unlock_irqrestore(), 185
    write_lock(), 189
    write_unlock(), 189
    в обработчиках нижних половин, 187
    записи, 188
    захват, 187
    захват на запись, 190
    захват на чтение, 190
    инициализация, 187; 190
    использование,189; 196
    освобождение, 187
    отладка, 186; 381
    преемптивность, 200
    проверка, 190
    проверка состояние, 187
    чтения,188
    структуры completion, 196
    rw_semaphore, 195
    semaphore, 193
    тупиковая ситуация, 172
    условные переменные, 196
    complete(), 197
    wait_for_completion(), 197
    Блочное устройство
    RAID, 300
    очередь запросов, 301
    сегмент, 298
    структура bio, 298
    bio_vec, 298
    buffer_head, 296; 300
    request, 301
    request_queue, 301
    Буфер, 295
    быстрого преобразования адреса (TLB), 329
    заголовок, 295
    кольцевой,377
    сообщений ядра, 377
    состояние, 296
    В
    Ввод-вывод страничный, 331
    Виртуальный ресурс память, 45; 311
    процессор, 45
    Возможность использования, 103
    CAP_SYS_TIME, 223
    Время абсолютное (wall time), 207; 208; 221
    начало эпохи (epoch), 222
    операции gettimeofday(),223
    settimeofday(), 223
    относительное, 207
    time_after(), 216 438
    Предметный указатель
    time_after_eq(), 216
    time_before(), 216
    time_before_eq(), 216
    работы системы (uptime), 208
    часовой пояс (time zone), 223
    Выравнивание, 396
    естественное, 396
    массивов, 397
    нестандартных типов данных, 397
    объединений, 397
    переменных, 396
    полей структур, 398
    проблемы, 397
    структур, 397
    Вытеснение, 66; 164
    г
    Генератор случайных чисел, 423
    Головка, 295
    Гранулярность, 174
    cource, 174
    fine, 174
    уровень крупных структурных единиц, 174
    уровень мелких структурных единиц, 174
    д
    Дайджест сообщения, 425
    Демон klogd, 377
    kupdated, 339
    pdflush, 297; 337; 339
    diity_background_ratio, 338
    dirty_expire_centisecs, 338
    dirty_rado, 338
    dirty_writeback_centisecs, 338
    laptop_mode, 338
    предотвращения зависания, 340
    syslogd, 377
    Деннис Ритчи, 23
    Джон фон Нейман, 424
    Дональд Кнут, 430
    3
    Задание, 46
    Задача, 46
    Заплата генерация, 412
    представление, 413
    применение, 413
    утилиты diff, 412
    diffstat, 413
    patch, 412
    Заполнение структур, 398
    И
    Инсталляция модулей, 38; 347
    ядра, 38
    Исключительная ситуация, 99; 110
    Истинно случайные числа, 423
    К
    Кен Томпсон, 23
    Кластер, 295
    Клод Шеннон, 423
    Код ядра дерево, 34
    заплаты, 34
    инсталляция, 33
    конфигурация, 35
    make config, 36
    make defconfig, 36
    make gconfig, 36
    make menuconfig, 36
    make oldconfig, 37
    make xconfig, 36
    переменные, 35
    файл .config, 36
    получение, 33
    сборка, 34
    параллельная, 37
    Константа
    __BIG_ENDIAN,401
    __LITTLE_ENDIAN, 401
    BITTS_PER_LONG, 392
    HZ, 401
    PAGE_SHIFT, 403
    PAGE_SIZE, 403
    Конфигурация
    CONFIG_PREEMPT, 171
    CONFIG_SMP, 171
    Кэш буферный, 336
    дисковый, 331
    страничный, 331
    Л
    Линус Торвальдс, 25
    м
    Масштабируемость, 71; 174
    О(1),419;431
    О(n),421;431
    алгоритмов, 429
    Машинное слово, 391
    Многозадачность preemptive, 66
    вытесняющая, 66
    Предметный указатель
    439
    кооперативная, 66
    преемптивная, 66
    Множество большого-О, 430
    болыного-тета, 430
    Модуль загружаемый, 343
    depmod, 348
    EXPORT_SYMROL(), 353
    EXPORT_SYMBOL_GPL(), 353
    insmod, 348
    Makefile, 346
    make modules_install, 347
    modprobe, 348
    MODULE_AUTHOR(), 345
    module_exit(), 344
    module_init(), 344
    MODULE_LICENSE(), 345; 354
    module_param(), 351
    module_param_array(), 353
    module_param_array_named(), 353
    module_param_named(), 352
    module_param_string, 352
    MODULE_PARM_DESC(), 353
    rmmod, 348
    зависимости, 347
    загрузка, 348
    инсталляция, 347
    конфигурация, 349
    параметры, 351
    разработка, 343
    сборка, 345
    экспорт символов, 353
    н
    Наименьшая верхняя граница, 430
    Неатомарные операции битовые, 182
    find_first_bit(), 183
    find_first_zero_bit(), 183
    sched_find_first_bit(), 75
    Нижние половины, 132; 187
    bottom half, 134
    ]ocal_bh_disable(), 160
    local_bh_enable(), 160
    softirq, 135; 136
    запрещение, 160
    интерфейс ВН, 134; 148
    :
    отложенное прерывание, 134; 169; 188
    open_softirq(), 140
    raise_softirq(), 140
    выполнение, 137
    вытеснение, 137
    генерация,137
    демон ksoftirqd, 138; 147
    индекс, 139
    использование, 139
    отдообработчик, 137
    регистрация, 140
    тасклет, 141
    структура softirq_action, 136
    tasklet_struct, 141; 144
    тасклет, 134; 139; 169; 187
    DECLARE _TASKLET(), 144
    DECLARE_TASKLET_DISABLED(), 144
    tasklet_disable(), 145
    tasklet_disable_nosync(), 145
    tasklet_enable(), 145
    tasklet_hi_scbedule(), 142
    tasklet_init(), 144
    tasklet_kill(), 145
    tasklet_schedule(), 142; 145
    обработчик, 142
    планирование, 142; 145
    реализация, 141
    создание,144
    О
    Область памяти, 311; 316
    деревья, 320
    интервал адресов, 317
    операции, 319
    close(),319
    nopage(), 320
    open(), 319
    populate{),320
    права доступа, 317
    списки, 320
    структура vm_area_struct, 319
    vm_operations_struct, 319
    флаги, 317
    защиты, 325
    Объект kobject, 356
    kobject_get(), 361
    kobject_init(), 360
    kobject_put(), 361
    kobject_set_name(}, 361
    декларация, 360
    захват, 361
    инициализация, 360
    освобождение, 361
    присвоение имени, 361
    счетчик ссылок, 361
    Операционная система
    Linux, 25
    Multics, 23
    Unix, 23 440
    Предметный указатель

    AT&T, 23
    BSD, 24
    особенности, 24
    многозадачная,65
    определение, 26
    с виртуальной памятью, 311
    Отладка
    BUG(), 382
    BUG_ON(),382
    dump_stack(),382
    атомарные операции, 381
    генерация ошибок, 382
    исследование и тестирование, 385
    конфигурационные параметры, 381
    магическая клавиша SysRq, 382
    ограничение частоты событий, 387
    утилита ksymoops, 380
    функция kallsyms, 380
    Отладчик gdb,384
    kdb,385
    kgdb,385
    Отложенное действие, 136
    cancel_delayed_work(), 156
    create_workqueue(), 156
    DECLARE_WORK(), 154
    flush_scheduled_work{), 155
    flush_workqueue(), 156
    INIT_WORK{), 154
    queue_work{), 156
    run_workqueue(), 152
    schedule_delayed_work(), 155
    schedule_work{), 155
    work_handler(), 154
    work queue, 149
    демон keventd, 157
    использование, 154
    ожидание завершения, 155
    очереди заданий, 134; 157
    планирование, 155
    рабочий поток, 150
    реализация, 150
    создание, 156
    структура cpu_workqueue_struct, 150
    work_struct, 151
    workqueue_struct, 150
    Отображение анонимное, 312; 325
    выполняемого кода, 312
    инициализированных переменных, 312
    области ввода-вывода, 319
    отладка, 381
    совместно используемое, 318; 322
    страницы памяти, заполненной нулями, 312
    файла, 322; 325
    частное, 318
    Очередь ожидания add_wait_queue(), 82
    DECLARE_WAIT_O_UEUE_HEAD(), 82
    remove_wait_queue(), 83
    1   ...   45   46   47   48   49   50   51   52   53


    написать администратору сайта