Долго думал, куда поместить мессагу: в projects? в os.kernel? Решил сюда, т.к. ближе всего по теме. Сочиняю учебное пособие. В одной из глав будет кусок, посвященный системной организации "Окошек32". Написал и... не нравится. Ощущение, что слишком многое пропустил и упростил. Прошу помощи. Нужна квалифицированная, объективная, конструктивная критика. Попинайте, меня, пожалуйста! Объем текста около 600 кило, приаттачить к мессаге не смогу. Если есть желание помочь, напишите мне в личку drmad(гав!)dr.com, и я переправлю вам текст. Заранее спасибо.
стр. 2: 16-разрядные версиям Win32s - о ней ни слова, хотя Win16 рассматривается достаточно подробно. и иногда используются до настоящего момента. Речь о 95, 98 и ME. Я бы не сказал, что 9x используется "иногда", особенно специалистами в автоматизации, которые вообще любят 9x больше чем NT. А на десктопах 98 и ME встречаются довольно часто. Кое-где их ещё ставят на новые, но слабые, клоны. , а также совместимые с ними разработки фирм AMD, Cyrix и пр. Вместо Сирикс, я бы поставил хотя бы VIA раз уж в предложении явно упоминаются Пентиумы. Теме сегментной адресации, CPL, RPL, DPL, ... нужен хоть 1 рисуночек. Да и вообще с рисунками жидко. стр. 6: Два соседних линейных адреса могут отображаться на совершенно удаленные друг от друга физические адреса, а могут - на один и тот же. При сегментной адресации происходит тоже самое. Я бы рекомендовал рассматривать Win16, Win9x и WinNT отдельно друг от друга, а то в перемешку с ними можно запутаться. Так, я в одной теме думал, что речь идёт про 9х, а оказалось (при повторном прочтении) - про Win16. "Осилил" примерно половину. Завтра постараюсь дочитать.
Стр. 3 ... то некоторые версии MS Windows могут по мере необходимости переключаться в реальный режим..., но потом все равно возвращаться домой. – из защитного режима уже нельзя переключится в реальный, можно только изменить параметры защитного режима, но тогда это уже будет псевдореальный (встречал название в литературе еще как линейный) режим, да и стоит автоматизаторам рассказывать про Win 3.11, если ее использовать явно не будут(даже на старом оборудовании целесообразно использовать QNX) После прочтения остается ощущение что взяты куски из разных книг и накидано в одно место. Было бы неплохо разделить описание процессора с описанием виндовс. Также очень мало данных по dos-у, а особенно по dos расширителям, которых довольно часто используют в данной области. Я не соглашусь с Quantum на счет линии 9x, учитывая что на серьезном производство автоматизация осуществляется контролерами ( от siemens и т. д.) и компьютер используется лишь как интерфейс управления, то все преимущества 9x перед стабильностью nt ничего не стоят. В случае когда компьютер всеже используется для управления, то на нем обычно не стоит win по причине не предсказуемого времени отклика, а dos либо осрв. А посему зачем вообще описание win9x? Очень смущает местами очень детальное описание некоторых характеристик win (я наберусь наглости и скажу не полезных/не нужных характеристик) при бедном описании особенностей программирования. Совсем нет описания осрв. Я не сноб, но на территории СССР автоматизация на приемлемом уровне преподавалась лишь двух вузах, в одном из них точно, уже два года назад начали преподавание QNX-а. Ссылка – Приазовский Государственный Технический Университет, факультет ИТ, кафедре АТПиП(зав кафедры Симкин А.И.) Настоятельно рекомендую добавит материал (и исходники) по работе с COM, LPT в этих О.С. Не сочтите мою мессагу строгой, но некачественные доки и методы просто убивали меня в пору студенчества.
CodeTao это только на 286 нельзя, потом можно ) У Зубкова куча экзамплов на этом построено Интересная постановка вопроса - 3.1 надо, а 9х нет ) При программировании и отладке девайсов для автоматики через порты компьютера 9х однозначно удобнее НТ. [offtop] кроме того и сейчас для ооочень многих задач можно комфортно использовать, например PII, под win98, попробуй поставить на него ХР ) [/offtop]
Топик перенесли. Может, и к лучшему, больше народа прочитает. QUANTUM стр. 2: 16-разрядные версиям Win32s - о ней ни слова, хотя Win16 рассматривается достаточно подробно. Пара предложений есть. Дальше. и иногда используются до настоящего момента. Речь о 95, 98 и ME. Я бы не сказал, что 9x используется "иногда", особенно специалистами в автоматизации, которые вообще любят 9x больше чем NT. А на десктопах 98 и ME встречаются довольно часто. Кое-где их ещё ставят на новые, но слабые, клоны. Да. Именно так. Win 9X при том же чел-машинном и системно-прикладном интерфейсе гораздо ближе к железу. а также совместимые с ними разработки фирм AMD, Cyrix и пр. Вместо Сирикс, я бы поставил хотя бы VIA раз уж в предложении явно упоминаются Пентиумы. У меня VIA ассоциируется с северными и южными мостами, а не с процами. А вот про процы что-то другое смутно брезжит в памяти... Теме сегментной адресации, CPL, RPL, DPL, ... нужен хоть 1 рисуночек. Да и вообще с рисунками жидко. Угу. Подумаю. стр. 6: Два соседних линейных адреса могут отображаться на совершенно удаленные друг от друга физические адреса, а могут - на один и тот же. При сегментной адресации происходит тоже самое. М-м-м... Не совсем догоняю. Имеется в виду, что двумя разными парами сегмент/селектор можно указать в одно место? Я бы рекомендовал рассматривать Win16, Win9x и WinNT отдельно друг от друга, а то в перемешку с ними можно запутаться. Так, я в одной теме думал, что речь идёт про 9х, а оказалось (при повторном прочтении) - про Win16. Ага. Вот что значит "свежий глаз". Я все время боялся, заметно это или нет. Если бы мог, написал бы в 3 колонки. "Осилил" примерно половину. Завтра постараюсь дочитать. Заранее спасибо. CodeTao Стр. 3 ... то некоторые версии MS Windows могут по мере необходимости переключаться в реальный режим..., но потом все равно возвращаться домой. – из защитного режима уже нельзя переключится в реальный, можно только изменить параметры защитного режима, но тогда это уже будет псевдореальный Угу. Понимаю. что Коряво и мутно получилось. Хотелось одним предложением сказать и что Вин9Х для ДОСовских прог в ВМ86 переключается, а 32-разрядные проги через специальные шлюзы 16-разрядный системный код юзают. После прочтения остается ощущение что взяты куски из разных книг и накидано в одно место. Почти так. В основе: Фроловы, Зубков, Паппас/Марри, чуть-чуть Интеловских мануалов, пара-тройка статей из Тырнета, личные прогулки в компании с ТД32 и ВинАйсом. В Литературе все ссылки обязательно будут. Все это проглочено, переварено, лишнее (или не лишнее?) отрыгнуто, а то что осталось - вот оно. Было бы неплохо разделить описание процессора с описанием виндовс. А они разве выглядят вместе? Хорошо, по другому оформлю заголовки. Также очень мало данных по dos-у, а особенно по dos расширителям, которых довольно часто используют в данной области. Именно да. Такой кусок есть, и довольно большой. Просто я его не включил в эти фрагменты, потому что к нему у меня меньше недоверия. Я не соглашусь с Quantum на счет линии 9x, учитывая что на серьезном производство автоматизация осуществляется контролерами ( от siemens и т. д.) и компьютер используется лишь как интерфейс управления, то все преимущества 9x перед стабильностью nt ничего не стоят. В случае когда компьютер всеже используется для управления, то на нем обычно не стоит win по причине не предсказуемого времени отклика, а dos либо осрв. А посему зачем вообще описание win9x? Вообще, все так и одновременно не так. Если говорить именно о "промышленной" автоматизации, то там все просто: какой контроллер купил - то и имеешь. Купил контроллер от Пеп/Контрон, имеешь проц МС86К и OS-9. Купил дешевый (до 500-700$) контроллер с х86, на нем ДОС. Купил дорогой - на нем Вин ХПЕ. Купил Сименс, имеешь кота в мешке. И все это с заточенными под конкретное железо либами и дровами, ваять что-нибудь иное - себе дороже. Часто целевая ОСь скомпонована в сверхкомпактном варианте: микроядро + необходимые дрова, а среда разработки с окошками и дебагерами живет в Виндах. А вот в области "лабораторной" автоматизации (например, в АСНИ) железо обычно нестандартное, требования к реальному времени жестче, вообще соотношение сбора данных/управления к обработке другое, да и требования непрерывной работоспособности в течение, например, года, нет. Поэтому вот тут обычно юзают обычные персоналки (изредка, в особых случаях, в "промышленном" исполнении) и софт пишут полностью сами. И вот тут маздай, кстати, наиболее быстрое и дешевое решение. QNX 6.x Neutrino - он только для некоммерческих приложений (для образования и т.п.) бесплатен, а в остальных случаях, увы, будь добр. ТО же самое касается и остальных ОС РВ. Очень смущает местами очень детальное описание некоторых характеристик win (я наберусь наглости и скажу не полезных/не нужных характеристик) при бедном описании особенностей программирования. Каких именно? А куски прог обязательно будут - в тексте коротенькие, на полстранички, а длинные пойдут в Приложения. Совсем нет описания осрв. Я не сноб, но на территории СССР автоматизация на приемлемом уровне преподавалась лишь двух вузах, в одном из них точно, уже два года назад начали преподавание QNX-а. Ссылка – Приазовский Государственный Технический Университет, факультет ИТ, кафедре АТПиП(зав кафедры Симкин А.И.) Есть. Просто не в этом разделе. И теория планирования параллельных задач, и механизмы синхронизации, и обзоры QNX, и OS-9/9000, и VxWorks, и немножко про Линух/РТ, и даже про ОС2000. )) Просто объем ограничен, да и дрова под QNX я почти не умею. А насчет преподавания автоматизации - тема эт объемная и сложная, требует хорошего коллектива преподов и немалых финансовых вложений в железо и софт. Даже если специализацию берет под крыло какая-нибудь организация, занимающаяся автоматизацией, от она и делает это с конкретным прицелом на подготовку сотрудников для себя любимой. Например, у нас на факультете есть специализация АСРВ, которая по требованиям курирующей фирмы изучает только технологии Сименс. Все остальное просто скипается за ненадобностью. Подозреваю, что и в других местах все примерно так же. Другая крайность - коллективы преподов, которые застряли в Сов. Союзе. Нам до сих пор присылают из МОрквы методические разработки (с требованием обязательно учесть и заюзать!), в которых упоминаютс СМ-4, RSX, Фортран и т.п. В каком они веке живут и в какой стране? Настоятельно рекомендую добавит материал (и исходники) по работе с COM, LPT в этих О.С. Да. Будет. Наверное, даже не я буду эти куски писать. А может и я. И COM (кроме RS-232 плюс обязательно RS-485/422), и Centronix, и usb, и can, и hart, может быть даже еще КОП/GPIB (ибо клятые буржуи все еще продолжают клепать цифровые осциллографы и спектрометры с приборным интерфейсом). Не все одинаково подробно, в основном, видимо, все-таки последовательные интерфейсы. Ибо куда не плюнь, а на приборы ставят именно их, а не USB или упаси Боже, Езернет. Кстати, QUANTUM за прошедший год пока не убедил меня, что если два компа связать 0-модемной веревочкой, то они сами снюхаются по скоростям и форматам. )) Не сочтите мою мессагу строгой, но некачественные доки и методы просто убивали меня в пору студенчества. Так и надо. Сам мучительно пытаюсь вспомнить, чего же мне в итоге потребовалось то, чего не дали в институте. ПОка получается так: справочные сведения и конкретные умения пригодись на 25-30%, зато до сих пор очень не хватает общих представлений, общей системы знаний, желательно без дырок и разрывов. И некоторых разделов матики. ALL Повъедливей, пожалуйста. Мне до сих пор кажется, что я какую-то принципиальную дурь сказанул. Например, вот я отдельно рассматриваю сегментную и страничную адресацию, тогда как вторая без первой в чистом виде не бывает. Это принципиально?
1) Картинок селекторов и дескрипторов действительно не хватает. /мне вот понравились оные из [Intel® 64 and IA-32 Architectures Software Developer’s Manual. Volume 3A - System Programming Guide, Part 1] aka 253668.pdf / 2) Про FS регист, который имеет ненулевую базу. И цепочка SEH, которая раскручивается как не "адрес предыдущего", а как адрес следующего, т.е. последний обработчик - система. Еще про структуры адресуемые этим самым сегментным регистром (TEB'ы там разные и проч). 3) Было бы неплохо сказать пару или более слов о ntoskrnl. 4) В ntdll не нашёл syscall, только sysenter (KiFastSystemCall) и int 2Eh (KiIntSystemCall), причём выбор между этими двумя способами вызова ядро определяет динамически /здесь могу сам гнать не разбирался подробно/, т.к. идёт косвенный вызов этих строчек кода (здесь формируется адрес одного из способов - 7FFE0300h - xp sp2 ntdll).
Ага, значит пора мне перечитывать доки, спасибо. Камень не в мой огород - по мне 9x с 3.1 в топку. На счет портов, я где-то видел драйвер который открывает доступ к портам в NT. Просто когда винда падает вместо того что бы просто выдать ошибку возникает желание схватится за волосы и побиться головой об стенку Возможно я уж слишком предвзято отношусь к стабильности.
Точно. Пардон. Я имел в виду, что есть компании, которые на данный момент производят конкурентоспособные x86 процессоры, вроде VIA, а Сирикс то давно уже загнулась... Если подобрать значения в таблице дескрипторов сегментов. К примеру, 2 разных сегмента могут указывать на один и тотже базовый адрес: 1000h и 2000h могут оба указывать на 10000000h. Тогда 1000:1 и 2000:1 тоже будут соответствовать одному физическому адресу - 10000001. К слову, при сегментной адресации в реальном режиме (до 286) и на виртуальном V86 (в более поздних процессорах) тоже существовала возможность коллизий. Да я и сам усомнился, что это возможно, но девайс работал, хотя по документации скорости не совпадали, а посмотреть осциллографом я так и не удосужился. стр. 17: KERNEL - отвечала за общесистемные операции (файловый ввод-вывод, управление памятью, загрузку и выполнение программ, поддержку сетевых функций и т.п.) В кернеле win16 точно были какие-то сетевые функции? Вроде бы, даже в кернеле XP нет ничего сетевого.
asmfan И цепочка SEH, которая раскручивается как не "адрес предыдущего", а как адрес следующего, т.е. Да. Это вот как раз конкретный глюк. Спасибо. Было бы неплохо сказать пару или более слов о ntoskrnl. Но не в этом разделе, а там, где появится необходимость. Пока нет, но планируется. В ntdll не нашёл syscall, только sysenter (KiFastSystemCall) и int 2Eh (KiIntSystemCall), Не проверял, понадеялся на инфу из Тырнета. Но слегка удивлен. Выходит, если проц АМДшный, то только int 2E без альтернативы? Кто-нибудь, кто более в теме, может прояснить? CodeTao я где-то видел драйвер который открывает доступ к портам в NT. На самом деле, таких драйверов просто море. Лично я, когда нужно быстро, пользуюсь tvichw32 - не надо самому ничего писать и задумываться, в какой оси живешь. Quantum Я имел в виду, что есть компании, которые на данный момент производят конкурентоспособные x86 процессоры, вроде VIA, а Сирикс то давно уже загнулась... Да я понял. А кроме ВИА кто-нибудь еще? Да я и сам усомнился, что это возможно, но девайс работал, Так девайсы или компы? Про компы - нет, а про произвольный дивайс запросто могу поверить, потому что такие технологии точно есть, и в конкретный гаджет разработчики могли поставить как раз такую микруху. В кернеле win16 точно были какие-то сетевые функции? Х/з. Источник: Фроловы "Программирование в Windows 3.0" )) Впрочем, можно проверить. Дистрибут у меня где-то в чулане валяется, можно раскрутить и посмотреть в кернел дизассемблером. Так и сделаю. ALL Неужели ничего больше не царапает глаз? "Не верю!" (с)
drmad На слуху только ВИА, но должны быть и другие. Связка комп <-> принтер. Кто из них подстраивался под кого - х.з. Ну, на XP я уже проверил - нет ничего.
St Я не очень понял предолжение на стр. 6, что иммелось ввиду. В самой обычной прикладной проге 3-го кольца загляни в сегментные регистры DS и CS. И сразу поймешь. Quantum Ну, на XP я уже проверил - нет ничего. Короче, заглянул. Выяснилось: в Вин16 сетевые функции жили в USER, а не в KERNEL. Спасибо, сам бы не обратил внимание. Aquila Пиши скорее и положим на сайт )). Нечего пока. Но тема не закрыта. Кусков, в которых я не полностью уверен, у меня много.
CodeTao У нас именно так и сделано. Контроллер Allen-Bradley управляет печью и прессом, а наладчик через компьютер (486, DOS, супервайзерная программа не помню какой американской фирмы) задаёт ему параметры печи (температура, время разогрева) и пресса (усилие прессования, время прессования, уровни остановов и т.д.).