Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

2.1-4. Операционные системы

  1. В начало
  2. Курсы
  3. Весенний семестр
  4. Прикладная математика и информатика
  5. PM-OS-2016
  6. Модуль 2: Лабораторная 3: Разделяемая память
  7. Задание 8: разделяемая память

Задание 8: разделяемая память

Требуемые условия завершения
Открыто с: суббота, 30 апреля 2016, 11:00
Срок сдачи: вторник, 10 мая 2016, 23:00

Задание

Модифицировать программы из задания про именованные каналы для пересылки данных через разделяемую память. Доступ к разделяемому сегменту должен синхронизироваться при помощи семафоров.

Полезные заголовки

#include <sys/stat.h> 
#include <fcntl.h> 
#include <sys/mman.h>

Полезные функции

  • Создание или открытие объекта разделяемой памяти:

    int shm_open(const char *name, int oflag, mode_t mode);
    
  • Удаление объекта разделяемой памяти:

    int shm_unlink(const char *name);
    
  • Установка размера объекта разделяемой памяти:

    int ftruncate(int fd, off_t length);
    
  • Отображение файла или объекта разделяемой памяти в адресное пространство процесса:

    void *mmap(void *addr, size_t len, int prot, int flags,
           int fildes, off_t off);
    
  • Удаление отображения:

    int munmap(void *addr, size_t length);
    

Полезные ссылки

  • http://linux.die.net/man/7/shm_overview
  • http://habrahabr.ru/post/122108/
  • http://dmilvdv.narod.ru/Translate/ELSDD/elsdd_posix_shared_memory.html
  • http://www.opennet.ru/man.shtml?topic=shm_open&category=3&russian=0
  • http://pubs.opengroup.org/onlinepubs/009695399/functions/shm_open.html

Примерная схема работы

#include <unistd.h>
#include <sys/mman.h>
...

#define MAX_LEN 10000

struct region    /* Определение структуры разделяемой памяти */
{
    int len;
    char buf[MAX_LEN];
};

int main()
{
  struct region *rptr;
  int fd;

  /* Создание объекта разделяемой памяти и установка его размера
  */

  fd = shm_open(
    "/myregion", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
  if (fd == -1)
    /* Обработка ошибки */ ;

  if (ftruncate(fd, sizeof(struct region)) == -1)
    /* Обработка ошибки */ ;

  /* Отображение объекта разделяемой памяти */

  rptr = mmap(
    NULL, sizeof(struct region),
    PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
  if (rptr == MAP_FAILED)
    /* Обработка ошибки */ ;

  /* Теперь можно обращаться к отображённой области через поля
     rptr; например, rptr->len
  */
  ...
}
◄ Список функций и переменных к контрольной работе 2
Задание 9 параллельная обработка файлов ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Весенний семестр

        • Прикладная математика и информатика

          • УМФ Т-2025

          • ИНС

          • МО ПМИ

          • ДВ 1.3 Ruby on Rails

          • Летняя практика 2к ТУ

          • ЦИТ

          • Летняя практика ИО

          • М С С

          • Advanced problems - 21

          • ЯП-2024/25 (2)

          • Дистанционная летняя практика 2 курс

          • PM-OS-2016

            • Общее

            • Модуль 1: Лабораторная 1

            • Введение в операционные системы

            • Модуль 1: Лабораторная 2

            • Процессы и многозадачность

            • Модуль 2: Лабораторная 1

            • Многозадачность: планирование

            • IPC: Межпроцесное взаимодействие

            • Модуль 2: Лабораторная 2: Каналы и именованные каналы

            • Модуль 2: Лабораторная 3: Разделяемая память

              • ЗаданиеЗадание 8: разделяемая память

            • Модуль 2: Лабораторная 4: Потоки

            • Доборы баллов

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

        • ОИИ

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
PM-OS-2016
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика