otvety.google.ru/otvety/thr...7fc7a17d7f1. Итак, Вы выполняете двойной клик по исполняемому файлу.
2. Операционная система, обнаружив, что данный файл является исполняемым, считывает для него настройки кучи и стека. Создаёт для него в ОЗУ "рабочий набор" (workset). Рабочий набор включает в себя отражение кода приложения, его стека и кучи, а также задействованных ресурсов.
3. Подгружает необходимые статические библиотеки и ресурсы, отражая их в рабочий набор приложения.
4. Передаёт управление главной функции приложения, которая может работать как "своими силами", так и вызывать внешние функции API операционной системы.
5. Кстати, процесс работает минимум в одном потоке, но может создавать и больше.
6. После окончания работы потока все ресурсы освобождаются, рабочий набор уничтожается.
Ну, в случае .NET всё усложняется за счёт управляемого слоя виртуальной машины CLR.
Хотя... наверное, я рассказал не совсем то, что ты хотел.
На уровне железа происходит вот что:
1. В процессоре инкрементируется указатель на код.
2. По указателю с ОЗУ извлекается оператор (инструкция), а затем операнды (аргументы).
3. Инструкция выполняется. При необходимости происходят дополнительные обращения к ОЗУ.
4. Указатель вновь инкрементируется, и т.д.
Ситуация усложняется обращениями к устройствам, каждое из которых имеет свой контроллер, так что ЦП не контролирует все низкоуровневые операции: на самом низком уровне работают контроллеры, обеспечивающие, например, чтение/запись конкретного сектора жёсткого диска либо прямое отражение памяти в порт устройства (DMA).
Ну и ещё - современные процессоры высокораспределены: это означает, что за один такт процессор в сумме может параллельно выполнить несколько операций (до 20, например), хотя давно раньше одна операция занимала несколько тактов (минимум один). Число выполняемых операций за один такт не равно числу ядер ЦП, хотя коррелирует с ним.