Добавлены новые задания

This commit is contained in:
Aren Elchinyan 2023-10-01 12:14:59 +03:00
parent ffd27accc8
commit b57b91c06f
5 changed files with 205 additions and 1 deletions

84
API.md Normal file
View File

@ -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
HOMEWORK.md Normal file
View File

@ -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;
}
```
## Перевод числа в двоичную систему счисления
Напишите программу, которая позволяет пользователю ввести число в десятичной системе счисления и выводит его в двоичной системе счисления.

0
KERNEL.md Normal file
View File

0
STD.md Normal file
View File

View File

@ -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> - неактивное зеркало