#13_NTWK
Мультиплексирование с кодовым разделением сигналов (Code Division Multiplexing, CDM) — разновидность связи с расширением спектра, при которой узкополосный сигнал "размывается" по более широкой полосе частот.
Несколько сигналов от разных пользователей могут использовать одну полосу частот.
CDM также называют CDMA (Code Division Multiple Access) - множественным доступом с кодовым разделением каналов.
Мультиплексирование с кодовым разделением сигналов (Code Division Multiplexing, CDM) — разновидность связи с расширением спектра, при которой узкополосный сигнал "размывается" по более широкой полосе частот.
Несколько сигналов от разных пользователей могут использовать одну полосу частот.
CDM также называют CDMA (Code Division Multiple Access) - множественным доступом с кодовым разделением каналов.
#14_NTWK
Рассмотрим аналогию, которая наглядно показывает разницу между различными видами мультиплексирования.
Представим зал ожидания в аэропорту и множество беседующих между собой пар людей. При этом:
- TDM соответствует тому, что пары разговаривают по очереди;
- FDM — это пары разговаривающие в разных тональностях (некоторые высоким голосом, некоторые низким);
- CDMA соответствует тому, что все пары общаются на разных языках.
Рассмотрим аналогию, которая наглядно показывает разницу между различными видами мультиплексирования.
Представим зал ожидания в аэропорту и множество беседующих между собой пар людей. При этом:
- TDM соответствует тому, что пары разговаривают по очереди;
- FDM — это пары разговаривающие в разных тональностях (некоторые высоким голосом, некоторые низким);
- CDMA соответствует тому, что все пары общаются на разных языках.
#15_TOS
МЕНЕДЖЕРОМ или ДИСПЕТЧЕРОМ ПАМЯТИ называется часть ОС, которая управляет иерархией памяти или ее частью.
Менеджер памяти предназначен для управления памятью и должен следить за тем, какие части памяти используются, выделять память процессам, которые в ней нуждаются, и освобождать память, когда процессы завершают свою работу.
МЕНЕДЖЕРОМ или ДИСПЕТЧЕРОМ ПАМЯТИ называется часть ОС, которая управляет иерархией памяти или ее частью.
Менеджер памяти предназначен для управления памятью и должен следить за тем, какие части памяти используются, выделять память процессам, которые в ней нуждаются, и освобождать память, когда процессы завершают свою работу.
#16_TOS
АДРЕСНОЕ ПРОСТРАНСТВО — набор адресов, который может быть использован процессом для обращения к памяти.
АДРЕСНОЕ ПРОСТРАНСТВО — набор адресов, который может быть использован процессом для обращения к памяти.
#17_TOS
СВОПИНГ — размещение в памяти всего процесса целиком, запуск этого процесса на некоторое время, а затем сброс на диск (ПЗУ).
СВОПИНГ — размещение в памяти всего процесса целиком, запуск этого процесса на некоторое время, а затем сброс на диск (ПЗУ).
#18_SYSCL_TOS
Отличительной чертой модели ввода-вывода в UNIX системах является понятие УНИВЕРСАЛЬНОСТИ ВВОДА-ВЫВОДА.
Это означает, что одни и те же системные вызовы (open(), read(), write(), close() и т.д.) используются для выполнения ввода-вывода во всех типах файлов, включая устройства (учитывая, что в UNIX системах все - в том числе и устройства представляются в виде файла).
По сути, ядро выдает один тип файла — последовательный поток байтов, к которому, в случае файлов на дисках, дисков и ленточных накопителей, можно получить произвольный доступ с помощью системного вызова
.
Отличительной чертой модели ввода-вывода в UNIX системах является понятие УНИВЕРСАЛЬНОСТИ ВВОДА-ВЫВОДА.
Это означает, что одни и те же системные вызовы (open(), read(), write(), close() и т.д.) используются для выполнения ввода-вывода во всех типах файлов, включая устройства (учитывая, что в UNIX системах все - в том числе и устройства представляются в виде файла).
По сути, ядро выдает один тип файла — последовательный поток байтов, к которому, в случае файлов на дисках, дисков и ленточных накопителей, можно получить произвольный доступ с помощью системного вызова
lseek()
.
#19_TP_BASH
ФИЛЬТР — часто обозначает программу, считывающую вводимые в нее данные из stdin, выполняет преобразования этого ввода и записывает преобразованные данные в stdout.
Примеры программ-фильтров:
cat,
grep,
tr,
sort,
wc,
sed,
awk.
ФИЛЬТР — часто обозначает программу, считывающую вводимые в нее данные из stdin, выполняет преобразования этого ввода и записывает преобразованные данные в stdout.
Примеры программ-фильтров:
cat,
grep,
tr,
sort,
wc,
sed,
awk.
#20_TOS
ПРОЦЕСС в LINUX — экземпляр выполняемой программы.
Когда программа выполняется, ядро загружает ее код в виртуальную память, выделяет память под переменные программы и определяет учетные структуры данных ядра для записи различной информации о процессе (имеются в виду идентификатор процесса, код завершения, пользовательские и групповые идентификаторы).
С точки зрения ядра процессы — объекты, между которыми ядро должно делить различные ресурсы компьютера.
В случае с ограниченными ресурсами, например памятью, ядро изначально выделяет некоторый их объем процессу и регулирует это выделение в ходе жизненного цикла процесса, реагируя на потребности процесса и общие потребности системы в этом ресурсе.
Когда процесс завершается, все такие ресурсы высвобождаются для повторного использования другими процессами.
Другие ресурсы, такие как время центрального процессора и сетевой трафик, являются возобновляемыми, но должны быть поровну поделены между всеми процессами.
ПРОЦЕСС в LINUX — экземпляр выполняемой программы.
Когда программа выполняется, ядро загружает ее код в виртуальную память, выделяет память под переменные программы и определяет учетные структуры данных ядра для записи различной информации о процессе (имеются в виду идентификатор процесса, код завершения, пользовательские и групповые идентификаторы).
С точки зрения ядра процессы — объекты, между которыми ядро должно делить различные ресурсы компьютера.
В случае с ограниченными ресурсами, например памятью, ядро изначально выделяет некоторый их объем процессу и регулирует это выделение в ходе жизненного цикла процесса, реагируя на потребности процесса и общие потребности системы в этом ресурсе.
Когда процесс завершается, все такие ресурсы высвобождаются для повторного использования другими процессами.
Другие ресурсы, такие как время центрального процессора и сетевой трафик, являются возобновляемыми, но должны быть поровну поделены между всеми процессами.
#21_TP_TOS
МОДЕЛЬ ПАМЯТИ ПРОЦЕССА в LINUX.
Процесс логически делится на следующие части, известные как сегменты:
- ТЕКСТ — инструкции программы;
- ДАННЫЕ — статические переменные, используемые программой;
- ДИНАМИЧЕСКАЯ ПАМЯТЬ (куча) — область, из которой программа может динамически выделять дополнительную память;
- СТЕК — часть памяти, которая может расширяться и сжиматься по мере вызова
функций и возвращения из них и которая используется для выделения хранилища
под локальные переменные и информацию о взаимосвязанности вызовов функций.
МОДЕЛЬ ПАМЯТИ ПРОЦЕССА в LINUX.
Процесс логически делится на следующие части, известные как сегменты:
- ТЕКСТ — инструкции программы;
- ДАННЫЕ — статические переменные, используемые программой;
- ДИНАМИЧЕСКАЯ ПАМЯТЬ (куча) — область, из которой программа может динамически выделять дополнительную память;
- СТЕК — часть памяти, которая может расширяться и сжиматься по мере вызова
функций и возвращения из них и которая используется для выделения хранилища
под локальные переменные и информацию о взаимосвязанности вызовов функций.
#22_TOS_SYSCL
СОЗДАНИЕ ПРОЦЕССА И ВЫПОЛНЕНИЕ ПРОГРАММЫ в LINUX.
Процесс может создать новый процесс с помощью системного вызова:
Процесс, вызывающий fork(), известен как родительский процесс, а новый процесс называется дочерним процессом.
Ядро создает дочерний процесс путем изготовления дубликата родительского процесса.
Дочерний процесс наследует копии родительских сегментов данных, стека и кучи, которые затем могут изменяться независимо от своих родительских копий. (Текст программы размещается в области памяти с пометкой «только для чтения» и совместно используется двумя процессами.)
Дочерний процесс запускается либо для выполнения другого набора функций в том
же самом коде, что и у родительского процесса, либо зачастую для использования системного вызова
с целью загрузки и выполнения совершенно новой программы.
Вызов execve( ) удаляет существующие сегменты текста, данных, стека и кучи, заменяя их новыми сегментами, основываясь на коде новой программы.
У вызова execve( ) есть ряд надстроек в виде родственных функций библиотеки языка C с несколько отличающимся интерфейсом, но сходной функциональностью.
СОЗДАНИЕ ПРОЦЕССА И ВЫПОЛНЕНИЕ ПРОГРАММЫ в LINUX.
Процесс может создать новый процесс с помощью системного вызова:
fork()
Процесс, вызывающий fork(), известен как родительский процесс, а новый процесс называется дочерним процессом.
Ядро создает дочерний процесс путем изготовления дубликата родительского процесса.
Дочерний процесс наследует копии родительских сегментов данных, стека и кучи, которые затем могут изменяться независимо от своих родительских копий. (Текст программы размещается в области памяти с пометкой «только для чтения» и совместно используется двумя процессами.)
Дочерний процесс запускается либо для выполнения другого набора функций в том
же самом коде, что и у родительского процесса, либо зачастую для использования системного вызова
execve();
с целью загрузки и выполнения совершенно новой программы.
Вызов execve( ) удаляет существующие сегменты текста, данных, стека и кучи, заменяя их новыми сегментами, основываясь на коде новой программы.
У вызова execve( ) есть ряд надстроек в виде родственных функций библиотеки языка C с несколько отличающимся интерфейсом, но сходной функциональностью.
#23_TOS
PID — уникальный целочисленный идентификатор процесса.
PPID — у каждого процесса также есть атрибут идентификатора родительского процесса, идентифицирующий процесс, запросивший у ядра создание данного процесса.
PID — уникальный целочисленный идентификатор процесса.
PPID — у каждого процесса также есть атрибут идентификатора родительского процесса, идентифицирующий процесс, запросивший у ядра создание данного процесса.
#24_TOS
ЗАВЕРШЕНИЕ ПРОЦЕССА и КОД ЗАВЕРШЕНИЯ в LINUX.
Процесс может быть завершен двумя способами:
— запросом своего собственного завершения с использованием системного вызова
(или родственной ему библиотечной функции exit( ));
— путем его уничтожения извне с помощью сигнала.
В любом случае процесс выдает код завершения, небольшое неотрицательное целое число, которое может быть проверено родительским процессом с использованием системного вызова
В случае вызова _exit( ) процесс явным образом указывает свой собственный код завершения.
Если процесс уничтожается сигналом, код завершения устанавливается по типу сигнала, уничтожившего процесс.
По соглашению, код завершения 0 служит признаком успешного завершения процесса, а ненулевое значение служит признаком возникновения какой-то ошибки.
Большинство оболочек позволяют получить код завершения последней выполненной программы с помощью переменной оболочки по имени $?.
ЗАВЕРШЕНИЕ ПРОЦЕССА и КОД ЗАВЕРШЕНИЯ в LINUX.
Процесс может быть завершен двумя способами:
— запросом своего собственного завершения с использованием системного вызова
_exit();
(или родственной ему библиотечной функции exit( ));
— путем его уничтожения извне с помощью сигнала.
В любом случае процесс выдает код завершения, небольшое неотрицательное целое число, которое может быть проверено родительским процессом с использованием системного вызова
wait();
В случае вызова _exit( ) процесс явным образом указывает свой собственный код завершения.
Если процесс уничтожается сигналом, код завершения устанавливается по типу сигнала, уничтожившего процесс.
По соглашению, код завершения 0 служит признаком успешного завершения процесса, а ненулевое значение служит признаком возникновения какой-то ошибки.
Большинство оболочек позволяют получить код завершения последней выполненной программы с помощью переменной оболочки по имени $?.
#25_TOS
ПРОЦЕСС INIT в LINUX.
При загрузке системы ядро создает особый процесс, который называется
init — «родитель всех процессов».
Он ведет свое происхождение от программного файла
Все процессы в системе создаются (используя fork()) либо процессом init, либо одним из его потомков.
Процесс init всегда имеет идентификатор процесса 1 и запускается с правами доступа суперпользователя.
Процесс init не может быть уничтожен (даже привилегированным пользователем) и завершается только при завершении работы системы.
Основной задачей init является создание и слежение за процессами, требующимися работающей системе.
ПРОЦЕСС INIT в LINUX.
При загрузке системы ядро создает особый процесс, который называется
init — «родитель всех процессов».
Он ведет свое происхождение от программного файла
/sbin/init.
Все процессы в системе создаются (используя fork()) либо процессом init, либо одним из его потомков.
Процесс init всегда имеет идентификатор процесса 1 и запускается с правами доступа суперпользователя.
Процесс init не может быть уничтожен (даже привилегированным пользователем) и завершается только при завершении работы системы.
Основной задачей init является создание и слежение за процессами, требующимися работающей системе.
#26_TOS
ПРОЦЕССЫ-ДЕМОНЫ в LINUX.
Демон — процесс специального назначения, создаваемый и управляемый системой точно так же, как и другие процессы, но отличающийся от них следующими характеристиками:
— процесс-демон долгоживущий, зачастую запускается при загрузке системы и продолжает свое существование до тех пор, пока работа системы не будет завершена;
— запускается в фоновом режиме, и у него нет управляющего терминала, с которого он мог бы считывать ввод или на который он мог бы записывать вывод.
К примерам процессов-демонов относятся syslogd, который записывает сообщения
в системный журнал, и httpd, который обслуживает веб-страницы посредством протокола передачи гипертекста — Hypertext Transfer Protocol (HTTP).
ПРОЦЕССЫ-ДЕМОНЫ в LINUX.
Демон — процесс специального назначения, создаваемый и управляемый системой точно так же, как и другие процессы, но отличающийся от них следующими характеристиками:
— процесс-демон долгоживущий, зачастую запускается при загрузке системы и продолжает свое существование до тех пор, пока работа системы не будет завершена;
— запускается в фоновом режиме, и у него нет управляющего терминала, с которого он мог бы считывать ввод или на который он мог бы записывать вывод.
К примерам процессов-демонов относятся syslogd, который записывает сообщения
в системный журнал, и httpd, который обслуживает веб-страницы посредством протокола передачи гипертекста — Hypertext Transfer Protocol (HTTP).
#27_Cpp
ПЕРЕГРУЗКА ОПЕРАТОРОВ в С++.
Важно помнить:
перегружаются через методы класса — это требования языка С++.
Унарные операторы:
так же лучше перегружать через методы класса.
Перегрузку бинарных операторов (операторов с двумя операндами), которые изменяют левый операнд:
лучше выполнять через методы класса.
Перегрузку бинарных операторов (операторов с двумя операндами), которые не изменяют левый операнд:
лучше выполнять через обычные или дружественные функции.
Операторы ввода (>>) и вывода (<<)
нельзя перегружать через методы класса потому что они должны возвращать объекты класса std::istream и std::ostream соответственно.
Их перегрузку лучше реализовывать через обычные или дружественные функции.
ПЕРЕГРУЗКА ОПЕРАТОРОВ в С++.
Важно помнить:
operator=( ) — оператор присваивания;
operator[ ]( ) — индекса;
operator()( ) — вызова функции;
operator->( ) — выбора члена;
перегружаются через методы класса — это требования языка С++.
Унарные операторы:
operator+( ); — унарный плюс;
operator-( ); — унарный минус;
bool operator!( ); — оператор логического НЕ.
так же лучше перегружать через методы класса.
Перегрузку бинарных операторов (операторов с двумя операндами), которые изменяют левый операнд:
operator+=( );
operator-=( );
operator*=( );
operator/=( );
operator%=( );
лучше выполнять через методы класса.
Перегрузку бинарных операторов (операторов с двумя операндами), которые не изменяют левый операнд:
operator+( );
operator-( );
operator*( );
operator/( );
operator%( );
лучше выполнять через обычные или дружественные функции.
Операторы ввода (>>) и вывода (<<)
std::istream& operator» (std::istream &in, T& t);
std::ostream& operator« (std::ostream &out, const T& t);
нельзя перегружать через методы класса потому что они должны возвращать объекты класса std::istream и std::ostream соответственно.
Их перегрузку лучше реализовывать через обычные или дружественные функции.
#28_CMPL_DBG_TOS_TP
ELF64 — Executable and Linkable Format 64-bit (выполняемый и связываемый формат для 64 битной системы).
ELF64 — Executable and Linkable Format 64-bit (выполняемый и связываемый формат для 64 битной системы).
#29_CMPL_DBG_TP
DWARF (Debug With Arbitrary Record Format) — отладка с использованием произвольного формата записей.
DWARF (Debug With Arbitrary Record Format) — отладка с использованием произвольного формата записей.