Skip to content

Commit

Permalink
Добавлены новые задания
Browse files Browse the repository at this point in the history
  • Loading branch information
0Nera committed Oct 1, 2023
1 parent ffd27ac commit b57b91c
Show file tree
Hide file tree
Showing 5 changed files with 205 additions and 1 deletion.
84 changes: 84 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Системные вызовы

## mem::alloc(size_t size)

Выделение блока памяти размером `size`.
Вовзращает адрес на блок памяти или 0 в случае ошибки.

Коды ошибок:

- `-1 не хватает ОЗУ`;
- `-2 неправильный размер блока`.

## mem::free(uintptr_t mem)

Освобождение блока памяти `mem`.
Вовзращает 0 в случае успеха или -1 в случае ошибки.

Коды ошибок:

- `-1 блок не найден`.


## sys::alloc_framebuffer()

Выделяет память под буфер кадра для отображения графического интерфейса.
Возвращает указатель на структуру `framebuffer_t` или 0, если произошла ошибка.

Коды ошибок:

- `-1 не удалось выделить память для буфера кадра`.

## sys::free_framebuffer(framebuffer_t *frame)

Освобождает ранее выделенную память `frame` для буфера кадра. Возвращает 0 в случае успеха или -1, если произошла ошибка.

Коды ошибок:

- `-1 ошибка при освобождении памяти для буфера кадра`.

## sys::exit(int code)

Завершает выполнение текущего потока с кодом `code`.

## sys::get_error()

Получает код ошибки последней операции. Возвращает целочисленное значение, представляющее код ошибки.

## sys::get_info()

Получает информацию о текущей системе. Возвращает структуру `sys::info_t` содержащую информацию о системе.

## sys::get_module(uid_t module_id)

Получает информацию о модуле `module_id`. Возвращает структуру, содержащую информацию о модуле.

## sys::new_thread(func_t func)

Создает новый поток выполнения для функции `func`. Возвращает идентификатор созданного потока или 0 в случае ошибки.

Коды ошибок:

- `-1 ошибка при создании потока`.

## sys::delete_thread(uid_t thread_id)

Удаляет указанный поток выполнения `thread_id`. Возвращает 0 в случае успеха или -1 в случае ошибки.

Коды ошибок:

- `-1 поток не найден`.

<!--
## sys::get_time()
Получает текущее время системы в формате timestamp. Возвращает целое число, представляющее количество секунд с начала эпохи.
## sys::set_alarm(time_t time, func_t func)
Устанавливает сигнал будильника на время time. При наступлении указанного времени будет вызвана функция func.
Коды ошибок:
- `-1 ошибка при установке сигнала будильника`.
-->
70 changes: 70 additions & 0 deletions HOMEWORK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Задания для домашней работы

## Ковальски, анализ

Напишите программу, которая использует функцию `sys::get_info` для получения информации о текущей системе.

Выведите полученную информацию в удобочитаемом формате.

## Что мы можем?

Напишите программу, которая использует функцию `sys::get_module` для получения информации о произвольном модуле.

Выведите полученную информацию на экран.

## От 1 до миллиона

Напишите программу, которая использует функцию `mem::alloc` для выделения блока памяти размером 4000000 байт.

Заполните этот блок памяти числами от 1 до 1 000 000 и найдите сумму всех чисел.

Используйте функцию `mem::free` для освобождения блока памяти. Проверьте, что блок памяти успешно освобожден.

## Улыбочку

Напишите программу, которая использует функцию `sys::alloc_framebuffer` для выделения памяти под буфер кадра.

Затем нарисуйте смайлик заполняя буффер.

Используйте функцию `sys::free_framebuffer` для освобождения памяти.

## Многопоточность

Напишите программу, которая использует функцию `sys::new_thread` для создания нового потока выполнения.

В этом потоке выполнения реализуйте алгоритм сортировки массива чисел. Выведите отсортированный массив на экран. Используйте функцию `sys::exit` для завершения выполнения потока или функцию `sys::delete_thread` для удаления потока выполнения.

## Матрица

Напишите программу, которая использует двумерный массив для создания и отображения матрицы размером 3x3.

Попросите пользователя ввести значения элементов матрицы, а затем выведите ее на экран.

## Проверка на палиндром

Напишите программу, которая проверяет, является ли введенная пользователем строка палиндромом.

Палиндром - это строка, которая читается одинаково слева направо и справа налево. Выведите сообщение "Это палиндром" или "Это не палиндром" в зависимости от результата проверки.

## Проверка на анаграмму

Напишите программу, которая проверяет, являются ли две введенные пользователем строки анаграммами, то есть состоят ли они из одних и тех же символов. Выведите сообщение "Это анаграммы" или "Это не анаграммы" в зависимости от результата проверки.

## Генератор псевдослучайных чисел

Напишите программу, которая генерирует и выводит на экран псевдослучайное число от 1 до 100.

Пример функции для генерации псевдослучайных чисел:

```C
static unsigned long int next = 1;

int rand() {
next = next * 1103515245 + 12345;
return (unsigned int)(next / 65536) % 32768;
}
```

## Перевод числа в двоичную систему счисления

Напишите программу, которая позволяет пользователю ввести число в десятичной системе счисления и выводит его в двоичной системе счисления.
Empty file added KERNEL.md
Empty file.
Empty file added STD.md
Empty file.
52 changes: 51 additions & 1 deletion index.md
Original file line number Diff line number Diff line change
@@ -1 +1,51 @@
# MSEOS
# MSEOS: минимальная студенческая обучающая операционная система

[![CI BUILD](https://github.com/0Nera/MSEOS/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/0Nera/MSEOS/actions/workflows/build.yml)
[![Github pages](https://github.com/0Nera/MSEOS/actions/workflows/pages/pages-build-deployment/badge.svg?branch=pages)](https://github.com/0Nera/MSEOS/actions/workflows/pages/pages-build-deployment)

MSEOS - минимальная студенческая обучающая операционная система с открытым исходным кодом для платформы x86_64(BIOS/UEFI).

- [Системные вызовы](/API.md)
- [Стандартная библиотека](/STD.md)
- [Ядро](/KERNEL.md)
- [Задания для домашней работы](/HOMEWORK.md)

Система:
- [ ] Менеджер памяти
- [ ] Менеджер видеопамяти
- [ ] Менеджер потоков
- [ ] Загрузчик модулей


Модули:
- [ ] Отладчик

Драйвера:
- [ ] COM
- [ ] PS/2 (Мышь + клавиатура)
- [ ] SATA (ACHI)
- [ ] EXT2
- [ ] ISOFS (ISO 9660)
- [ ] SIMD (SSE, SSE2, SSE3, SSE4, AVX)

Общая работа:
- [ ] Ядро
- [ ] Модули
- [ ] Драйвера
- [ ] Документация
- [ ] Вебсайт
- [ ] Примеры
- [ ] Видеоуроки

## Ресурсы

- <https://vk.com/mseos> Страница вконтакте
- <https://0nera.github.io/MSEOS/> Вебсайт
- <https://wiki.synapseos.ru/index.php?title=MSEOS> Страница на вики

### Зеркала

- <https://git.synapseos.ru/Aren/MSEOS> - доверенный сервер(главный репозиторий)
- <https://github.com/0Nera/MSEOS> - основной репозиторий
- <https://tvoygit.ru/0Nera/mseos> - зеркало
- <https://hub.mos.ru/synapseos/mseos> - неактивное зеркало

0 comments on commit b57b91c

Please sign in to comment.