Добавлены новые задания
This commit is contained in:
parent
ffd27accc8
commit
b57b91c06f
|
@ -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 ошибка при установке сигнала будильника`.
|
||||
-->
|
|
@ -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;
|
||||
}
|
||||
```
|
||||
|
||||
## Перевод числа в двоичную систему счисления
|
||||
|
||||
Напишите программу, которая позволяет пользователю ввести число в десятичной системе счисления и выводит его в двоичной системе счисления.
|
52
index.md
52
index.md
|
@ -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> - неактивное зеркало
|
Loading…
Reference in New Issue