När vi säger att Linux är ett Unix-likt system menas det att Linux följer POSIX.
POSIX är först och främst ett API (C POSIX biblioteket) mellan kernel och applikationer i userspace, men också kräver POSIX att det finns vissa verktyg tillgängliga som `ls` och `vi` (userspace).
-När vi kodar C ska vi aldrig behöva köra ett system call direkt (i så fall genom functionen syscall() i C), utan istället använda detta C-bibliotek som gör massa nice - framför allt gör det lättare att korskompilera till andra system som följer POSIX.
+När vi kodar C ska vi aldrig behöva köra ett system call direkt (även om det kan göras genom functionen `syscall()` i C), utan istället använda detta C-bibliotek som gör massa nice - framför allt gör detta det lättare att korskompilera till andra system som följer POSIX.
Så om du ska programmera till Unix-liknande system bör du göra det genom att använda C POSIX biblioteket. (Exekverar då alla andra programmeringsspråk dessa C funktioner eller kör dom system calls direkt?)
-System som Linux och varianter på BSD är typ POSIX-kompatibla, då det lovar att erbjuda MINST det POSIX kräver. T ex att pipes är bidirectional på BSD, men unidirectional i Linux och POSIX.
+System som Linux och varianter på BSD är typ POSIX-kompatibla, då dessa lovar att erbjuda MINST det POSIX kräver. T ex att pipes är bidirectional på BSD, men bara unidirectional i Linux och enligt POSIX.
# Linux
Ett vanligt Linux-system innehåller alltså flera viktiga delar:
-Linux kernel
-C POSIX library (API)
-Systemd (systemhanterare (allt möjligt), processhanterare (startar processer, agerar scheduler, etc))
-GNU Utils (bash, gcc, ls, cd, ..)
-X11 (grafiskt system)
-Men en Linuxdistribution behöver inte ha GNU Utils (ex. Alpine Linux), eller vara POSIX (ex. Android), eller använda SystemD (ex. Slackware), eller använda X11 (eller grafik överhuvudtaget)
+* Linux kernel
+
+* C POSIX library (API)
+
+* Systemd (systemhanterare (allt möjligt), processhanterare (startar processer, agerar scheduler, etc))
+
+* Core Utilities (exempelvis GNU coreutils som inkluderar mångs program så som bash, gcc, ls, och cd)
+
+* X11 (grafiskt system)
+
+Men en Linuxdistribution behöver inte ha GNU Utils (ex. Alpine Linux), eller vara POSIX (ex. Android), eller använda SystemD (ex. Slackware), eller använda X11 (eller grafik överhuvudtaget).
+Det som gör dessa till Linux är att de alla kör Linuxkärnan