Talking about Operating System
Kernal
Windows 10
macOS / iOS
Ubuntu / Debian / Android
XNU-Mach (Darwin)
Windows NT
Linux
Windows 9x
Unix-like
Unix-like
Instruction Set Architecture
x86 / x86-64 / IA-64 / armv7
i386
amd64
👉🏼 Instruction Length, GPRegister Size
OP Code, Register, Operand, Data
Larger RAM address
Larger Register for Calculator
OK, too much!
Operating System Works
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
Kernel / User mode
App
System Call
Device
Kernel Space Memory
Shell
Sh / Bash / ZSH
Shell Script
#!/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
Everything is a file
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
Process
Text - Program Codes
Data - Constants
Heap - Dynamic Allocate Memory
Stack - Function Call Link & Local Variables
Heap
Stack
var foo = 1;
var bar = foo;
1
foo
1
bar
Heap
Stack
var foo = 1;
var bar = foo;
bar = 2;
1
foo
1 ⇢ 2
bar
Heap
Stack
var foo = { yo: 'hi' };
var bar = foo;
ref
foo
ref
bar
{ yo: 'hi' }
Heap
Stack
var foo = { yo: 'hi' };
var bar = foo;
foo.yo = 'bye';
ref
foo
ref
bar
{
yo: 'hi' ⇢ 'bye'
}
Heap
Stack
var foo = { yo: 'hi' };
var bar = foo;
foo.yo = 'bye';
bar = 'see u';
ref
foo
see u
bar
{
yo: 'hi' ⇢ 'bye'
}
Heap
Stack
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
One more thing
CSS line-clamp()
ellipsis for multi-line
CSS clamp()
clamp(MIN, VAL, MAX)
button.btn {
width: clamp(80px, 50%, 320px);
}
CSS Scroll Snap
Thank you
adiós
Operating System
By Chia Yu Pai
Operating System
- 559