PRAKTIKUM 7 - UNIX SYSTEM CALL DAN MANAJEMEN MEMORY
LAPORAN PRAKTIKUM 7
UNIX SYSTEM CALL DAN MANAJEMEN MEMORY
BROADBAND
MULTIMEDIA
TEKNIK ELEKTRO
POLITEKNIK
NEGERI JAKARTA
TAHUN AJARAN
2021/2022
I.
Pokok Bahasan
ü Unix System Call
ü Manajemen Memory
II.
Tujuan Praktikum
Adapun
tujuan dalam Praktikum ini, sebagai berikut :
1.
Menggunakan
system call fork, wait, dan exel pada Linux
2.
Menggunakan
perintah-perintah untuk manajemen memory
III.
Dasar Teori
1.
UNIX SYSTEM CALL
Pada
praktikum ini akan dilakukan percobaan menggunakan system call yang berhubungan
dengan proses pada system operasi UNIX yang biasa disebut UNIX System Call,
yaitu system call fork, excel dan wait.
Pada percobaan yang dilakukan akan dibuat program yang didalamnya
terdapat fungsi system call. Untuk menjalankannya pada Linux gunakan g++
v System Call Fork
System call
fork adalah suatu system call yang membuat suatu proses baru
pada system operasi UNIX. Pada percobaan ini menggunakan mesin
Linux dan beberapa program yang
berisi system call fork().
Bila suatu program berisi sebuah fungsi fork(),
eksekusi dari program menghasilkan eksekusi dua proses. Satu proses dibuat
untuk memulai eksekusi program. Bila system call fork() dieksekusi, proses lain
dibuat. Proses asal disebut proses parend dan proses kedua disebut proses
child. Proses child merupakan duplikat dari proses parent. Kedua proses
melanjutkan eksekusi dari titik dimana system call fork() menghasilkan eksekusi
pada program utama. Karena UNIX adalah system operasi time sharing, dua proses
tersebut dapat mengeksekusi secara konkuren.
Nilai yang dihasilkan oleh fork() disimpan dalam
variable bertipe pid_t, yang berupa nilai integer. Karena nilai dari variable
ini tidak digunakan, maka hasil fork() dapat diabaikan.
·
Untuk kill
proses gunakan Ctrl+C
·
Untuk
dokumentasi fork() dapat dilihat dengan ketikan man 2 fork
·
Untuk terlihat
id dari proses, gunakan system call getpid()
·
Untuk melihat
dokumentasi dari getpid(), ketikkan man 2 getpid :
Perbedaan antara proses parent dan
proses child adalah :
·
Mempunyai pid
yang berbeda
·
Pada proses
parent , fork() menghasilkan pid dari proses child jika sebuah proses child dibuat.
·
Pada proses
child, fork() selalu menghasilkan 0
·
Membedakan copy
dari semua data, termasuk variable dengan current value dan stack
·
Membedakan
program counter (PC) yang menunjukkan eksekusi berikutnya meskipun awalnya
keduanya mempunyai nilai yang sama teta pi setelah itu berbeda.
·
Setelah fork,
kedua proses tersebut tidak menggunakan variable bersama.
System call fork menghasilkan :
·
Pid proses
child yang baru
ke proses parent,
hal ini sama dengan memberitahukan proses parent
nama dari child-nya
·
0 : menunjukkan proses child
·
-1 : 1 jika
terjadi error, fork() gagal karena
proses baru tidak dapat dibuat.
v System Call Wait
System call wait menyebabkan proses menunggu sinyal
(menunggu sampai sembarang tipe sinyal diterima dari sembarang proses).
Biasanya digunakan oleh proses parent untuk menunggu sinyal dari system operasi
ke parent bila
child diterminasi. System call wait menghasilkan pid dari proses
yang mengirimi sinyal. Untuk melihat dokumentasi wait gunakan perintah man 2
wait.
v System Call
Excel
Misalnya kita ingin proses baru mengerjakan sesuatu
yang berbeda dari proses parent, sebutlah menjalankan program yang berbeda.
Sistem call execl meletakkan program executable baru ke memory dan
mengasosiasikannya dengan proses saat itu. Dengan kata lain, mengubah segala
sesuatunya sehingga program mulai mengeksekusi dari file yang berbeda.
2.
MANAJEMEN MEMORY
Linux mengimplementasikan sistem virtual memory
demand-paged. Proses mempunyai besar memory virtual yang besar (4 gigabyte).
Pada virtual memory dilakukan transfer page antara disk
dan memory fisik.
Jika tidak terdapat cukup memory fisik, kernel melakukan
swapping beberapa page lama ke disk. Disk drive adalah perangkat mekanik yang
membaca dan menulis ke disk yang lebih lambat dibandingkan mengakses memory
fisik. Jika memory total page lebih dari memory fisik yang tersedia, kernel
lebih banyak melakukan swapping dibandingkan eksekusi kode program, sehingga
terjadi thrashing dan mengurangi utilitas.
Jika memory fisik ekstra tidak digunakan, kernel
meletakkan kode program sebagai disk buffer cache. Disk buffer menyimpan data
disk yang diakses di memory; jika data
yang sama dibutuhkan lagi dapat dengan cepat diambil dari cache.
Pertama kali sistem melakukan booting, ROM BIOS
membentuk memory test seperti terlihat berikut :
ROM BIOS (C) 1990
008192 KB OK WAIT......
Kemudian
informasi penting ditampilkan selama proses booting pada linux seperti terlihat berikut :
Memory: 7100k/8192k available (464k
kernel code, 384k reserved, 244k data) ...
Adding Swap: 19464k swap-space
Informasi
diatas menampilkan jumlah RAM tersedia setelah kernel di-load ke memory (dalam
hal ini 7100K dari 8192K). Jika ingin melihat
pesan saat booting
kernel yang terlalu cepat dibaca
dapat dilihat kembali dengan perintah dmesg.
Setiap
Linux dijalankan, perintah free digunakan untuk menampilkan total memory
yang tersedia. Atau menggunakan cat /proc/meminfo.
Memory fisik dan ruang swap ditampilkan
disini. Contoh output pada sistem :
total used free shared buffers
Mem: 7096 5216 1880
2328 2800
Swap: 19464 0 19464
Informasi
ditampilkan dalam kilobyte (1024 byte). Memory ”total”
adalah jumlah tersedia setelah load kernel. Memory digunakan untuk proses
atau disk bufferring sebagai “used”. Memory yang sedang tidak digunakan ditampilkan
pada kolom “free”. Memory total
sama dengan jumlah kolom ”used” dan ”free”.
Memory
diindikasikan “shared” yaitu berapa
banyak memory yang digunakan lebih dari
satu proses. Program seperti shell mempunyai lebih dari satu proses yang
berjalan. Kode executable read-only dan dapat disharing oleh semua proses yang
berjalan pada shell. Kolom “buffers” menampilkan berapa banyak memory digunakan untuk
disk buffering.
Perintah free juga
menunjukkan dengan jelas bagaimana swap space dilakukan dan berpa banyak
swapping yang terjadi.
Percobaan
berikut untuk mengetahui manajemen memory :
1.
Pada saat
bootup, dengan satu user log in, dengan perintah free sistem melaporkan
berikut:
Terdapat
free memory (4.4MB) dan sedikit disk buffer (1.1MB).
2. Situasi berubah
setelah menjalankan perintah yang membaca data dari disk (command ls –lR /.)
Disk buffer bertambah menjadi 2 MB. Hal ini berakibat pula pada kolom ”used” dan memory ”free” juga berkurang.
Perintah top dan ps -u juga sangat berguna untuk
menunjukkan bagaimana penggunaan memory berubah secara dinamis dan
bagaimana proses individu
menggunakan memory. Contoh tampilannya :
IV.
Langkah-langkah Praktikum
1.
Login sebagai
user
2. Bukalah Console
Terminal dan lakukan percobaan-percobaan yang sudah ada dalam jobsheet
3.
Selesaikan
soal-soal latihan
V.
Tugas Pendahuluan
Jawablah
pertanyaan-pertanyaan berikut ini :
1. Apa
yang dimaksud dengan system call?
Jawab : System call
merupakan penyedia antarmuka dari pelayanan-pelayanan yang tersediadengan
system operasi. Umumnya system call mnggunakan bahasa C dan C++,
meskipuntugas-tugas seperti hardware yang harus diakses langsung, maka
menggunakan bahasaassembly
2.
Apa yang dimaksud dengan system call fork(), excel() dan wait().
Jawablah dengan menggunakan perintah man (Contoh : man
2 fork man 2 excel dan man 2 wait)?
Jawab : Sistem call
fork adalah suatu sistem call yang membuat suatu proses baru pada sistem
operasi UNIX. Nilai yang dihasilkan fork() disimpan dalam variabel bertipe
pid_t, yang berupa nilai integer, karena tidak digunakan, maka hasil fork()
dapat diabaikan. Sistem call execl() adalah suatu sistem call yang meletakkan
program executable baru ke memori dan mengasosiasikannya dengan proses saat
itu. Sistem call wait() adalah suatu sistem call yang menyebabkan proses
menunggu sinyal (menunggu sampai sembarang tipe sinyal dari sembarang proses).
Biasanya digunakan oleh proses parent untuk menunggu sinyal dari sistem operasi
ke parent bila child diterminasi.
3. Apa
yang dimaksud sistem virtual memory, proses swapping dan buffer cache pada
manajemen memory?
Jawab :
·
Virtual memory adalah suatu teknik
memisahkan antara memori logis dan memorifisiknya. Memori logis merupakan
kumpulan keseluruhan halaman dari suatu program.Tanpa memori virtual, memori
logis akan langsung dibawa ke memori fisik (memoriutama). Disinilah memeori
virtual melakukan pemisahan dengan menaruh memori logiske secondary storage (disk
sekunder) dan hanya membawa halaman yang diperlukan kememori utama (memori
fisik).
·
Swapping adalah manajemen memori dengan
pemindahanproses antara memori utama dan disk selama eksekusi.
·
Buffer cache dapat dianggapsebagai
sumber daya memori, terutama sumber daya I/O karena penggunaanya dalammediasi
transfer
4. Apa
yang dimaksud perintah free
dan cat /proc/meminfo?
Jawab : Free digunakan
untuk mengetahui total memori yang digunakan dalam proses. Dalamperintah free
ditampilkan total kapasitas memori, memori yang terpakai, yang tidaksedang
dipakai, yang dibagi, buffer, cache dan juga swap. Cat /proc/meminfo
digunakanuntuk mengetahui isi dari meminfo kemudian ditampilkan.
5. Apa
yang dimaksud perintah ps?
Jawab : Perintah ps digunakan untuk menampilkan informasi proses yang sedang berjalan termasuk nomor PID dari proses tersebut.
VI. PERCOBAAN
Percobaan
1 : Melihat proses parent dan proses child
1.
Dengan menggunakan editor vi, buatlah file fork1.cpp
dan ketikkan program berikut:
Hasil :
2.
Gunakan g++
compiler untuk menjalankan program di atas
$ g++ -o fork 1 fork 1.cpp
$ ./fork 1
Hasil :
3.
Amati output
yang dihasilkan
Analisa
: Program di atas adalah program yang bertujuan untuk melihat proses parent dan
proses child. Salah satu caranya yaitu dengan melihat PID (Process Identifier)
dan PPID (Parent Process Identifier) dari proses. Untuk mendapatkan nilai PID
dan PPID dapat dilakukan dengan fungsi getpid() dan getppid() yang
dideklarasikan pada unistd.h. kedua fungsi tersebut akan mengembalikan nilai
bertipe pid_t yang merupakan sebuah signed integer yang menunjukkan PID. Dapat
dilihat dengan menggunakan perintah ps bahwa proses ./fork1 memiliki PID 9930
dan PPID adalah 2952 yang merupakan proses bash. Selain itu, pada program ini
juga digunakan fungsi getuid() untuk mendapatkan id dari user yang menjalankan
dan fungsi sleep() yang menghentikan proses dalam detik.
Percobaan
2 : Membuat dua proses terus menerus dengan sebuah system call fork()
1.
Dengan menggunakan editor vi, buatlah file fork2.cpp dan ketikkan
program berikut:
Hasil :
2.
Gunakan g++ compiler untuk menjalankan program di ats. Pada saat dijalankan,
program tidak akan pernah berhenti. Untuk menghentikan program tekan Ctrl+C.
$ g++ -o fork 2 fork 2.cpp
$ ./fork 2
Hasil :
3.
Amati output yang dihasilkan
Analisa : Program di atas bertujuan untuk
membuat dua proses secara terus menerus menggunakan system call fork(). Fork
adalah suatu system call yang dapat membuat proses baru. Proses asal yang
melakukan fork disebut dengan parent process, sedangkan proses baru yang dibuat
setelah melakukan fork disebut dengan child process. Nilai yang dikembalikan
oleh fork adalah PID dari child process. Dapat dilihat bahwa pada percobaan
ini, yang merupakan child process adalah proses dengan PID 10461, sedangkan
yang merupakan parent process adalah process dengan PID 10460. x berfungsi
untuk menghitung berapa kali loop telah terjadi. Jika dilihat dari urutan
cetakannya, dapat dilihat bahwa walaupun mereka melakukan proses yang sama,
parent process selalu berjalan terlebih dahulu sebelum child process. Program
ini akan melakukan loop secara terus menerus tanpa henti. Untuk
memberhentikannya, maka harus dihentikan secara paksa dengan interupsi
menggunakan Ctrl+C.
Percobaan
3 : Membuat dua proses sebanyak lima kali
1.
Dengan
menggunakan editor vi, buatlah file fork3.cpp dan ketikkan program berikut:
Hasil :
2.
Gunakan g++
compiler untuk menjalankan program di atas
$ g++ -o fork 3 fork 3.cpp
$ ./fork 3
Hasil :
3.
Amati output
yang dihasilkan
Analisa
: Program ini hampir sama dengan program fork2, hanya saja bedanya pada program
ini loop yang dilakukan dibatasi hingga 5 kali saja, tidak infinite. Pada
percobaan ini, dapat dilihat bahwa yang merupakan child process adalah proses
dengan PID 27843, sedangkan yang merupakan parent process adalah proses dengan
PID 27842. Selain itu, disini terbukti kembali bahwa walaupun mereka melakukan
proses yang sama, parent process selalu berjalan terlebih dahulu sebelum
process jika dilihat dari urutan cetakannya.
Percobaan
4 : Proses parent menunggu sinyal dari proses child dengan sistem call wait
1.
Dengan
menggunakan editor vi, buatlah fork4.cpp dan ketikkan program berikut:
Hasil :
2.
Gunakan g++
compiler untuk menjalankan program di atas
$ g++ -o fork 4 fork 4.cpp
$ ./fork 4
Hasil :
3.
Amati output
yang dihasilkan
Analisa
: Jika pada program-program sebelumnya proses child dan parent menjalankan
baris yang sama, maka pada program ini kedua proses tersebut menjalankan baris
yang berbeda. Hal ini dapat dilakukan dengan pengkondisian if..else pada hasil
pengembalian system call fork. Pada child process, fork akan mengembalikan
nilai 0, sedangkan pada parent process, fork akan mengembalikan nilai bilangan
positif berupa PID dari process child. Namun, jika process child gagal terbentuk,
fork akan mengembalikan nilai -1. Dengan mengetahui return value dari fork,
maka kita bisa membagi pengerjaan proses parent dan child menggunakan
pengkondisian if..else. Karena kita tahu bahwa parent process akan berjalan
terlebih dahulu sebelum child process, maka kita harus membuat parent process
untuk berhenti sementara hingga child process selesai berjalan. Disitulah
kegunaan system call wait() dibutuhkan. System call wait akan membuat proses
parent berhenti sementara dan menunggu hingga proses child selesai dan
diterminasi. Setelah proses child diterminasi system call wait akan
mengembalikan nilai berupa PID dari proses child yang diterminasi tersebut.
Itulah mengapa pada program diatas, wait dilakukan di dalam loop do..while,
selama hasil return value dari wait tidak sama dengan PID proses child, maka
proses parent akan terus melakukan waiting.
Percobaan
5 : Sistenm call fork/exec dan wait mengeksekusi program bernama ls,
menggunakan file executable /bin/ls dengan satu parameter -l yang ekuivalen
dengan ls –l
1.
Dengan
menggunakan editor vi, buatlah fork5.cpp dan ketikkan program berikut:
Hasil :
2.
Gunakan g++
compiler untuk menjalankan program di atas
$ g++ -o fork 5 fork 5.cpp
$ ./fork 5
Hasil :
3.
Amati output yang dihasilkan
Analisa : Program ini akan melakukan forking
dan proses child akan menjalankan perintah ls -l. Hal ini dapat dilakukan
dengan menjalankan system call execl pada proses child. Execl merupakan system
call yang berfungsi untuk mengeksekusi file. Pada kasus ini, child process
mengeksekusi perintah ls yang filenya berada di /bin/ls dengan argument -l dan
/home. Fungsi execl dapat dimasukkan banyak parameter. Namun, parameter utama
yang harus dimasukkan ada 3, yaitu path dari file yang akan dieksekusi,
argument perintah (bisa lebih dari satu), dan NULL (sebagai penanda akhiran
dari argument). System call execl akan mengganti process image sebelumnya
dengan process image yang baru. Sehingga jika execl berhasil dijalankan, maka
setelah execl selesai dijalankan oleh process child dan diterminasi, proses
child akan tetap berjalan. Itulah mengapa baris proses child dibawah execl pada
percobaan diatas tidak dijalankan.
Percobaan
6 : Sistem call fork/exec dan wait mengeksekusi program lain
1.
Dengan
menggunakan editor vi, buatlah fork6.cpp dan ketikkan program berikut:
Hasil
:
2.
Gunakan g++
compiler untuk menjalankan program di atas
$ g++ -o fork 6 fork 6.cpp
$ ./fork 6
Hasil :
3.
Amati Output
yang dihasilkan
Analisa
: Pada program ini, proses child mengeksekusi program lain (fork3) dengan
menggunakan system call execl. Pada percobaan diatas, proses dengan PID 32927
adalah proses parent, sedangkan proses dengan PID 32928 adalah process child.
Namun, saat proses child menjalankan execl dan mengeksekusi fork3, proses
dengan PID 32928 pada program fork3 akan menjadi proses parent dan ia akan
membuat proses child baru dengan PID 32929.
Percobaan
7 : Melihat Manajemen Memory
1.
Perhatikan
dengan perintah dmesg jumlah memori tersedia dan proses swapping
$ dmesg | more
Hasil :
Analisa : Perintah dmesg digunakan untuk
mencetak dan mengontrol buffer ring kernel. Di dalam informasi yang dicetak
oleh dmesg, terdapat pula jumlah memori yang tersedia. Dapat dilihat di atas
bahwa jumlah memori yang tersedia ada 1978444 KB dari total memori 2096696 KB.
2.
Dengan perintah
free perhatikan jumlah memory “free”,
“used”, “share”, dan “buffer”
$ free
Hasil :
Analisa
:
3.
Dengan perintah
dibawah ini apakah hasilnya sama dengan no 2?
$ cat /proc/meminfo
Hasil :
Analisa
: Hasil yang ditampilak oleh cat /proc/meminfo hampir sama dengan hasil pada
free. Hanya saja bedanya cat /proc/meminfo menampilkan lebih banyak informasi
daripada free.
4.
Gunakan perintah
di bawah ini
$ ls –lR /,
Hasil :
Analisa
: Perintah ls -lR /. menampilkan semua direktori dan file yang ada pada system
informasi. Karena banyaknya file yang ditampilkan, perintah tersebut akan
berjalan secara terus menerus tanpa henti.
5.
Perhatikan
perubahan manajemen memory
$ free
Hasil :
Analisa : Dapat dilihat bahwa memori yang “free” menjadi berkurang,
memori yang “available” berkurang, dan
penggunaan memori shared dan buff/cache bertambah, sedangkan besar swap “used” bertambah dan swap “free” menjadi berkurang.
6.
Jalankan sebuah program, misalnya open Office. Perhatikan perubahan
manajemen memori.
$ free
Hasil :
Analisa : Setelah dijalankan open Office,
memori yang digunakan dan shared memori menjadi lebih besar dan memori
available berkurang juga. Selain itu, beberapa swap mulai digunakan.
7.
Dengan perintah ps bagaimana penggunaan memory untuk setiap proses
diatas?
$ ps -uax
Hasil :
Analisa : Perintah ini sangat berguna untuk
menunjukkan bagaimana penggunaan memori berubah secara dinamis dan bagaimana
proses individu menggunakan memori.
VII.
Latihan
1.
Ubahlah program
fork5.cpp pada percobaan 5 untuk mengeksekusi perintah yang ekuivalen dengan
a. ls –al /etc.
b. cat fork2.
c. ./fork2
2.
Informasi apa
saja mengenai manajemen memory yang ditampilkan pada perintah dmesg pada percobaan anda ?
Hasil :
Analisa
: Informasi yang ditampilkan mengenai manajemen memori pada dmesg adalah
banyaknya memori yang tersedia beserta rincian penggunaan memori tersebut
seperti kernel code, rwdata (read-write), rodata (read-only), init, bss,
reserved (memori cadangan), dan cma-reserved.
3.
Bagaimana
informasi yang ditampilkan dengan perintah free pada percobaan
anda ?
Hasil :
Jawab
:
Informasi
yang ditampilkan dengan perintah free adalah:
·
Total : Menampilkan total memori yang ada computer.
·
Used :
Menampilkan total memori yang sedang digunakan. Rumus perhitungannya adalah
Total – (Free + Buffers + Cache).
·
Free :
Menampilkan total memori yang tidak digunakan.
·
Shared :
Menampilkan total memori yang digunakan oleh buffers, page cache, dan slabs.
·
Available :
Menampilkan perkiraan dari total memori yang siap digunakan untuk menjalankan
program baru tanpa dilakukannya swapping.
4.
Apa isi file /proc/meminfo pada percobaan yang Anda lakukan?
Jawab : Ada banyak sekali informasi yang ditampilkan pada meminfo, diantaranya sebagai berikut :
5.
Berapa besar
memory yang digunakan setelah percobaan 7 dengan perintah ps –uax?
Jawab
: Banyaknya memori yang digunakan menurut ps -uax adalah sebesar 0,1%.
6.
Lakukan hal yang
sama dengan percobaan 7 untuk melihat perubahan memory setelah dilakukan
beberapa proses pada shell. Tentukan perintah yang dilakukan misalnya membuka
browser danperhatikan hal-hal berikut :
a.
Informasi apa
saja yang ditampilkan dengan perintah free?
• Total :
Menampilkan total memori yang ada computer.
• Used :
Menampilkan total memori yang sedang digunakan. Rumus perhitungannya adalah
Total – (Free + Buffers + Cache).
• Free : Menampilkan total memori yang tidak
digunakan.
• Shared :
Menampilkan total memori yang digunakan oleh buffers, page cache, dan slabs.
• Available
: Menampilkan perkiraan dari total memori yang siap digunakan untuk menjalankan
program baru tanpa dilakukannya swapping.
b.
Informasi apa
saja yang disimpan file /proc/meminfo?
Jawab
: Berikut adalah informasi yang disimpan dalam /proc/meminfo :
c.
Berapa besar
kapasitas memory total?
Jawab
: Kapasitas memori total adalah 2035284 kB.
d.
Berapa kapasitas
memory yang sudah terpakai?
Jawab
: Kapasitas memori yang sudah terpakai adalah 712808 kB.
e.
Berapa kapasitas
memory yang belum terpakai?
Jawab
: Kapasitas memori yang belum terpakai adalah 510540 kB.
f.
Berapa kapasitas
memory yang digunakan sharing beberapa proses?
Jawab
: Kapasitas memori yang digunakan sharing beberapa proses adalah 1712 kB.
g.
Berapa kapasitas
buffer cache?
Jawab : Kapasitas
buffer cache adalah 755504 kB.
VIII.
Kesimpulan
System calls adalah cara terprogram di mana program
komputer meminta layanan dari kernel sistem operasi tempat dijalankannya.
System calls menyediakan antarmuka antara proses dan sistem operasi. Pada
praktikum kali ini, kita melakukan 3 macam system calls, yaitu system calls
fork, execl, dan wait. System calls fork adalah system calls yang dapat membuat
proses baru dengan menduplikasi proses. Proses baru disebut sebagai proses
child. Proses yang memanggilnya disebut sebagai proses parent. System calls
execl berfungsi untuk mengekseskusi sebuah file dengan memberi parameter berupa
path file dan argumen-argumen perintah file. Sistem call execl meletakkan
program executable baru ke memory dan mengasosiasikannya dengan proses saat itu.
Sedangkan system calls wait adalah ystem call yang digunakan untuk menunggu
perubahan status pada child process yang dipanggil, dan mendapatkan informasi
tentang child process yang statusnya telah berubah. Linux mengimplementasikan
sistem virtual memory demand-paged. Proses mempunyai besar memory virtual yang
besar.
Pada virtual memory dilakukan transfer page antara
disk dan memory fisik. Jika tidak terdapat cukup memory fisik, kernel melakukan
swapping beberapa page lama ke disk. Jika memory total page lebih dari memory
fisik yang tersedia, kernel lebih banyak melakukan swapping dibandingkan
eksekusi kode program, sehingga terjadi thrashing dan mengurangi utilitas.
Perbedaan
antara proses parent dan proses child adalah mempunyai pid yang berbeda, pada proses
parent, fork() menghasilkan pid dari proses child jika sebuah proses child
dibuat, membedakan copy dari semua data, termasuk variable dengan current value
dan stack, membedakan program counter yang menunjukkan eksekusi berikutnya
meskipun awalnya keduanya mempunyai nilai yang sama tetapi setelah itu berbeda,
dan setelah fork, kedua proses tersebut tidak menggunakan variable bersama.
Comments
Post a Comment