RANGKUMAN SISTEM OPERASI PERTEMUAN 2

 

Sesi 1 & 2 – Proses

 

Perbedaan Program dengan Proses:

  • Program merupakan kumpulan dari instruksi-instruksi untuk melakukan suatu tugas
  • Proses merupakan proses pelaksanaan pada suatu program

 

Karakteristik dari suatu proses:

  • Identifier
  • State
  • Priority
  • Program counter
  • Memory pointer
  • Context data
  • I/O status information
  • Accounting information

 

Beberapa hal yang perlu diperhatikan dalam pembuatan proses:

  • Menetapkan identifier proses yang unik
  • Mengalokasikan ruang untuk proses
  • Menginisialisasi proses kontrol blok
  • Mengatur link yang tepat
  • Buat dari memperluas struktur data lainnya

 

Suatu proses akan dihentikan apabila terjadi seperti kondisi-kondisi sebagai berikut:

  • Proses selesai secara normal
  • Batas waktu terlampaui
  • Memori tidak tersedia
  • Pelanggaran bound
  • Protection error
  • Kesalahan aritmatika
  • Proses telah menunggu lebih lama dari batas maksimum yang ditentukan untuk sebuah acara
  • I/O gagal
  • Instruksi tidak valid
  • Instruksi istimewa
  • Penyalahgunaan data
  • Intervensi sistem operasi
  • Proses induk berakhir sehingga proses anak dihentikan
  • Permintaan induk

 

Tabel Proses:

  • Tabel proses menunjukan dimana proses terletak
  • Tabel proses merupakan atribut yang diperlukan untuk manajemen seperti ID proses, proses state, dan lokasi di memori

 

Lokasi proses meliputi:

  • Kumpulan program yang akan dijalankan
  • Proses kontrol blok
  • Proses gambar

 

Tahap-Tahap dalam Proses Kontrol Blok:

  • Identifikasi proses
  • Prosesor informasi keadaan, dalam proses ini dilakukan:
    • User-visible register
    • Register kontrol dan status
    • Stack pointer
  • Proses informasi kontrol

 

Model Lima Proses Keadaan:

Five State Process Model

 

 

 

 

 

 

 

 

 

 

Beberapa alasan untuk mengalihkan proses:

  • Jam terganggu
  • I/O terganggu
  • Kesalahan memori
  • Perangkap
  • Panggilan supervisor

 

Penyebab dari suspensi suatu proses:

  • Swapping
  • Alasan sistem operasi lain
  • Permintaan pengguna interaktif
  • Timing
  • Permintaan proses induk

 

Mode-Mode Eksekusi:

  • User mode
  • System mode, control mode, atau kernel mode

 

Cara Kerja Proses Panggilan Sistem Manajemen – fork():

  • Menciptakan proses baru, yaitu proses anak
  • Induk dan anak mengeksekusi secara bersamaan
  • Setiap proses dapat fork proses lain sehingga menciptakan hirarki proses
  • Suatu proses dapat memilih untuk menunggu anak untuk mengakhiri

 

Hasil nilai fungsi fork():

  • Mengembalikan nilai -1 jika tidak berhasil
  • Mengembalikan nilai 0 pada anak
  • Mengembalikan angka positif dari PID anak di dalam induk

 

Proses eksekusi fungsi fork():

  • Ketika fungsi fork() dijalankan, dua salinan identik dari ruang alamat akan dibuat
  • Kedua proses mulai dijalankan setelah
  • Induk dan anak berjalan secara independen

Fork1

 

 

Fork2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Beberapa catatan yang diperlukan untuk fungsi fork():

  • Urutan eksekusi dari induk dan anak dapat berbeda pada berbagai platform
  • Proses induk dan anak dijadwalkan secara independen
  • Di Ubuntu Linux, 1-2-3-4 (anak kemudian kembali ke induk)
  • Di Solaris, 1-3-4-2 (induk kemudian anak)
  • Secara umum, kita tidak pernah tau apakah anak mulai mengeksekusi sebelum induk atau sebaliknya. Hal ini tergantung pada penjadwalan algoritma yang digunakan oleh kernel.
  • Fungsi fork() dipanggil sekali tetapi mengembalikan dua kali
  • Nilai kembali pada anak adalah 0
  • Nilai kembali pada induk adalah PID anak
  • Baik anak dan induk terus mengeksekusi dengan instruksi yang mengikuti panggilan untuk fungsi fork() secarra independen
  • Implementasi saat ini tidak melakukan salinan lengkap dari data induk, stack dan heap; teknik yang disebut copy on-write (COW) yang digunakan untuk membuat salinan bagian dari memori dimodifikasi oleh salah satu proses dan wilayah memori bersama dengan induk dan anak dilindungi oleh kernel untuk read-only.
  • Fungsi fork() sering diikuti dengan fungsi exec()

 

Fungsi system():

  • Mengeksekusi perintah dari dalam program sebanyak jika perintah itu telah diketik ke shell
  • Membuat subproses menjalankan standard Bourne shell (/bin/sh) dan menyerahkan perintah ke shell untuk dijalankan; tunduk pada fitur, keterbatasan dan keamanan shell; pada kebanyakan sistem GNU/Linux, menunjuk ke bash.

 

Contoh pemakaian fungsi system():

#include <stdlib.h>

int main(){

int return_value;

return_value = system(“ls –l /”);

return return_value;

}

 

Panggilan sistem keluarga exec():

  • Memanggil salah satu keluarga exec() akan mengakhiri program yang sedang berjalan dan mulai mengeksekusi yang baru yang ditentukan dalam parameter exec dalam konteks proses yang ada.
  • ID proses tidak berubah
  • int execl(const char *path, const char *arg, …);
  • int execv(const char *path, char *const argv[]);
  • int execle(const char *path, const char *arg, …, char *const envp[]);
  • int execlp(const char *file, const char *arg, …);
  • int execvp(const char *file, char *const argv[]);

 

Contoh pemakaian fungsi fork() dan exec():

Fork & Exec

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fungsi system yang lain:

  • exit()
  • wait()
  • getpid()
  • getppid()

 

www.binus.ac.id

www.skyconnectiva.com

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *