Для хранения исполняемых программ в компьютере используется
2. Производительность работы компьютера (быстрота выполнения операций) зависит от:
- размера экрана монитора;
- тактовой частоты процессора;
- напряжения питания;
- быстроты нажатия на клавиши;
- объема обрабатываемой информации.
3. Тактовая частота процессора - это:
- число двоичных операций, совершаемых процессором в единицу времени;
- количество тактов, выполняемых процессором в единицу времени;
- число возможных обращений процессора к оперативной памяти в единицу времени;
- скорость обмена информацией между процессором и устройством ввода/вывода;
- скорость обмена информацией между процессором и ПЗУ.
4. Манипулятор "мышь" - это устройство:
- ;
- модуляции и демодуляции;
- считывание информации;
- для подключения принтера к компьютеру.
5. Постоянное запоминающее устройство служит для:
- хранения программы пользователя во время работы;
- записи особо ценных прикладных программ;
- хранения постоянно используемых программ;
- хранение программ начальной загрузки компьютера и тестирование его узлов;
- постоянно хранения особо ценных документов.
6. Для долговременного хранения информации служит:
- оперативная память;
- процессор;
- магнитный диск;
- дисковод.
7. Хранение информации на внешних носителях отличается от хранения информации в оперативной памяти:
- тем, что на внешних носителях информация может хранится после отключения питания компьютера;
- объемом хранения информации;
- возможность защиты информации;
- способами доступа к хранимой информации.
8. Во время исполнения прикладная программа хранится:
- в видеопамяти;
- в процессоре;
- в оперативной памяти;
- в ПЗУ.
9. При отключении компьютера информация стирается:
- из оперативной памяти;
- из ПЗУ;
- на магнитном диске;
- на компакт-диске.
10. Привод гибких дисков - это устройство для:
- обработки команд исполняемой программы;
- чтения/записи данных с внешнего носителя;
- хранения команд исполняемой программы;
- долговременного хранения информации.
11. Для подключения компьютера к телефонной сети используется:
- модем;
- плоттер;
- сканер;
- принтер;
- монитор.
12. Программное управление работой компьютера предполагает:
- необходимость использования операционной системы для синхронной работы аппаратных средств;
- выполнение компьютером серии команд без участия пользователя;
- двоичное кодирование данных в компьютере;
- использование специальных формул для реализации команд в компьютере.
- элементарная информационная единица, содержащая последовательность байтов и имеющая уникальное имя;
- объект, характеризующийся именем, значением и типом;
- совокупность индексированных переменных;
- совокупность фактов и правил.
14. Расширение файла, как правило, характеризует:
- время создания файла;
- объем файла;
- место, занимаемое файлом на диске;
- тип информации, содержащейся в файле;
- место создания файла.
15. Полный путь файлу: c:\books\raskaz.txt. Каково имя файла?
- books\raskaz;.
- raskaz.txt;
- books\raskaz.txt;
- txt.
16. Операционная система это -
- совокупность основных устройств компьютера;
- система программирования на языке низкого уровня;
- программная среда, определяющая интерфейс пользователя;
- совокупность программ, используемых для операций с документами;
- программ для уничтожения компьютерных вирусов.
17. Программы сопряжения устройств компьютера называются:
- загрузчиками;
- драйверами;
- трансляторами;
- интерпретаторами;
- компиляторами.
18. Системная дискета необходима для:
- для аварийной загрузки операционной системы;
- систематизации файлов;
- хранения важных файлов;
- лечения компьютера от вирусов.
19. Какое устройство обладает наибольшей скоростью обмена информацией:
- CD-ROM дисковод;
- жесткий диск;
- дисковод для гибких магнитных дисков;
- оперативная память;
- регистры процессора?
20. Программой архиватором называют:
- программу для уплотнения информационного объема (сжатия) файлов;
- программу резервного копирования файлов;
- интерпретатор;
- транслятор;
- систему управления базами данных.
21. Сжатый файл представляет собой:
- файл, которым долго не пользовались;
- файл, защищенный от копирования;
- файл, упакованный с помощью архиватора;
- файл, защищенный от несанкционированного доступа;
- файл, зараженный компьютерным вирусом.
22. Какое из названных действий можно произвести со сжатым файлом:
- переформатировать;
- распаковать;
- просмотреть;
- запустить на выполнение;
- отредактировать.
23. Сжатый файл отличается от исходного тем, что:
- доступ к нему занимает меньше времени;
- он в большей степени удобен для редактирования;
- он легче защищается от вирусов;
- он легче защищается от несанкционированного доступа;
- он занимает меньше места.
24. Компьютерные вирусы:
- возникают в связи сбоев в аппаратной части компьютера;
- создаются людьми специально для нанесения ущерба ПК;
- зарождаются при работе неверно написанных программных продуктов;
- являются следствием ошибок в операционной системе;
- имеют биологическое происхождение.
25. Отличительными особенностями компьютерного вируса являются:
- значительный объем программного кода;
- необходимость запуска со стороны пользователя;
- способность к повышению помехоустойчивости операционной системы;
- маленький объем; способность к самостоятельному запуску и к созданию помех корректной работе компьютера;
- легкость распознавания.
26. Загрузочные вирусы характеризуются тем, что:
- поражают загрузочные сектора дисков;
- поражают программы в начале их работы;
- запускаются при запуске компьютера;
- изменяют весь код заражаемого файла;
- всегда меняют начало и длину файла.
27. Файловый вирус:
- поражают загрузочные сектора дисков;
- поражают программы в начале их работы;
- запускаются при запуске компьютера;
- изменяют весь код заражаемого файла;
- всегда меняют начало и длину файла.
Предварительный просмотр:
1. Текстовый редактор - программа, предназначенная для
- создания, редактирования и форматирования текстовой информации;
- работы с изображениями в процессе создания игровых программ;
- управление ресурсами ПК при создании документов;
- автоматического перевода с символьных языков в машинные коды;
2. В ряду "символ" - . - "строка" - "фрагмент текста" пропущено:
- "слово";
- "абзац";
- "страница";
- "текст".
3. К числу основных функций текстового редактора относятся:
- копирование, перемещение, уничтожение и сортировка фрагментов текста;
- создание, редактирование, сохранение и печать текстов;
- строгое соблюдение правописания;
- автоматическая обработка информации, представленной в текстовых файлах.
4. Символ, вводимый с клавиатуры при наборе, отображается на экране дисплея в позиции, определяемой:
- задаваемыми координатами;
- положением курсора;
- адресом;
- положением предыдущей набранной букве.
- устройство ввода текстовой информации;
- клавиша на клавиатуре;
- наименьший элемент отображения на экране;
- метка на экране монитора, указывающая позицию, в которой будет отображен вводимый с клавиатуры.
- в строке состояния текстового редактора;
- в меню текстового редактора;
- в окне текстового редактора;
- на панели задач.
7. При наборе текста одно слово от другого отделяется:
- точкой;
- пробелом;
- запятой;
- двоеточием.
8. С помощью компьютера текстовую информацию можно:
- хранить, получать и обрабатывать:
- только хранить;
- только получать;
- только обрабатывать.
9. Редактирование текста представляет собой:
- процесс внесения изменений в имеющийся текст;
- процедуру сохранения текста на диске в виде текстового файла;
- процесс передачи текстовой информации по компьютерной сети;
- процедуру считывания с внешнего запоминающего устройства ранее созданного текста.
10. Какая операция не применяется для редактирования текста:
- печать текста;
- удаление в тексте неверно набранного символа;
- вставка пропущенного символа;
- замена неверно набранного символа;
11. В текстовом редакторе набран текст:
В НЕМ ПРОСТО НАХОДЯТСЯ ПРОЦЕДУРЫ ОБРОБОТКИ ДАТЫ И ВРЕМЕНИ ДНЯ, АНАЛИЗА СОСТОЯНИЯ МАГНИТНЫХ ДИСКОВ, СРЕДСТВА РОБОТЫ СО СПРАВОЧНИКАМИ И ОТДЕЛЬНЫМИ ФАЙЛАМИ.
Команда "Найти и заменить все" для исправления всех ошибок может иметь вид:
- найти Р заменить на РА;
- найти РО заменить на РА;
- найти РОБ заменить на РАБ;
- найти БРОБ заменить на БРАБ;
- найти БРОБО заменить на БРАБО;
12. Процедура автоматического форматирования текста предусматривает:
- запись текста в буфер;
- удаление текста;
- отмену предыдущей операции, совершенной над текстом;
- автоматическое расположение текста в соответствии с определенными правилами.
13. В текстовом редакторе при задании параметров страницы устанавливаются:
- Гарнитура, размер, начертание;
- Отступ, интервал;
- Поля, ориентация;
- Стиль, шаблон.
14. Копирование текстового фрагмента в текстовом редакторе предусматривает в первую очередь:
- указание позиции, начиная с которой должен копироваться объект;
- выделение копируемого фрагмента;
- выбор соответствующего пункта меню;
- открытие нового текстового окна.
15. Меню текстового редактора - это:
- часть его интерфейса, обеспечивающая переход к выполнению различных операций над текстом;
- подпрограмма, обеспечивающая управление ресурсами ПК при создании документа;
- своеобразное "окно", через которое тест просматривается на экране;
- информация о текущем состоянии текстового редактора.
16. Поиск слова в тексте по заданному образцу является процессом:
- обработки информации;
- хранения информации;
- передачи информации;
- уничтожение информации.
17. Текст, набранный в тестовом редакторе, храниться на внешнем запоминающем устройстве:
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
Видеолекции для
профессионалов
- Свидетельства для портфолио
- Вечный доступ за 120 рублей
- 311 видеолекции для каждого
Тест по теме архитектура и аппаратное обеспечение компьютера
1. Компьютер – это:
а. устройство для работы с текстами;
б. электронное вычислительное устройство для обработки чисел;
в. устройство для хранения информации любого вида;
г. многофункциональное электронное устройство для работы с информацией;
д. устройство для обработки аналоговых сигналов.
2. Какое устройство в компьютере служит для обработки информации?
а. манипулятор "мышь"
д. оперативная память
3. Скорость работы компьютера зависит от:
а. тактовой частоты обработки информации в процессоре;
б. наличия или отсутствия подключенного принтера;
в. организации интерфейса операционной системы;
г. объема внешнего запоминающего устройства;
д. объема обрабатываемой информации.
4. Тактовая частота процессора – это:
а. число двоичных операций, совершаемых процессором в единицу времени;
б. число вырабатываемых за одну секунду импульсов, синхронизирующих работу узлов компьютера;
в. число возможных обращений процессора к операционной памяти в единицу времени;
г. скорость обмена информацией между процессором и устройствами ввода/вывода;
д. скорость обмена информацией между процессором и ПЗУ.
5. Объем оперативной памяти определяет:
а. какой объем информации может храниться на жестком диске;
б. какой объем информации может обрабатываться без обращений к жесткому диску;
в. какой объем информации можно вывести на печать;
г. какой объем информации можно копировать.
6. Укажите наиболее полный перечень основных устройств ПК:
а. микропроцессор, сопроцессор, монитор;
б. центральный процессор, оперативная память, устройства ввода/вывода;
в. монитор, винчестер, принтер;
г. АЛУ, УУ, сопроцессор;
д. сканер, мышь, монитор, принтер.
7. Магистрально-модульный принцип архитектуры современных персональных компьютеров подразумевает такую логическую организацию его аппаратных компонентов, при которой:
а. каждое устройство связывается с другими напрямую;
б. каждое устройство связывается с другими напрямую, а также через одну центральную магистраль;
в. все они связываются друг с другом через магистраль, включающую в себя шины данных, адреса и управления;
г. устройства связываются друг с другом в определенной фиксированной последовательности (кольцом);
д. связь устройств друг с другом осуществляется через центральный процессор, к которому они все подключаются.
8. Назовите устройства, входящие в состав процессора:
а. оперативное запоминающее устройство, устройство управления;
б. арифметико-логическое устройство, устройство управления, запоминающее устройство;
в. кэш-память, видеопамять, сопроцессор;
г. сканер, ПЗУ, АЛУ;
д. дисплейный процессор, видеоадаптер.
9. Устройства внутренней памяти:
б. ROM, CMOS, RAM, CASH ;
в. HDD, SSD, FLASH, SD ;
г. ROM, RAM, CASH, FLOPPY .
10. Постоянное запоминающее устройство служит для:
а. сохранения программ начальной загрузки компьютера и тестирования его узлов, настроек аппаратной части ПК;
б. хранения программы пользователя во время работы;
в. записи особо ценных прикладных программ;
г. хранения постоянно используемых программ;
д. постоянного хранения особо ценных документов.
11. Во время исполнения прикладная программа хранится:
а. в видеопамяти;
в. в оперативной памяти;
г. на жестком диске;
12. Адресуемость оперативной памяти означает:
а. дискретность структурных единиц памяти;
б. энергозависимость оперативной памяти;
в. возможность произвольного доступа к каждой единице памяти;
г. наличие номера у каждой ячейки оперативной памяти;
д. энергонезависимость оперативной памяти.
13. Персональный компьютер не будет функционировать, если отключить:
б. оперативную память;
14. Для долговременного хранения информации служит:
а. оперативная память;
в. внешний носитель;
15. Процесс хранения информации на внешних носителях принципиально отличается от процесса хранения информации в оперативной памяти:
а. тем, что на внешних носителях информация может храниться после отключения питания компьютера;
б. объемом хранимой информации;
в. различной скоростью доступа к хранимой информации;
г. возможностью защиты информации;
д. способами доступа к хранимой информации.
16. При отключении компьютера информация:
а. исчезает из оперативной памяти;
б. исчезает из постоянного запоминающего устройства;
в. стирается на «жестком диске»;
г. стирается на твердотельном накопителе;
д. стирается на sd-card .
17. Дисковод – это устройство для:
а. обработки команд исполняемой программы;
б. чтения/записи данных с внешнего носителя;
в. хранения команд исполняемой программы;
г. долговременного хранения информации;
д. вывода информации на бумагу.
18. Какое устройство обладает наибольшей скоростью обмена информацией?
а. CD-ROM дисковод;
в. твердотельный накопитель;
г. микросхемы оперативной памяти.
19. Какое из устройств предназначено для ввода информации:
20. Манипулятор «мышь» – это устройство:
а. модуляции и демодуляции;
б. считывания информации;
в. долговременного хранения информации;
г. координатное устройство ввода информации;
д. для подключения принтера к компьютеру.
21. Для подключения компьютера к телефонной сети используется:
22. Принцип программного управления работой компьютера предполагает:
а. двоичное кодирование данных в компьютере;
б. моделирование информационной деятельности человека при управлении компьютером;
в. необходимость использования операционной системы для синхронной работы аппаратных средств;
г. возможность выполнения без внешнего вмешательства целой серии команд;
д. использование формул исчисления высказываний для реализации команд в компьютере.
23. Электронные устройства памяти ПК:
а. SSD, FLASH, SD, Micro SD;
в. HDD, FLOPPY, FLASH, SD ;
г. HDD, SSD, DVD, CD .
24. Разрядность процессора -это:
а. период времени, необходимый для считывания минимальной порции информации из ячеек памяти или записи в память;
б. число вырабатываемых за секунду импульсов, синхронизирующих работу узлов компьютера;
в. возможность компьютера обрабатывать большие объёмы информации;
г. максимальная длина двоичного кода, который может обрабатываться и передаваться процессором целиком.
25 Контроллер - это:
а. внешние разъемы для подключения дополнительных устройств;
б. электронные схемы для управления устройствами;
в. наборы проводников, по которым происходит обмен сигналами между внутренними устройствами компьютера;
1.Компьютер это - 1.устройство для хранения информации любого вида;
2.многофункциональное электронное устройство для работы с информацией;
3.устройство для обработки аналоговых сигналов.
4.электронное вычислительное устройство для обработки чисел;
2.Производительность работы компьютера (быстрота выполнения операций) зависит от: 1.быстроты нажатия на клавиши;
2.тактовый частоты процессора;
3.напряжения питания;
4.объема обрабатываемой информации.
5.размера экрана монитора;
3.Тактовая частота процессора - это: 1.число двоичных операций, совершаемых процессором в единицу времени;
2.количество тактов, выполняемых процессором в единицу времени;
3.число возможных обращений процессора к оперативной памяти в единицу времени;
4.скорость обмена информацией между процессором и ПЗУ.
5.скорость обмена информацией между процессором и устройством ввода/вывода;
4.Манипулятор "мышь" - это устройство: 1.для подключения принтера к компьютеру.
2.считывание информации;
3.модуляции и демодуляции;
4.ввода информации;
5.Постоянное запоминающее устройство служит для: 1.хранение программ начальной загрузки компьютера и тестирование его узлов;
2.хранения программы пользователя во время работы;
3.хранения постоянно используемых программ;
4.постоянно хранения особо ценных документов.
5.записи особо ценных прикладных программ;
6.Для долговременного хранения информации служит: 1.оперативная память;
2.магнитный диск;
3.процессор;
4.дисковод.
7.Хранение информации на внешних носителях отличается от хранения информации в оперативной памяти: 1.способами доступа к хранимой информации.
2.тем, что на внешних носителях информация может хранится после отключения питания компьютера;
3.объемом хранения информации;
4.возможность защиты информации;
8.Во время исполнения прикладная программ хранится: 1.в ПЗУ.
2.в процессоре;
3.в оперативной памяти;
4.в видеопамяти;
9.При отключении компьютера информация стирается: 1.на компакт-диске.
2.на магнитном диске;
3.из ПЗУ;
4.из оперативной памяти;
10.Привод гибких дисков - это устройство для: 1.обработки команд исполняемой программы;
2.чтения/записи данных с внешнего носителя;
3.долговременного хранения информации.
4.хранения команд исполняемой программы;
11.Для подключения компьютера к телефонной сети используется: 1.принтер;
2.плоттер;
3.сканер;
4.модем;
5.монитор.
12.Программное управление работой компьютера предполагает: 1.использование специальных формул для реализации команд в компьютере.
2.выполнение компьютером серии команд без участия пользователя;
3.двоичное кодирование данных в компьютере;
4.необходимость использования операционной системы для синхронной работы аппаратных средств;
13.Файл - это: 1.элементарная информационная единица, содержащая последовательность байтов и имеющая уникальное имя;
2.совокупность индексированных переменных;
3.объект, характеризующихся именем, значением и типом;
4.совокупность фактов и правил.
14.Расширение файла, как правило, характеризует: 1.место, занимаемое файлом на диске;
2.время создания файла;
3.тип информации, содержащейся в файле;
4.объем файла;
5.место создания файла.
15.Полный путь файлу: c:\books\raskaz.txt. Каково имя файла? 1.raskaz.txt;
2.books\raskaz.txt;
3.txt
4.books\raskaz;
Внешняя память - это память, предназначенная для длительного хранения программ и данных. Целостность содержимого ВЗУ не зависит от того, включен или выключен компьютер.
Внутренняя память -
Оперативная память (ОП) предназначена для временного хранения выполняемых программ и данных, обрабатываемых этими программами. Это энергозависимая память. Физически реализуется в модулях ОЗУ (оперативных запоминающих устройствах) различного типа. При выключении электропитания вся информация в оперативной памяти исчезает.
Объём хранящейся информации в ОЗУ составляет от 32 до 512 Мбайт и более. Занесение информации в память и её извлечение, производится по адресам. Каждый байт ОП имеет свой индивидуальный адрес (порядковый номер) . Адрес – число, которое идентифицирует ячейки памяти (регистры) . ОП состоит из большого количества ячеек, в каждой из которых хранится определенный объем информации. ОП непосредственно связана с процессором. Возможности ПК во многом зависят от объёма ОП.
Кеш память - очень быстрая память малого объема служит для увеличения производительности компьютера, согласования работы устройств различной скорости.
Специальная - постоянная, Fiash, видеопамять и тд.
Постоянное запоминающее устройство (ПЗУ) – энергонезависимая память для хранения программ управления работой и тестирования устройств ПК. Важнейшая микросхема ПЗУ – модуль BIOS (Basic Input/Output System – базовая система ввода/вывода) , в котором хранятся программы автоматического тестирования устройств после включения компьютера и загрузки ОС в оперативную память. Это Неразрушимая память, которая не изменяется при выключении питания
Перепрограммируемая постоянная память (Flash Memory) – энергонезависимая память, допускающая многократную перезапись своего содержимого
CMOS RAM (Complementary Metal-Oxide Semiconductor) - память с невысоким быстродействием и минимальным энергопотреблением от батарейки. Используется для хранения информации о конфигурации и составе оборудования компьютера, о режимах его работы. Содержимое изменяется программой, находящейся в BIOS (Basic Input Output System).
Видеопамять – запоминающее устройство, расположенное на плате управления дисплеем и предназначенное для хранения текстовой и графической информации, отображаемой на экране. Содержимое этой памяти сразу доступно двум устройствам – процессору и дисплею, что позволяет изменять изображение на экране одновременно с обновлением видеоданных в памяти.
Так что данные хранятся во внешней памяти.
Управление памятью – центральный аспект в работе операционных систем. Он оказывает основополагающее влияние на сферу программирования и системного администрирования. В нескольких последующих постах я коснусь вопросов, связанных с работой памяти. Упор будет сделан на практические аспекты, однако и детали внутреннего устройства игнорировать не будем. Рассматриваемые концепции являются достаточно общими, но проиллюстрированы в основном на примере Linux и Windows, выполняющихся на x86-32 компьютере. Первый пост описывает организацию памяти пользовательских процессов.
Каждый процесс в многозадачной ОС выполняется в собственной “песочнице”. Эта песочница представляет собой виртуальное адресное пространство, которое в 32-битном защищенном режиме всегда имеет размер равный 4 гигабайтам. Соответствие между виртуальным пространством и физической памятью описывается с помощью таблицы страниц (page table). Ядро создает и заполняет таблицы, а процессор обращается к ним при необходимости осуществить трансляцию адреса. Каждый процесс работает со своим набором таблиц. Есть один важный момент — концепция виртуальной адресации распространяется на все выполняемое ПО, включая и само ядро. По этой причине для него резервируется часть виртуального адресного пространства (т.н. kernel space).
Синим цветом на рисунке отмечены области виртуального адресного пространства, которым в соответствие поставлены участки физической памяти; белым цветом — еще не использованные области. Как видно, Firefox использовал большую часть своего виртуального адресного пространства. Все мы знаем о легендарной прожорливости этой программы в отношении оперативной памяти. Синие полосы на рисунке — это сегменты памяти программы, такие как куча (heap), стек и так далее. Обратите внимание, что в данном случае под сегментами мы подразумеваем просто непрерывные адресные диапазоны. Это не те сегменты, о которых мы говорим при описании сегментации в Intel процессорах. Так или иначе, вот стандартная схема организации памяти процесса в Linux:
Давным давно, когда компьютерная техника находилась в совсем еще младенческом возрасте, начальные виртуальные адреса сегментов были совершенно одинаковыми почти для всех процессов, выполняемых машиной. Из-за этого значительно упрощалось удаленное эксплуатирование уязвимостей. Эксплойту часто необходимо обращаться к памяти по абсолютным адресам, например по некоторому адресу в стеке, по адресу библиотечной функции, и тому подобное. Хакер, рассчитывающий осуществить удаленную атаку, должен выбирать адреса для обращения в слепую в расчете на то, что размещение сегментов программы в памяти на разных машинах будет идентичным. И когда оно действительно идентичное, случается, что людей хакают. По этой причине, приобрел популярность механизм рандомизации расположения сегментов в адресном пространстве процесса. Linux рандомизирует расположение стека, сегмента для memory mapping, и кучи – их стартовый адрес вычисляется путем добавления смещения. К сожалению, 32-битное пространство не очень-то большое, и эффективность рандомизации в известной степени нивелируется.
В верхней части user mode space расположен стековый сегмент. Большинство языков программирования используют его для хранения локальных переменных и аргументов, переданных в функцию. Вызов функции или метода приводит к помещению в стек т.н. стекового фрейма. Когда функция возвращает управление, стековый фрейм уничтожается. Стек устроен достаточно просто — данные обрабатываются в соответствии с принципом «последним пришёл — первым обслужен» (LIFO). По этой причине, для отслеживания содержания стека не нужно сложных управляющих структур – достаточно всего лишь указателя на верхушку стека. Добавление данных в стек и их удаление – быстрая и четко определенная операция. Более того, многократное использование одних и тех же областей стекового сегмента приводит к тому, что они, как правило, находятся в кеше процессора, что еще более ускоряет доступ. Каждый тред в рамках процесса работает с собственным стеком.
Возможна ситуация, когда пространство, отведенное под стековый сегмент, не может вместить в себя добавляемые данные. В результате, будет сгенерирован page fault, который в Linux обрабатывается функцией expand_stack(). Она, в свою очередь, вызовет другую функцию — acct_stack_growth(), которая отвечает за проверку возможности увеличить стековый сегмент. Если размер стекового сегмента меньше значения константы RLIMIT_STACK (обычно 8 МБ), то он наращивается, и программа продолжает выполняться как ни в чем не бывало. Это стандартный механизм, посредством которого размер стекового сегмента увеличивается в соответствии с потребностями. Однако, если достигнут максимально разрещённый размер стекового сегмента, то происходит переполнение стека (stack overflow), и программе посылается сигнал Segmentation Fault. Стековый сегмент может увеличиваться при необходимости, но никогда не уменьшается, даже если сама стековая структура, содержащаяся в нем, становиться меньше. Подобно федеральному бюджету, стековый сегмент может только расти.
Динамическое наращивание стека – единственная ситуация, когда обращение к «немэппированной» области памяти, может быть расценено как валидная операция. Любое другое обращение приводит к генерации page fault, за которым следует Segmentation Fault. Некоторые используемые области помечены как read-only, и обращение к ним также приводит к Segmentation Fault.
Под стеком располагается сегмент для memory mapping. Ядро использует этот сегмент для мэппирования (отображания в память) содержимого файлов. Любое приложение может воспользоваться данным функционалом посредством системного вызовома mmap() (ссылка на описание реализации вызова mmap) или CreateFileMapping() / MapViewOfFile() в Windows. Отображение файлов в память – удобный и высокопроизводительный метод файлового ввода / вывода, и он используется, например, для загрузки динамических библиотек. Существует возможность осуществить анонимное отображение в память (anonymous memory mapping), в результате чего получим область, в которую не отображен никакой файл, и которая вместо этого используется для размещения разного рода данных, с которыми работает программа. Если в Linux запросить выделение большого блока памяти с помощью malloc(), то вместо того, чтобы выделить память в куче, стандартная библиотека C задействует механизм анонимного отображения. Слово «большой», в данном случае, означает величину в байтах большую, чем значение константы MMAP_THRESHOLD. По умолчанию, это величина равна 128 кБ, и может контролироваться через вызов mallopt().
Если текущий размер кучи позволяет выделить запрошенный объем памяти, то выделение может быть осуществлено средствами одной лишь среды выполнения, без привлечения ядра. В противном случае, функция malloc() задействует системный вызов brk() для необходимого увеличения кучи (ссылка на описание реализации вызова brk). Управление памятью в куче – нетривиальная задача, для решения которой используются сложные алгоритмы. Данные алгоритмы стремятся достичь высокой скорости и эффективности в условиях непредсказуемых и хаотичных пэттернов выделения памяти в наших программах. Время, затрачиваемое на каждый запрос по выделению памяти в куче, может разительно отличаться. Для решения данной проблемы, системы реального времени используют специализированные аллокаторы памяти. Куча также подвержена фрагментированию, что, к примеру, изображено на рисунке:
Наконец, мы добрались до сегментов, расположенных в нижней части адресного пространства процесса: BSS, сегмент данных (data segment) и сегмент кода (text segment). BSS и data сегмент хранят данные, соответствующий static переменным в исходном коде на C. Разница в том, что в BSS хранятся данные, соответствующие неинициализированным переменным, чьи значения явно не указаны в исходном коде (в действительности, там хранятся объекты, при создании которых в декларации переменной либо явно указано нулевое значение, либо значение изначально не указано, и в линкуемых файлах нет таких же common символов, с ненулевым значением. – прим. перевод.). Для сегмента BSS используется анонимное отображение в память, т.е. никакой файл в этот сегмент не мэппируется. Если в исходном файле на C использовать int cntActiveUsers, то место под соответствующий объект будет выделено в BSS.
В отличии от BSS, data cегмент хранит объекты, которым в исходном коде соответствуют декларации static переменных, инициализированных ненулевым значением. Этот сегмент памяти не является анонимным — в него мэппируется часть образа программы. Таким образом, если мы используем static int cntWorkerBees = 10, то место под соответствующий объект будет выделено в data сегменте, и оно будет хранить значение 10. Хотя в data сегмент отображается файл, это т.н. «приватный мэппинг» (private memory mapping). Это значит, что изменения данных в этом сегменте не повлияют на содержание соответствующего файла. Так и должно быть, иначе присвоения значений глобальным переменным привели бы к изменению содержания файла, хранящегося на диске. В данном случае это совсем не нужно!
С указателями все немножко посложнее. В примере из наших диаграмм, содержимое объекта, соответствующего переменной gonzo – это 4-байтовый адрес – размещается в data сегменте. А вот строка, на которую ссылается указатель, не попадет в data сегмент. Строка будет находиться в сегменте кода, который доступен только на чтение и хранит весь Ваш код и такие мелочи, как, например, строковые литералы (в действительности, строка хранится в секции .rodata, которая вместе с другими секциями, содержащими исполняемый код, рассматривается как сегмент, который загружается в память с правами на выполнение кода / чтения данных – прим. перевод.). В сегмент кода также мэппируется часть исполняемого файла. Если Ваша программа попытается осуществить запись в text сегмент, то заработает Segmentation Fault. Это позволяет бороться с «бажными» указателями, хотя самый лучший способ борьбы с ними – это вообще не использовать C. Ниже приведена диаграмма, изображающая сегменты и переменные из наших примеров:
Мы можем посмотреть, как используются области памяти процесса, прочитав содержимое файла /proc/pid_of_process/maps. Обратите внимание, что содержимое самого сегмента может состоять из различных областей. Например, каждой мэппируемой в memory mapping сегмент динамической библиотеке отводится своя область, и в ней можно выделить области для BSS и data сегментов библиотеки. В следующем посте поясним, что конкретно подразумевается под словом “область”. Учтите, что иногда люди говорят “data сегмент”, подразумевая под этим data + BSS + heap.
Можно использовать утилиты nm и objdump для просмотра содержимого бинарных исполняемых образов: символов, их адресов, сегментов и т.д. Наконец, то, что описано в этом посте – это так называемая “гибкая” организация памяти процесса (flexible memory layout), которая вот уже несколько лет используется в Linux по умолчанию. Данная схема предполагает, что у нас определено значение константы RLIMIT_STACK. Когда это не так, Linux использует т.н. классическую организации, которая изображена на рисунке:
Ну вот и все. На этом наш разговор об организации памяти процесса завершен. В следующем посте рассмотрим как ядро отслеживает размеры описанных областей памяти. Также коснемся вопроса мэппирования, какое отношение к этому имеет чтение и запись файлов, и что означают цифры, описывающие использование памяти.
Читайте также: