Тут вопросик возник. Как понимать термин "ядро операционной системы"? Дайте плиз четкое определение. Образование непрофильное, сам не могу.
я понимаю это, как процедуру (программу, набор программ, код, функцию, код короче) отвечающей за "взаимопонимание" драйверов (как виндозное понятие, так и линоховое) и BIOSа вместе с какимилибо системными прерываниями... но я могу и ошибатся
Могу предложить свое. Ядро операционной системы - это часть ОС, выполняющаяся в специальном (привилегированном) режиме и отвечающая за управление аппаратными ресурсами, диспетчеризацию процессов и поддержку файловых систем и операций над ними, а также предоставляющая интерфейс программам пользователя к данным функциям.
Функциональный базис ОС. Входящие в него компоненты выводятся из определения ОС и ее функциональности. Думаю (специально вопросом не занимался, поэтому - imo), здесь стоит отметить загрузчик ОС (хотя, еще вопрос, стоит ли относить его непосредственно к ОС), систему ввода/вывода, менеджеры распределения памяти и процессов и API. Остальное - опционально. Справедливо для ProtMode, причем, справедливо условно - в "режиме ядра" можно пустить любой процесс, иногда даже там, где ось эту фишку не допускает. Да и придуман он лишь для удобства, чтобы юзерские процессы куда не надо не лезли. В RM же "специальные режимы" отсутствуют.
Protected/Real modes - это режимы одного-единственного типа процессоров - ix86. Нормальные процессоры таких терминов не знают, а знают режимы в смысле уровней привилегий выполняющихся процессов. Даже в случае, если у процессора отсутствует Memory Management Module (MMU), то процессы могут лазить "куда угодно" в смысле памяти, но не обязательно в смысле других аппаратных ресурсов, например, портов ввода/вывода. Я бы не стал относить загрузчик ОС к самой ОС... А то тогда и BIOS придется отнести к ОС... Система ввода/вывода и распределение памяти - это суть и есть управление аппаратными ресурсами.
Про "нормальные процессоры" не скажу, так как дальше х86 пока не ходил . Подумал немного и вспомнил, что взаимоотношения меж различными уровнями привилегий в х86 урегулируются процессором и существует набор команд, выполняющихся только в Ring0... Таки да, даже в случае PM для ядра будет нужен именно высший уровень. Возражения насчет RM остаются в силе . Согласен. Я, когда писал про загрузчик, несколько не в ту сторону думать начал...
Любые, которые написаны для использования в нем . Технические особенности в исходном вопросе - второстепенны. Следовательно, может быть рассмотрен любой вариант, для любой архитектуры. И каждый вариант должен быть учтен. Вот если бы привилегии присутствовали в работе любого процессора, и доступ к некоторым ресурсам, критичным в контексте работы оси возможен лишь с высшим уровнем - тогда да, их упоминание было бы значимым в рамках определения.
ядро операционной системы - это подсистема, состоящая из минимального набора компонент необходимого и достаточного для данной архитектуры ЭВМ и ОС и предназначенная для управления и контроля за работой всех остальных подсистем, причем компоненты ядра взаимодействуют между собой напрямую, при помощи формализованных интерфейсов, без посредников. как правило, ядро операционной системы работает в самом высоком по привелегиям режиме процессора. ПС. файловые процессы и управление памятью не обязательно должны входить в ядро. это не является необходимым условием.
В общем, напоминает мне эта дискуссия споры схоластов про количество ангелов на кончике иглы Или про попытку дать определение точке в геометрии. Или про спор в RU.OS.CMP, что такое файл. Там сошлись тогда, что файл - это именованная область на диске, иногда неименованная, иногда не область и не на диске. Кстати, бывает так, что ядро ОС есть, а самой ОС нет. Например, Linux. Реже бывает и наоборот - ОС есть, а ядра как такового может и не быть. А требование помещения файловой системы и управления памятью в ядро вытекает из требований по безопасности и разграничению доступа. А вообще, бывают ОС с монолитным ядром (традиционная UNIX) и с микроядерной организацией (QNX). Для этих типов требования и организация ядра кардинально различаются.
В-общем конечно тоже интересно, но предметом спора стало определение ядра Windows (если точнее - XP). Что-нибудь подытожим?
Beagle 2 нет такого требования. Carma я буду исходить из предположения, что ядро Windows XP эквивалентно ядру операционной системы Windows 2000. ядро операционной системы Windows XP - это подсистема, состоящая из следующих модулей/компонент, содержащих низкоуровневые функции для обеспечения работы операционной системы: планирование и распределение потоков, диспетчеризация прерываний и исключений, многопроцессорная синхронизация, а также набора подпрограмм и базовых объектов, необходимых исполняющей подсистеме. ПС. а файл - это это некий именованный объект, содержащий данные, не имеющий фиксированный объем и позволяющий опрерировать данными через ссылку на это имя, обладающий независимостью от расположения с однозначно определенным набором функций ОС, обеспечивающих обмен данными с файлом.
Какого? На принадлежность функций файловой системы (read, write, и так далее) ядру? Есть, если мы говорим о мультизадачной ОС, реализующей file locks и атомарность вышеупомянутых операций. Оперировать данными через ссылку на это имя, значит... А я могу вот такой фокус показать. В Unix временные файлы создаются таким образом - программа открывает временный файл где-нибудь в /tmp, получает дескриптор этого файла, и затем этот файл удаляет. Потом спокойно пишет/читает посредством дескриптора файла, хотя самого файла в списке ls -l уже нет. Очень удобно - не надо чистить за собой временные файлы. Получается, файл есть, а именованного объекта - нет.
Beagle 2 я перечислил то, что есть в ядре windows 2000, где там файловая система и управление памятью? странное какое-то требование получается - тут требуется, а тут не требуется. "самого файла в списке ls -l уже нет" так все-таки нет файла или нет в списке?
Если в перечисленном тобой нет файловой системы и управления памятью, то это не значит, что их там действительно нет Менеджер виртуальной памяти и драйверы файловые системы Windows NT выполняются в режиме ядра. Может, Олиферы тут и тут ошибаются? И вообще, в какой ОС драйверы выполняются в режиме пользователя, а не ядра? Нет именованного файла.
Beagle 2, Вы книги внимательно читаете? "Для этого в NT executive имеется специальный компонент - менеджер виртуальной памяти". если бы было так как говорите Вы, то они написали бы так: "Для этого в NT kernel имеется специальный компонент - менеджер виртуальной памяти есть подсистема ядро - kernel и есть исполняющая подсистема - executive. это РАЗНЫЕ подсистемы. я уже говорил - "ядро... ...а также набора подпрограмм и базовых объектов, необходимых исполняющей подсистеме." ради бога, пусть не будет "именованного файла" - это Ваш термин, а не мой. где в определении сказано о сроке "жизни" именованного объекта и что он обязан быть?
Кажется, пора определяться с терминами, если уж мы заговорили о Windows XP. Просто для меня ядро этой ОС - это файл ntoskrnl.exe. Да ну действительно, фиг с ним, с этим файлом... А то еще случится то же самое, что в RU.OS.CMP....
Beagle 2 типа Declaration of Terms use? Собственно в этом то и вопрос. Если это он, то какие функции выполняет, это и будет определением ядра Windows XP. Carma добавил [date]1078570994[/date]: Как в анекдоте - "А то получится как вчера"?
Типа да Вот я на него сейчас Exescope натравил и вытащил секцию Exports, в коей есть вызовы, относящиеся к функционированию файловой системы (Fs* - FsRtlInitializeFileLock, FsRtlProcessFileLock, ...), вводу-выводу (Io* - IoDeleteDevice, IoCreateDevice, ...) управлению памятью (Mm* - MmAllocateContiguousMemory, MmAllocateNonCachedMemory, ...), аутентификации (Lsa* - LsaLogonUser, ...), управления процессами и нитями (Ps* - PsGetCurrentProcess, PsGetCurrentThread, ...) и еще много чего, опознающегося уже с трудом. Есть, кстати, даже sprintf/memcpy/strlen и прочие Как бы не хуже
ну и ну!!! Beagle 2 "пора определяться с терминами, если уж мы заговорили о Windows XP. Просто для меня ядро этой ОС - это файл ntoskrnl.exe. " Carma "какие функции выполняет, это и будет определением ядра Windows XP. вполне может так получиться, что найценное Вами определение не будет соответствовать принятому в МС. :-) специально для Carma. я уже перечислил Вам то, чем занимается ядро Windows 2000. эта архитектура и эти термины используются в МС. то, что Вы там вместе с Beagle 2 для себя наопределяете - это и будет только для Вас. ПС. по-моему в RU.OS.CMP как раз по-этому и не могли договориться что такое файл. ППС. если уж так интересует ntoskrnl.exe, то вот Вам для помощи в "определениях" его составляющие части : кеш-менеджер, испольняющая подсистема, ядро, монитор безопасности, менеджер памяти и планировщик.
2 AlTk Ну и замечательно, я целиком и полностью согласен, что определения должны звучать так, как они были даны разработчиком. Другое дело, что если дается определение такого рода, то надо и указывать на источник - откуда взято. Даже в Средневековье все споры схоластов заканчивались сразу после предъявления цитаты из какой-нибудь книги Аристотеля
за то время, пока мы беседуем, можно было сходить купить книжку или найти информацию в сети. а источник информации я не скрываю - университет и http://www.microsoft.com :-)