Skip to content

VA-Minsk/SPO_VM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

139 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

СПОВМ (системное программное обеспечение вычислительных машин). Лабораторные работы

Build Status
Лабораторные работы 1-5 должны компилироваться как под Windows, так и под Linux.
Остальные - под Windows только.
P.S. Все авторские права на предоставленные ниже условия лабораторных работ принадлежат Белорусскому Государственному Университету Информатики и Радиоэлектроники (БГУИР, BSUIR)

Чем собирать:

Для Windows использовалось:

  • Microsoft Visual Studio 2010 SP1 Professional

Для Linux:

  • g++ v4.8.4
  • make v3.81

Как собирать:

  • linux версия:
    1. Перейдите в консоли в папку с нужной лабораторной работой
    2. Наберите в консоли make
    3. После окончания компиляции используйте make run для запуска
  • windows версия:
    1. Перейдите в папку с нужной лабораторной работой
    2. Запустите требуемый *.sln файл.
    3. Скомпилируйте нужную вам версию с помощью Visual Studio

Лабораторная работа №1

Реализовать взаимодействие кофейного аппарата и человека. Человек может опустить в аппарат определенную сумму денег и сделать выбор. Кофейный аппарат может как выдавать различные типы напитков (минимум 2), так и проинформировать пользователя об отсутствии какого-либо напитка либо нехватке средств. Состояние кофейного аппарата сохраняется, т.е. следующий пользователь может не успеть взять определенный напиток, т.к. последнюю порцию забрал предыдущий человек.

Лабораторная работа №2

К автомату могут подойти несколько пользователей одновременно. Пользователь 2 начнет обслуживаться только тогда, когда отойдет пользователь 1. Требоваиня с предыдущей работы сохраняются.

Лабораторная работа №3

Каждый клиент - отдельный открытый терминал, клиенты формируют очередь на главном процессе и, как и во второй лабе, могут получить обслуживание только в порядке очереди. В это время в главном процессе на терминал должны выводиться имена клиентов в том порядке, как они подключились. Если в момент вывода создается новый клиент - вывод на главном процессе должен это обработать, если один из клиентов выключается - вывод на главном процессе должен это обработать.
Если есть 3 клиента(qwe, asd, zxc), то на главный терминал должно выводиться:
qwe asd zxc qwe asd zxc qwe asd zxc .... и так до бесконечности.
Если добавим клиента rty, то вывод должен быть такой:
qwe asd zxc rty qwe asd zxc rty ... до бесконечности.
Если закроем клиента qwe, то вывод должен быть такой:
asd zxc rty asd zxc rty asd zxc rty

Лабораторная работа №4

Cделать программу, которая будет выводить имена потоков на консоль так же, как работает у Вас сейчас с процессами (в лабораторной работе 3), но с некоторыми изменениями. При запуске параметрами командной строки передаются два параметра: 1 - интервал, с которым будут выводиться имена потоков на экран, 2 - интервал, с которым они будут автоматически создаваться. Помимо автоматического создания, потоки можно создавать/удалять руками, правила такие же, как в предыдущей лабе.

Лабораторная работа №5

Eсть папка, которая в себе содержит папки с текстовыми файлами. На каждую папку создается отдельный процесс. В каждом процессе будет два потока:

  1. Первый поток (читатель) асинхронным образом считывает содержимое одного файла;
  2. Поток-читатель уведомляет второй поток (писатель) о том, что содержимое файла прочитано и может быть передано писателю;
  3. Поток-писатель получает от первого потока содержимое файла и асинхронным образом записывает полученную строку в конец выходного файла;
  4. Поток-писатель уведомляет читателя о том, что строка записана в выходной файл и можно приступать к чтению следующего файла;
  5. Процедура повторяется с п.1, пока не закончится список файлов.

В результате должна быть произведена конкатенация (объединение) входных текстовых файлов в один результирующий. Функции чтения-записи должны быть выделены в динамическую библиотеку, подключены на этапе выполнения программы и выгружены после отработки основного цикла. Все результирующие файлы должны быть записаны в самую верхнюю папку, т.е. которая содержит в себе папки с файлами. Эти файлы должны быть названы так, как называется папка, в которой они изначально были. Также эти файлы должны быть текстовыми.
Под текстовыми файлами подразумеваются файлы типа *.txt.
Каждый процесс рекурсивно обходит вложенные в обрабатываемую им папку папки. Результаты "обходов" также пишутся в основной файл этого процесса.

Лабораторная работа №6

Разработать собственный менеджер памяти, реализующий аналоги функций malloc() и free().

Лабораторная работа №7

Разработать собственную файловую систему. Физический носитель в данном случае эмулируется файлом фиксированного размера. Архитектура файловой системы остается на усмотрение студента. В конечном результате должны быть реализованы следующие компоненты:

  • библиотека функций по добавлению, удалению и модификации файлов;
  • простой файловый менеджер, основанный на данной библиотеке.

Все изменения, внесенные в файловую систему (иерархия директорий, файлы, их атрибуты), должны сохраняться в эмулирующем файле и быть доступными при последующем запуске приложения.

About

BSUIR VMSiS SPOVM

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors