-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
205 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ошибка при установке сигнала будильника`. | ||
--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
``` | ||
|
||
## Перевод числа в двоичную систему счисления | ||
|
||
Напишите программу, которая позволяет пользователю ввести число в десятичной системе счисления и выводит его в двоичной системе счисления. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> - неактивное зеркало |