Anda di halaman 1dari 67

Bab 3: Proses

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013
Bab 3: Proses

■ Konsep Proses
■ Penjadwalan Proses
■ Operasi Proses
■ InterProcess Communication
■ Contoh Sistem IPC
■ Komunikasi Sistem Client-Server

Operating System Concepts – 9th Edition 3.2 Silberschatz, Galvin and Gagne ©2013
Tujuan
■ Memperkenalkan proses -- sebuah program dieksekusi yang
merupakan dasar dari semua komputasi

■ Menggambarkan berbagai fitur proses, termasuk penjadwalan,


pembuatan, pengakhiran, dan komunikasi dari proses

■ Mengeksplorasi IPC menggunakan shared memory dan message


passing

■ Menggambarkan komunikasi pada sistem client-server

Operating System Concepts – 9th Edition 3.3 Silberschatz, Galvin and Gagne ©2013
Konsep Proses

Operating System Concepts – 9th Edition 3.4 Silberschatz, Galvin and Gagne ©2013
Question

■ Apakah ini proses?


● Microsoft Word

● Adobe Photoshop

● Notepad

Operating System Concepts – 9th Edition 3.5 Silberschatz, Galvin and Gagne ©2013
Konsep Proses
■ Dalam konteks komputasi terdapat dua terminologi
● Program - kumpulan instruksi berurutan yang masih disimpan dalam disk dan belum siap
dieksekusi
● Process – program program (kumpulan instruksi) yang sudah dialokasikan di main memory
dan sedang/siap untuk dieksekusi secara sekuensial
✔ Istilah lain – jobs

■ Program dikenal sebagai entitas pasif dan process dikenal sebagai entitas aktif

■ Eksekusi program dimulai via klik mouse pada GUI atau via command line

■ Satu program dapat menjadi beberapa proses


● Contoh : beberapa user menjalankan program yang sama

Operating System Concepts – 9th Edition 3.6 Silberschatz, Galvin and Gagne ©2013
Dari Source Code ke Process

Secondary Storage (Disk) Main Memory


Compiler Linker Loader

Source Code Object Module Program Process

Library Loadable System Library

Operating System Concepts – 9th Edition 3.7 Silberschatz, Galvin and Gagne ©2013
Bagian Proses

■ Kode program, atau bisa disebut


text section
■ Aktivitas saat program dieksekusi
termasuk program counter, register
prosesor
■ Stack berisi data sementara
● Function parameters, return
addresses, local variables
■ Data section berisi global variables
■ Heap berisi memori yang
dialokasikan secara dinamis selama
running

Operating System Concepts – 9th Edition 3.8 Silberschatz, Galvin and Gagne ©2013
Memory Layout of a C Program

Operating System Concepts – 9th Edition 3.9 Silberschatz, Galvin and Gagne ©2013
Siklus Eksekusi Instruksi dalam Sebuah Process

■ Eksekusi sebuah process


terdiri atas dua siklus :
● Siklus eksekusi CPU
disebut CPU burst
● Siklus I/O wait disebut I/O
burst

Operating System Concepts – 9th Edition 3.10 Silberschatz, Galvin and Gagne ©2013
State Proses
■ Dalam perjalanannya, sebuah proses mengalami perubahan state
● new: Proses yang sedang dibuat
● running: Instruksi yang sedang dieksekusi
● waiting: Proses menunggu beberapa event terjadi
● ready: Proses menunggu untuk ditugaskan ke prosesor
● terminated: Proses selesai dieksekusi

Operating System Concepts – 9th Edition 3.11 Silberschatz, Galvin and Gagne ©2013
Process Control Block (PCB)
Informasi yang terkait dengan setiap proses disimpan
dalam struktur data process control block (PCB)
yang terdiri atas :
■ Process state – running, waiting, etc
■ Program counter – location of instruction to next
execute
■ CPU registers – contents of all process-centric
registers
■ CPU scheduling information- priorities,
scheduling queue pointers
■ Memory-management information – memory
allocated to the process
■ Accounting information – CPU used, clock time
elapsed since start, time limits
■ I/O status information – I/O devices allocated to
process, list of open files

Operating System Concepts – 9th Edition 3.12 Silberschatz, Galvin and Gagne ©2013
Representasi PCB di Kernel Linux

Represented by the C structure task_struct

pid t_pid; /* process identifier */


long state; /* state of the process */
unsigned int time_slice /* scheduling information */
struct task_struct *parent;/* this process’s parent */
struct list_head children; /* this process’s children */
struct files_struct *files;/* list of open files */
struct mm_struct *mm; /* address space of this process */

Operating System Concepts – 9th Edition 3.13 Silberschatz, Galvin and Gagne ©2013
Threads

■ Proses memiliki satu thread eksekusi


● Hanya mengijinkan single task pada satu waktu
● Memiliki banyak thread tiap proses
✔ Memungkinkan beberapa task
● Harus memiliki penyimpanan untuk detail thread, beberapa
program counters di PCB

Operating System Concepts – 9th Edition 3.14 Silberschatz, Galvin and Gagne ©2013
Process Scheduling
(Penjadwalan Process)

Operating System Concepts – 9th Edition 3.15 Silberschatz, Galvin and Gagne ©2013
Penjadwalan Process
■ Satu CPU hanya dapat mengeksekusi satu instruksi dalam satu
waktu

■ Jika terdapat lebih dari satu process, eksekusi tiap process


dilakukan secara bergantian (concurrent)

■ Dibutuhkan mekanisme schedulling pada sistem dengan jumlah


CPU < jumlah process

■ Goal : Memaksimalkan penggunaan CPU,


■ Switch dari satu process ke process lain dengan cepat

Operating System Concepts – 9th Edition 3.16 Silberschatz, Galvin and Gagne ©2013
Process Scheduler

■ Process scheduler : komponen sistem operasi yang melakukan penjadwalan


process

■ Tugas : Memilih diantara process yang tersedia untuk dieksekusi oleh CPU

■ Scheduler melakukan maintaining scheduling queues dari process-process


yang ada
● Ready queue – antrian yang berisi semua process yang sudah
dialokasikan pada memory dan sudah siap untuk dieksekusi (state ready)
● Device queues – antrian yang berisi semua process yang menunggu I/O
(state waiting)
● Semua process akan dipindahkan antar queue

Operating System Concepts – 9th Edition 3.17 Silberschatz, Galvin and Gagne ©2013
Ready Queue And Various
I/O Device Queues

Operating System Concepts – 9th Edition 3.18 Silberschatz, Galvin and Gagne ©2013
Representasi Penjadwalan Process

■ Queueing diagram represents queues, resources, flows

Operating System Concepts – 9th Edition 3.19 Silberschatz, Galvin and Gagne ©2013
CPU Switch From Process to Process
Ketika eksekusi berpindah dari satu process ke process lain
terjadi mekanisme context switch .

Operating System Concepts – 9th Edition 3.20 Silberschatz, Galvin and Gagne ©2013
Jenis-Jenis Schedulers
■ Long-term scheduler ( job scheduler) – scheduler yang bertugas memilih dan
memindahkan process ke ready queue
■ Short-term scheduler (or CPU scheduler) – scheduler yang bertugas memilih
process di ready queue yang akan dieksekusi CPU selanjutnya
● Dalam sebuah OS mungkin hanya ada scheduler jenis ini
■ Short-term scheduler diekskusi sangat sering (milliseconds) Þ (prioritas tinggi,
harus cepat)
■ Long-term scheduler dieksekusi cukup jarang (seconds, minutes) Þ (boleh jadi
lambat)
■ The long-term scheduler mengontrol degree of multiprogramming
● degree of multiprogramming : jumlah process di memory
■ Processes can be described as either:
● I/O-bound process – spends more time doing I/O than computations, many
short CPU bursts
● CPU-bound process – spends more time doing computations; few very long
CPU bursts
■ Long-term scheduler strives for good process
Operating System Concepts – 9th Edition 3.21
mix Silberschatz, Galvin and Gagne ©2013
Medium Term Scheduling
■ Medium-term scheduler dapat ditambahkan untuk mengurangi degree of
multiprogramming
● Dapat dipakai untuk mekanisme swapping
● Hapus process dari memory, masukkan dalam disk, kemudian dialokasikan ke
memory lagi jika dibutuhkan untuk dieksekusi

Operating System Concepts – 9th Edition 3.22 Silberschatz, Galvin and Gagne ©2013
Multitasking in Mobile Systems
■ Some systems / early systems allow only one process to run, others suspended
■ Due to screen real estate, user interface limits iOS provides for a
● Single foreground process- controlled via user interface
● Multiple background processes– in memory, running, but not on the display,
and with limits
● Limits include single, short task, receiving notification of events, specific long-
running tasks like audio playback
■ Android runs foreground and background, with fewer limits
● Background process uses a service to perform tasks
● Service can keep running even if background process is suspended
● Service has no user interface, small memory use

Operating System Concepts – 9th Edition 3.23 Silberschatz, Galvin and Gagne ©2013
Context Switch
■ Ketika CPU berpindah mengeksekusi process lain, OS harus menyimpan
state dari process sebelumnya dan membaca state tersimpan untuk
process baru lewat mekanisme context switch

Operating System Concepts – 9th Edition 3.24 Silberschatz, Galvin and Gagne ©2013
Context Switch
■ Ketika CPU berpindah mengeksekusi process lain, OS harus menyimpan
state dari process sebelumnya dan membaca state tersimpan untuk
process baru lewat mekanisme context switch

■ Context dari sebuah process direpresentasikan pada PCB

■ Context-switch memakan waktu; sistem tidak melakukan apapun selama


terjadi context switch
● Waktu yang dibutuhkan bergantung dukungan hardware

Operating System Concepts – 9th Edition 3.25 Silberschatz, Galvin and Gagne ©2013
Operations on Process
(Operasi-Operasi pada Process)

Operating System Concepts – 9th Edition 3.26 Silberschatz, Galvin and Gagne ©2013
Operations on Processes

■ Process merupakan entitas aktif yang berasal dari


entitas pasif berupa program di disk

■ OS menyediakan beberapa operasi yang berkaitan


dengan process antara lain :
● Creation (pembuatan) process baru
● Termination (penghancuran) process yang sedang
berjalan

Operating System Concepts – 9th Edition 3.27 Silberschatz, Galvin and Gagne ©2013
Process Creation
■ Parent process create children processes, which, in turn create other
processes, forming a tree of processes
■ Generally, process identified and managed via a process identifier (pid)
● Ex. : try to execute ps -el in your Linux machine
■ Resource sharing options
● Parent and children share all resources
● Children share subset of parent’s resources
● Parent and child share no resources
■ Execution options
● Parent and children execute concurrently
● Parent waits until children terminate

Operating System Concepts – 9th Edition 3.28 Silberschatz, Galvin and Gagne ©2013
A Tree of Processes in Linux

Operating System Concepts – 9th Edition 3.29 Silberschatz, Galvin and Gagne ©2013
Question : Pembuktian

■ Jalankan beberapa program di Linux. Cek dengan


perintah ps -el . Dan jawab pertanyaan berikut :
● Apakah process dari program tersebut mempunyai
parent?
● Process mana yang menjadi parentnya?

Operating System Concepts – 9th Edition 3.30 Silberschatz, Galvin and Gagne ©2013
Process Creation (Cont.)
■ Address space
● Child duplicate of parent
● Child has a program loaded into it

■ UNIX examples
● fork() system call creates new process
● exec() system call used after a fork() to replace the process’ memory space with a new program

Operating System Concepts – 9th Edition 3.31 Silberschatz, Galvin and Gagne ©2013
C Program Forking Separate Process

Operating System Concepts – 9th Edition 3.32 Silberschatz, Galvin and Gagne ©2013
Process Termination
■ Process executes last statement and asks the operating system to delete it (exit())
● Output data from child to parent (via wait())
● Process’ resources are deallocated by operating system
■ Parent may terminate execution of children processes (abort())
● Child has exceeded allocated resources
● Task assigned to child is no longer required
● If parent is exiting
✔ Some operating systems do not allow child to continue if its parent
terminates
– All children terminated - cascading termination
■ Wait for termination, returning the pid:
pid t_pid; int status;
pid = wait(&status);

Operating System Concepts – 9th Edition 3.33 Silberschatz, Galvin and Gagne ©2013
Question

■ Apa yang terjadi jika parent process tidak memanggil fungsi


wait() ?
■ Apa yang terjadi jika parent process mati sebelum child
process mati?
■ GNOME System Monitor

Operating System Concepts – 9th Edition 3.34 Silberschatz, Galvin and Gagne ©2013
Multiprocess Architecture – Chrome Browser

■ Jalankan chrome. Cek ada berapa process chrome?


■ Buka beberapa tab dan akses website. Ada berapa
tambahan process??

Operating System Concepts – 9th Edition 3.35 Silberschatz, Galvin and Gagne ©2013
Inter Process Communication (IPC)

Operating System Concepts – 9th Edition 3.36 Silberschatz, Galvin and Gagne ©2013
Interprocess Communication
■ Processes within a system may be independent or cooperating
■ Cooperating process can affect or be affected by other processes, including sharing
data
■ Reasons for cooperating processes:
● Information sharing
● Computation speedup
● Modularity
● Convenience
■ Cooperating processes need interprocess communication (IPC)
■ Two models of IPC
● Shared memory
● Message passing

Operating System Concepts – 9th Edition 3.37 Silberschatz, Galvin and Gagne ©2013
Communications Models

process A process A

process B shared memory

process B

message queue
m0 m1 m2 m3 ... mn
kernel
kernel

(a) (b)

Operating System Concepts – 9th Edition 3.38 Silberschatz, Galvin and Gagne ©2013
Cooperating Processes

■ Independent process cannot affect or be affected by the


execution of another process
■ Cooperating process can affect or be affected by the execution
of another process
■ Advantages of process cooperation
● Information sharing
● Computation speed-up
● Modularity
● Convenience

Operating System Concepts – 9th Edition 3.39 Silberschatz, Galvin and Gagne ©2013
Producer-Consumer Problem

■ Paradigm for cooperating processes, producer process


produces information that is consumed by a consumer
process
● unbounded-buffer places no practical limit on the
size of the buffer
● bounded-buffer assumes that there is a fixed buffer
size

Operating System Concepts – 9th Edition 3.40 Silberschatz, Galvin and Gagne ©2013
Bounded-Buffer – Shared-Memory Solution

■ Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;

item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;

■ Solution is correct, but can only use BUFFER_SIZE-1


elements
Operating System Concepts – 9th Edition 3.41 Silberschatz, Galvin and Gagne ©2013
Bounded-Buffer – Producer

item next_produced;
while (true) {
/* produce an item in next produced */
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
}

Operating System Concepts – 9th Edition 3.42 Silberschatz, Galvin and Gagne ©2013
Bounded Buffer – Consumer

item next_consumed;
while (true) {
while (in == out)
; /* do nothing */
next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;

/* consume the item in next consumed */


}

Operating System Concepts – 9th Edition 3.43 Silberschatz, Galvin and Gagne ©2013
Interprocess Communication – Message Passing

■ Mechanism for processes to communicate and to synchronize their actions


■ Message system – processes communicate with each other without resorting to shared
variables
■ IPC facility provides two operations:
● send(message) – message size fixed or variable
● receive(message)
■ If P and Q wish to communicate, they need to:
● establish a communication link between them
● exchange messages via send/receive
■ Implementation of communication link
● physical (e.g., shared memory, hardware bus)
● logical (e.g., direct or indirect, synchronous or asynchronous, automatic or explicit
buffering)

Operating System Concepts – 9th Edition 3.44 Silberschatz, Galvin and Gagne ©2013
Direct Communication
■ Processes must name each other explicitly:
● send (P, message) – send a message to process P
● receive(Q, message) – receive a message from process Q

■ Properties of communication link


● Links are established automatically
● A link is associated with exactly one pair of communicating processes
● Between each pair there exists exactly one link
● The link may be unidirectional, but is usually bi-directional

Operating System Concepts – 9th Edition 3.45 Silberschatz, Galvin and Gagne ©2013
Indirect Communication
■ Messages are directed and received from mailboxes (also referred to as ports)
● Each mailbox has a unique id
● Processes can communicate only if they share a mailbox

■ Properties of communication link


● Link established only if processes share a common mailbox
● A link may be associated with many processes
● Each pair of processes may share several communication links
● Link may be unidirectional or bi-directional

Operating System Concepts – 9th Edition 3.46 Silberschatz, Galvin and Gagne ©2013
Indirect Communication
■ Operations
● create a new mailbox
● send and receive messages through mailbox
● destroy a mailbox

■ Primitives are defined as:


send(A, message) – send a message to mailbox A
receive(A, message) – receive a message from mailbox A

Operating System Concepts – 9th Edition 3.47 Silberschatz, Galvin and Gagne ©2013
Indirect Communication
■ Mailbox sharing
● P1, P2, and P3 share mailbox A
● P1, sends; P2 and P3 receive
● Who gets the message?

■ Solutions
● Allow a link to be associated with at most two processes
● Allow only one process at a time to execute a receive operation
● Allow the system to select arbitrarily the receiver. Sender is notified who the
receiver was.

Operating System Concepts – 9th Edition 3.48 Silberschatz, Galvin and Gagne ©2013
Synchronization
■ Message passing may be either blocking or non-blocking

■ Blocking is considered synchronous


● Blocking send has the sender block until the message is received
● Blocking receive has the receiver block until a message is available

■ Non-blocking is considered asynchronous


● Non-blocking send has the sender send the message and continue
● Non-blocking receive has the receiver receive a valid message or
null
}

Operating System Concepts – 9th Edition 3.49 Silberschatz, Galvin and Gagne ©2013
Synchronization (Cont.)

■ Different combinations possible


● If both send and receive are blocking, we have a
rendezvous
■ Producer-consumer becomes trivial

message next_produced;

while (true) {
message next_consumed;
/* produce an item in next produced */
while (true) {
send(next_produced);
receive(next_consumed);
}
/* consume the item in next consumed */
}

Operating System Concepts – 9th Edition 3.50 Silberschatz, Galvin and Gagne ©2013
Buffering

■ Queue of messages attached to the link; implemented in one of


three ways
1. Zero capacity – 0 messages
Sender must wait for receiver (rendezvous)
2. Bounded capacity – finite length of n messages
Sender must wait if link full
3. Unbounded capacity – infinite length
Sender never waits

Operating System Concepts – 9th Edition 3.51 Silberschatz, Galvin and Gagne ©2013
Examples of IPC Systems - POSIX
■ POSIX Shared Memory
● Process first creates shared memory segment
shm_fd = shm_open(name, O CREAT | O RDWR, 0666);
● Also used to open an existing segment to share it
● Set the size of the object
ftruncate(shm fd, 4096);
● Now the process could write to the shared memory
sprintf(shared memory, "Writing to shared memory");

Operating System Concepts – 9th Edition 3.52 Silberschatz, Galvin and Gagne ©2013
IPC POSIX Producer

Operating System Concepts – 9th Edition 3.53 Silberschatz, Galvin and Gagne ©2013
IPC POSIX Consumer

Operating System Concepts – 9th Edition 3.54 Silberschatz, Galvin and Gagne ©2013
Communications in Client-Server Systems

Operating System Concepts – 9th Edition 3.55 Silberschatz, Galvin and Gagne ©2013
Communications in Client-Server Systems

■ Sockets

■ Remote Procedure Calls

■ Pipes

■ Remote Method Invocation (Java)

Operating System Concepts – 9th Edition 3.56 Silberschatz, Galvin and Gagne ©2013
Sockets
■ A socket is defined as an endpoint for communication

■ Concatenation of IP address and port – a number included at start of message


packet to differentiate network services on a host

■ The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8

■ Communication consists between a pair of sockets

■ All ports below 1024 are well known, used for standard services

■ Special IP address 127.0.0.1 (loopback) to refer to system on which process is


running

Operating System Concepts – 9th Edition 3.57 Silberschatz, Galvin and Gagne ©2013
Socket Communication

Operating System Concepts – 9th Edition 3.58 Silberschatz, Galvin and Gagne ©2013
Sockets in Java

■ Three types of sockets


● Connection-oriented
(TCP)
● Connectionless (UDP)
● MulticastSocket class–
data can be sent to
multiple recipients

■ Consider this “Date”


server:

Operating System Concepts – 9th Edition 3.59 Silberschatz, Galvin and Gagne ©2013
Pipes
■ Acts as a conduit allowing two processes to communicate

■ Issues
● Is communication unidirectional or bidirectional?
● In the case of two-way communication, is it half or full-duplex?
● Must there exist a relationship (i.e. parent-child) between the
communicating processes?
● Can the pipes be used over a network?

Operating System Concepts – 9th Edition 3.60 Silberschatz, Galvin and Gagne ©2013
Ordinary Pipes

■ Ordinary Pipes allow communication in standard producer-


consumer style

■ Producer writes to one end (the write-end of the pipe)

■ Consumer reads from the other end (the read-end of the pipe)

■ Ordinary pipes are therefore unidirectional

■ Require parent-child relationship between communicating


processes

Operating System Concepts – 9th Edition 3.61 Silberschatz, Galvin and Gagne ©2013
Named Pipes

■ Named Pipes are more powerful than ordinary pipes

■ Communication is bidirectional

■ No parent-child relationship is necessary between the communicating


processes

■ Several processes can use the named pipe for communication

■ Provided on both UNIX and Windows systems

Operating System Concepts – 9th Edition 3.62 Silberschatz, Galvin and Gagne ©2013
Pipe vs Socket
■ Both pipes and sockets handle byte streams, but they do it in different ways.
● Pipes only exist within a specific host, and they refer to buffering between virtual files, or
connecting the output / input of processes within that host. There are no concepts of
packets within pipes.
● Sockets packetize communication using IPv4 or IPv6; that communication can extend
beyond localhost.
● Socket allows more than two processes communicating
■ Usage:
● Use pipes:
✔ when you want to read / write data as a file within a specific server. If you're using C,
you read() and write() to a pipe.
✔ when you want to connect the output of one process to the input of another
process... see popen()
● Use sockets to send data between different IPv4 / IPv6 endpoints. Very often, this
happens between different hosts, but sockets could be used within the same host

Operating System Concepts – 9th Edition 3.63 Silberschatz, Galvin and Gagne ©2013
Question

Apa perbedaan pipe dan socket?

Operating System Concepts – 9th Edition 3.64 Silberschatz, Galvin and Gagne ©2013
Remote Procedure Calls
■ Remote procedure call (RPC) abstracts procedure calls between processes on networked systems
● Again uses ports for service differentiation
■ Stubs – client-side proxy for the actual procedure on the server
■ The client-side stub locates the server and marshalls the parameters
■ The server-side stub receives this message, unpacks the marshalled parameters, and performs the
procedure on the server
■ On Windows, stub code compile from specification written in Microsoft Interface Definition Language
(MIDL)
■ Data representation handled via External Data Representation (XDL) format to account for different
architectures
● Big-endian and little-endian
■ Remote communication has more failure scenarios than local
● Messages can be delivered exactly once rather than at most once
■ OS typically provides a rendezvous (or matchmaker) service to connect client and server

Operating System Concepts – 9th Edition 3.65 Silberschatz, Galvin and Gagne ©2013
Execution of RPC

Operating System Concepts – 9th Edition 3.66 Silberschatz, Galvin and Gagne ©2013
End of Chapter 3

Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013

Anda mungkin juga menyukai