Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также

6.9.5. Макросы, используемые при установке дескрипторов

В sched.h и system.h определены несколько ассемблерных макросов для простого доступа и установки дескрипторов. Каждый вход TSS и LDT занимает 8 байт.

Манипулирование GDT дескрипторами системы:

  • _TSS(n)
    _LDT(n) предоставляют индекс в GDT для n-ой задачи.
  • _LDT(n) загружается в поле ldt структуры tss_struct при распараллеливании.
  • _set_tssldt_desc(n, addr, limit, type)
    ulong*n указывает на вход GDT для установки (см. fork.c).

База сегмента (TSS или LDT) устанавливается в 0хс0000000 + addr. Вот специфичные экземпляры описанного выше, где ltypy ссылается на байт, содержащий P, DPL, S, и тип:

         set_ldt_desc(n,addr) ltype=0x82

            P=1, DPL=0, S=0, type=2 означает вход LDT. limit=23=?
            пространство для 3 дескрипторов сегмента

         set_ldt_desc(n,addr) ltype=0x89

            P=1, DPL=0, S=0, type=9 означает доступный 80386 TSS
            limit=231 пространство для 1 tss_struct
  • load_TR(n), load_ldt(n) загружает дескрипторы для задачи с номером n в регистр задачи и ldt регистр.
  • ulong get_base(struct desk_struct ldt) берет базу из дескриптора
  • ulong get_limit (ulong segment) берет ограничение (размер) из селектора сегмента. Возвращает размер сегмента в байтах.
  • set_base(struct desk_struct ldt, ulong base), set_base(struct desk_struct ldt, ulong limit)
    Установит базу и ограничения для дескрипторов (4К неделимых сегментов). Ограничением здесь является действительно существующий размер сегмента в байтах.
  • _set_seg_desc(gate_addr, type, dpl, base, limit)

Значения по умолчанию 0х00408000 = ? D=1,P=1,G=0 В данный момент рабочий размер 32 бита и максимальный размер 1М. gate_addr должен быть (ulong*)

Приложения

Приложение А

Библиография

A.1. Аннотированная библиография

Эта аннотированная библиография охватывает книги по теории операционных систем так же, как и по разным видам программирования в среде UNIX. Указанная цена может быть точной, а может и нет, но будет вполне преемлема для правительственной работы. [Если у вас есть книга, которая, по-вашему, подходит для библиографии, напишите ее краткий обзор и пошлите необходимую информацию (заголовок,автор, издательство, ISBN и приблизительная цена) и обзор по адресу johnson@sunsite.unc.edu]. Эта версия постепенно отходит, в то время как появляется настоящая библиография.

Заглавие:          The Design of the UNIX Operating System
Автор:             Maurice J. Bach
Издательство:      Prentice Hall, 1986
ISBN:              0-13-201799-7
Приближенная цена: $65.00

Это одна из книг, которые Linus использовал при разработке Linux. Это описание структур данных, используемых в ядре System V. Множество имен важных функций в исходных текстах Linux пришли из этой книги, и названы по алгоритмам, представленным в ней. Например, если вы не можете догадаться, что делают функции getblk(), brelse(), bread(), breada() и bwrite(), глава 3 об'яснит это очень хорошо.

В то время как большинство алгоритмов схожи или одинаковы, стоит отметить несколько различий:

  • Буферный кеш Linux динамически перераспределяется под другой размер, так что алгоритм для действий по получению новых буферов немного другой. Поэтому об'яснение getblk(), приведенное выше, отличается от getblk() в Linux.
  • Linux не использует потоков в текущий момент, и, если потоки реализуются для Linux, желательно, чтобы они имели другую семантику.
  • Семантика и структура вызовов драйверов устройств другая. Концепция сходна, и еще стоит прочитать главу по драйверам устройств, но для подробностей по драйверам лучшая ссылка - The Linux Kernel Hackers' Gude.
  • Алгоритмы распределения памяти немного отличны.

Есть и другие маленькие отличия, но хорошее понимание этой книги поможет вам разобрать исходные тексты Linux.

    Заглавие:          Advanced Programming in the UNIX Environment
    Автор:             W. Richard Stevens
    Издательство:      Addison Wesley, 1992
    ISBN:              0-201-56317-7
    Приближенная цена: $50.00

Этот замечательный томик охватывает все тонкости, которые вы действительно должны знать, чтобы писать настоящие UN*X программы. Он включает обсуждение различных стандартов релизации UN*X, включая POSIX, X/Open XPG3и FIPS, и концентрируется на двух реализациях, SVR4 и предварительный выпуск 4.4 BSD, который упоминается в книге, как 4.3 + BSD.

    Заглавие:               Advanced 80386 Programming Techniques
    Автор:                  James L. turley
    Издательство:   Osborne McGraw-Hill, 1988
    ISBN:                           0-07-881342-5
    Прибл. Цена:    $22.95

Эта книга достаточно хорошо охватывает 80386, не затрагивая других аппаратных средств. В книгу включены примеры кода. Охвачены все главные возможности, также как и множество основных понятий. Книга включает следующие главы: Основы, Сегментация памяти, Уровни привелегий, Замещение страниц, Многозадачность, Связь между задачами, Обработка сбоев и прерываний, Эмуляция 80286, Эмуляция 8086, Отладка, Математический процессор 80387, Сброс и реальный режим, Аппаратное обеспечение, и несколько приложений включая таблицы управления памятью в качестве справочника.

У автора хороший стиль изложения: если у вас технический склад ума, вы найдете захватывающим чтение этой книги. Сильная сторона этой книги в том что автор не обьясняет ни как делать что либо под DOS, ни как обращаться с конкретной аппаратурой. Фактически единственное место где он упоминает DOS и PC-совместимое аппаратное обеспечение это во введении где он обещает больше не упоминать о них.

    Заглавие:               The C programming Language, second edition.
    Автор:                  Brian W. Kernighan and Dennis M. Ritchie
    Издательство:   Prentice Hall, 1988
    ISBN:                           0-13-110362-8
    Прибл. Цена:    $35.00

Библия по программированию на Си. Включает учебник по Си, справочник по UN*X интерфейсу, справочник по Си и справочник по стандартным библиотекам. Программируете на Си, купите эту книгу. Это просто.

    Заглавие:               Operating Systems: Design and Implementation
    Автор:                  Andrew S. Tanenbaum
    Издательство:   Prentice Hall, 1987
    ISBN:                           0-13-637406-9
    Прибл. Цена:    $50.00

В то время как эта книга имеет немного упрощенное описание некоторых тем и опускает некоторые важные моменты, она дает достаточно четкое представление о том что надо сделать чтобы написать операционную систему. Пол книги занимает исходный код клона UN*X называемого Minix, который основывается на микроядре, в отличии от Linux, который славится монолитным дизайном. Было сказано что Minix показывает возможность написания UN*X, основанного на микроядре, но не обьясняется в достаточной степени зачем нужно это делать.

Певоначально предполагалось что Linux будет доступной заменой для Minix фактически он первоначально должен был быть совместимым на уровне двоичного кода с Minix-386. Minix-386 был средой разработки под которой был раскручен Linux. В Linux нет кода Minix, но признаки этого наследия проявляются в таких вещах как файловая система Minix в Linux.

На ранних порах существования Linux, Эндрю Таненбаум начал жаркую войну с Linus по поводу разработки ОС, которая была интересной, если не поучительной.

Однако эта книга может оказаться стоящй для тех кто ищет доступного обьяснения основ ОС, так как в изложении Таненбаума они остаются наиболее понятными (и более занимательными, если вы не хотите скучать).

К сжалению упор делается на основы, в то время как такие вещи как виртуальная память не охвачены вообще.

    Заглавие:               Modern operating systems
    Автор:                  Andrew S. Tanenbaum
    Издательство:   Prentice Hall, 1992
    ISBN:                           0-13-588187-0
    Прибл. Цена:    $51.75

первая половина книги это перепечатка более ранней Operating systems, но эта книга включает некоторые вещи не раскрытые в ранней, включая такие вещи как виртуальная память. Minix не упоминается, но есть обзор MS-DOS и нескольких других распостраненных систем. Эта книга вероятно более полезна для тех кто зочет углубить свои знания, чем более ранняя книга Таненбаума Operating systems: Design and Implementation. Причину этого можно видеть в заголовке.. Однако что делает DOS в книге по СОВРЕМЕННЫМ операционным системам многие не могут понять.

    Заглавие:               operating Systems
    Автор:                  William Stallings
    Издательство:   Macmillan, 1992 (800-548-9939)
    ISBN:                           0-02-415481-4
    Прибл. Цена:    $??.??

Наиболее полнай текст по операционным системам, эта книга дает более глубокий подход к темам раскрытым в книге Таненбаума, и охватывает больше тем, имеет живой стиль мзложения. Эта книга охватывает все главные темы которые понадобятся вам для написания операционной системы, и делает это очень доступным образом. Автор использует примеры из трех главных систем сравнивая и противопоставляя их: UN*X, OS/2, и MVS. В каждом разделе эти системы используются для разяснения пунктов и приведения примеров реализации.

Темы охваченные в Operating Systems включают Нити (Связи), системы рельного времени, Планировка в Мультипроцессорах, распределенные системы, миграция процессов, и Безопасность, также как и стандартные темы как планировка управление памятью. Раздел по распределенной обработке похоже вполне современен, и я нахожу его очень полезным.

    Заглавие:               UNIX Network programming
    Автор:                  W. Richard Stevens
    Издательство:   Prentice Hall, 1990
    ISBN:                           0-13-949876-1
    Прибл. Цена:    $48.75

Эта книга охватывает несколько видов работы в сетях под UN*X, и содержит очень полезные справки по формам сетевой обработки которые она непосредственно не охватывает. Она охватывает TCP/IP и XNS особенно полно, и довольно исчерпывающе описывает как работают все вызовы. В ней также есть описание и пример кода использующего TLI System V, и достаточно полное описание IPC System V. Книга содержит много примеров исходного кода и много полезных процедур. Один из примеров это код реализующий используемые семафоры, основанный на частично- фрагментированной реализации которая применяется в System V.

    Заглавие:               Programming in the UNIX environment
    Автор:                  Brian W. Kernighan and Robert Pike
    Издательство:   Prentice Hall, 1984
    ISBN:                           0-13-937699 (hardcover) 0-13-937681-X (paperback)
    Прибл. Цена:    $??.??
                        Нет Аннотации.
    Заглавие:      Writing UNIX Device drivers
    Автор:                  George Pajari
    Издательство:   Addison Wesley, 1992
    ISBN:                           0-201-52374-4
    Прибл. Цена:    $32.95

Эта книга написана президентом и основателем Driver Design Labs, компании специалзирующейся на разработке драйверов устройств для UN*X. Эта книга отличное введение в порой суровый мир разработки драйверов устройств. Сначало кратко обсуждаются четыре основные типа драйверов (символьные, блочные, tty, STREAMS). Приведено множество полных примеров драйверов устройств разных типов, начиная с простейших и с растущей сложностью. Все примеры драйверов работают под UN*X на PC-совместимой аппаратуре. Включены следующие главы:

Character Drivers I: A Test Data Generator Character Drivers II:
An A/D Converter Character Drivers III: A Line Printer Block Drivers I:
A Test Data Generator Block Drivers II:
A RAM Disk Driver Block Drivers III: A SCSI Disk Driver Character
Drivers IV: The Raw Disk Driver Terminal Drivers I: The COM1 Port
Character Drivers V: A Tape Drive STREAMS Drivers I:
A Loop-Back Driver STREAMS Drivers II: The COM1 Port (Revisited) Driver
Installation Zen and the Art of Device Driver Writting.

Хотя множество вызовов используемых в этой книге Linux- не совместимы, присутствует общая идея, и большинство решений отображаются непосредственно в Linux.


[ Назад | Оглавление | Далее ]









helloworld.ru © 2001-2021
Все права защищены