Реализация мультизадачности
На сколько я себе представляю мультизадачность (в смысле реализацию переключения задач в PM), это методом прерывания от системного таймера. Но мне этот метод кажется глупым и неэффективным... А существуют ли какие нибудь другие методы реализации мультизадачности??? Более продвинутые???
Насколько я знаю, многозадачность в защищенном режиме осуществляется аппаратно, благодаря этому возможна многопроцессорность. Как именно переключаться между задачами я не знаю, возможно процессор сам выполняет все сегменты кода и системе нужно заботится только о разделение ресурсов. Я в этом сам начинающий и мне тоже необходимо это знать, может кто-нибудь расскажет поподробнее.
Многопроцессорность возможна совсем не благодаря многозадачности, наоборот сказать было бы логичнее... На однопроцессорных системах есть только псевдо многозадачность . Задачи переключаются по таймеуру, т.к. наверно этот вариант самый лучший и логичный (вытесняющая многозадачность). Бывают варианты, когда задача переключается по вызову сисфункции (какой-то функции ядра ос), но не думаю что такой вариант тебе понравится больше. Если интересно больше советую прочитать рассылку про защищённый режим Интела на wasm.ru
Codenet - конечно хороший сайт... но только вот не в нем, не вообще по интернету невозможно найти нормальной документации по программированию железа, про интерфейсы LPT COM USB, про IDE контроллеры, про i8042... Распинувку - вообще нереально...
Впрочем может я плохо ищу? Но вдруг здесь добрые люди подскажут какой - нибудь волшебный сайт где это все есть...
Наверно свою ось будешь писать? (я не смеюсь, сам в МеОС пытаюсь участвовать). Имхо самый коротки путь к достоверной информации, поискать на сайте производителей...
Один переключение по таймеру считает неэффективным, у другого многопроцессорность возможна только благодаря многозадачности (ты сам понял, что сказал?)... Попробую кое-что вам разъяснить...
Многозадачность по таймеру - действительно не самый эффективный способ, но это единственно возможный вариант настоящей многозадачности в однопроцессорных системах! Такую многозадачность принято называть вытесняющей. Обычно в современных системах совместно используются два способа переключения: по таймеру и когда приложение само отдает управление системе при обращении к системному сервису. В многопроцессорных системах и в системах на основе технологии HT операционная система сама распределяет все задачи между процессорами, т.е. на каждом из процессоров работает вытесняющая многозадачность, а между ними реальная (параллельная) многозадачность...
infernodiablo, в инете можно найти практически любую документацию по железу! Да и еще... ты в курсе, что есть такой форум как
Один переключение по таймеру считает неэффективным, у другого многопроцессорность возможна только благодаря многозадачности (ты сам понял, что сказал?)... Попробую кое-что вам разъяснить...
Многозадачность по таймеру - действительно не самый эффективный способ, но это единственно возможный вариант настоящей многозадачности в однопроцессорных системах! Такую многозадачность принято называть вытесняющей. Обычно в современных системах совместно используются два способа переключения: по таймеру и когда приложение само отдает управление системе при обращении к системному сервису. В многопроцессорных системах и в системах на основе технологии HT операционная система сама распределяет все задачи между процессорами, т.е. на каждом из процессоров работает вытесняющая многозадачность, а между ними реальная (параллельная) многозадачность...[/QUOTE]
Да... посмеятся конечно можно (тем более когда пишут что многопроцессорная система может работать токо в PM)... просто я в душе таил надежду того, что Intel или AMD и т.п., без моего ведома, может придумали аппаратную поддержку квантования процессорного времени между задачами.
Да, кстати, может подскажешь, для расширения кругозора, как инициируется второй процессор в двупроцессорных системах? Не уж то при старте машины они запускаются оба, только с разными CS EIP, или сначала запускается первый процессор, который специальными I/O командами запускает второй проц. который начинает выполнение программы в заданной первым процом входной точке?
Сначала запускается один процессор, а потом программно другой...
Я конечно извиняюсь, что сморозил глупость, я просто хотел сказать, что в однозадачной системе работать будет только один процессор и от второго прироста производительности не будет.
Ну и меня ты тоже извини... :)