This is featured post 1 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
This is featured post 2 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
This is featured post 3 title
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.
Minggu, 04 Januari 2026
SCRIPT C UNTUK BACA CPU
Sabtu, 03 Januari 2026
MINI OS MINDSET
Mantap. Ini titik transisi dari “belajar C” → “berpikir seperti pembuat OS”.
Saya tidak akan langsung lompat ke kernel coding (itu jebakan), tapi membentuk mindset OS dulu lewat eksperimen user-space yang rasanya seperti OS.
Mini OS mindset = memahami fungsi OS dengan menirunya dari C
๐ง APA ITU “OS MINDSET”?
OS bukan GUI, bukan installer, bukan distro.
OS itu menjawab 6 pertanyaan inti:
- Siapa yang pakai CPU sekarang?
- Siapa yang boleh pakai RAM?
- Siapa yang boleh akses hardware?
- Bagaimana program lahir & mati?
- Bagaimana program saling bicara?
- Bagaimana sistem tetap stabil saat ada error?
๐ Kita akan “meniru” ini tanpa menulis kernel dulu.
๐งฑ BLOK 1 — CPU & PROSES
๐งช Eksperimen: Anda jadi “scheduler”
#include <stdio.h>
#include <unistd.h>
int main() {
for (int i = 0; i < 3; i++) {
if (fork() == 0) {
while (1) {
printf("Proses %d jalan\n", i);
sleep(1);
}
}
}
while (1);
}
๐ Mindset OS:
- OS tidak menjalankan program
- OS mengatur giliran CPU
- Semua proses ingin hidup selamanya
๐ก Inilah alasan scheduler ada.
๐งฑ BLOK 2 — MEMORI (KENAPA PROGRAM TIDAK BOLEH SEMBARANG)
๐งช Eksperimen: satu salah, semua mati
#include <stdlib.h>
int main() {
int *p = malloc(4);
free(p);
*p = 10; // undefined behavior
}
๐ Mindset OS:
- OS tidak percaya program
- OS harus melindungi dirinya
- Inilah alasan user space vs kernel space
๐ก Tanpa proteksi memori → OS runtuh.
๐งฑ BLOK 3 — FILE = ABSTRAKSI PALING JENIUS
๐งช Eksperimen: semua adalah file
#include <stdio.h>
int main() {
FILE *f = fopen("/proc/cpuinfo", "r");
char buf[100];
fgets(buf, 100, f);
printf("%s", buf);
fclose(f);
}
๐ Mindset OS:
- CPU = file
- RAM = file
- Proses = file
- Device = file
๐ก UNIX genius moment.
๐งฑ BLOK 4 — IPC (PROGRAM ITU TIDAK SENDIRIAN)
๐งช Eksperimen: proses ngobrol
#include <unistd.h>
#include <stdio.h>
int main() {
int fd[2];
pipe(fd);
if (fork() == 0) {
write(fd[1], "Halo", 4);
} else {
char buf[10];
read(fd[0], buf, 4);
printf("Diterima: %s\n", buf);
}
}
๐ Mindset OS:
- OS menghubungkan program
- Tanpa OS → program terisolasi total
๐งฑ BLOK 5 — ERROR ADALAH KENYATAAN
๐งช Eksperimen: OS tidak boleh panik
#include <stdio.h>
#include <fcntl.h>
int main() {
int fd = open("tidak_ada.txt", O_RDONLY);
if (fd < 0)
perror("OS berkata");
}
๐ Mindset OS:
- Error itu normal
- OS harus tenang dan konsisten
- Tidak boleh crash hanya karena user salah
๐งฑ BLOK 6 — KONTROL & BATASAN
๐งช Eksperimen: siapa berhak apa
#include <unistd.h>
#include <stdio.h>
int main() {
printf("UID: %d\n", getuid());
}
๐ Mindset OS:
- OS = polisi
- Permission bukan fitur tambahan
- Tapi fondasi keamanan
๐ง TRANSFORMASI MINDSET (INI PENTING)
Setelah tahap ini, Anda tidak lagi bertanya: ❌ “Bagaimana bikin program?”
Anda mulai bertanya: ✅ “Bagaimana sistem ini tetap stabil?” ✅ “Bagaimana mencegah user merusak sistem?” ✅ “Bagaimana mengisolasi kegagalan?”
๐ Ini OS thinking.
๐ง JEBATAN MENUJU “OS ASLI”
Kalau mindset ini sudah klik, baru lanjut ke:
- Bootloader (tanpa BIOS)
- Memory layout OS
- Interrupt & IRQ
- Scheduler sederhana
- Syscall buatan sendiri
⚠️ Lompat ke kernel tanpa mindset ini = frustrasi
๐ฅ TANTANGAN MINI OS (OPSIONAL)
Tantangan 1 minggu
- Hari 1: Proses & fork
- Hari 2: File descriptor
- Hari 3: Memory & crash
- Hari 4: IPC
- Hari 5: Permission
- Hari 6: Mini shell
- Hari 7: Review OS design
๐งญ Mau lanjut ke mana?
Saya bisa:
1️⃣ Bikin mini shell Linux step-by-step
2️⃣ Simulasikan kernel di user-space
3️⃣ Jelaskan transisi BIOS → kernel → user dengan C
4️⃣ Buat diagram OS mental model
5️⃣ Siapkan roadmap dari C → kernel dev
Tinggal bilang nomor berapa.
Apa Yang Bisa Saya Lakukan dengan C?
Ini pertanyaan sangat sehat untuk orang yang benar-benar mau belajar C ๐
Saya jawab bukan dengan teori, tapi eksperimen nyata yang bisa Anda lakukan sekarang juga di Linux Mint, dan tiap eksperimen punya efek “wah” karena memperlihatkan apa yang tidak bisa dilakukan bahasa lain.
Saya susun dari paling aman → makin dekat ke mesin.
๐ฅ 1️⃣ Lihat RAM “hidup” (Stack vs Heap)
Kesan: “Oh… variabel itu benar-benar punya alamat!”
#include <stdio.h>
#include <stdlib.h>
int main() {
int a = 10;
int *p = malloc(sizeof(int));
*p = 20;
printf("a (stack) = %d, alamat: %p\n", a, &a);
printf("*p (heap) = %d, alamat: %p\n", *p, p);
free(p);
return 0;
}
Compile & run:
gcc ram.c -o ram
./ram
๐ Wah moment:
Anda melihat alamat RAM nyata, bukan konsep abstrak.
๐ฅ 2️⃣ Program C mengintip memori sendiri
Kesan: “Program bisa membaca dirinya sendiri?!”
#include <stdio.h>
int main() {
int x = 123;
unsigned char *p = (unsigned char *)&x;
for (int i = 0; i < sizeof(x); i++)
printf("%02x ", p[i]);
printf("\n");
}
๐ Anda melihat byte mentah dalam memori.
๐ฅ 3️⃣ Program C bicara langsung ke OS (syscall)
Kesan: “Ini bukan printf, ini OS beneran!”
#include <unistd.h>
int main() {
write(1, "Hello langsung ke kernel\n", 25);
return 0;
}
Cek:
strace ./a.out
๐ Anda melihat system call ke kernel Linux.
๐ฅ 4️⃣ Fork: satu program jadi dua
Kesan: “Program membelah diri!”
#include <stdio.h>
#include <unistd.h>
int main() {
fork();
printf("Saya hidup!\n");
return 0;
}
๐ Satu source → dua proses OS.
๐ฅ 5️⃣ Lihat proses Linux dari C (seperti ps)
Kesan: “C membaca sistem secara langsung”
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *d = opendir("/proc");
struct dirent *dir;
while ((dir = readdir(d)) != NULL) {
if (dir->d_type == DT_DIR)
printf("%s\n", dir->d_name);
}
closedir(d);
}
๐ /proc = jiwa Linux, dibaca pakai C.
๐ฅ 6️⃣ Ukur kecepatan kode Anda sendiri
Kesan: “Oh… performa itu terasa!”
#include <stdio.h>
#include <time.h>
int main() {
clock_t start = clock();
for (long i = 0; i < 1000000000; i++);
clock_t end = clock();
printf("Waktu: %.2f detik\n",
(double)(end - start) / CLOCKS_PER_SEC);
}
๐ Anda mulai merasakan biaya CPU.
๐ฅ 7️⃣ Mini shell Linux (seperti bash kecil)
Kesan: “Saya bikin OS mini!”
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
char *cmd[] = {"ls", NULL};
if (fork() == 0)
execvp(cmd[0], cmd);
else
wait(NULL);
return 0;
}
๐ Anda memanggil program lain seperti shell.
๐ฅ 8️⃣ Bikin crash sengaja (dan paham kenapa)
Kesan: “Segmentation fault itu masuk akal!”
int main() {
int *p = 0;
*p = 10;
}
Run:
./a.out
๐ Sekarang Anda mengerti kesalahan fatal, bukan takut.
๐ฅ 9️⃣ Lihat assembly hasil C Anda
Kesan: “C → mesin!”
gcc -S test.c
Buka file .s.
๐ Anda melihat bahasa CPU.
๐ฅ ๐ Mini roadmap “ketagihan C”
Jika Anda melakukan eksperimen 1–5 saja, biasanya muncul:
“Oh… ini yang bikin semua software bisa jalan.”
Lanjutkan dengan:
- Pointer & memory layout
- System call Linux
- Process & thread
- File descriptor
- Networking dasar
- Driver / kernel (teori)
๐ฏ Kenapa ini bikin kagum?
Karena C:
- Tidak menyembunyikan mesin
- Tidak menipu performa
- Tidak memanjakan
C mengajak Anda melihat realitas komputer
Kalau Anda mau, langkah berikutnya saya bisa:
- ๐ Buat challenge 7 hari belajar C
- ๐ง Jelaskan 1 konsep C per hari + eksperimen
- ๐ ️ Bikin proyek kecil: mini-OS mindset
- ⚙️ Hubungkan eksperimen C ↔ BIOS ↔ kernel
Tinggal bilang mau lanjut ke yang mana.
Januari 04, 2026


