12.0 (Конспект)HighLevelLanguages

На чём написано ядро линукс? Оно написано на си. Есть операционные системы, ядро которых было написано на ассемблере, но это было давно, и сейчас таких нет (популярных).

В качестве языка-склейки в Линуксе используется shell. Также сейчас иногда используют Python.

Windows по большей части пишется на C++, а в качестве языка склейки используется C#.

Встаёт вопрос: неужели C - это универсайльный язык системного программирования? И да, и нет, потому что с одной стороны вы получите отличное решение, но код будет очень большой.

Работая с C вы имеете понимание как работает система на низком уровене, но, как только вы переходите на более высокоуровневый язык, это идея пропадает. И этот факт не даёт возможность отслеживать сколько памяти использует программа.

Если говорить о питоне, он - кросплатформенный язык, но не стоит на это опираться, так как существуют функции, которые эксклюзивны для той или иной операционной системы. Например, модули os и sys завязвны на операционной системе. НО Python разрабатывался на Linux, поэтому на нём можно без проблем программировать модули для данной ОС.

Shell - это тоже высокоуровневый язык программирования, но ориентированый на работу с системными объектами, в отличии от Python.

Python может напрямую взаимодействовать с shell с помошью модуля os или subprocess.run. И это наглядный пример того, что пользуюся высокоуровневым языком программирования, мы можем забыть сколько ресурсов может быть использовано. Какой-то файл может содержать, например, весь вывод shell, который может занимать гигабайт.

Маленькие приложения более ффективно (в плане ресурсов компьютера) писать на C, а в районе 2000 строк - уже разницы с питоном никакой нет.

threading - возможность написания кода, который выполняется в одном и том же адресном пространстве, но имеет несколько потоков выполнения. В Python нет нормальный "трэдов", потому что в нём есть Global Interpreter Lock. Это такая штука, придумманный в прошлом тысячелетии механизм, который позволяет блокировать выполнение одного интерпретатора в одном потоке, когда происходит выполнение в другом потоке. И этим достигается быстродействие написанных программ без "трэдов". Так что Python - язык однопоточный.

напишем программу с мультипроцессингом:

:1.png

Теперь программа с использованием Pipe:

:2.png

И программа с "пулом" процессов.

:3.png

HSE/ArchitectureOS/12_HighLevelLanguages/Conspect (последним исправлял пользователь VasilyKireenko 2020-06-10 01:55:24)