 |
|
 |
· Все темы · Графика (19 Дек, 2002) · Разное (03 Июл, 2003) · Обзоры (06 Мар, 2003) · Проекты (10 Янв, 2003) · Новости (13 Июл, 2003) · СОМ (17 Янв, 2003) · Сети (26 Июн, 2003) · OS (11 Апр, 2003) · Теория (27 Мая, 2003) · Web (17 Мар, 2003) · Драйвера (13 Июл, 2003)
|
|
 |
Автор |
Current process in Linux |
RXL
 Новичок Сообщений: 23 | Отправлено: 12 Мар, 2003 г. - 16:51   |
Выходит что так. А много ли ядру надо?
| |
SlavaI
 Хороший работник
 Сообщений: 494 | Отправлено: 12 Мар, 2003 г. - 16:59   |
Странно, как то не очень надежно выглядит, а если начнется вызов процедур одной из другой в драйвере, мало ли кто как пишет?
| |
RXL
 Новичок Сообщений: 23 | Отправлено: 12 Мар, 2003 г. - 22:01   |
Как правило начинающие программисты драйверов не пишут, а если и пишут, то ядро часто падает и без переполнения стека (сам такой ). IMHO: лезешь на нулевой уровень (полная вседозволенность и не контролируемость) - думай чего делаешь и, прежде чем запустить свое детище, еще раз подумай как оно будет работать.
Как-то ища утечки в своей программе я, заодно, проверил пиковое использование стека - получилось меньше 4кб. При этом в своих подпрограммах была вложеность около 20-ти, передача параметров в стеке, переменные на стеке (в среднем 16-20 байт), плюс PCRE библиотека (она часто использует рекурсию), плюс не оптимизированный код (отладочная сборка gcc -g).
По моим наблюдениям, код ядра написан очень толково, хорошо вылизан, объявления структур и массивов в стеке редкость, часто используются inline функции и макросы, плюс gcc хорошо оптимизирует код.
Всего то для чего нужен этот стек - обслужить один системный вызов - все остальное происходит в контексте пользователя или прерывания.
P.S.: вот почему ядро написано на С и ассемблере, а не на С++. За что я С и уважаю.
| |
|
|