Lisa Limiarti
BINUSIAN 2017
Session 3 & Session 4
Categories: Uncategorized

* Session 3

Process

A)   Process & Program

  • Program
    Berisikan instruksi untuk melakukan tugas.
  • Process
    Eksekusi dari sebuah program.

B)   Karateristik dari Proses

  1. Identifier
    Sebuah identifier unik, yang digunakan untuk membedakannya dari semua proses lainnya.
  2. State
    Jika proses saat ini sedang mengeksekusi, prosesnya berarti berada di dalam running state.
  3. Prority
    Tingkat prioritas relatif terhadap proses lainnya.
  4. Program Counter
    Alamat dari instruksi berikutnya dalam program akan dieksekusi.
  5. Memory Pointers
    Termasuk pointer ke kode program & data yang terkait dengan proses ini, ditambah setiap blok memori yang berbagi dengan proses lainnya.
  6. Context Data
    Ini adalah data yang hadir dalam register di processor saat proses sedang mengeksekusi.
  7. I/O Status Information
    Termasuk permintaan I/O khusu, perangkat I/O (misalnya : disk drive) ditugaskan untuk proses ini, daftar file yang digunakan oleh proses, dan sebagainya.
  8. Accounting Information
    Termasuk jumlah waktu processor & waktu jam yang digunakan, batas waktu, nomor akun, dan sebagainya.

C)   Pembuatan Process

  • Menetapkan identifier yang unik.
  • Mengalokasikan ruang untuk proses.
  • Menginisialisasi proses blok kontrol.
  • Mengatur link yang tepat.
    contoh : menambahkan proses baru ke linked list yang digunakan untuk penjadwalan queue.
  • Memperluas struktur data lainnya.
    contoh : melindungi file accounting.

D)   Process Termination

  •  Penyelesaian normal.
  • Batas waktu terlampaui.
  • Memori tidak tersedia.
  • Pelanggaran batas.
  • Perlindungan gagal.
  • Kesalahan aritmatika.
  • Time overrun.
  • I/O gagal.
  • Instruksi tidak valid.
  • Instruksi khusus.
  • Penyalahgunaan data.
  • Intervensi sitem operasi.
  • Parent berakhir sehingga proses pada child berakhir.
  • Permintaan parent.

E)   Process Table

  • Dimana proses terletak.
  • Atribut yang diperlukan untuk manajemen :
    1. Process ID.
    2. Process State.
    3. Lokasi di dalam memori.

D)   Lokasi Proses

  • Kumpulan program yang akan dijalankan.
    – Lokasi data untuk variabel lokal & global.
    – Setiap konstanta didefinisikan.
    – Stack.
  • Proces blok kontrol
    Kumpulan atribut.
  • Proses gambar
    Kumpulan program, data, stack, & atribut.

E)   Proses Blok Kontrol

  1. Proses Identifikasi
    – Pengidentifikasi numerik yang dapat disimpan dengan proses blok kontrol.
    – Identifier dari proses ini.
    – Identifier proses yang menciptakan proses ini (proses parent).
    – User identifier.
  2. Processor State Information
    – User-Visible Registers adalah salah satu yang dapat direferensikan dengan menggunakan bahasa mesin yang dieksekusi oleh processor. Biasanya ada 8-32 dari register ini, meskipun beberapa implementasi RISC memiliki lebih dari 100.– Control & Status Registers adalah macam-macam register processor yang dipekerjakan untuk mengendalikan operasi processor :
    a. Program Counter = berisi alamat dari instruksi selanjutnya yang akan diambil.
    b. Condition Codes = hasil dari operasi aritmetik / logis tertentu (misalnya : sign, zero, carry, equal, overflow).
    c. Status Information = termasuk flag aktif / tidak aktif, mode eksekusi.– Stack Pointers memiliki satu / lebih sistem stack LIFO yang saling berhubungan. Setiap stack digunakan untuk menyimpan parameter & memanggil alamat-alamat untuk prosedur & sistem panggilan. Stack pointer menunjuk ke atas stack.
  3. Process Control Information
    – Scheduling and State Information adalah informasi yang dibutuhkan oleh sistem operasi untuk menjalankan fungsi scheduling. Item-item khas dari informasi :
    a. Process State
    adalah kesiapan proses yang akan dijadwalkan untuk eksekusi (misalnya : running, ready, waiting, halted).
    b. Priority adalah satu / lebih field yang dapat digunakan untuk menggambarkan prioritas proses scheduling. Dalam beberapa sistem, nilai diperlukan (misalnya : default, current, highest-allowable).
    c. Scheduling-Related Information bergantung pada algoritma yang digunakan. Contoh : jumlah waktu dimana proses telah menunggu & jumlah waktu dimana proses dieksekusi saat terakhir kali dijalankan.
    d. Event adalah identitas proses yang sedang menunggu sebelum dapat dijalankan.

F)   Lima Bagian dari Process Model

Process1

 

G)   Address of Process Switch

  • Clock Interrupt
    Proses telah dieksekusi untuk maksimum pembagian waktu yang diijinkan.
  • I/O Interrupt
    – Kesalahan memori.
    – Alamat memori ada didalam memori virtual sehingga harus dibawa ke memori utama.
  • Trap
    – Terjadi error.
    – Dapat menyebabkan proses untuk pindah ke Exit state.
  • Supervisor Call
    Seperti file open.

H)   Penundaan Proses

  • Processor lebih cepat daripada I/O sehingga semua proses dapat menunggu I/O.
  • Tukar proses ini ke disk untuk membebaskan lebih banyak memori.
  • Blocked state menjadi suspend state ketika ditukar ke disk.
  • 2 state baru
    – Blocked, suspend.
    – Ready, suspend.

I)   Penyebab Penundaan Proses

  • Swapping
    Sistem operasi harus melepaskan memori utama secukupnya untuk membawa proses yang siap untuk mengeksekusi.
  • Other reason OS
    Sistem operasi dapat menghentikan background / proses utilitas / sebuah operasi yang diduga menyebabkan masalah.
  • Interactive user request
    User mungkin ingin untuk menghentikan eksekusi dari sebuah program dengan maksud debugging / koneksi dengan menggunakan sumber daya.
  • Timing
    Sebuah proses dapat dieksekusi secara berkala (misalnya : sebuah accounting / sistem proses monitoring) & mungkin dihentikan ketika menunggu waktu interval selanjutnya.
  • Parent process request
    Proses parent mungkin ingin menghentikan eksekusi turunan untuk memeriksa / memofidikasi proses yang dihentikan, / mengkoordinasi aktivitas dari berbagai turunan.

J)   Mode-Mode Eksekusi

  • User mode
    – Less-privileged mode.
    – Program-program user biasanya mengeksekusi dalam mode ini.
  • System mode, control mode, / kernel mode
    – More-privileged mode.
    – Kernel dari sistem operasi.

 

* Session 4

Process (2)

A)   Process Management System Call – fork ()

  • Menciptakan proses baru (child).
  • Parent & child mengeksekusi secara bersamaan.
  • Setiap proses dapat meng-fork proses lain sehingga menciptakan hirarki proses.
  • Sebuah proses dapat memilih untuk menunggu child untuk berhenti.

B)   Fork()

  • Kalo gagal, return -1.
  • Kalo child, return 0.
  • Kalo parent, >0 / return [angka positif, identifier child (child PID) di parent.
  • Ketika fork () dieksekusi, fork() membuat dua salinan identik dari ruang alamat.
  • Kemudian kedua proses memulai eksekusi.
  • Oleh karena itu, parent & child berjalan secara independen.

Process2.jpg

Picture3

 

C)   Fork() – notes

  • Perintah eksekusi dari parent & child mungkin berbeda pada berbagai platform.
  • Proses-proses parent & child dijadwalkan secara independen.
  • Satu berjalan di Ubuntu Linux, 1-2-3-4 (child kemudian kembali ke parent).
  • Yang lainnya berjalan pada Solaris, 1-3-4-2 (parent kemudian child).

Umumnya, kita tidak pernah tau apakah child mulai mengeksekusi sebelum parent / sebaliknya. Hal ini tergantung pada algoritma scheduling yang digunakan oleh kernel.

  • Fork() dipanggil sekali tetapi return  2 kali
    – Return value pada child adalah 0.
    – Return value pada parent adalah PID child.
  • Baik child & parent terus mengeksekusi dengan instruksi yang mengikuti panggilan ke fork(), secara independen.
  • Implementasi saat ini tidak melakukan salinan lengkap dari data parent, stack & heap; teknik yang disebut copy on write (COW) digunakan untuk membuat salinan bagian dari memori, dimodifikasi oleh proses &  wilayah memori yang dibagikan oleh parent & child dilindungi oleh kernel untuk read-only.
  • Fork() sering digunakan dengan exec().

D)   System()

  • Mengeksekusi perintah dari dalam program.
  • Sebanyak jika perintah itu telah diketik ke dalam shell.
  • Membuat subproses menjalankan standar Bourne shell.
  • (/bin/sh) & menangani perintah ke shell.
  • Eksekusi, subjek pada fitur, keterbatasan & keamanan.
  • Shell, pada kebanyakkan sistem GNU / Linux, menunjuk ke bash.

E)   Exec() Family System Calls

  • Memanggil salah satu keluarga exec() akan menghentikan program yang sedang berjalan & mulai mengeksekusi yang baru yang ditentukan dalam parameter exec dalam konteks proses yang ada.
  • Proses id tidak berubah.
  • int execl (const char *path, const char *arg, …);
  • int execv (const char *path, char *const arg[]);
  • 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[]);
  • execvp & execlp (with p)
    – Menerima nama program & mencari sebuah program dengan nama tersebut di jalur eksekusi saat ini, fungsi yang tidak mengandung p harus diberi jalur lengkap dari program yang akan dieksekusi.
  • execv, execvp, & execve (with v)
    – Menerima daftar argumen untuk program baru sebagai array NULL-terminated dari printer ke string. execl, execlp, & execle (with l).
    – Menerima daftar argumen menggunakan mekanisme varrargs bahasa C.
  • execve & execle (with e)
    – Menerima argumen tambahan, array variabel. Argument harus array NULL-terminated dari pointer ke karakter string. Setiap karakter string harus dari bentuk “VARIABLE = value”.

F)   Execv()

  • Mengeksekusi file, mengubah proses panggilan ke proses baru.
  • Setelah eksekusi sukses, tidak ada return ke proses memanggil.

G)   Fork() & Exec()

Process3.jpg

H)   System Calls Lainnya

  • exit()
    – Menghentikan proses secara normal.
    – Membuka blok waiting parent.
  • wait()
    – Digunakan oleh parent.
    – Menunggu child menyelesaikan eksekusi.
  • getpid()
    – Mengembalikan identifier dari proses pengalihan.
  • getppid()
    – Mengembalikan identifier parent.

Leave a Reply