Oct 31, 2021 22:41
Потому, что использовать опрос (epoll) в серверах означает "лютые тормоза". Рекомендую почитать главу "Пример сервера" (стр 116) в книге "Создание сетевых приложений в среде Linux" Шона Уолтона.
 
Jul 16, 2018 03:13
@Петр "в многоядерных процессорах на каждое ядро свой бит супервизора?" - на самом деле, есть разница между ЯДРОМ и ПРОЦЕССОРОМ. Для каждого процессора - свой бит привилегий, это очевидно. А вот как это сделано для ядер, честно говоря, не разбирался.
Jul 16, 2018 03:11
@
Jul 16, 2018 03:10
@Петр "прерывание остановит её выполнение полностью? Всех её потоков?" - разумеется - нет. Будет остановлен только поток, в котором вызвана функция чтения диска.
Jul 12, 2018 11:36
Когда процессор многоядерный (SMDP), всё несколько сложнее. Там несколько потоков ЯДРА могут работать одновременно в привелигированном состоянии. Но, по любому, приложения никогда не могут выполнять команды в режиме супервизора.
Jul 12, 2018 11:36
другие потоки смогут исполнять привилегированные команды? - ни в коем случае, ни при каких обстоятельствах, процессы пользователя не могут выполнять привилегированные команды. Они (процессы / потоки / нити) могут только просить ядро о выполнении нужных им действий, с помощью команды SVC.
Jul 12, 2018 11:36
на каждое ядро - свой бит гипер/супервизора? - нет. Это АППАРАТНЫЙ бит и управляется он аппаратно, а значит - являетсяя чатью АППАРАТУРЫ процессора, а не программы ядра.
Jul 12, 2018 11:36
@Петр если программе необходимо выполнить привилегированную команду - программа выполняет специальную команду, которая на разных процах называется по разному, а обобщённо: SVC - Supervise Call - обращение к супервизору. На языке программистов эта команда называется "программное прерывание".Прерывание - потому, что нормальный поток выполнения команд ПРЕРЫВАЕТСЯ и управление передаётся в ОС. При выполнении этой команды взводится бит "Супервизор" в процессоре. Операционная система анализирует кто и по какому поводу к ней обратился и выполняет нужные действия. Управление возвращается пользов.
Jul 12, 2018 11:36
В момент включения питания, поц переходит в режим супервизора и загружает ОС. Когда загрузка ОС завершена, сама ОС загружает приложение, обнуляет бит "Супервизор" и передаёт управление приложению. Приложение, завершив свою работу, выполняет команду возврата в ОС, что сопровождается установкой бита "Супервизор". Всё !!! Ну, в общих чертах...
Jul 12, 2018 11:36
Что ей может помешать это сделать? - в каждом проце (которые подразумевают работу под ОС) есть специальный бит "Режим супервизора". Весь набор команд, который может выполнять проц делится на две категории: простые и привелигированные. Когда очередная команда программы достаётся из памяти и помещается на регистр команд, она проверяется - к какой группе команд она относится. Если команда обычная - она просто исполняется. Если команда привелигированная, то проверяется состояние бита "Супервизор". Если там "0" - программа снимается. Если "1" - команда выполняется.
Jul 12, 2018 11:36
Но ведь простой и понятный ответ уже дал andreymal ! Ответ в одну строчку! Ещё раз; - Абсолютно ВСЕ команды процессора доступны программе, исполняемой в режиме супервизора. - Все остаальные программы (непривелигированные) вынуждены ПРОСИТЬ у ОС выполнить недоступные им действия - например - работу с файлом. И ОС уже сама решает, что можно, а что - нельзя.
 
Jul 4, 2018 13:25
будет невозможно определить - почему невозможно? Читаем из файла пакеты, пока они нормальные. Последний может оказаться битым. Его просто отбрасываем..
Jul 4, 2018 13:25
Я что-то не понимаю проблемы... Если после последнего слова данных (на которое указывает поле "длина данных" из заголовка пакета) расположена CRC32 и она ПРАВИЛЬНАЯ - то какие могут быть сомнения в целостности пакета? А если она не правильная - то какие могут быть сомнения в том, что пакет - битый?! Даже если передаваемые данные в точности идентичны, то CRC32 будет различной, если в заголовок добавить поле "номер пакета".
 
Jul 4, 2018 13:25
запись данных - ну вот, значит пишутся всё-таки данные, а не указатели. Тогда вопросов нет.
Jul 4, 2018 13:25
То, что когда через неделю, какая-то программа попытается прочитать этот файл с УКАЗАТЕЛЯМИ, то куда они будут указывать ?! На какую память?
Jul 4, 2018 13:25
Меня смутило описание Вашей структуры struct s_pack. Использование в этой структуре УКАЗАТЕЛЕЙ - это просто намёк на массивы переменной длины?
 
May 18, 2017 09:51
почему именно упала мощность? - ну а такую тупую вещь, как перегрев проца - Вы исключаете? Может просто вентилятор отключился и операционка понизила скорость работы процессора ?