реклама на сайте
подробности

 
 
> Принцип работы ОС, как?
Denisvak
сообщение Aug 21 2007, 18:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 7-03-06
Из: Санкт-Петербург
Пользователь №: 15 038



Добрый вечер.
Задача примерно такая...
Есть две-три функции которые крутятся в бесконечном цыкле - необходимо чтобы они выполнялись как бы паралельно, и процессорное время было поделено между ними поровну. Хочу разобраться как работают ОС и написать свой код для этого...применять какую либо готовую ОС не вижу смысла для подобной задачи...да просто хочется самому понять принцып.

Вопросы:
1.Есть код...те самые три функции...
Код
void Function_1(void){
    for(;;){
    ..............
    }
}
void Function_2(void){
    for(;;){
    ..............
    }
}
void Function_3(void){
    for(;;){
    ..............
    }
}


как делить между ними процессорное время? Так понимаю что таймером...но вот к примеру таймер сработал когда "мы" находились в середине функции Function_1...выполнение прервалось и перешли к Function_2...Function_3....дальше возвращаемся в Function_1. Но вот как узнать на каком участке кода "мы" прервали функцию и откуда надо продолжить её выполнение?



P.S. большая просьба не удалять тему...поиском пользовался но ничего не нашел sad.gif
Спасибо

Сообщение отредактировал Denisvak - Aug 21 2007, 18:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WHALE
сообщение Aug 23 2007, 18:56
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



А если чуть-чуть посложнее?
Код
void Function_1(void){
....
if(abcd) request_handling_Function_1=1;
}
void Function_2(void){
....
if(bcda) request_handling_Function_2=1;
}
void Function_3(void){
....
if(cdab) request_handling_Function_3=1;
}

void run(void)
{
for(;;)
{
  if(request_handling_Function_1){Function_1();request_handling_Function_1=0;}
  if(request_handling_Function_2){Function_2();request_handling_Function_2=0;}
  if(request_handling_Function_3){Function_3();request_handling_Function_3=0;}
}
}


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 18:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01343 секунд с 7
ELECTRONIX ©2004-2016