Jojoshuajosh Journal

Just another Binusian blog site

SisOp Session 3 & Session 4

without comments

*Session 3

Process


Process vs Program

Program : Berisi instruksi – instruksi untuk melakukan perintah atau pekerjaan

Process : Eksekusi dari program

Process Characteristic

  • Identifier : Kode unik yang digunakan untuk membedakannya dari proses lain
  • State : Menentukan kondisi dari program (apakah program itu sedang Running / Suspended / Terminated)
  • Priority : Menentukan level prioritas saat eksekusi dilakukan
  • Program Counter : Menyimpan alamat instruksi selanjutnya
  • Memory pointers : Menunjukkan posisi memori
  • Context data : Data yang disimpan saat eksekusi
  • I/O status confirmation : Menunjukkan informasi status I/O
  • Accounting information : menunjukkan informasi mengenai perhitungan numerik mengenai proses yang terjadi di komputer.

Process Creation

  • Membuat ID Unik
  • Mengalokasi memori untuk proses
  • Menginisiasi Process Control Block (PCB)
  • Menyiapkan antrian program
  • Membuat expand data

Process Termination

  • Normal completion
  • Time limit exceeded
  • Memory unavailable
  • Bounds violation
  • Protection error
  • Arithmetic error
  • Time overrun
  • I/O failure
  • Invalid instruction
  • Privileged instruction
  • Data misuse
  • Operating system intervention
  • Parent terminates so child processes terminate
  • Parent request

Process Table

  • Merupakan tempat proses terjadi
  • Atribut dari process table

– Process ID

– Process state

– Location in memory

Process Location

  • Berisi sekumpulan program yang akan dieksekusi
  • Program Control Block (PCB)
  • Process image

Process Control Block

  • Process Identification

–   Identifier : menggunakan ID unik untuk proses idetifikas

  • Processor State Information

–  User – Visible Registers :

Dengar fungsi ini setiap user yang terdaftar dapat direferensikan sesuai bahasa mesin yang digunakan saat eksekusi dijalankan.

–  Control and Status Registers :

Variasi prosessor register bertugas untuk mengatur operasi prosessor.

–  Stack Pointers :

Stack pointer berfungsi untuk menujukkan posisi stack yang berupa operasi Last in first out (LIFO). Sebuah stack menyimpan parameter dan alamat prosedur.

–  Scheduling and State Information :

Berisi jadwal dan informasi yang diperlukan oleh sistem operasi saat eksekusi

Five State Process Model

sisop 13

Reason for Process switch

  • Clock interrupt
  • I/O interrupt
  • Memory fault
  • Trap
  • Supervisor call

Suspended Processes

  • Processor lebih cepat disbanding I/O sehingga semua proses dapat menunggu I/O
  • Menukar proses ke disk untuk membebaskan lebih banyak memori
  • Blocked state menjadi suspend state ketika memori ditukar ke disk
  • Menghasilkan dua state baru :

– Blocked, suspend

– Ready, suspend

Cause of Process Suspension

sisop 14

Modes of Execution

  • User mode

– Less-privileged mode

– User programs typically execute in this mode

  • System mode, control mode, or kernel mode

– More-privileged mode

– Kernel of the operating system

*Session 4

Process (cont..)


Process Management System Call – fork()

  • Membuat proses baru (child)
  • Parent dan child dapat dieksekusi bersamaan
  • Setiap proses dapat saling berkesinambungan antara satu proses dengan proses lainnya sehingga menciptakan hirarki proses
  • Dalam sebuah proses, parent dapat memilih untuk menunggu child atau mengakhiri proses secara langsung

fork()

  • Returns -1 jika gagal
  • Returns 0 jika child
  • Returns >1 jika parent
  • Ketika fork() dieksekusi maka kita dapat membuat dua Salinan identik dari address space
  • Parent dan child dapat berjalan secara independen

sisop 15   sisop 16

fork()  -(cont)

  • Perintah eksekusi parent dan child mungkin berbeda – beda di tiap platform.
  • Pada Ubuntu Linux urutan eksekusinya, 1 – 2 – 3 – 4 (dimulai child kemudian kembali ke parent)
  • Pada Solaris, 1 – 3 – 4 – 2 (dari parent kemudian kembali ke child)
  • Secara umum, kita tidak pernah tahu apakah child dijalankan terlebih dahulu atau sebaliknya. Hal ini tergantung algoritma penjadwalan yang digunakan oleh kernel
  • Pada saat eksekusi fork() dipanggil sekali tetapi return nilai dua kali :

– Return 0 pada child

– Return nilai di parent (PID child)

  • Sebuah fork() biasanya sering diikuti dengan exec()

System()

  • Mengeksekusi perintah dari beberap program
  • Membuat subproses yang berjalan dalam standar Bornue shell
  • (/bin/sh) adalah command dari shell (Standar Bornue Shell)
  • Shell umumnya terdapat pada GNU/Linux system, atau dikenal sebagai bash
  • Execution, melihat fitur, pembatasan, dan keamanan

System() – example 

#include <stdlib.h>

int main ( )

{

                      int return_value ;

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

                      return return_value;

}

Exec()

  • Hanya bisa memanggil satu program
  • Jika exec() dipanggil maka proses yang sedang berjalan akan di-terminated oleh sistem
  • Process ID tidak berganti

Exec() Family System Call

  • 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[]);

Exec() Family System Call

  • execvp dan execlp (with p)

Mencari nama program dan mencari sebuah program dengan nama tersebut dijalur eksekusi yang sedang dijalankan.

  • execv, execvp, and execve (with v)

Menerima daftar argument untuk program baru sebagai NULL-terminated array dari pointer ke string.

  • execl, execlp, and execle (with l)

Merima daftar argument menggunaka bahasa C.

  • execve, execle (with e)

Menerima argument tambahan berupa array dari variabel lingkungan. Argument mesti bernilai NULL.

Execv()

  • Mengeksekusi file, merubah file dari calling-process menjadi new process
  • Setelah eksekusi berhasil berhasil tidak ada return ke calling process

Fork() and Exec()

sisop 17

Other System Calls

  • exit() : Menghentikan proses secara normal
  • wait() : Digunakan oleh parent berfungsi sebagai perintah untuk menunggu child menyelesaikan eksekusi
  • getpid() : return child
  • getppid() : return parent

Thanks…

www.binusmaya.binus.ac.id

www.skyconnectiva.com

Written by jojoshuajosh

October 6th, 2015 at 7:42 pm

Posted in Uncategorized

Leave a Reply