Sunday, November 12, 2023

UNIX System Call dan Manajemen Memori



 Pokok Bahasan:

  • Unix System Cell
  • Manajemen Memory

Tujuan Belajar:

Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
  • Menggunakan system call fork, wait dan execl pada linux
  • Menggunakan perintah- perintah untuk manajemen memory 

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,  execl  dan  wait.      Pada  percobaan  yang  dilakukan  akan   dibuat   program   yang didalamnya   terdapat  fungsi system  call. Untuk menjalankannya pada Linux gunakan g++.

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 ketikkan man 2 fork.  
Untuk melihat 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  tetapi  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.
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.

System Call Execl

    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 52161880 2328 2800
Swap: 194640 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.

TUGAS PENDAHULUAN:

Jawablah pertanyaan- pertanyaan berikut ini:

1. Apa yang dimaksud dengan system cell? 

    System call merupakan penyedia antarmuka dari pelayanan-pelayanan yang tersedia dengan system operasi. Umumnya system call mnggunakan bahasa C dan C++, meskipun tugas-tugas seperti hardware yang harus diakses langsung, maka menggunakan bahasa assembly. Pada sistem operasi UNIX akan menggunakan UNIX system call yaitu call fork, excel, dan wait.

2. Apa yang dimaksud dengan system call fork(), execl() dan wait(). Jawablah dengan menggunakan perintah man (contoh : man 2 fork, man 2 execl dan man 2 wait)? 

System  call  fork  adalah  suatu  system  call  yang  membuat  suatu  proses  baru pada  system  operasi  UNIX. Sistem call  excel  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.

3. Apa yang dimaksud dengan virutal memory, proses swapping dan buffer cache pada manajemen memory? 

    Virtual memory adalah suatu teknik memisahkan antara memori logis dan memori fisiknya. Memori logis merupakan kumpulan keseluruhan halaman dari suatu program. Tanpa memori virtual, memori logis akan langsung dibawa ke memori fisik (memori utama). Disinilah memeori virtual melakukan pemisahan dengan menaruh memori logis ke secondary storage (disk sekunder) dan hanya membawa halaman yang diperlukan ke memori utama (memori fisik). Swapping adalah manajemen memori dengan pemindahan proses antara memori utama dan disk selama eksekusi. Buffer cache dapat dianggap sebagai sumber daya memori, terutama sumber daya I/O karena penggunaanya dalam mediasi transfer.

4. Apa yang dimaksud dengan perintah free dan cat /proc/meminfo? 

    Free digunakan untuk mengetahui total memori yang digunakan dalam proses. Dalam perintah free ditampilkan total kapasitas memori, memori yang terpakai, yang tidak sedang dipakai, yang dibagi, buffer, cache dan juga swap. Cat /proc/meminfo digunakan untuk mengetahui isi dari meminfo kemudian ditampilkan.

5. Apa yang dimaksud dengan perintah ps?  

    Perintah ps digunakan untuk menampilkan informasi proses yang sedang berjalan termasuk nomor PID dari proses tersebut.


0 comments:

Post a Comment