{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"cs/process","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/cs/process/","da":"https://cmaintz.github.io/tech-atlas/da/terms/cs/process/"},"term":{"en":"Process","da":"Proces"},"aka":{"en":["running program"],"da":["kørende program"]},"domain":["cs"],"cluster":"os","layer":"os","status":"current","era":1965,"summary":{"en":"A program while it is running, with its own space in memory and the rights of the account that started it.","da":"Et program, mens det kører, med sin egen plads i hukommelsen og de rettigheder, som kontoen, der startede det, har."},"body":{"formal":{"en":"A running instance of a program, which the operating system gives its own private memory, a share of the machine's time, and the identity and permissions of the account it runs as.","da":"En kørende forekomst af et program, som styresystemet giver sin egen private hukommelse, en andel af maskinens tid samt identitet og rettigheder fra den konto, det kører som."},"plain":{"en":"A recipe is the program; actually cooking it in a kitchen, with your own pots and ingredients, is the process. Two cooks can follow the same recipe at the same time.","da":"En opskrift er programmet; selve madlavningen i et køkken med egne gryder og ingredienser er processen. To kokke kan følge den samme opskrift på samme tid."},"inPractice":{"en":"An IT supporter at a school opens Task Manager on a slow teacher's PC and finds an unknown process running under the teacher's account and using most of the machine; she stops it and has the PC checked for malware.","da":"En IT-supporter på en skole åbner Jobliste på en lærers langsomme computer og finder en ukendt proces, der kører under lærerens konto og bruger det meste af maskinen; hun stopper den og får computeren undersøgt for malware."},"whyItMatters":{"en":"Harmful software runs as a process too, and it inherits the rights of whoever started it - which is why limiting what an account may do limits the damage an attack can cause.","da":"Skadelig software kører også som en proces og arver rettighederne fra den, der startede den - derfor begrænser man skaden fra et angreb ved at begrænse, hvad en konto må."}},"deepDive":{"en":"The kernel represents each process with a control block (task_struct in Linux, EPROCESS in Windows) holding its identifier, state, scheduling data, a pointer to its page tables, the table of open file descriptors or handles, signal or exception handlers, resource limits and the security context: real and effective UID/GID plus capabilities on Linux, or an access token with user and group SIDs, privileges and an integrity level on Windows. The address space is typically laid out as program text, data and BSS, heap, memory-mapped libraries and a stack per thread, randomised by ASLR. Threads share the address space and handles of their process but have their own registers and stack, which is why a process, not a thread, is the unit of isolation.\n\nUnix creates processes in two steps: fork() duplicates the caller, cheaply thanks to copy-on-write pages, and execve() replaces the image with a new program while keeping open descriptors not marked close-on-exec, a common source of leaked file handles into child processes. Windows combines both in CreateProcess, and the parent can choose to pass a different token, which is how services launch work as another user. Every process except the first has a parent (PID 1 on Linux is init, today usually systemd). A terminated child whose exit status has not been collected with wait() remains as a zombie; orphans are re-parented to init or a designated subreaper. The scheduler moves processes between running, ready and blocked states and performs context switches, saving and restoring register state and, when switching address spaces, the page-table base.\n\nSecurity follows from inheritance: a child normally inherits the credentials of its parent, so whatever a user can do, any program they start can do. Controls act on that chain. Privilege escalation means obtaining a process with a stronger token (setuid binaries, sudo, UAC elevation, token theft). Sandboxing narrows what a process can reach with seccomp filters, AppArmor or SELinux domains, Windows AppContainers or Job objects. Linux namespaces and cgroups give a process tree its own view of PIDs, mounts, network and users, plus resource limits, which is all a container is.\n\nDetection engineering relies heavily on process telemetry. Windows event 4688 and Sysmon event 1 record process creation with command line and parent; EDR products watch for suspicious parent-child pairs such as winword.exe spawning powershell.exe. Attackers respond with techniques catalogued in MITRE ATT&CK T1055 (Process Injection), including process hollowing (T1055.012), where a legitimate process is started suspended and its memory replaced, and with living-off-the-land binaries that make malicious activity look like ordinary system processes. A process differs from a program (the file on disk), from a thread (a unit of execution inside it) and from a service, which is a process managed by the service manager rather than started interactively.","da":"Kernen repræsenterer hver proces med en kontrolblok (task_struct i Linux, EPROCESS i Windows), der indeholder id, tilstand, scheduling-data, en henvisning til sidetabellerne, tabellen over åbne fildeskriptorer eller handles, signal- eller undtagelseshåndtering, ressourcegrænser og sikkerhedskonteksten: reel og effektiv UID/GID plus capabilities på Linux eller et access token med bruger- og gruppe-SID'er, privilegier og et integritetsniveau på Windows. Adresserummet er typisk opdelt i programkode, data og BSS, heap, hukommelsesafbildede biblioteker og en stak pr. tråd, randomiseret af ASLR. Tråde deler adresserum og handles med deres proces, men har egne registre og egen stak, og derfor er det processen og ikke tråden, der er enheden for isolation.\n\nUnix opretter processer i to trin: fork() kopierer kalderen, billigt takket være copy-on-write-sider, og execve() udskifter programbilledet med et nyt program, men beholder åbne deskriptorer, der ikke er markeret close-on-exec, en almindelig årsag til, at filhandles lækker til børneprocesser. Windows samler begge trin i CreateProcess, og forælderen kan vælge at give et andet token med, hvilket er sådan tjenester starter arbejde som en anden bruger. Alle processer undtagen den første har en forælder (PID 1 på Linux er init, i dag som regel systemd). Et afsluttet barn, hvis exitstatus ikke er hentet med wait(), bliver hængende som zombie; forældreløse processer adopteres af init eller en udpeget subreaper. Scheduleren flytter processer mellem tilstandene kørende, klar og blokeret og udfører kontekstskift, hvor registertilstanden gemmes og genskabes og, ved skift af adresserum, sidetabellens basisadresse udskiftes.\n\nSikkerheden følger af nedarvningen: et barn arver normalt forælderens legitimationsoplysninger, så alt, hvad en bruger kan, kan ethvert program, brugeren starter, også. Kontrollerne virker på den kæde. Rettighedseskalering betyder at få en proces med et stærkere token (setuid-programmer, sudo, UAC-elevering, tyveri af tokens). Sandkasser indsnævrer, hvad en proces kan nå, med seccomp-filtre, AppArmor- eller SELinux-domæner, Windows AppContainers eller Job-objekter. Linux namespaces og cgroups giver et procestræ sit eget syn på PID'er, mounts, netværk og brugere samt ressourcegrænser, og det er alt, hvad en container er.\n\nDetektion bygger i høj grad på procestelemetri. Windows event 4688 og Sysmon event 1 registrerer procesoprettelse med kommandolinje og forælder; EDR-produkter holder øje med mistænkelige forælder-barn-par som winword.exe, der starter powershell.exe. Angribere svarer med teknikker katalogiseret i MITRE ATT&CK T1055 (Process Injection), bl.a. process hollowing (T1055.012), hvor en legitim proces startes i pausetilstand og dens hukommelse udskiftes, og med living off the land-programmer, der får ondsindet aktivitet til at ligne almindelige systemprocesser. En proces adskiller sig fra et program (filen på disken), fra en tråd (en udførelsesenhed inde i den) og fra en tjeneste, som er en proces styret af tjenestestyringen i stedet for at være startet interaktivt."},"edges":[{"type":"requires","to":"cs/operating-system","confidence":"high","strength":"normal"}],"depth":1,"sources":[{"title":"Operating Systems: Three Easy Pieces","url":"https://pages.cs.wisc.edu/~remzi/OSTEP/","tier":"textbook","publisher":"Arpaci-Dusseau"}],"draft":true}