Программное обеспечение ПК
Software — Программное обеспечение (совокупность необходимых программ для обработки различных данных)
Программа – последовательность команд, которую выполняет компьютер в процессе обработки данных.
Данные – это информация, представленная в форме, пригодной для её передачи и обработки с помощью компьютера (Данные – это информация, обрабатываемая в компьютере программным путем). Данные хранятся и обрабатываются на машинном языке — в виде последовательностей 0 и 1.
Программы и данные хранятся во внешней памяти. Однако, для того чтобы компьютер мог выполнить программу по обработки данных, она должна находится в ОП (программа, управляющая работой компьютера, всегда находится в его внутренней памяти) Процессор последовательно считывает команды программы и необходимые данные из ОП, а затем записывает данные-результаты обратно в ОП или внешнюю память. В процессе работы процессор может запрашивать данные с устройств ввода информации и пересылать данные на устройства вывода.
Разбираемся, как на самом деле работает оперативная память компьютера.
Файл — наименьшая единица хранения информации, содержащая последовательность байтов и имеющая имя. т.е. Файл -это определенное количество информации, имеющее имя и хранящееся во внешней памяти.
Имя файласостоит из двух частей, разделенных точкой. Слева от точки — находится собственно имя файла (задает пользователь). Справа — формат файла (расширение; тип), которое указывает, какого рода информация хранится в данном файле. Формат устанавливает операционная система в зависимости от отго в какой программной среде создавался файл
форматы файлов: exe, com, bat — программы
arj, zip, lzh,rar — сжатые файлы
gif, pcx, bmp, jpeg — картинки (графика)
html — Web страницы
txt, doc — текстовый файл
wav, mid — звуковые файлы
bas, pas — тексты на языках программирования Бейсик, Паскаль
Файловая структура
Файловая система (ФС) — функциональная часть ОС, т.е. это порядок хранения и — организации файлов на диске
Виды файловой структуры:
1) Одноуровневая ФС — линейная последовательность имен файлов, используется для дисков с небольшим количеством файлов;
2) Многоуровневая иерархическая ФС — представляет собой древовидную структуру, служит для хранения сотни и тысячи файлов. Каталог (Папка) верхнего уровня содержит вложенные папки 1уровня, которые могут содержать папки 2 уровня и т.д.
Для хранения информации каждый диск разбивается на 2 области:
1) каталог (directory) или папка — содержит названия файлов и указание на начало их размещения на диске;
2) область хранения файлов, содержит текст.
Чтобы найти файл надо знать: 1)имя файла; 2) где храниться файл
папка 1уровня –GAMES
папка 2уровня –CHESS;
имя файла — zena.exe
В процессе работы наиболее часто над файлами производят следующие операции: копирование, перемещение, удаление, переименование.
Операционная система
Операционная система (ОС) это:
КАК РАБОТАЕТ ПАМЯТЬ КОМПЬЮТЕРА | ОСНОВЫ ПРОГРАММИРОВАНИЯ
— набор программ, обеспечивающих совместное функционирование всех устройств компьютера и предоставляющий доступ к его ресурсам
— системное программное обеспечение, т.е. программы, управляющие ОП, процессором, внешними устройствами и файлами и прикладными программами, и ведущие диалог с пользователем
На IBM-совместимых ПК используются ОС корпорации Microsoft Windows, а также свободно распространяемая операционная система Linux. На ПК фирмы Apple — различные версии ОС Mac OS. На рабочих станциях и серверах — ОС Windows NT/2000/XP и UNIX. ОС разные, но их назначение и функции одинаковые. ОС является необходимой составляющей ПО ПК, без нее компьютер не может работать в принципе.
MS-DOS – первая ОС, создана в 1985 году, неграфическая ОС, которая использует интерфейс командной строки. Все команды набираются по буквам в специальной строке. Оболочка – это программа, которая запускается под управлением ОС и помогает работать с ней (например, Norton Commander)
WINDOWS – ОС фирмы Microsoft, использует объектно-ориентированную оконную технологию. Подключение устройств происходит автоматически, т.е. ОС сама узнает, что установлено на ПК и настраивается на работу с новым оборудованием. Имеет удобный пользовательский интерфейс. Выполняет базовые функции:
1) управляет файловой системой (просмотр, удаление, копирование, перемещение, переименование);
2) запуск и завершение прикладных программ;
3) всевозможный сервиз (информация о параметрах, их настройка, оптимизация работы и т.д.)
Состав ОС:
Программный модуль, управляющий файловой системой — Процесс работы компьютера в сводится к обмену файлами между устройствами
Командный процессор – специальная программа, которая запрашивает у пользователя команды и выполняет их. Пользователь может дать команду запуска программы, выполнения какой-либо операции над файлами (копирование, удаление, переименование), вывода документа на печать и так далее. Операционная система должна эту команду выполнить
Драйверы – программы, которые управляют работой устройств. Каждому устройству соответствует свой драйвер. Технология «Plug and Play» (подключи и играй) позволяет автоматизировать подключение новых устройств. В процессе установки Windows определяет тип и конкретную модель установленного устройства и подключает необходимый для его функционирования драйвер.
При включении компьютера производится загрузка драйверов в оперативную память. Пользователь имеет возможность вручную установить или переустановить драйверы.
Программные модули графического интерфейса – программы, позволяющие пользователю вводить команды с помощью мыши
Утилиты — сервисные программы для обслуживания дисков (проверять, сжимать, дефрагментировать и т.д.), выполнения операций с файлами (архивировать, копировать и тд), и работы в компьютерных сетях
Справочная система – получение информации о функционировании ОС в целом и о работе её отдельных модулей
Файлы ОС хранятся во внешней, долговременной памяти (на жестком, гибком или лазерном диске). Но программы могут выполняться, только если они находятся в оперативной памяти, поэтому файлы ОС необходимо загрузить в оперативную память.
Загрузка ОС:
— Диск (жесткий, гибкий или лазерный), на котором находятся файлы операционной системы и с которого производится ее загрузка, называется системным.
— После включения ПК производится загрузка ОС с системного диска в оперативную память. Загрузка должна выполняться в соответствии с программой загрузки. Однако для того чтобы компьютер выполнял какую-нибудь программу, эта программа должна уже находиться в оперативной памяти. Разрешение этого противоречия состоит в последовательной, поэтапной загрузке операционной системы.
— В ПЗУ содержатся программы тестирования ПК и первого этапа загрузки ОС — это BIOS (Basic Input/Output System — базовая система ввода/вывода).
— После включения питания процессор начинает выполнение программы самотестирования компьютера POST (Power-ON Self Test). Производится тестирование работоспособности процессора, памяти и других аппаратных средств компьютера
После проведения самотестирования специальная программа в BIOS, начинает поиск загрузчика ОС. Происходит поочередное обращение к имеющимся дискам и поиск на определенном месте (в первом загрузочном секторе диска) наличия специальной программы Master Boot (программы-загрузчика ОС).
— Master Boot загружается в ОС и ей передается управление работой компьютера. Программа ищет файлы операционной системы на системном диске и загружает их в оперативную память в качестве программных модулей
Инсталляция программ — процедура установки большинства программных продуктов, при которой используется специальная дистрибутивная копия.
Копирование программного продукта на жесткий диск называется установкой. Файл с программой имеет расширение .EXE .COM .BAT Он работает автономно или в сопровождении служебных файлов. Запустить программу – значит начать её работу. Но данный программный продукт должен быть совместим с аппаратными средствами.
Приложения
Прикладное программное обеспечение (ППО) делится на 2 группы:
1) Системы программирования – являются инструментами для программистов профессионалов и позволяют разрабатывать программы на различных языках программирования (Basic, Pascal, C и системах визуального программирования Visual Basic, Delphi)
2) Приложения – программы, которые функционируют под управлением определенной ОС и позволяют пользователю обрабатывать информацию и работать в компьютерных сетях, не владея программированием
Практически каждый пользователь нуждается в приложениях общего назначения – текстовые и графические редакторы, электронные таблицы, мультимедиа-презентации. Наиболее распространен сейчас пакет общего назначения Microsoft Office. Для глобальных и локальных сетей созданы коммуникационные программы (входят в состав Windows). Для борьбы с вирусами – антивирусные программы.
Обучающие программы – для самообразования (репетиторы и т.д.). Мультимедиа приложения – энциклопедии, справочники на лазерных дисках и т.д., компьютерные игры. Приложения специального назначения – для профессионального использования компьютерной графики, системы автоматизированного проектирования, бухгалтерские программы, компьютерные словари, системы автоматического перевода и др.
Приложения общего назначения:
— Электронные калькуляторы – обработка числовой информации
— Текстовые редакторы – программы для создания текстовых документов — Word (Microsoft)
— Электронные таблицы – программы для хранения данных в табличной форме и работы с этими данными – вычислений, создания диаграмм, красиво оформленных отчетов и т.д.. Самая известная электронная таблица – Excel (Microsoft)
— Графические редакторы — для создания и обработки графических изображений (Paint)
— Программы разработки презентаций – содержат текст, изображения, анимацию и звук. например- Power Point (Microsoft
— Звуковые редакторы – обработка звука
— Мультимедиа проигрыватели – звук, анимация, видео
— Системы управления базами данных (СУБД) – для хранения очень больших объемов данных, имеющих сложную структуру связей и ссылок. Примером СУБД – является Access (Microsoft)
— Интегрированные пользовательские системы – включают в себя несколько прикладных программ разного назначения. Пригодны для всех этапов серьезной деятельности. Наиболее распространенные в мире интегрированные системы – Office и Works (Microsoft)
— Коммуникационные программы – обмен информации между компьютерами: для работы с электронной почтой, общения в Интернете.
— Компьютерные игры – логические, стратегические или имитаторы-тренажеры
— Обучающие программы – электронные учебники, репетиторы, тесты
— Архиваторы — программы, которые используют для уменьшения объёма файла. Степень сжатия зависит от типа файла и программы-архиватора. Для обращения к сжатому файлу, его необходимо распаковать
Приложения специального назначения –
это программы для профессионально использования в различных сферах деятельности квалифицированными пользователями:
— Системы компьютерного черчения
— Компьютерные словари, энциклопедии
— Системы автоматического перевода
— Графические системы — это системы для деловой и презентационной графики инженерной графики , художественной графики и анимации, обработки растровых изображений Adobe Photoshop, программы для просмотра серверов Интернет Internet Explorer
- Главная
- Информатика 1 курс
- лекции
- Роль информации в современном обществе
- ппппп
- Программное обеспечение ПК
- Компьютерные вирусы
- Устройство ПК
- Интернет
- Передача информации между компьютерами.
- Графический редактор MS Paint
- Microsoft Word 2007
- Microsoft Excel 2007
- Microsoft Access 2007
- Алгоритмы
- Введение в программирование
Источник: udina.jimdofree.com
Основная память
Основная память — это устройство для хранения информации.
Она состоит из оперативного и постоянного запоминающих устройств.
В оперативное запоминающее устройство (ОЗУ), которое часто также называют оперативной памятью (ОП), с диска или дискет копируются (загружаются) программы, которые выполняются в данный момент. Это значит, что когда вы запускаете какую-либо компьютерную программу, находящуюся на диске, она копируется в оперативную память, после чего процессор начинает выполнять команды, изложенные в этой программе.
Часть ОЗУ, называемая «видеопамять», содержит данные, соответствующие текущему изображению на экране. При отключении питания содержимое ОЗУ стирается. Быстродействие (скорость работы) компьютера напрямую зависит от величины его ОЗУ, которое в современных компьютерах обычно 128- 256 Мбайт. В первых моделях компьютеров оперативная память составляла не более 1 Мбайт. Современные прикладные программы часто требуют для своего выполнения большого объема ОЗУ; в противном случае они просто не запускаются.
Рис.2.4. Виды памяти
Постоянное запоминающее устройство (ПЗУ) постоянно хранит информацию, которая записывается туда при изготовлении компьютера. В ПЗУ находятся:
— тестовые программы, проверяющие при каждом включении компьютера правильность работы его блоков;
— программы для управления основными периферийными устройствами: дисководом, монитором, клавиатурой;
— информация о том, где на диске расположена операционная система.
Операционная система — это программа, управляющая работой компьютера и позволяющая человеку совершать различные действия с данными на дисках — удалять их, копировать с диска на диск, запускать на выполнение различные программы и т. п. При включении компьютера операционная система загружается в ОЗУ и находится там в течение всего сеанса работы. Для (IВМ-совместимых компьютеров наиболее популярной является операционная система WINDOWS.
Основная память состоит из регистров.
Регистр — это устройство для временного запоминания информации в оцифрованной (двоичной) форме.
Запоминающим элементом в регистре является триггер — устройство, которое может находиться в одном из двух состояний, одно из которых соответствует запоминанию двоичного нуля, другое — запоминанию двоичной единицы. Триггер представляет собой крошечный конденсатор-батарейку, которую можно заряжать множество раз.
Если такой конденсатор заряжен — он как бы запомнил значение «1», если заряд отсутствует — значение «О». Регистр содержит несколько связанных друг с другом триггеров. Число триггеров в регистре называется разрядностью компьютера. Производительность компьютера напрямую связана с разрядностью, которая бывает равной 8, 16, 32 и 64.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Анатомия программы в памяти
Управление памятью – одна из главных задач ОС. Она критична как для программирования, так и для системного администрирования. Я постараюсь объяснить, как ОС работает с памятью. Концепции будут общего характера, а примеры я возьму из Linux и Windows на 32-bit x86. Сначала я опишу, как программы располагаются в памяти.
Каждый процесс в многозадачной ОС работает в своей «песочнице» в памяти. Это виртуальное адресное пространство, которое в 32-битном режиме представляет собою 4Гб блок адресов. Эти виртуальные адреса ставятся в соответствие (mapping) физической памяти таблицами страниц, которые поддерживает ядро ОС. У каждого процесса есть свой набор таблиц.
Но если мы начинаем использовать виртуальную адресацию, приходится использовать её для всех программ, работающих на компьютере – включая и само ядро. Поэтому часть пространства виртуальных адресов необходимо резервировать под ядро.
Это не значит, что ядро использует так много физической памяти – просто у него в распоряжении находится часть адресного пространства, которое можно поставить в соответствие необходимому количеству физической памяти. Пространство памяти для ядра отмечено в таблицах страниц как эксклюзивно используемое привилегированным кодом, поэтому если какая-то программа пытается получить в него доступ, случается page fault. В Linux пространство памяти для ядра присутствует постоянно, и ставит в соответствие одну и ту же часть физической памяти у всех процессов. Код ядра и данные всегда имеют адреса, и готовы обрабатывать прерывания и системные вызовы в любой момент. Для пользовательских программ, напротив, соответствие виртуальных адресов реальной памяти меняется, когда происходит переключение процессов:
Голубым отмечены виртуальные адреса, соответствующие физической памяти. Белым – пространство, которому не назначены адреса. В нашем примере Firefox использует гораздо больше места в виртуальной памяти из-за своей легендарной прожорливости. Полоски в адресном пространстве соответствуют сегментам памяти таким, как куча, стек и проч. Эти сегменты – всего лишь интервалы адресов памяти, и не имеют ничего общего с сегментами от Intel. Вот стандартная схема сегментов у процесса под Linux:
Когда программирование было белым и пушистым, начальные виртуальные адреса сегментов были одинаковыми для всех процессов. Это позволяло легко удалённо эксплуатировать уязвимости в безопасности. Зловредной программе часто необходимо обращаться к памяти по абсолютным адресам – адресу стека, адресу библиотечной функции, и т.п.
Удаленные атаки приходилось делать вслепую, рассчитывая на то, что все адресные пространства остаются на постоянных адресах. В связи с этим получила популярность система выбора случайных адресов. Linux делает случайными стек, сегмент отображения в память и кучу, добавляя смещения к их начальным адресам. К сожалению, в 32-битном адресном пространстве особо не развернёшься, и для назначения случайных адресов остаётся мало места, что делает эту систему не слишком эффективной.
Самый верхний сегмент в адресном пространстве процесса – это стек, в большинстве языков хранящий локальные переменные и аргументы функций. Вызов метода или функции добавляет новый кадр стека (stack frame) к существующему стеку. После возврата из функции кадр уничтожается.
Эта простая схема приводит к тому, что для отслеживания содержимого стека не требуется никакой сложной структуры – достаточно всего лишь указателя на начало стека. Добавление и удаление данных становится простым и однозначным процессом. Постоянное повторное использование районов памяти для стека приводит к кэшированию этих частей в CPU, что добавляет скорости. Каждый поток выполнения (thread) в процессе получает свой собственный стек.
Можно прийти к такой ситуации, в которой память, отведённая под стек, заканчивается. Это приводит к ошибке page fault, которая в Linux обрабатывается функцией expand_stack(), которая, в свою очередь, вызывает acct_stack_growth(), чтобы проверить, можно ли ещё нарастить стек. Если его размер не превышает RLIMIT_STACK (обычно это 8 Мб), то стек увеличивается и программа продолжает исполнение, как ни в чём не бывало. Но если максимальный размер стека достигнут, мы получаем переполнение стека (stack overflow) и программе приходит ошибка Segmentation Fault (ошибка сегментации). При этом стек умеет только увеличиваться – подобно государственному бюджету, он не уменьшается обратно.
Динамический рост стека – единственная ситуация, в которой может осуществляться доступ к свободной памяти, которая показана белым на схеме. Все другие попытки доступа к этой памяти вызывают ошибку page fault, приводящую к Segmentation Fault. А некоторые занятые области памяти служат только для чтения, поэтому попытки записи в эти области также приводят к Segmentation Fault.
После стека идёт сегмент отображения в память. Тут ядро размещает содержимое файлов напрямую в памяти. Любое приложение может запросить сделать это через системный вызов mmap() в Linux или CreateFileMapping() / MapViewOfFile() в Windows. Это удобный и быстрый способ организации операций ввода и вывода в файлы, поэтому он используется для подгрузки динамических библиотек.
Также возможно создать анонимное место в памяти, не связанное с файлами, которое будет использоваться для данных программы. Если вы сделаете в Linux запрос на большой объём памяти через malloc(), библиотека C создаст такую анонимное отображение вместо использования памяти из кучи. Под «большим» подразумевается объём больший, чем MMAP_THRESHOLD (128 kB по умолчанию, он настраивается через mallopt().)
Сама куча расположена на следующих позициях в памяти. Она обеспечивает выделение памяти во время выполнения программы, как и стек – но, в отличие от него, хранит те данные, которые должны пережить функцию, размещающую их. В большинстве языков есть инструменты для управления кучей. В этом случае удовлетворение запроса на размещение памяти выполняется совместно программой и ядром. В С интерфейсом для работы с кучей служит malloc() с друзьями, а в языке, имеющем автоматическую сборку мусора, типа С#, интерфейсом служит ключевое слово new.
Если в куче оказывается недостаточно места для выполнения запроса, эту проблему может обработать сама программа без вмешательства ядра. В ином случае куча увеличивается системным вызовом brk(). Управление кучей – дело сложное, оно требует хитроумных алгоритмов, которые стремятся работать быстро и эффективно, чтобы угодить хаотичному методу размещению данных, которым пользуется программа. Время на обработку запроса к куче может варьироваться в широких пределах. В системах реального времени есть специальные инструменты для работы с ней. Кучи тоже бывают фрагментированными:
И вот мы добрались до самой нижней части схемы – BSS, данные и текст программы. BSS и данные хранят статичные (глобальные) переменные в С. Разница в том, что BSS хранит содержимое непроинициализированных статичных переменных, чьи значения не были заданы программистом. Кроме этого, область BSS анонимна, она не соответствует никакому файлу. Если вы пишете static int cntActiveUsers , то содержимое cntActiveUsers живёт в BSS.
Сегмент данных, наоборот, содержит те переменные, которые были проинициализированы в коде. Эта часть памяти соответствует бинарному образу программы, содержащему начальные статические значения, заданные в коде. Если вы пишете static int cntWorkerBees = 10 , то содержимое cntWorkerBees живёт в сегменте данных, и начинает свою жизнь как 10. Но, хотя сегмент данных соответствует файлу программы, это приватное отображение в память (private memory mapping) – а это значит, что обновления памяти не отражаются в соответствующем файле. Иначе изменения значения переменных отражались бы в файле, хранящемся на диске.
Пример данных на диаграмме будет немного сложнее, поскольку он использует указатель. В этом случае содержимое указателя, 4-байтный адрес памяти, живёт в сегменте данных. А строка, на которую он показывает, живёт в сегменте текста, который предназначен только для чтения. Там хранится весь код и разные другие детали, включая строковые литералы. Также он хранит ваш бинарник в памяти.
Попытки записи в этот сегмент оканчиваются ошибкой Segmentation Fault. Это предотвращает ошибки, связанные с указателями (хотя не так эффективно, как если бы вы вообще не использовали язык С). На диаграмме показаны эти сегменты и примеры переменных:
Изучить области памяти Linux-процесса можно, прочитав файл /proc/pid_of_process/maps. Учтите, что один сегмент может содержать много областей. К примеру, у каждого файла, сдублированного в память, есть своя область в сегменте mmap, а у динамических библиотек – дополнительные области, напоминающие BSS и данные. Кстати, иногда, когда люди говорят «сегмент данных», они имеют в виду данные + bss + кучу.
Бинарные образы можно изучать при помощи команд nm и objdump – вы увидите символы, их адреса, сегменты, и т.п. Схема виртуальных адресов, описанная в этой статье – это т.н. «гибкая» схема, которая по умолчанию используется уже несколько лет. Она подразумевает, что переменной RLIMIT_STACK присвоено какое-то значение. В противном случае Linux использует «классическую» схему:
- Программирование
- Системное программирование
- C
Источник: habr.com