Windows 10
macOS / iOS
Ubuntu / Debian / Android
XNU-Mach (Darwin)
Windows NT
Linux
Windows 9x
Unix-like
Unix-like
x86 / x86-64 / IA-64 / armv7
i386
amd64
👉🏼 Instruction Length, GPRegister Size
OP Code, Register, Operand, Data
Larger RAM address
Larger Register for Calculator
Process Scheduling
Memory Management
Sandbox, Compression, Virtualise...
File System
FAT32, exFAT, NTFS, HFS+, APFS, ext3, ext4, btrfs.....
Priority, malloc, thread
Device Access
Hard Disk, Keyboard, USB...
Network
Routing, Port Listening
API
System Call
App
System Call
Device
Kernel Space Memory
Sh / Bash / ZSH
#!/bin/bash PORT=8088 DEBUG=UCCU* if [ "$1" = "stop" ] then docker stop Sample echo "Sample Stopped" else docker run -d -e "DEBUG=$DEBUG" -p "$PORT:80" --name Sample test.image echo "Sample Created" fi
Unix
Abstract everything to input and output, use file-like API to access resources.
File
Read File
Write File
Keyboard
Read Input
Network
Receive Packets
Send Packets
Text - Program Codes
Data - Constants
Heap - Dynamic Allocate Memory
Stack - Function Call Link & Local Variables
var foo = 1; var bar = foo;
1
foo
1
bar
var foo = 1; var bar = foo; bar = 2;
1
foo
1 ⇢ 2
bar
var foo = { yo: 'hi' }; var bar = foo;
ref
foo
ref
bar
{ yo: 'hi' }
var foo = { yo: 'hi' }; var bar = foo; foo.yo = 'bye';
ref
foo
ref
bar
{
yo: 'hi' ⇢ 'bye'
}
var foo = { yo: 'hi' }; var bar = foo; foo.yo = 'bye'; bar = 'see u';
ref
foo
see u
bar
{
yo: 'hi' ⇢ 'bye'
}
var foo = { yo: 'hi' }; var bar = foo; foo.yo = 'bye'; bar = 'see u'; foo = 15;
15
foo
see u
bar
{
yo: 'hi' ⇢ 'bye'
}
no refs will release by GC
ellipsis for multi-line
button.btn { width: clamp(80px, 50%, 320px); }
adiós