Добавил:
при поддержке музыки группы Anacondaz Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курило БСТ2001 ОС лаба 2

.docx
Скачиваний:
4
Добавлен:
02.10.2023
Размер:
248.1 Кб
Скачать

Министерство цифрового развития и массовых коммуникаций

Российской Федерации

Ордена Трудового Красного Знамени федеральное государственное

бюджетное образовательное учреждение

высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

Кафедра

«Системного программирования»

Отчет по лабораторной работе №2

по дисциплине

«Операционные системы»

Выполнила студентка:

группы БСТ2001

Курило А. А.

Проверила:

ассистентка Алексанян Д. А.

Москва – 2022г.

Цель работы:

Целью работы можно обозначить получение практических навыков по программированию в Linux.

Задание:

Требуется разработать приложение, обеспечивающее получение следующей системной информации:

1. Имя компьютера, имя пользователя;

2. Версия операционной системы;

3. Системные метрики (не менее 3х);

4. Функции для работы со временем (не менее 2х);

5. Дополнительные API-функции: 4 функции по выбору.

Примечание: для получения системной информации для последнего пункта задания можно воспользоваться как функциями, определенными в системных библиотеках, так, например, считать данные из системных файлов, размещенных в /sys/ либо других директориях.

Ход выполнения лабораторной работы:

Для начала, командой sudo apt install gcc, нужно было скачать и установить на рабочую станцию компилятор языка c++. После чего создать файл, в котором будет находится весь код, у меня это Code.cpp – рисунок 1. Расширение “cpp” означает, что мы будем использовать код на языке C++.

Рисунок 1 – создание файла обыкновенного

Для дальнейшей работы был создан шаблон, со всеми необходимыми библиотеками и телом основного метода – рисунок 2. Весь последующий код будет находится в методе main().

Рисунок 2 – основа программы C++

В первом задании работы требовалось вывести имя компьютера и имя пользователя. Решение первого задания представлено на рисунке 3.

Рисунок 3 – решение первого задания

Для компиляции файла необходимо было прописать в терминале “g++ Code.cpp”, после чего для его запуска команду “./a.out”. Результат на рисунке 4.

Рисунок 4 – результат работы кода

Второе задание заключалось в выводе версии операционной системы. Код представлен на рисунке 5, а результат на рисунке 6.

Рисунок 5 – код второго задания

Рисунок 6 – результат работы кода второго задания

Третье задание требовало вывести системные метрики в количестве не менее 3-х штук. Код на рисунке 7, результат на рисунке 8.

Рисунок 7 – код третьего задания

Рисунок 8 – результат работы кода третьего задания

Четвёртое задание заключалось в использовании функция, предназначенных для работы со временем.

Рисунок 9 – код четвёртого задания

Рисунок 10 – результат

Заключительным – пятым – заданием являлось ознакомление с дополнительными функциями API. Требовалось выбрать 4 или более функция на свой выбор. Код – 11, результат – 12.

Рисунок 11 – код пятого задания

Рисунок 12 – результат работы кода пятого задания.

Листинг программы:

#include <iostream>

#include <unistd.h>

#include <limits.h>

#include <sys/utsname.h>

#include <time.h>

#include <chrono>

using namespace std; int main(){

char hostname[HOST_NAME_MAX];

char username[LOGIN_NAME_MAX];

gethostname(hostname, HOST_NAME_MAX);

getlogin_r(username, LOGIN_NAME_MAX);

cout << "\nИмя компьютера: " << hostname

<< "\nИмя пользователя: " << username << endl;

struct utsname data;

uname(&data);

cout << "\nВерсия ОС: " << data.sysname << " " << data.version << endl;

cout << "\nДата утверждения стандарта POSIX.1: "

<< sysconf(_SC_VERSION);

cout << "\nМаксимально допустимое количество одновременно работающих процессов: "

<< sysconf(_SC_CHILD_MAX);

cout << "\nМаксимально допустимое количество потоков, которое может одновременно открывать процесс: "

<< sysconf(_SC_STREAM_MAX) << endl;

time_t rawtime;

struct tm * timeinfo;

cout << "\nЧисло секунд, прошедших от 03:00 01.01.1970: " << time( &rawtime ) << endl;

timeinfo = localtime( &rawtime );

cout << "Текущее локальное время и дата: "

<< asctime(timeinfo) << endl;

cout << "\nМаксимально допустимое количество файлов, которое одновременно может открыть процесс: "

<< sysconf(_SC_OPEN_MAX) << endl;

cout << "Максимальное количество идентификаторов дополнительных групп: " << sysconf(_SC_NGROUPS_MAX) << endl;

cout << "Максимально допустимая длина имени устройства терминала: " << sysconf(_SC_TTY_NAME_MAX) << endl;

cout << "Количество тактов в секунду внутренних часов ядра: " << sysconf(_SC_CLK_TCK) << endl;

return 0; }