Mod -4_-_so_-_2013-2014

274 views

Published on

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
274
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Mod -4_-_so_-_2013-2014

  1. 1. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST MODUL 04 SISTEM OPERASI LABORATORIUM TEKNIK INFORMATIKA UNIVERSITAS PASUNDAN BANDUNG 2014
  2. 2. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST Praktikum IV Process dan Thread I. Dasar Teori I.1. Proses Proses adalah program yang sedang dieksekusi. Setiap kali menjalankan suatu program, Sistem UNIX melakukan suatu fork(), yaitu melakukan beberapa urutan operasi untuk membuat suatu proses konteks dan kemudian mengeksekusi program tersebut dalam konteks yang sudah dibuat. Setiap proses yang dijalankan akan memiliki PID (Process ID). Kita dapat melihat proses yang sedang berjalan dengan perintah ps. Dengan fork() sistem call akan membuat proses baru yang identik dengan proses induk kecuali proses ID. Proses dicopy ke memory dari proses parent dan strukture proses baru ditangani oleh kernel. Lingkungan, resource limits, umask, controlling terminal, direktori tempat eksekusi, root direktori, signal mask, dan resource proses lainnya digandakan dari proses induk oleh proses fork. I.2. Thread Operasi thread meliputi pembuatan thread, penghentian, sikronisasi, penjadwalan, managemen, dan pengulangan proses.  Thread tidak mengatur pembuatan thread lain, atau mengetahui sebuah thread laen telah dibuat.  semua thread dengan sebuah proses saling berbagi pakai address space.  Thread pada satu proses yang sama saling berbagi pakai: - Process instructions - Most data - open files (descriptors) - signals and signal handlers - current working directory - User and group id  setiap thread merupakan unik - Thread ID - set of registers, stack pointer - stack for local variables, return addresses - signal mask - priority - Return value: errno  fungsi pthread memberikan nilai #0# jika OK Tujuan Praktikum : 1. Mengerti konsep proses dan thread 2. Mampu membuat proses dan thread 3. Mmampu memanajemen proses
  3. 3. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST Contoh membuat dan mengakhiri thread #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *print_message_function( void *ptr ); main() { pthread_t thread1, thread2; char *message1 = "Thread 1"; char *message2 = "Thread 2"; int iret1, iret2; /* Create independent threads each of which will execute function */ iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1); iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2); /* Wait till threads are complete before main continues. Unless we */ /* wait we run the risk of executing an exit which will terminate */ /* the process and all threads before the threads have completed. */ pthread_join( thread1, NULL); pthread_join( thread2, NULL); printf("Thread 1 returns: %dn",iret1); printf("Thread 2 returns: %dn",iret2); exit(0); } void *print_message_function( void *ptr ) { char *message; message = (char *) ptr; printf("%s n", message); }
  4. 4. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST II.MATERI PRAKTIKUM 1. Login ke sistem GNU/Linux kemudian buka terminal. 2. Pelajari dan lakukan percobaan terhadap perintah-perintah berikut : Percobaan 1 : Melihat Memory Komputer Percobaan 2 : Melihat Keseluruhan Proses yang berjalan Percobaan 3 : Mejadwalkan Proses dan Pembatalkanya Percobaan 4 : Mengecek Proses yang berjalan di sistem $ free -okt $ top 1. Menggunakan instruksi at : a. $ date b. $ at <waktu yang mendekati waktu saat ini> misal : $ at 17:15 c. Akan muncul prompt 'at' d. dmesg > simpanan e. Tekan ENTER kemudian CTRL+D f. Lihatlah daftar antrian dengan mengetikkan : $at –l 2. Membatalkan proses $ at -d nomorjobid, misal : $at -d 12 $ jobs $ jobs -l
  5. 5. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST Percobaan 5 : Membuat Background dan Foreground Proses 1. Ketik Sorcode ini lalu simpanlah dengan nama proses.sh #! /bin/sh i=0 while [ true ]; do i=$(($i+1)) done echo $i 2. Ubah hak Aksesnya $ chmod +x proses.sh 3. Eksekusilah program proses.sh $ ./proses.sh 4. Suspend Prosesnya Ketik : CTRL + Z 5. Lihat NomorJOB proses yang kita suspend $ jobs 6. Jalankan Proses di Background $ bg %nomorjobs_padaProses 7. Lihat Apakah proses sudah berjalan lagi $ jobs 8. Jalankan Proses di Foreground $ fg %nomorPIDpadajobs Suspend Prosesnya $ Ketik CTRL + Z 9. Lihat PID proses foreground $ ps 10. Hentikan Proses tersebut $ kill -9 <NoPID>
  6. 6. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST Percobaan 6 : Membuat Fork di dalam Proses #include <stdio.h> /* printf, stderr, fprintf */ #include <unistd.h> /* _exit, fork */ #include <stdlib.h> /* exit */ #include <errno.h> /* errno */ int main(void) { pid_t pid; /* Output from both the child and the parent process * will be written to the standard output, * as they both run at the same time. */ pid = fork(); if (pid == 0) { /* Child process: * When fork() returns 0, we are in * the child process. * Here we count up to ten, one each second. */ int j; for (j = 0; j < 10; j++) { printf("child: %dn", j); sleep(1); } _exit(0); /* Note that we do not use exit() */ } else if (pid > 0) { /* Parent process: * When fork() returns a positive number, we are in the parent process * (the fork return value is the PID of the newly- created child process). * Again we count up to ten. */ int i; for (i = 0; i < 10; i++) { printf("parent: %dn", i); sleep(1); } exit(0); }
  7. 7. Modul Praktikum Sistem Operasi Praktikum IV Ferry Mulyanto , ST Untuk Percobaan 6 ikuti langkah – langkah berikut ini : A) Simpan source code dengan nama fork.c B) Lalu kompile sorce code tersebut dengan perintah $ gcc -o fork fork.c C) Running file hasil kompile dengan perintah $ ./fork III. TUGAS PRAKTIKUM A. Tugas Praktikum else { /* Error: * When fork() returns a negative number, an error happened * (for example, number of processes reached the limit ). */ fprintf(stderr, "can't fork, error %dn", errno); exit(EXIT_FAILURE); } }

×