Не смотря на то, что подобный вопрос является оффтопиком для нашего сайта, нам очень приятно, что на информатике в школе есть задачи, в которых упоминается Linux, поэтому мы решили оставить этот вопрос и привести свое решение.
Итак, у нас есть следующие данные:
- Размер файла: 350Mb
- Размер фрагмента файла: 10Mb
- Скорость скачивания: 4Mbit/s
- Исходящие пакеты: 32Kb (запрос) и 16Kb (подтверждение)
- Скорость отправки данных: 128Kbit/s
Решение:
- Определим, сколько всего фрагментов файла нам нужно скачать.
Размер файла 350Mb, данные передаются фрагментами по 10Mb, значит всего мы должны скачать 350 / 10 = 35 фрагментов.
Итог: всего нужно скачать 35 фрагментов. - Определим, сколько секунд мы потратим на скачивание (загрузку) одного фрагмента файла.
Скорость скачивания 4Mbit/s. Нам нужно определить, сколько мегабайт данных мы скачиваем при такой скорости за 1 секунду. Один мегабит равен 0.125 мегабайт, значит 4 мегабита равны 0.125 * 4 = 0,5Mb. Получается, что за 1 секунду мы скачиваем 0.5Mb. Отсюда получаем, что 1 фрагмент размером 10Mb мы скачиваем за 10 / 0.5 = 20 сек.
Итог: 1 фрагмент размером 10Mb скачивается за 20 сек. - Определим, сколько данных мы отправляем при скачивании 1 фрагмента.
Чтобы скачать один фрагмент файла нам нужно сначала отправить запрос размером 32Kb, затем мы скачиваем фрагмент и отправляем подтверждение размером 16Kb. Получается, что на каждый фрагмент мы в сумме отправляем 32Kb + 16Kb = 48Kb.
Итог: на 1 фрагмент мы отправляем 48Kb данных. - Определим, сколько времени мы тратим на отправку данных (48Kb) при скачивании 1 фрагмента.
Скорость отправки данных 128Kbit/s. Нам нужно определить сколько килобайт данных мы отправляем при такой скорости за 1 секунду. Один килобит равен 0.125 килобайт, значит 128 килобит равны 0.125 * 128 = 16Kb. Получается, что за 1 секунду мы скачиваем 16Kb. Отсюда получаем, что отправка 48Kb данных будет выполняться 48 / 16 = 3 сек.
Итог: При скачивании 1 фрагмента файла мы отправляем 48Kb за 3 сек. - Определим, сколько всего времени мы тратим на скачивание 1 фрагмента файла, включая исходящие данные (запрос и подтверждение).
Из результатов, полученных выше в пунктах 2 и 4, в сумме на скачивание 1 фрагмента файла, включая отправку запроса и подтверждения мы тратим 20 сек + 3 сек = 23 сек.
Итог: На скачивание 1 фрагмента файла, включая отправку запроса и подтверждения, мы тратим 23 сек. - Определим, сколько мы потратим всего времени на скачивание всех фрагментов файла, включая отправку запросов и подтверждений.
В пункте 1 мы получили, что всего нам нужно скачать 35 фрагментов. В пункте 5 мы определили, что на 1 фрагмент мы тратим 23 сек. Получается, что на скачивание 35 фрагментов мы потратим 35 * 23 = 805 сек.
Итог: Всего на скачивание файла (всех фрагментов файла), включая отправку запросов и подтверждений, мы потратим 805 сек.
Ответ: Лена может скачать файл за 805 секунд.
Примечание: При расчете мы учитывали время на отправку последнего пакета-подтверждения. То есть, когда мы скачали последний фрагмент файла, мы отправляем последний пакет-подтверждение. Но, непосредственно перед отправкой последнего пакета-подтверждения, файл у нас уже загружен целиком. Поэтому, если не учитывать последний пакет-подтверждение, время на загрузку файла составит не 805 сек, а 804 сек, так как на отправку 1 пакета-подтверждения (размером 16Kb) со скоростью 128Kbit затрачивается 16 / 16 = 1 сек (напомним, что 128Kbit=16Kb).
Ответ, если не учитывать последний пакет-подтверждение: 804 секунды.
Комментарии
21:14
Если не ошибаюсь в нескольких школах Москвы, стоят просто российские дистры (по типу ALT и Astra Linux), если мой знакомый с другого конца Москвы мне не врет.
Ну и также много школ остались на винде.
---
Вот так вот :0