Zanim komputer rozwiąże wszystkie polecone mu zadania musi zostać odpowiednio uruchomiony program. Pierwszy krok polega na umieszczeniu w pamięci komputera programu i następnie wskazanie mu adresu naszej pierwszej instrukcji po wykonaniu tego zadania komputer a dokładniej mówiąc procesor dalej poradzi sobie sam, czyli samodzielnie będzie wykonywał dalsze czynności aż do ich zakończenia. Naturalnie mogą zakończyć się one poprawnie lub blednie. Wersja poprawna oznacza, że wszystko przebiegło zgodnie z życzeniem użytkownika z kolei wersja błędna jest równoznaczna z negatywnym zakończeniem się pracy programu najczęściej występuje ona, kiedy jest awaria sprzętu lub wtedy, kiedy program wykonana operację nie dozwoloną. Specjalnym gatunkiem programu komputerowego jest system operacyjny jest on bardzo istotny, ponieważ odpowiada za uruchamianie programu i nadzorowanie zadań. Można śmiało stwierdzić, że zarządza on sprzętem, ponieważ odpowiada za pamięć komputera czas procesora na wykonanie określonego zadania a nawet dostęp do urządzeń peryferyjnych. Zanim jednak jakikolwiek program zostanie uruchomiony musy przede wszystkim zostać do tego celu przygotowany sprzęt, odpowiada za to oprogramowanie typu firmware z kolei w komputerach typu PC nosi ono nazwę bios. Oprogramowanie to nie tylko uruchamia sprzęt, ale ląduje też system operacyjny a tym samym przekazuje ma kontrole nad komputerem. Problem jednak pojawia się wtedy, kiedy program nie ma postaci binarnej tylko kodu czytelnego dla człowieka, ponieważ wtedy procesor nie może go wykonać. W takim wypadku można jedna sobie pomóc istnieją tutaj dwa zasadnicze rozwiązania, czyli skorzystanie z programu o nazwie kompilator, który bezpośrednio tłumaczy kod źródłowy na kod maszynowy, co za tym idzie komputer może je odczytać. Drugie rozwiązanie to nie, co inny program znany pod nazwa interpretera. Zadaniem tego programu jest odczytywanie kodu źródłowego, czyli zrozumiałego dla człowieka. Program ten jednak tłumaczy kod nie całościowo tylko częściowo, co w rezultacie daje nam kilka porcji przetłumaczonego kodu zwanego skryptem. Każdy program można podzielić na dwa zasadnicze obszary, czyli cześć kodu i cześć danych. Pierwsza cześć odnosi się do szeregu instrukcji, które wpływają na parce procesora z kolei cześć danych składa się z danych wykorzystywanych i opracowywanych przez program. Mimo to bardzo trudno jest przewidzieć zachowanie programów, które modyfikują własny kod, dlatego tez przyjęło się założenie, że obszar kodu w pamięci jest tylko i wyłącznie do odczytu
Początki systemów operacyjnych są bardzo ciekawe, a jednocześnie należy się liczyć z tym iż miały one bardzo utrudnione powstawania. Jednym z powodów takich właśnie trudności są między innymi bardzo wysokie koszty pierwszych wczesnych komputerów. Jednak z powodu iż były one tak kosztowne, właścicielom niezwykle mocno zależało na tym aby jak najmocniej wykorzystać zdolności maszyn, które znajdowały się w ich posiadaniu. Obarczali oni powyższe komputery jak największą ilością zadań oraz prac. Dzięki takim zachowanie ludzie znacznie efektywniej traktowali pieniądze wyłożone na zakup skomputeryzowanych maszyn. Watro dodać iż komputery w Europie w tym również w Polsce nie były jedyne maszynami służącymi prywatnym właścicielom, ale również wykonywał szereg prac dla innych podmiotów gospodarczych. W konsekwencji tak szerokiej skali zastosowań starano się znacznie zwiększyć efektywność i jednocześnie wydajność komputerów, a ponieważ tak jak w dzisiejszych czasach zmiany podzespołów jak procesory czy karty graficzne w komputerach nie mogły być realizowane, ponieważ wiązałoby się to z bardzo wielkimi kosztami, naukowcy i informatycy musieli szukać innego rozwiązana. Bardzo szybko udało się zauważyć fakt iż szybkość pracy interfejsów wejścia i wyjścia jest niezależnie mniejsza niż ma się to w przypadku jednostki centralnej, podobna sytuacja ma miejsce dzisiaj, a dodatkowo można powiedzieć że nawet się pogłębia. Jest to sytuacja, która powodował iż między innymi wprowadzanie programów do komputera z kart perforowanych czy taśm magnetycznych, a nawet drukowania wyników pracy komputera na papierze, trwało o wiele dłużej niż czas trwania obliczeń jakie przeprowadzał komputer. Jednym z pierwszych rozwiązań jakie zastosowano w komputerach było zamontowanie w środku urządzenia oprogramowania, które realizowało obsługę sprzętu, a dodatkowo umożliwiało komunikację sprzętu z użytkownikiem. Dzięki temu zaoszczędzono wiele czasu, który był potrzebny na każdorazowe ładowanie kodu inicjacyjnego poszczególnych urządzeń. Dzięki temu właśnie po raz pierwszy znacznie podniesiono efektywność pracy komputera przy jednoczesnym znacznym zaoszczędzeniu czasu. Kolejne modernizacje, których się dopuszczono miały na celu poprawienie pracy procesora, ponieważ zauważono iż podczas wprowadzania programu do komputera procesor był znacznie mniej obciążony pracą niż podczas wykonywania obliczeń, a więc stwierdzono iż w tym czasie mógłby zająć się analizą i przetwarzaniem innego programu, co dwukrotnie zmniejszyłoby czas obliczeń.