Сообщение Re[4]: Эра магии - когда технология становится магией от 28.09.2024 22:46
Изменено 28.09.2024 22:51 vsb
Re[4]: Эра магии - когда технология становится магией
Здравствуйте, Pzz, Вы писали:
vsb>>Тем не менее никто не пишет программы с прерываниями в юзерспейсе. Любая программа с вводом-выводом взаимодействует в чётких точках вызова API. Кстати задумался даже — почему так. Вроде бы логично было бы дать операционной системе указатели на функции и чтобы она вызывала эти функции при вводе/выводе, аналогично тому, как это происходит с сигналами... Ну не суть, по факту так не делают. Поэтому таки детерминированность не ушла для 99% программистов, её аккуратно вернули на место.
Pzz>Гы. На JS только так и пишут. С асинхронными калбеками. Которе немного облагородили, завернув в promises, чтобы совсем уж не свихнуться.
Ну вот получается такая пирамида — операционная система получает прерывание, кладёт чего-то в какой-то буфер, потом программа в евентлупе тем или иным способом проверяет, что в этом буфере что-то получилось, вычитывает из него данные и вызывает коллбэк.
В принципе было бы интересно посмотреть на ОС, в которой этого промежуточного этапа нет. Пришло прерывание, тут же вызвался программный обработчик. Тут, конечно, много вопросов возникает — типа вообще нехорошо из обработчиков прерывания что-то нетривиальное делать и тд... Но может что-то придумали бы, чтобы избежать всей этой многоуровневой буферизации и перекладывания байтов из пустого в порожнее.
vsb>>Тем не менее никто не пишет программы с прерываниями в юзерспейсе. Любая программа с вводом-выводом взаимодействует в чётких точках вызова API. Кстати задумался даже — почему так. Вроде бы логично было бы дать операционной системе указатели на функции и чтобы она вызывала эти функции при вводе/выводе, аналогично тому, как это происходит с сигналами... Ну не суть, по факту так не делают. Поэтому таки детерминированность не ушла для 99% программистов, её аккуратно вернули на место.
Pzz>Гы. На JS только так и пишут. С асинхронными калбеками. Которе немного облагородили, завернув в promises, чтобы совсем уж не свихнуться.
Ну вот получается такая пирамида — операционная система получает прерывание, кладёт чего-то в какой-то буфер, потом программа в евентлупе тем или иным способом проверяет, что в этом буфере что-то получилось, вычитывает из него данные и вызывает коллбэк.
В принципе было бы интересно посмотреть на ОС, в которой этого промежуточного этапа нет. Пришло прерывание, тут же вызвался программный обработчик. Тут, конечно, много вопросов возникает — типа вообще нехорошо из обработчиков прерывания что-то нетривиальное делать и тд... Но может что-то придумали бы, чтобы избежать всей этой многоуровневой буферизации и перекладывания байтов из пустого в порожнее.
Re[4]: Эра магии - когда технология становится магией
Здравствуйте, Pzz, Вы писали:
vsb>>Тем не менее никто не пишет программы с прерываниями в юзерспейсе. Любая программа с вводом-выводом взаимодействует в чётких точках вызова API. Кстати задумался даже — почему так. Вроде бы логично было бы дать операционной системе указатели на функции и чтобы она вызывала эти функции при вводе/выводе, аналогично тому, как это происходит с сигналами... Ну не суть, по факту так не делают. Поэтому таки детерминированность не ушла для 99% программистов, её аккуратно вернули на место.
Pzz>Гы. На JS только так и пишут. С асинхронными калбеками. Которе немного облагородили, завернув в promises, чтобы совсем уж не свихнуться.
Ну вот получается такая пирамида — операционная система получает прерывание, кладёт чего-то в какой-то буфер, потом программа в цикле обработки событий тем или иным способом проверяет, что в этом буфере что-то получилось, вычитывает из него данные и вызывает коллбэк.
В принципе было бы интересно посмотреть на ОС, в которой этого промежуточного этапа нет. Пришло прерывание, тут же вызвался программный обработчик. Тут, конечно, много вопросов возникает — типа вообще нехорошо из обработчиков прерывания что-то нетривиальное делать и тд... Но может что-то придумали бы, чтобы избежать всей этой многоуровневой буферизации и перекладывания байтов из пустого в порожнее.
vsb>>Тем не менее никто не пишет программы с прерываниями в юзерспейсе. Любая программа с вводом-выводом взаимодействует в чётких точках вызова API. Кстати задумался даже — почему так. Вроде бы логично было бы дать операционной системе указатели на функции и чтобы она вызывала эти функции при вводе/выводе, аналогично тому, как это происходит с сигналами... Ну не суть, по факту так не делают. Поэтому таки детерминированность не ушла для 99% программистов, её аккуратно вернули на место.
Pzz>Гы. На JS только так и пишут. С асинхронными калбеками. Которе немного облагородили, завернув в promises, чтобы совсем уж не свихнуться.
Ну вот получается такая пирамида — операционная система получает прерывание, кладёт чего-то в какой-то буфер, потом программа в цикле обработки событий тем или иным способом проверяет, что в этом буфере что-то получилось, вычитывает из него данные и вызывает коллбэк.
В принципе было бы интересно посмотреть на ОС, в которой этого промежуточного этапа нет. Пришло прерывание, тут же вызвался программный обработчик. Тут, конечно, много вопросов возникает — типа вообще нехорошо из обработчиков прерывания что-то нетривиальное делать и тд... Но может что-то придумали бы, чтобы избежать всей этой многоуровневой буферизации и перекладывания байтов из пустого в порожнее.