Lecture 2X The Kernel Abstraction
Lecture 2X The Kernel Abstraction
1 of 107
Today’s lecture
2 of 107
What makes a “computer system” ?
3 of 107
How a “computer” becomes alive?
4 of 107
Computer-system architecture (1980)
5 of107
Computer-system architecture (Intel Skylake 2015)
6 of 107
Computer-system architecture (Intel Skylake 2015)
7 of 107
Computer-system architecture (Raspberry Pi3)
8 of 107
An overview of HW functionality
9 of 107
Today’s lecture
10 of 107
How to bootstrap?
11 of 107
System boot
12 of 107
BIOS startup (1)
13 of 107
BIOS startup (2)
Boot loader sangat penting untuk sistem operasi. Namun, sering diabaikan
sebagai komponen inti komputer. Ini karena ia memainkan perannya di
background, membantu mengaktifkan sistem operasi dengan benar. Sebagian
besar prosesor di perangkat memiliki program yang dimuat sebelumnya.
Program-program ini dikenal sebagai boot loader.
15 of 107
What is Booting???
16 of 107
Istilah Boot berkaitan dengan pengertian
berikut
17 of 107
Jenis Boot
18 of 107
Bootstrap (Web)
19 of 107
Twitter Bootstrap
20 of 107
Why use Bootstrap
Bagi kita yang bekerja di bidang front-end atau back-end developer atau
pengembangan situs jejaring tentunya akrab dengan hyper text markup
language (HTML) dan CSS (Cascading Style Sheets). Keduanya adalah hal
utama dalam pembangunan suatu situs jejaring dan tampilan web secara
umum. Peran CSS untuk membuat tampilan sebuah halaman web yang
sedang dibangun. Bagi pengunjung situs pun CSS berperan besar agar
pengunjung nyaman berselancar di laman sebuah situs.
21 of 107
Peran CSS
CSS dapat diartikan sebagai lembar berjenjang untuk format tata letak
halaman web, sebuah temuan untuk membantu pengembang web yang
tadinya hanya bergantung pada HTML sebagai bahasa markup. HTML di awal
mula digunakan untuk menandai objek di halaman web seperti tabel, gambar,
paragraf, dan sebagainya. Penggunaan HTML di awal mula perkembangan
internet memang bisa dibilang cukup karena saat itu internet hanya digunakan
oleh kalangan terbatas untuk berbagi informasi penelitian, proses format
halaman amat terbatas dan gaya /style halaman situs masih monoton. Namun
setelah internet digunakan luas dan makin berkembang mulai berpikir
bagaimana halaman situs agar lebih menarik. Hal ini yang lantas membuat
HTML menjadi amat terbebani. Pengembangan web berubah menjadi sesuatu
yang sangat kompleks dan sulit ditangani. Tentu saja, peran HTML sebagai
alat struktural dan alat bantu desain terasa amat berat. Untuk itulah kemudian
CSS dibuat sebagai solusi dari tugas desain dan pemformatan, sedangkan
HTML bisa kembali fokus pada tata letak halaman web. CSS muncul dan
lantas dikenal sebagai alat untuk memformat dokumen yang ditulis
menggunakan bahasa markup yaitu HTML, CSS dikenal sebagai bahasa style
sheet yang bekerja sama dengan HTML untuk membangun sebuah halaman
situs jejaring. 22 of 107
Processes
23 of 107
Konsep Dasar dan Definisi Proses
Secara informal; proses adalah program dalam eksekusi. Suatu proses adalah lebih
dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga
termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada
program counter dan isi dari daftar prosesor/ processor's register. Suatu proses
umumnya juga termasuk process stack, yang berisikan data temporer (seperti
parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data
section, yang berisikan variabel global.
Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program
adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam
disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan
sebuah program counter yang mengkhususkan pada instruksi selanjutnya untuk
dijalankan dan seperangkat sumber daya/ resource yang berkenaan dengannya.
Walau dua proses dapat dihubungkan dengan program yang sama, program
tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa
pengguna dapat menjalankan copy yang berbeda pada mail program, atau
pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap
proses ini adakah proses yang berbeda dan walau bagian tulisan-text adalah sama,
data section bervariasi. Juga adalah umum untuk memiliki proses yang
menghasilkan banyak proses begitu ia bekerja (hubungan antar proses)
24 of 107
Process Concept
25 of 107
Process Information
26 of 107
Process Control Block (PCB)
27 of 107
Process Control Block
Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga
disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 2-2. PCB berisikan banyak
bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk ini:
Keadaan proses: Keadaan mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
Program counter: Counter mengindikasikan address dari perintah selanjutnya untuk dijalankan
untuk proses ini.
CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer.
Register tersebut termasuk accumulator, index register, stack pointer, general-puposes register,
ditambah code information pada kondisi apa pun. Besertaan dengan program counter, keadaan/
status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut
berjalan/ bekerja dengan benar setelahnya (lihat Gambar ).
Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari
dasar dan batas register, tabel page/ halaman, atau tabel segmen tergantung pada sistem memori
yang digunakan oleh sistem operasi.
Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas
waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini,
suatu daftar open berkas dan banyak lagi.
PCB hanya berfungsi sebagai tempat menyimpan/ gudang untuk informasi apa pun yang dapat
bervariasi dari prose ke proses.
28 of 107
Process State
29 of 107
Process State (Keadaan Proses)
Sebagaimana proses bekerja, maka proses tersebut merubah state (keadaan statis/
asal). Status dari sebuah proses didefinisikan dalam bagian oleh aktivitas yang ada dari
proses tersebut.
Tiap proses mungkin adalah satu dari keadaan berikut ini:
New: Proses sedang dikerjakan/ dibuat.
Running: Instruksi sedang dikerjakan.
Waiting: Proses sedang menunggu sejumlah kejadian untuk terjadi (seperti sebuah
penyelesaian I/O atau penerimaan sebuah tanda/ signal).
Ready: Proses sedang menunggu untuk ditugaskan pada sebuah prosesor.
Terminated: Proses telah selsesai melaksanakan tugasnya/ mengeksekusi.
30 of 107
Diagram of Process State
31 of 107
Process Scheduling
32 of 107
Process Scheduling
33 of 107
Schedulers
34 of 107
Schedulers (Cont.)
35 of 107
Context Switch
36 of 107
CPU Context Switch
37 of 107
Process Creation
38 of 107
Process Creation (Cont.)
39 of 107
Process Termination
40 of 107
Threads
41 of 107
Threads (Cont.)
42 of 107
Threads (Cont.)
43 of 107
Multiple Threads within a Task
44 of 107
Solaris 2: example
45 of 107
Solaris 2: Threads
46 of 107
Today’s lecture
47 of 107
Typical Unix OS structure
48 of 107
User Level vs Kernel Level
USER THREAD
User thread didukung oleh kernel dan diimplementasikan oleh
thread library ditingkat pengguna. Library mendukung untuk
pembentukan thread, penjadualan, dan managemen yang tidak
didukung oleh kernel. Contoh user thread adalah POSIX
Pthreads, Mach C-threads, dan Solaris threads.
KERNEL THREAD
Kernel thread didukung secara langsung oleh sistem operasi:
pembentukan thread, penjadualan, dan managemen dilakukan
oleh kernel dalam ruang kernel. Karena managemen thread telah
dilakukan oleh sistem operasi, kernel thread biasanya lebih
lambat untuk membuat dan mengelola daripada pengguna thread.
Windows NT, Solaris, dan Digital UNIX adalah sistem operasi
yang mendukung kernel thread.
49 of 107
User Level vs Kernel Level
USER THREAD
Kelebihan :
Pengaturan dan pembuatan thread lebih cepat
Kekurangan:
Apabila kernelnya merupakan thread tunggal maka apabila salah satu user-
level thread menjalankan blocking system call maka akan mengakibatkan
seluruh proses diblok walau pun ada thread lain yang dapat jalan dalam
aplikasi tersebut
KERNEL THREAD
Kelebihan :
Jika sebuah thread menjalankan blocking system call maka kernel dapat
menjadualkan thread lain di aplikasi untuk melakukan eksekusi.
pada lingkungan multiprocessor, kernel dapat menjadual thread-thread pada
processor yang berbeda.
Kekurangan :
Pengaturan dan pembuatan thread lebih lambat.
50 of 107
Typical Unix OS structure
51 of 107
Typical Unix OS structure
52 of 107
Pipeline of creating an executable file
53 of 107
Execution (run an application)
54 of 107
What’s an application?
55 of 107
Responsibilities
56 of 107
Typical Unix OS structure
57 of 107
OS service examples
58 of 107
System Calls
Biasanya tersedia sebagai instruksi bahasa assembly.
Beberapa sistem mengizinkan system calls
dibuat langsung dari program bahasa tingkat tinggi.
Beberapa bahasa pemrograman (contoh: C,
C++) telah didefinisikan untuk menggantikan bahasa assembly
untuk sistem pemrograman.
System calls yang berhubungan dengan kontrol proses antara lain
ketika penghentian pengeksekusian program. Baik secara normal
(end) maupun tidak normal (abort). Selama proses dieksekusi
Kadang diperlukan untuk me-load atau mengeksekusi program
lain, disini diperlukan lagi suatu system calls. Juga ketika membuat
suatu proses baru dan menghentikan sebuah proses.
Ada juga system calls yang dipanggil ketika kita ingin meminta dan
merubah atribut dari suatu proses.
59 of 107
System Calls Manajemen Proses
System Call untuk manajemen proses diperlukan untuk mengatur proses-proses
yang sedang berjalan. Kita dapat melihat penggunaan system calls untuk
manajemen proses pada Sistem Operasi Unix.
Contoh yang paling baik untuk melihat bagaimana system call bekerja untuk
Manajemen proses adalah Fork. Fork adalah satu satunya cara untuk membuat
sebuah proses baru pada sistem Unix. Fork membuat duplikasi yang mirip
dengan proses aslinya, termasuk file descriptor, register, dan lainnya.
Setelah perintah Fork, child akan mengeksekusi kode yang berbeda dengan
parentnya. Bayangkan yang terjadi pada shell. Shell akan membaca command
dari terminal, melakukan fork pada child, menunggu child untuk mengeksekusi
command tersebut, dan membaca command lainnya ketika child terminate.
Untuk menunggu child selesai, parent akan mengeksekusi system call waitpid,
yang hanya akan menunggu sampai child selesai. Proses child harus
mengeksekusi command yang dimasukkan oleh user(pada kasus shell). Proses
child melakukannya dengan menggunakan system call exec.
Dari ilustrasi tersebut kita dapat mengetahui bagaimana system call dipakai
untuk manajemen proses. Kasus lainnya bukan hanya pada Fork, tetapi hampir
setiap proses memerlukan system call untuk melakukan manajement proses.
60 of 107
Syatem Calls
61 of 107
Kernel
62 of 107
Kernel Linux
Kernel Linux terdiri dari beberapa bagian penting, seperti:
pengurusan proses, pengurusan ingatan, pemacu perkakasan,
pemacu sistem fail, pengurusan jaringan dan lain-lain. Namun
bahagian yang terpenting ialah pengurusan proses dan
pengurusan ingatan. Pengurusan ingatan meliputi penggunaan
ingatan, kawasan pertukaran, bahagian-bahagian kernel dan
untuk cache penimbal (buffer cache). Pengurusan proses
menangani penggunaan proses-proses dan penjadualan
proses. Pada bahagian dasar kernel terdapat pemacu
perkakasan untuk setiap jenis perkakasan komputer yang
disokong.
63 of 107
Shell
64 of 107
Kompilasi Kernel
Kernel adalah program yang dimuat pada saat boot yang
berfungsi sebagai interface antara user-level program dengan
hardware. Secara teknis linux hanyalah sebuah kernel. Pogram
lain seperti editor, kompilator dan manager yang disertakan dalam
paket (SuSE, RedHat, Mandrake, dll.) hanyalah distribusi yang
melengkapi kernel menjadi sebuah sistem operasi yang lengkap.
Kernel membutuhkan konfigurasi agar dapat bekerja secara
optimal.
Konfigurasi ulang dilakukan jika ada device baru yang belum
dimuat. Setelah melakukan konfigurasi, lakukan kompilasi untuk
mendapatkan kernel yang baru. Tahap ini memerlukan
beberapa tool, seperti kompilator dsb. Kompilasi kernel ini
dilakukan jika ingin mengupdate kernel
65 of 107
Command-Interpreter System
66 of 107
Typical Unix OS structure
67 of 107
OS components
68 of 107
Processor management
69 of 107
Memory management
70 of 107
I/O device management
71 of 107
File system
72 of 107
Today’s lecture
73 of 107
Device interrupts
74 of 107
Challenge: protection
75 of 107
A problem
76 of 107
Main points
77 of 107
Process abstraction
78 of 107
Thought experiment
79 of 107
Hardware support: dual-mode operation
80 of 107
A model of a CPU
81 of 107
A CPU with dual-mode operation
82 of 107
Hardware support: dual-mode operation
83 of 107
Privileged instruction examples
84 of 107
Virtual addresses
85 of 107
Hardware timer
86 of 107
“User Kernel” model switch
87 of 107
Mode switch
88 of 107
System calls
89 of 107
Interrupts and exceptions
90 of 107
Interrupt and exceptions (1)
91 of 107
Interrupt and exceptions (2)
92 of 107
How to take interrupt & syscall safely?
93 of 107
Interrupt & trap & syscall vector
94 of 107
Interrupt & trap & syscall vector (cont’d)
95 of 107
Interrupt stack
96 of 107
Interrupt handler & interrupt masking
97 of 107
Case study: x86 interrupt & syscall
98 of 107
Before interrupt
99 of 107
During interrupt
100 of 107
After interrupt
101 of 107
At end of handler
102 of 107
Kernel system call handler
103 of 107
System call stubs
104 of 107
User-level system call stub
105 of 107
Kernel-level system call stub
106 of 107
Thank You
107 of107