Kamis, 15 Maret 2012

Manajemen Proses

Manajemen Proses
1. Konsep Proses
a. Definisi Proses
Proses adalah sebuah program yang sedang dieksekusi. Sedangkan program adalah kumpulan instruksi yang ditulis ke dalam bahasa yang dimengerti sistem operasi. Sebuah proses membutuhkan sejumlah sumber daya untuk menyelesaikan tugasnya. Sumber daya tersebut dapat berupa CPU time, alamat memori, berkas-berkas, dan perangkat-perangkat I/O. Sistem operasi mengalokasikan sumber daya-sumber daya tersebut saat proses itu diciptakan atau sedang diproses/dijalankan. Ketika proses tersebut berhenti dijalankan, sistem operasi akan mengambil kembali semua sumber daya agar bisa digunakan kembali oleh proses lainnya.


b. Status Proses
Sebuah proses dapat memiliki tiga status utama yaitu:
1. Running. Status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi
2. Waiting. Status yang dimiliki pada saat proses menunggu suatu sebuah event seperti proses I/O.
3. Ready. Status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor
Terdapat dua status tambahan, yaitu saat pembentukan dan terminasi:
1. New. Status yang dimiliki pada saat proses baru saja dibuat
2. Terminated. Status yang dimiliki pada saat proses telah selesai dieksekusi.
Hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus Ready atau Waiting. Ada tiga kemungkinan bila sebuah proses memiliki status Running:
1. Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
2. Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
3. Jika suatu event terjadi pada saat proses dieksekusi (seperti ada permintaan M/K) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.
c. Process Control Block (PCB)
Setiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) – juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam Gambar 10.2, Process Control Block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesifik, termasuk hal-hal di bawah ini:
1. Status Proses. Status new, ready, running, waiting, halted, dan juga banyak lagi.
2. Program Counter . Suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
3. CPU register. Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya (lihat Gambar 10.3, Status Proses).
4. Informasi manajemen memori. Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi (lihat Bagian V, Memori).
5. Informasi pencatatan. Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun, jumlah job atau proses, dan banyak lagi.
6. Informasi status M/K. Informasi termasuk daftar dari perangkat M/K yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.
2. Konsep Penjadwalan
a. Scheduling Queue
Scheduling Queue dapat diklasifikasikan dalam 3 kategori :
1. Job Queue
• Antrian berisi semua proses yang masuk dalam sistem
2. Ready Queue
• Proses yang berada pada memori utama, siap dan menunggu untuk dieksekusi
3. Device Queue
• Deretan proses yang sedang menunggu peralatan I/O
• Tiap peralatan I/O memiliki device queue
 Setiap antrian disimpan sebagai linked list dan berisi pointer awal dan akhir PCB.
 Tiap PCB memiliki suatu pointer menunjuk ke proses selanjutnya pada antrian.
 Proses baru mula-mula diletakkan di ready queue dan menunggu sampai dipilih untuk dieksekusi (dispatched) CPU.
Ketika proses dialokasikan CPU dan dieksekusi, terjadi satu dari event berikut :
• Proses meminta I/O dan kemudian ditempatkan pada I/O queue
• Proses membuat sub proses baru dan menunggu diterminasi
• Proses dihapus dari CPU karena diinterrupt dan dikembalikan ke ready queue
b. Schedulers
Sistem operasi harus memilih dan memproses antrian-antrian berdasarkan kategorinya, dimana proses seleksinya dilakukan oleh scheduler yang tepat.
Ada 3 tipe Scheduler :
– Long Term Scheduler (Job Scheduler)
– Short Term Scheduler (CPU Scheduler)
– Medium Term Scheduler
• Long Term Scheduler (Job Scheduler)
– Menyeleksi proses-proses mana yang harus dimasukkan ke dalam ready queue dan membawanya ke memori untuk dieksekusi
– Long Term Scheduler mengeksekusi lebih jarang, dibutuhkan beberapa menit untuk pembuatan proses baru dalam sistem
– Long Term Scheduler à mengontrol jumlah proses dalam memori (degree of multiprogramming)
– Jika degree of multiprogramming stabil à tingkat rata-rata penciptaan proses harus sama dengan tingkat rata-rata proses meninggalkan sistem
• Short Term Scheduler (CPU Scheduler)
– Menentukan proses mana yang selanjutnya akan dieksekusi dan mengalokasikan CPU untuk proses tersebut, dimana pemilihan proses barunya dialokasikan sesering mungkin
– Sort Term Scheduler à lebih sering dipanggil (hanya dalam waktu milisecond)
– Karena durasi yang pendek antara eksekusi, short Term Scheduler harus sangat cepat
c. Context Switch
Mengganti CPU ke proses lain memerlukan penyimpanan keadaan dari proses lama dan mengambilkeadaan dari proses yang baru. Hal ini dikenal dengan sebutan context switch. Context switch sebuah proses direpresentasikan dalam PCB dari suatu proses; termasuk nilai dari CPU register,status proses dan informasi manajemen memori.
Ketika context switch terjadi, kernel menyimpan data dari proses lama ke dalam PCB nya dan mengambil data dari proses baru yang telah terjadwal untuk berjalan. Waktu context switch adalah murni overhead , karena sistem melakukan pekerjaan yang tidak begitu berarti selama melakukan pengalihan. Kecepatannya bervariasi dari mesin ke mesin, bergantung pada kecepatan memori,jumlah register yang harus di-copy, dan ada tidaknya instruksi khusus (seperti instruksi tunggaluntuk mengisi atau menyimpan seluruh register). Tingkat kecepatan umumnya berkisar antara 1 sampai 1000 mikro detik.
CPU, dalam mengganti dari sebuah proses ke proses lain memerlukan penyimpanan keadaan dariproses lama dan mengambil keadaan dari proses yang baru. Inilah yang dikenal dengan sebutan context switch.
Dalam context switch sebuah proses direpresentasikan dalam PCB dari suatu proses, termasuk nilai dari CPU register, status proses dan informasi manajemen memori. Ketika context switch terjadi,kernel menyimpan data dari proses lama ke dalam PCB nya dan mengambil data dari proses baruyang telah terjadwal untuk berjalan. Waktu context switch adalah murni overhead (sangat cepat),karena sistem melakukan pekerjaan yang tidak begitu berarti selama melakukan pengalihan.
Sebagai contoh, prosesor seperti UltraSPARC menyediakan beberapa set register. Sebuah prosescontext switch hanya memasukkan perubahan pointer ke set register yang ada saat itu. Tentu saja,jika proses aktif yang ada lebih banyak daripada proses yang ada pada set register, sistem menggunakan bantuan untuk meng-copy data register dari dan ke memori, sebagaimana sebelumnya. Semakin kompleks suatu sistem operasi, semakin banyak pekerjaan yang harus dilakukan selama context switch.
Dapat dilihat pada Bagian V, Memori, teknik manajemen memori tingkat lanjut dapat mensyaratkan data tambahan untuk diganti dengan tiap data. Sebagai contoh, ruang alamat dari proses yang ada saat itu harus dijaga sebagai ruang alamat untuk proses yang akan dikerjakan berikutnya. Bagaimana ruang alamat dijaga, berapa banyak pekerjaan dibutuhkan untuk menjaganya, tergantung pada metoda manajemen memori dari sistem operasi. Akan kita lihat pada Bagian V, Memori, context switch terkadang dapat menyebabkan bottleneck, dan programer menggunakan struktur baru(threads) untuk menghindarinya kapan pun memungkinkan
3. Operasi pada proses
a. Pembuatan Proses
Pembuatan proses (create process) yaitu tindakan yang dilakukan sistem operasi pada saat sebuah proses akan ditambahkan ke proses yang sedang dikelola, sistem operasi membuat struktur data yang digunakan untuk mengelola proses dan mengalokasikan ruang alamat ke proses itu.
Alur Pembuatan Proses adalah sebagai berikut:
• Memberi identitas (nama) pada proses yang dibuat
• Menyisipkan proses pada list proses atau tabel proses
• Menentukan prioritas awal proses
• Membuat PCB
• Mengalokasikan resource awal bagi proses tersebut.
Create process atau pembuatan proses dilakukan karena alasan-alasan sebagai berikut :
• Batch Job Baru. Sistem Operasi diberikan dengan suatu aliran batch job control, biasanya pada pita atau disk. Pada saat disiapkan untuk mengambil job yang baru, sisitem operasi akan membaca rangkain job control command berikutnya.
• Logon interaktif. Seorang pengguna di sebuah terminal masuk kesistem
• Dibuat oleh OS untuk menyediakan layanan. Sistem operasi dapat membuat suatu proses untuk melakukan fungsi atas naa program pengguna, tanpa mengharuskan pengguna menunggu (misalnya, pencetakan)
• Dibiakan (spawned) oleh proses yang telah ada.Untuk memenuhi tujuan modularitas atau untuk memanfaatkan paralelisme, sebuah program pengguna dapat mengatur pembiakan sejumlah proses
b. Penghentian Proses
Penghentian proses (destroyed process) yaitu tindakan yang dilakukan sistem operasi pada saat sebuah proses telah selesai dilakukan atau dihentikan, sistem operasi menghapus struktur data yang digunakan untuk mengelola proses dan mengalokasikan ruang alamat ke proses itu.
Suatu proses diterminasi ketika proses tersebut telah selesai mengeksekusi perintah terakhir atau diterminasi dengan sengaja oleh proses lain, biasanya proses induk yang melakukan hal ini. Pada saat terminasi. Semua sumber-daya yang digunakan oleh proses akan dialokasikan kembali oleh sistem operasi agar dapat dimanfaatkan oleh proses lain. Suatu proses yang diterminasi karena selesai melakukan tugasnya, sistem operasi akan memanggil system call exit() sedangkan proses yang diterminasi dengan sengaja oleh proses lain melalui system call abort. Biasanya proses induk melakukan terminasi sengaja pada turunannya. Alasan terminasi yang dilakukan proses induk tersebut seperti:
• Turunan melampaui penggunaan sumber-daya yang telah dialokasikan. Dalam keadaan ini, proses induk perlu mempunyai mekanisme untuk memeriksa status turunannya-nya.
• Task yang ditugaskan kepada turunan tidak lagi diperlukan.
• Proses induk selesai, dan sistem operasi tidak mengizinkan proses turunan untuk tetap berjalan. Jadi, semua proses turunan akan berakhir pula. Hal ini yang disebut cascading termination.
Alur Penghentian Proses adalah sebagai berikut:
• Suatu proses berhenti jika telah menyelesaikan pernyataan terakhir, dan meminta pada sistem operasi untuk menghapusnya dengan menggunakan system call exit.
• Proses mengembalikan semua data (output) ke parent proses melalui system call wait.
• Kemudian proses dihapus dari list atau tabel sistem, dilanjutkan dengan menghapus PCB.
Secara umum, Destroyed Process dilakukan karena alasan-alasan sebagai berikut.
• Selesai secara normal. Proses mengeksekusi suatu panggilan layanan OS untuk mengindikasikan bahwa proses tersebut telah selesai beroperasi
• Batas waktu telah dilampaui. Proses telah berjalan lebih lama dari jumlah batas waktu yang telah ditentukan. Terdapat beberapa kemungkinan jenis waktu yang diukur. Jenis-jenis tersebut meliputi jumlah waktu yang berjalan (waktu jam dinding), jumlah waktu yang dibutuhkan untuk melakukan eksekusi, dan pada proses yang interaktif, jumlah waktu sejak pengguna terakhir diberi input
• Memori tidak tersedia. Proses memerlukan memori lebih banyak dari yang dapat disediakan oleh sistem
• Pelanggaran batas. Proses mencoba menakses lokasi memori yang tidak diijinkan untuk diases
• Error proteksi. Proses mencoba menggunakan sumber daya atau file yang tidak diizinkan untuk digunakan, atau mencoba menggunakannya dengan cara yang salah, seperti melakukan penulisan ke file yang hanya dapat dibaca (read-only file)
• Error aritmetik. Proses mencoba untuk melakukan komputasi yang tidak diizinkan, seperti pembagian dengan nol, atau mencoba menyimpan bilangan yang besarnya diluar kemampuan perangkat keras. Kelebihan waktu proses telah menunggu event tertentu lebih lama dari waktu maksimum
• Kegagalan I/O. Error yang terjadi pada saat input atau output, seperti ketidakmampuan untuk menemukan file, kegagalan membaca atau menulis setelah beberapa kali mencoba (pada saat misalnya menemukan daerah yang telah rusak pada pita magnetik) atau operasi yang invalid (misalnya melakukan pembacaan dari printer)
• Intruksi yang invalid. Proses mencoba mengeksekusi intruksi yang tidak ada (seringkali akan mengakibatkan pencabangan ke suatu daerah data dan berusaha mengeksekusi data)
• Intruksi ber-privilage. Proses berusaha untuk menggunakan suatu intruksi yang dicadangkan bagi sistem operasi
• Pemakaian data yang salah. Potongan datanya memiliki jenis yang salah, atau tidak diinisilaisasi terlebih dahulu
• Intervensi Operator atau OS. Dengan sesuatu alasan, operator atau sistem operasi telah menghentikan proses (misalnya, telah terjadi deadlock)
• Penghentian Induk. Apabila induk berhenti, sistem operasi secara otomatis dapat menghentikan seluruh turunan proses induk itu
• Permintaan induk. Proses induk umumnya memiliki otoritas untuk menghentikan semua turunannya
4. Proses yang Saling Bekerjasama (Cooperating Process)
Proses yang bersifat simultan (concurrent) dijalankan pada sistem operasi dapat dibedakaan menjadi yaitu proses independent dan proses kooperatif. Suatu proses dikatakan independen apabila proses tersebut tidak dapat terpengaruh atau dipengaruhi oleh proses lain yang sedang dijalankan pada sistem. Berarti, semua proses yang tidak membagi data apa pun (baik sementara/ tetap) dengan proses lain adalah independent. Sedangkan proses kooperatif adalah proses yang dapat dipengaruhi atau pun terpengaruhi oleh proses lain yang sedang dijalankan dalam sistem. Dengan kata lain, proses dikatakan
kooperatif bila proses dapat membagi datanya dengan proses lain. Ada empat alasan untuk penyediaan sebuah lingkungan yang memperbolehkan terjadinya proses kooperatif:
1. Pembagian informasi: apabila beberapa pengguna dapat tertarik pada bagian informasi yang sama (sebagai contoh, sebuah berkas bersama), kita harus menyediakan sebuah lingkungan yang mengizinkan akses secara terus menerus ke tipe dari sumber-sumber tersebut.
2. Kecepatan penghitungan/ komputasi: jika kita menginginkan sebuah tugas khusus untuk menjalankan lebih cepat, kita harus membagi hal tersebut ke dalam subtask, setiap bagian dari subtask akan dijalankan secara parallel dengan yang lainnya. Peningkatan kecepatan dapat dilakukan hanya jika komputer tersebut memiliki elemen-elemen pemrosesan ganda (seperti CPU atau jalur I/O).
3. Modularitas: kita mungkin ingin untuk membangun sebuah sistem pada sebuah model modular-modular, membagi fungsi sistem menjadi beberapa proses atau threads.
4. Kenyamanan: bahkan seorang pengguna individu mungkin memiliki banyak tugas untuk dikerjakan secara bersamaan pada satu waktu. Sebagai contoh, seorang pengguna dapat mengedit, memcetak, dan meng-compile secara paralel.
5. Threads
Thread merupakan suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun adakalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process (LWP). Thread akan bekerjasama dengan thread yang lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task. Apabila dilakukan perbandingaan antara sistem multi thread dengan sistem multi proses dapat disimak berikut.
Pada multi proses, setiap proses secara terpisah melakukan operasi tidak bekerja sama dengan proses lain, setiap proses mempunyai program counter, stack register dan ruang alamat sendiri. Organisasi jenis ini berguna jika job dibentuk oleh proses-proses yang tidak saling berhubungan. Multi proses membentuk task yang sama. Sebagai contoh, multi proses dapat menyediakan data untuk mesin secara remote pada implementasi system file jaringan. Hal ini lebih efisien apabila satu proses terdiri dari multi thread melayani tugas yang sama. Pada implementasi multi proses, setiap proses mengeksekusi kode yang sama tetapi mempunyai memori dan resource file sendiri. Satu proses multi thread menggunakan resource lebih sedikit daripada multi proses, termasuk memory, open file dan penjadwalan CPU.
Ada 3 model process pada server :
1. thread di ciptakan untuk dapat melakukan paralelisme yang dikombinasikan dengan eksekusi sekuensial dan blocking system calls.
2. single treads server, menggunakan blocking system calls, tetapi kinerja sistem tidak baik.
3. finite-state machine, kinerja baik dengan melakukan parallelisme, tetapi menggunakan nonblocking calls, sehingga sulit dalam memprogram.
6. Komunikasi Antar Proses
Sistem Berbagi Memori
Sistem Berbagi Memori atau yang disebut juga sebagai Shared Memory System merupakan salah satu cara komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga pekerjaan dapat dilakukan secara efektif.
Sistem Berkirim Pesan
Sistem berkirim pesan adalah proses komunikasi antar bagian sistem untuk membagi variabel yang dibutuhkan. Proses ini menyediakan dua operasi yaitu mengirim pesan dan menerima pesan. Ketika dua bagian sistem ingin berkomunikasi satu sama lain, yang harus dilakukan pertama kali adalah membuat sebuah link komunikasi antara keduanya. Setelah itu, kedua bagian itu dapat saling bertukar pesan melalui link komunikasi tersebut.
Sistem berkirim pesan sangat penting dalam sistem operasi. Karena dapat diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian sistem operasi.
Terdapat dua macam cara berkomunikasi, yaitu:
1. Komunikasi langsung. Dalam komunikasi langsung, setiap proses yang ingin berkirim pesan harus mengetahui secara jelas dengan siapa mereka berkirim pesan. Hal ini dapat mencegah pesan salah terkirim ke proses yang lain. Karakteristiknya antara lain:
a. Link dapat otomatis dibuat
b. Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan
c. Diantara pasangan itu terdapat tepat satu link
d. Link tersebut biasanya merupakan link komunikasi dua arah
2. Komunikasi tidak langsung. Berbeda dengan komunikasi langsung, jenis komunikasi ini menggunakan sejenis kotak surat atau port yang mempunyai ID unik untuk menerima pesan. Proses dapat berhubungan satu sama lain jika mereka membagi port mereka. Karakteristik komunikasi ini antara lain:
a. Link hanya terbentuk jika beberapa proses membagi kotak surat mereka
b. Sebuah link dapat terhubung dengan banyak proses
c. Setiap pasang proses dapat membagi beberapa link komunikasi
d. Link yang ada dapat merupakan link terarah ataupun link yang tidak terarah
7. Buffering
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
o Kapasitas nol: antrian mempunyai panjang maksimum 0, maka link tidak dapat mempunyai penungguan pesan (message waiting). Dalam kasus ini, pengirim harus memblok sampai penerima menerima pesan.
o Kapasitas terbatas: antrian mempunyai panjang yang telah ditentukan, paling banyak n pesan dapat dimasukkan. Jika antrian tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa, dan pengirim pengirim dapat melanjutkan eksekusi tanpa menunggu. Link mempunyai kapasitas terbatas. Jika link penuh, pengirim harus memblok sampai terdapat ruang pada antrian.
o Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
8. Kondisi-kondisi Perkecualian
a. Proses Dihentikan
Pengirim atau penerima menghentikan komunikasi setelah pesan diproses. Hal in mengakibatkan pesan tidak pernah diterima atau proses yang menunggu pesan tersebut tidak pernah dikirim. Dalam hal ini ada 2 kasus:
 Penerima proses P menunggu suatu pesan dari proses Q yang dihentikan, jika ada aksi , maka P di block. Pada kasus ini system juga akan mengehntikan P atau memberitahu pada P bahwa Q dihentikan.
 Proses P mengirim pesan ke proses Q yang dihentikan. Pada system buffer otomatis, tidak akan terjadi apa-apa. P melanjutkan eskkusi . Jika P ingin mengetahui apakah pesannya telah di proses oleh Q, maka P harus memprogram secara eksplisit suatu pengetahuan. Jika tidak ada buffer, Pakan diblock seperti halnya kasus 1. Sistem juga akan menghentikan P atau memberitahukan pada P bahwa Q dihentikan.
b. Kehilangan Pesan
Pesan pada proses P ke proses Q bisa jadi hilang entah kemana da;am suatu jaringan komunikasi. Hal in mengakibatkan kegagalan pada hardware, Untuk mengatasi hal itu ada 3 metode, yaitu:
 Sistem oprasi mendeteksi adanya kejadian tersebut, kemudia mengrim ulang pesan yang hilang
 Proses yang mengirim pesan mendeteksi kejadian tersebut dan kemudian mentransmisikan kembali pesan tersebut jika diminta
 Sistem oprasi mendeteksi adanya kejadian tersebut dan kemudian memberitahukan kepada proses yang mengirim bahwa pesan yang disampaikan hilang di tengah jalan. Proses pengiriman dapat melakukan sesuatu sesuai yang dipilihnya
Untuk mendeteksi adanya pesan yang hilang makan digunakan Timeout. Pada saat satu pesan dikirim maka akan diberikan pesan jawaban bahwa oesab tekah dikirim. Sistem oprasi / suatu proses akan menghitung interval waktu antara jawaban dengan pesan yang diterima jika melebihi batas waktu yang telah ditentukan, maka pesan tersebut dianggap hilang dan akan dikirim kembali.
Kelemahan dari system ini adalah terkadang pesan dating sedikit terlambat dari yang diperkirakan sehingga system oprasi mungkin menggangapnya hilang dan mengakibatkan copiannya dikirim dan penerima akan mendapatkan 2 pesan yang sama.
c. Proses Terganggu
Pesan yang dikirim sebelum sampai ditujuan kadang bisa mengalami gangguan di tengah jalan, sama seperti pesan yang hilang. Jika hal in terjadi maka pesan akan dikirim kembali.

0 komentar: