C Developer (Component Development Group, Network Team)
About the project
KasperskyOS is a secure microkernel operating system. It's not another Linux distribution, but our own development capable of successfully competing in international markets. The cyber-immunity principle embedded in KasperskyOS allows for the development of secure solutions from potentially insecure components.
About the team
The System Components Development team's Networking group is responsible for supporting the network stack, all network-related components (DHCP, DNS, TLS, etc.), as well as other connectivity stacks (Bluetooth, GPS, GSM). Also, since we are part of the general Components team, there are tasks related to adjacent groups.
Group tasks
The Component Development group is responsible for:
- Development tools (GCC/Clang, Binutils, Qemu, etc.);
- KasperskyOS core components (libc, POSIX support);
- Support for file systems and data storage systems;
- Support for network stacks and inter-device communication means;
- Application management tools;
- Graphics and audio subsystems;
- Support for various frameworks and system services.
Your tasks
- Support and development of the KasperskyOS network stack;
- Design and development of components and system services for network operations;
- Development and porting of other connectivity stacks (Bluetooth, GPS, GSM, etc.);
- Porting open-source software to KasperskyOS.
What we expect from the candidate
- Excellent knowledge of the C programming language;
- Knowledge of the basic principles of modern operating system construction;
- Experience in multithreaded programming;
- Experience developing Linux/Windows kernels;
- Experience developing drivers for Linux/Windows;
- Knowledge of classic algorithms and data structures;
- Knowledge of development tools in Unix systems (Linux, BSD, etc.);
- Teamwork experience, familiarity with Code Review, CI/CD processes.
Desirable
- Good knowledge of computer network principles and main network protocols;
- Understanding of the organization and operation of the OS network stack;
- Experience working on network stacks and network components in Linux or other OS;
- Knowledge of the TLS protocol standard and experience developing TLS-supported applications;
- Knowledge of connectivity protocol standards (Bluetooth, GPS, GSM, etc.) and experience working with them;
- Cross-platform development experience;
- Good knowledge of POSIX;
- Familiarity with operating system architecture, internal OS kernel structure (memory management, inter-process communication, task scheduling, VFS);
- Knowledge of libc internals;
- Knowledge of the assembler language for at least one architecture (x86, ARM) at a level sufficient for examining object files.