← Назад к вопросам

Какие ОС использовал?

1.2 Junior🔥 131 комментариев
#Опыт работы и проекты

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Какие ОС использовал

Да, я имел опыт работы с несколькими операционными системами в своей карьере и вот краткий обзор:

Linux (основная платформа)

Ubuntu — использовал для большинства проектов:

  • Разработка C/C++ серверов
  • Настройка сетевых приложений (сокеты, TCP/UDP)
  • Отладка с помощью gdb, valgrind, strace
  • Написание системных скриптов на bash/shell

CentOS/RHEL — на production сервере:

  • Деплой долгоживущих серверных приложений
  • Работа с systemd для управления сервисами
  • Мониторинг процессов через procfs (/proc)
  • Встроенные инструменты диагностики (sysstat, iotop)

Debian — для embedded систем:

  • Кросс-компиляция для ARM
  • Минимизация образа (buildroot)
  • Работа с ограниченными ресурсами

Windows

Для разработки:

  • Visual Studio для C++ проектов на Windows
  • WinAPI для работы с потоками (CreateThread, WaitForSingleObject)
  • Отладка в kernel space (Event Tracing for Windows — ETW)
  • Работа с Windows Registry и COM

Специфичные инструменты:

  • Process Monitor для анализа системных вызовов
  • WinDbg для отладки драйверов
  • Performance Monitor для профилирования

macOS

Разработка и инструменты:

  • Clang и LLVM для компиляции
  • Grand Central Dispatch (GCD) для concurrency
  • Xcode для IDE и отладки
  • Terminal и Unix утилиты

Отладка:

  • lldb вместо gdb
  • Instruments для профилирования
  • dtrace для системного мониторинга

Основные навыки работы с ОС

Процессы и потоки

// Linux/Unix: создание процесса
pid_t pid = fork();
if (pid == 0) {
    // дочерний процесс
    execve("/path/to/program", args, env);
} else {
    // родительский процесс
    waitpid(pid, &status, 0);
}

// Linux/Unix: создание потока
pthread_t thread;
pthread_create(&thread, nullptr, threadFunc, arg);
pthread_join(thread, nullptr);

// Windows: CreateThread
HANDLE hThread = CreateThread(nullptr, 0, ThreadProc, nullptr, 0, &dwThreadId);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);

Работа с файловой системой

// POSIX (Linux, macOS): открытие файла
int fd = open("/path/file.txt", O_RDONLY);
char buffer[4096];
ssize_t n = read(fd, buffer, sizeof(buffer));
close(fd);

// Windows: CreateFile
HANDLE hFile = CreateFile("file.txt", GENERIC_READ, 0, 
                          nullptr, OPEN_EXISTING, 
                          FILE_ATTRIBUTE_NORMAL, nullptr);
DWORD bytesRead;
ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, nullptr);
CloseHandle(hFile);

Сетевое программирование

// POSIX сокеты (Linux, macOS, Windows)
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

struct sockaddr_in addr = {0};
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr);

bind(sock, (struct sockaddr*)&addr, sizeof(addr));
listen(sock, 5);

int client = accept(sock, nullptr, nullptr);
char buffer[256];
recv(client, buffer, sizeof(buffer), 0);

Системные инструменты

Linux/macOS диагностика

# Процессы
ps aux              # список всех процессов
top, htop          # мониторинг в реальном времени
pstree              # дерево процессов

# Ресурсы
free -h             # использование памяти
df -h               # место на диске
iostat -x 1         # I/O статистика

# Сетевые коннекции
netstat -tulpn      # активные порты
ss -tulpn           # альтернатива (быстрее)
lsof -i :8080       # процесс на порту 8080

# Системные вызовы
strace ./program    # трассировка syscalls
ltrace ./program    # трассировка library calls

Отладка и профилирование

# GDB (GNU Debugger)
gdb ./program
(gdb) break main
(gdb) run
(gdb) print variable
(gdb) next, step, continue

# Valgrind — поиск утечек памяти
valgrind --leak-check=full ./program

# Perf — профилирование на Linux
perf record ./program
perf report

Кросс-платформенность

Использовал инструменты для кросс-платформенной разработки:

  • CMake — build system для Linux, Windows, macOS
  • Boost — библиотеки совместимые со всеми ОС
  • Docker — для унификации окружения
  • Conditional compilation#ifdef _WIN32 для платформо-специфичного кода
#ifdef _WIN32
    #include <windows.h>
    // Windows specific code
#elif __APPLE__
    #include <sys/socket.h>
    // macOS code
#elif __linux__
    #include <sys/epoll.h>
    // Linux specific code
#endif

Итоги

Наибольший опыт у меня с Linux (95% работы), особенно в контексте серверной разработки. Windows использовал для системного программирования и desktop приложений. macOS в основном для личной разработки и мобильного бэкенда.

Каждая ОС имеет свои особенности в управлении ресурсами, планировании процессов и системных вызовах, что важно понимать для написания эффективного и надёжного кода.

Какие ОС использовал? | PrepBro