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