Giter Site home page Giter Site logo

spr22_os's Introduction

Operating System

Лаб 1. Forkbomb

Требование
1. Написать программу forkbomb для Linux, Windows
2. Составить график числа процессов в ОС
3. Как ОС реагирует на форкбомбу
  • In computing, a fork bomb (also called rabbit virus or wabbit) is a denial-of-service attack wherein a process continually replicates itself to deplete available system resources, slowing down or crashing the system due to resource starvation.
  • Count the number of processes running on your system by any user: ps aux | wc –l
  • Windows using PowerShell, the following two commands will get that information:
    • Number of processes running: (Get-Process).Count
    • Number of threads running: (Get-Process|Select-Object -ExpandProperty Threads).Count
  • Routine, Required header system, <process.h> or <stdlib.h>
  • Write data to text file in powershell Add-Content -Path C:\Users\hanhnguyen26\countProcess.txt -Value (Get-Process).Count

Лаб 2. Membomb

Требование
1. Написать программу выделения памяти и заполнения ее нулями с шагом, равным размеру страницы памяти (mmap, VirtualAlloc)
2. Составить график свободной памяти
3. Ознакомиться с работой демона OOM Killer в Linux
4. Достичь сообщения о невозможности выделить память в Windows

mmap

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
  • Trả về địa chỉ đầu tiên của mapping, hoặc MAP_FAILED nếu lỗi
  • addr chỉ định địa chỉ đầu tiên của vùng nhớ mapping trong bộ nhớ ảo của tiến trình. Nếu addr được truyền NULL (cách này được sử dụng rất thường xuyên), kernel sẽ chọn 1 địa chỉ thích hợp để đặt vùng nhớ mapping này.
  • length chỉ định kích thước của vùng nhớ mapping theo đơn vị byte. Kernel tạo memory mapping theo đơn vị là trang (page - thường là 4096 byte).
  • prot là bit mask chỉ định chế độ bảo vệ truy cập của vùng mapping. Nó có thể là PROT_NONE hoặc kết hợp (toán tử OR) với các cờ sau đây:
    • PROT_EXEC cho phép execute.
    • PROT_READ cho phép đọc.
    • PROT_WRITE cho phép ghi.
    • PROT_NONE không cho phép truy cập.

Difference between memFree and memAvailable

  • memFree The amount of physical RAM, in kilobytes, left unused by the system.
  • memAvailable An estimate of how much memory is available for starting new applications, without swapping. Calculated from MemFree, SReclaimable, the size of the file LRU lists, and the low watermarks in each zone. The estimate takes into account that the system needs some page cache to function well, and that not all reclaimable slab will be reclaimable, due to items being in use. The impact of those factors will vary from system to system.

Лаб 3.

Простой вариант
    Найти и скомпилировать программу linpack для оценки производительности компьютера (Flops) и протестировать ее при различных режимах работы ОС:
    1.	С различными приоритетами задачи в планировщике
    2.	С наличием и отсутствием привязки к процессору
    3.	Провести несколько тестов, сравнить результаты по 3 сигма или другим статистическим критериям
Усиленный вариант
    То же самое, плюс изменить параметры на уровне ядра (выбрать одно): 
    1.	Запретить выполнение всех потоков кроме того, который тестируется (путем запрета прерываний) (cli sti)
    2.	Найти другие планировщики процессов для Linux и сравнить результаты работы вычислительной задачи на них
    3.	Повлиять на настройки имеющегося планировщика
    4.	Вмешаться в работу планировщика на уровне ядра

Лаб 4.

Провести тестирование и найти лучший планировщик ввода-вывода среди других.
Усложнение
Модифицировать существующий планировщик на уровне ядра

https://xakep.ru/2014/05/11/input-out-linux-planning/ https://blog.programs74.ru/how-to-enable-mq-deadline-or-bfq-in-ubuntu/ https://www.phoronix.com/scan.php?page=article&item=linux-56-nvme&num=4 https://lwn.net/Articles/725238/

spr22_os's People

Contributors

h45h9r11n avatar

Stargazers

Tran Minh Tuan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.