DHCP (Dynamic Configuration Protocol) adalah layanan yang secara otomatis memberikan nomor IP kepada komputer yang memintanya. Komputer yang memberikan nomor IP disebut sebagai DHCP server, sedangkan komputer yang meminta nomor IP disebut sebagai DHCP Client. Dengan demikian administrator tidak perlu lagi harus memberikan nomor IP secara manual pada saat konfigurasi TCP/IP, tapi cukup dengan memberikan referensi kepada DHCP Server.
Pada saat kedua DHCP client dihidupkan , maka komputer tersebut melakukan request ke DHCP-Server untuk mendapatkan nomor IP. DHCP menjawab dengan memberikan nomor IP yang ada di database DHCP. DHCP Server setelah memberikan nomor IP, maka server meminjamkan (lease) nomor IP yang ada ke DHCP-Client dan mencoret nomor IP tersebut dari daftar pool. Nomor IP diberikan bersama dengan subnet mask dan default gateway. Jika tidak ada lagi nomor IP yang dapat diberikan, maka client tidak dapat menginisialisasi TCP/IP, dengan sendirinya tidak dapat tersambung pada jaringan tersebut. Setelah periode waktu tertentu, maka pemakaian DHCP Client tersebut dinyatakan selesaidan client tidak memperbaharui permintaan kembali, maka nomor IP tersebut dikembalikan kepada DHCP Server, dan server dapat memberikan nomor IP tersebut kepada Client yang membutuhkan. Lama periode ini dapat ditentukan dalam menit, jam, bulan atau selamanya. Jangka waktu disebut leased period.
wellcome...... aku harap ini akan berfaat bagi kalian yang sedia untuk mengunjunginya....... so thanks very much
WELLCOME TO MY WORLD
terimakasih kepada pengunjung yang bersedia mampir di blog saya........................
selamat menjelajah........
selamat menjelajah........
Kamis, 08 Juli 2010
RPC (Remote Procedure Call)
RPC (Remote Procedure Call)
Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client yang meminta proseduryang disediakan oleh server.
Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.
Java RMI
Pendekatan kedua yang akan kita perkenalkan adalah RMI (Remote Method Invocation), sebuah teknik pemanggilan method remote yang lebih bagus daripada RPC. RMI menggunakan paradigma pemrograman berorientasi objek (OOP). Dengan RMI memungkinkan memungkinkan untuk mengirim objek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat user dapat mengembakan Java Application yang terdistribusi pada jaringan
Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stub dan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).
Pembuatan Remote Objek
Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.
Akses ke Remote Objek
Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan Naming.lookup() method.RMI menyediakan url untuk pengaksesan ke remote objek yaitu rmi://host/objek, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objek adalah parameter yang kita gunakan ketika kita memanggil method Naming.rebind(). Clint juga harus menginstall RMISecurityManager untuk memastikan keaman client ketika membuka soket kejaringan.
Remote Procedure Call (RPC) adalah sebuah metoda yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk bisa melakukan ini sebuah komputer (server) harus menyediakan layanan remote prosedur. Pendekatan yang dilakuan adalah, sebuah server membuka socket, menunggu client yang meminta proseduryang disediakan oleh server.
Remote Procedure Call masih menggunakan cara primitive dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure.
Java RMI
Pendekatan kedua yang akan kita perkenalkan adalah RMI (Remote Method Invocation), sebuah teknik pemanggilan method remote yang lebih bagus daripada RPC. RMI menggunakan paradigma pemrograman berorientasi objek (OOP). Dengan RMI memungkinkan memungkinkan untuk mengirim objek sebagai parameter dari remote method. Dengan dibolehkannya program java memanggil method pada remote objek, RMI membuat user dapat mengembakan Java Application yang terdistribusi pada jaringan
Untuk membuat remote method bisa diakses RMI mengimplementasikan remote object menggukan stub dan skleton. Stub bertindak sebagai proxy disisi client, yaitu yang menghubungkan client dengan skleton yang berada disisi server. Stub yang ada disisi client bertanggung jawab untuk membungkus nama method yang akan diakses, dan parameternya, hal ini biasa dikenal dengan marshalling. Stub mengirim paket yang sudah dibungkus ini ke server dan akan di buka (unmarshalling) oleh skleton. Skleton akan menerima hasil keluaran yang telah diproses oleh method yang dituju, lalu akan kembali dibungkus (marshal) dan dikirim kembali ke client yang akan diterima oleh stub dan kembali dibuka paketnya (unmarshall).
Pembuatan Remote Objek
Untuk membuat remote objek kita harus mendefinisikan semua method yang akan kita sediakan pada jaringan, setelah itu dapat digunakan RMI compiler untuk membuat stub dan skleton. Setelah itu kita harus mem-binding remote objek yang kita sediakan kedalam sebuah RMI registry. Setelah itu client dapat mengakses semua remote method yang telah kita sediakan menggunkan stub yang telah dicompile menggunakan RMI compiler terebut.
Akses ke Remote Objek
Sekali objek didaftarkan ke server, client dapat mengakses remote object dengan menjalankan Naming.lookup() method.RMI menyediakan url untuk pengaksesan ke remote objek yaitu rmi://host/objek, dimana host adalah nama server tempat kita mendaftarkan remote objek dan objek adalah parameter yang kita gunakan ketika kita memanggil method Naming.rebind(). Clint juga harus menginstall RMISecurityManager untuk memastikan keaman client ketika membuka soket kejaringan.
Client/Server System
Dengan makin berkembangnya teknologi jaringan komputer, sekarang ini ada kecenderungan sebuah sistem yang bekerja sama menggunakan jaringan. Dalam topik ini akan kita bahas beberapa metoda komunikasi antar proses yang melibatkan jaringan komputer.
Socket
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socket digunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.
Server dan Thread
Pada umumnya sebuah server melayani client secara konkurn , oleh sebab itu dibutuhkan thread yang masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada koneksi dari client yang diterima (accept)
Java Socket
Java menyediakan dua buah tipe socket yang berbeda. Connection-oriented (TCP) socket yang diimplentasikan oleh class java.net.Socket dan Connectionless (UDP) socket yang diimplementasikan oleh class java.lang.DatagramSocket, tipe yang ketiga adalah MulticastSocket yang merupakan perluasana (extended) dari class DatagramSocket, class ini memungkinkan kita memberikan respon ke banyak client sekaligus
Socket
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan. Sepasang proses atau thread berkomunikasi dengan membangun sepasang socket, yang masing-masing proses memilikinya. Socket dibuat dengan menyambungkan dua buah IP Address melalui port tertentu. Secara umum socket digunakan dalam client/server system, dimana sebuah server akan menunggu client pada port tertentu. Begitu ada client yang mengkontak server maka server akan menyetujui komunikasi dengan client melalui socket yang dibangun.
Server dan Thread
Pada umumnya sebuah server melayani client secara konkurn , oleh sebab itu dibutuhkan thread yang masing-masing thread melayani clientnya masing-masing. Jadi server akan membentuk thread baru begitu ada koneksi dari client yang diterima (accept)
Java Socket
Java menyediakan dua buah tipe socket yang berbeda. Connection-oriented (TCP) socket yang diimplentasikan oleh class java.net.Socket dan Connectionless (UDP) socket yang diimplementasikan oleh class java.lang.DatagramSocket, tipe yang ketiga adalah MulticastSocket yang merupakan perluasana (extended) dari class DatagramSocket, class ini memungkinkan kita memberikan respon ke banyak client sekaligus
Buffering
Baik komunikasi itu langsung atau tak langsung, penukaran pesan oleh proses memerlukan antrian sementara. Pada dasarnya, terdapat tiga jalan dimana antrian tersebut diimplementasikan:
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.
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.
Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
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.
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.
Kapasitas tak terbatas: antrian mempunyai panjang yang tak terhingga, maka, semua pesan dapat menunggu disini. Pengirim tidak akan pernah di blok.
SINKRONISASI
Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (blocking) atau tidak dapat dibloking (nonblocking) – juga dikenal dengan nama sinkron atau asinkron.
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
LATAR BELAKANG TERJADINYA SINKRONISASI :
Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten.
Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.
Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir.
Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan.
Sebagai contohnya adalah Kasus Produsen-Konsumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki m buah produsen dan n buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer. Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang pada buffer dan membangunkan (wake up) consumer.
Pendekatan seperti ini terdengar cukup sederhana, tetapi hal ini dapat menggiring kita ke jenis masalah yang sama seperti race condition dengan spooler direktori.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan menaikkan nilai count.
Sekarang mari kita kembali ke permasalahan race condition. Ini dapat terjadi karena akses ke count tidak dipaksakan. Situasi seperti itu mungkin dapat terjadi. Buffer sedang kosong dan konsumen baru saja membaca count untuk melihat apakah count bernilai 0. Pada saat itu, penjadual memutuskan untuk mengentikan proses konsumen sementara dan menjalakan produsen. Produsen memasukkan barang ke buffer, menaikkan nilai count, dan memberitahukan bahwa count sekarang bernilai 1. Pemikiran bahwa count baru saja bernilai 0 sehingga konsumen harus istirahat (sleep). Produsen memanggil fungsi wake up untuk membangkitkan konsumen.
Sayangnya, konsumen secara logika belum istirahat. Jadi sinyal untuk membangkitkan konsumen, tidak dapat ditangkap oleh konsumen. Ketika konsumen bekerja berikutnya, konsumen akan memeriksa nilai count yang dibaca sebelumnya, dan mendapatkan nilai 0, kemudian konsumen istirahat (sleep) lagi. Cepat atau lambat produsen akan mengisi buffer dan juga pergi istirahat (sleep). Keduanya akan istirahat selamanya.
Inti permasalahannya disini adalah pesan untuk membangkitkan sebuah proses tidak tersampaikan. Jika pesan/ sinyal ini tersampaikan dengan baik, segalanya akan berjalan lancar
i.Race Condition
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi seperti ini diperlihatkan oleh gambar di bawah ini:
Dalam Murphy's Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang bau saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.
b.Critical Section
Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
Exit Section: akhir dari critical section, mengizinkan proses lain
Remainder Section: kode istirahat setelah masuk ke critical section
Critical section harus melakukan ketiga aturan berikut:
Solusi yang diberikan harus memuaskan permintaaan berikut:
Mutual exclution
Deadlock free
Starvation free
Pendekatan yang mungkin untuk solusi proses sinkronisasi
Solusi Piranti lunak (Software solution)
Tanpa Sinkronisasi.
Dengan Sinkronisasi.
Low-level primitives: semaphore
High-level primitives: monitors
Solusi Piranti Keras (Hardware solution)
Pengiriman yang diblok: Proses pengiriman di blok sampai pesan diterima oleh proses penerima (receiving process) atau oleh mailbox.
Pengiriman yang tidak diblok: Proses pengiriman pesan dan mengkalkulasi operasi.
Penerimaan yang diblok: Penerima mem blok samapai pesan tersedia.
Penerimaan yang tidak diblok: Penerima mengembalikan pesan valid atau null.
LATAR BELAKANG TERJADINYA SINKRONISASI :
Akses-akses yang dilakukan secara bersama-sama ke data yang sama, dapat menyebabkan data menjadi tidak konsisten.
Untuk menjaga agar data tetap konsisten, dibutuhkan mekanisme-mekanisme untuk memastikan pemintaan ekseskusi dari proses yang bekerja.
Race Condition: Situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Nilai terakhir dari data bergantung dari proses mana yang selesai terakhir.
Untuk menghindari Race Condition, proses-proses secara bersamaan harus disinkronisasikan.
Sebagai contohnya adalah Kasus Produsen-Konsumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki m buah produsen dan n buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer. Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang pada buffer dan membangunkan (wake up) consumer.
Pendekatan seperti ini terdengar cukup sederhana, tetapi hal ini dapat menggiring kita ke jenis masalah yang sama seperti race condition dengan spooler direktori.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan menaikkan nilai count.
Sekarang mari kita kembali ke permasalahan race condition. Ini dapat terjadi karena akses ke count tidak dipaksakan. Situasi seperti itu mungkin dapat terjadi. Buffer sedang kosong dan konsumen baru saja membaca count untuk melihat apakah count bernilai 0. Pada saat itu, penjadual memutuskan untuk mengentikan proses konsumen sementara dan menjalakan produsen. Produsen memasukkan barang ke buffer, menaikkan nilai count, dan memberitahukan bahwa count sekarang bernilai 1. Pemikiran bahwa count baru saja bernilai 0 sehingga konsumen harus istirahat (sleep). Produsen memanggil fungsi wake up untuk membangkitkan konsumen.
Sayangnya, konsumen secara logika belum istirahat. Jadi sinyal untuk membangkitkan konsumen, tidak dapat ditangkap oleh konsumen. Ketika konsumen bekerja berikutnya, konsumen akan memeriksa nilai count yang dibaca sebelumnya, dan mendapatkan nilai 0, kemudian konsumen istirahat (sleep) lagi. Cepat atau lambat produsen akan mengisi buffer dan juga pergi istirahat (sleep). Keduanya akan istirahat selamanya.
Inti permasalahannya disini adalah pesan untuk membangkitkan sebuah proses tidak tersampaikan. Jika pesan/ sinyal ini tersampaikan dengan baik, segalanya akan berjalan lancar
i.Race Condition
Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Unutk mencegah race condition, proses-proses yang berjalan besamaan haus di disinkronisasi.
Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.
Bayangkan bahwa spooler direktori memiliki slot dengan jumlah yang sangat besar, diberi nomor 0, 1, 2, 3, 4,... masing-masing dapat memuat sebuah nama berkas. Juga bayangkan bahwa ada dua variabel bersama, out, penunjuk berkas berikutnya untuk dicetak, dan in, menunjuk slot kosong di direktori. Dua vaiabel tersebut dapat menamgami sebuah two-word berkas untuk semua proses. Dengan segera, slot 0, 1, 2, 3 kosong (berkas telah selesai dicetak), dan slot 4, 5, 6 sedang terisi (berisi nama dari berkas yang antre untuk dicetak). Lebih atau kurang secara besamaan, proses A dan B, mereka memutuskan untuk antre untuk sebuah berkas untuk dicetak. Situasi seperti ini diperlihatkan oleh gambar di bawah ini:
Dalam Murphy's Law kasus tesebut dapat terjadi. Proses A membaca in dan menyimpan nilai "7" di sebuah variabel lokal yang disebut next_free_slot. Sebuah clock interrupt terjadi dan CPU memutuskan bahwa proses A berjalan cukup lama, sehingga digantika oleh proses B. Proses B juga membaca in, dan juga mengambil nilai 7, sehingga menyimpan nama berkas di slot nomor 7 dan memperbaharui nilai in menjadi 8. Maka proses mati dan melakukan hal lain.
Akhirnya proses A berjalan lagi, dimulai dari tempat di mana proses tersebut mati. Hal ini terlihat dalam next_free_slot, ditemukan nilai 7 di sana, dan menulis nama berkas di slot nomor 7, menghapus nama berkas yang bau saja diletakkan oleh proses B. Kemudian proses A menghitung next_free_slot + 1, yang nilainya 8 dan memperbaharui nilai in menjadi 8. Direktori spooler sekarang secara internal konsisten, sehingga printer daemon tidak akan memberitahukan apa pun yang terjadi, tetapi poses B tidak akan mengambil output apa pun. Situasi seperti ini, dimana dua atau lebih proses melakukan proses reading atau writing beberapa shared data dan hasilnya bergantung pada ketepatan berjalan disebut race condition.
b.Critical Section
Bagaimana menghindari race conditions? Kunci untuk mencegah masalah ini dan di situasi yang lain yang melibatkan shared memori, shared berkas, and shared sumber daya yang lain adalah menemukan beberapa jalan untuk mencegah lebih dari satu proses untuk melakukan proses writing dan reading kepada shared data pada saat yang sama. Dengan kata lain kita memutuhkan mutual exclusion, sebuah jalan yang menjamin jika sebuah proses sedang menggunakan shared berkas, proses lain dikeluarkan dari pekerjaan yang sama. Kesulitan yang terjadi karena proses 2 mulai menggunakan variabel bersama sebelum proses 1 menyelesaikan tugasnya.
Masalah menghindari race conditions dapat juga diformulasikan secara abstrak. Bagian dari waktu, sebuah proses sedang sibuk melakukan perhitungan internal dan hal lain yang tidak menggiring ke kondisi race conditions. Bagaimana pun setiap kali sebuah proses mengakses shared memory atau shared berkas atau melakukan sesuatu yang kitis akan menggiring kepada race conditions. Bagian dari program dimana shaed memory diakses disebut Critical Section atau Critical Region.
Walau pun dapat mencegah race conditions, tapi tidak cukup untuk melakukan kerjasama antar proses secara pararel dengan baik dan efisien dalam menggunakan shared data. Kita butuh 4 kondisi agar menghasilkan solusi yang baik:
Tidak ada dua proses secara bersamaan masuk ke dalam citical section.
Tidak ada asumsi mengenai kecepatan atau jumlah cpu.
Tidak ada proses yang berjalan di luar critical secion yang dapat mengeblok proses lain.
Tidak ada proses yang menunggu selamamya untuk masuk critical section.
Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:
Entry Section: kode yang digunakan untuk masuk ke dalam critical section
Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu
Exit Section: akhir dari critical section, mengizinkan proses lain
Remainder Section: kode istirahat setelah masuk ke critical section
Critical section harus melakukan ketiga aturan berikut:
Solusi yang diberikan harus memuaskan permintaaan berikut:
Mutual exclution
Deadlock free
Starvation free
Pendekatan yang mungkin untuk solusi proses sinkronisasi
Solusi Piranti lunak (Software solution)
Tanpa Sinkronisasi.
Dengan Sinkronisasi.
Low-level primitives: semaphore
High-level primitives: monitors
Solusi Piranti Keras (Hardware solution)
Komunikasi Antar Proses
1.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.
2.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:
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:
Link dapat otomatis dibuat
Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan
Diantara pasangan itu terdapat tepat satu link
Link tersebut biasanya merupakan link komunikasi dua arah
Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai:
Send (P, message) – mengirim sebuah pesan ke proses P.
Receive (Q, message) – menerima sebuah pesan dari proses Q.
Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.
Sebuah jaringan adalah terdiri dari penggabungan dua proses.
Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:
• Send (P, message) – mengirim sebuah pesan kepada proses P.
• Receive (id, message) – menerima sebuah pesan dari semua proses. Variabel id diatur sebagai nama dari proses dengan komunikasi.
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:
Link hanya terbentuk jika beberapa proses membagi kotak surat mereka
Sebuah link dapat terhubung dengan banyak proses
Setiap pasang proses dapat membagi beberapa link komunikasi
Link yang ada dapat merupakan link terarah ataupun link yang tidak terarah
Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox (kotak surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda.
Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox.
Pengirim dan penerima dapat dijabarkan sebagai:
• Send (A, message) – mengirim pesan ke mailbox A.
• Receive (A, message) – menerima pesan dari mailbox A.
Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut:
• Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.
• Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
• Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.
Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang dikirim P1? Jawabannya tergantung dari jalur yang kita pilih:
• Mengizinkan sebuah link berasosiasi dengan paling banyak 2 proses.
• Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive operation).
• Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox).
Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada. Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:
• Membuat mailbox baru.
• Mengirim dan menerima pesan melalui mailbox.
• Menghapus mailbox.
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan selalui mailbox ini.
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.
2.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:
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:
Link dapat otomatis dibuat
Sebuah link berhubungan dengan tepat satu proses komunikasi berpasangan
Diantara pasangan itu terdapat tepat satu link
Link tersebut biasanya merupakan link komunikasi dua arah
Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini, pengiriman dan penerimaan pesan secara primitive dapat dijabarkan sebagai:
Send (P, message) – mengirim sebuah pesan ke proses P.
Receive (Q, message) – menerima sebuah pesan dari proses Q.
Sebuah jaringan komunikasi pada bahasan ini memiliki beberapa sifat, yaitu:
Sebuah jaringan yang didirikan secara otomatis diantara setiap pasang dari proses yang ingin dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin dikomunikasikan.
Sebuah jaringan adalah terdiri dari penggabungan dua proses.
Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
Pembahasan ini memperlihatkan sebuah cara simetris dalam pemberian alamat. Oleh karena itu, baik keduanya yaitu pengirim dan penerima proses harus memberi nama bagi yang lain untuk berkomunikasi, hanya pengirim yang memberikan nama bagi penerima sedangkan penerima tidak menyediakan nama bagi pengirim. Dalam konteks ini, pengirim dan penerima secara sederhana dapat dijabarkan sebagai:
• Send (P, message) – mengirim sebuah pesan kepada proses P.
• Receive (id, message) – menerima sebuah pesan dari semua proses. Variabel id diatur sebagai nama dari proses dengan komunikasi.
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:
Link hanya terbentuk jika beberapa proses membagi kotak surat mereka
Sebuah link dapat terhubung dengan banyak proses
Setiap pasang proses dapat membagi beberapa link komunikasi
Link yang ada dapat merupakan link terarah ataupun link yang tidak terarah
Dengan komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox (kotak surat) atau terminal-terminal, sebuah mailbox dapat dilihat secara abstrak sebagai sebuah objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bias dipindahkan. Setiap kotak surat memiliki sebuah identifikasi (identitas) yang unik, sebuah proses dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang berbeda.
Dua proses dapat saling berkomunikasi apabila kedua proses tersebut sharing mailbox.
Pengirim dan penerima dapat dijabarkan sebagai:
• Send (A, message) – mengirim pesan ke mailbox A.
• Receive (A, message) – menerima pesan dari mailbox A.
Dalam masalah ini, link komunikasi mempunyai sifat sebagai berikut:
• Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi mailbox.
• Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
• Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana setiap link berhubungan pada satu mailbox.
Misalkan terdapat proses P1, P2 dan P3 yang semuanya share mailbox. Proses P1 mengirim pesan ke A, ketika P2 dan P3 masing-masing mengeksekusi sebuah kiriman dari A. Proses mana yang akan menerima pesan yang dikirim P1? Jawabannya tergantung dari jalur yang kita pilih:
• Mengizinkan sebuah link berasosiasi dengan paling banyak 2 proses.
• Mengizinkan paling banyak satu proses pada suatu waktu untuk mengeksekusi hasil kiriman (receive operation).
• Mengizinkan sistem untuk memilih secara mutlak proses mana yang akan menerima pesan (apakah itu P2 atau P3 tetapi tidak keduanya, tidak akan menerima pesan). Sistem mungkin mengidentifikasi penerima kepada pengirim.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox).
Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini diberi pesan bahwa mailbox tersebut tidak lagi ada. Dengan kata lain, mempunyai mailbox sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:
• Membuat mailbox baru.
• Mengirim dan menerima pesan melalui mailbox.
• Menghapus mailbox.
Proses yang membuat mailbox pertama kali secara default akan memiliki mailbox tersebut. Untuk pertama kali, pemilik adalah satu-satunya proses yang dapat menerima pesan selalui mailbox ini.
Jumat, 11 Juni 2010
ringkasan film ALVIN AND THE CHIPMUNKS
Alvin, Simon, dan Theodore adalah 3 ekor tupai yang bisa menyanyi, berbicara dan pintar. Mereka tinggal di sebuah pohon di Danau Siera sampai pohon itu di bawa ke kota besar Los Angeles, California. Dave Seville (Jason Lee) penulis lagu yang terkenal di seluruh Los Angeles bertemu dengan tupai-tupai ini dan membuat kekacauan di rumah Dave. Akhirnya setelah mereka membuat perjanjian dengan Dave akhirnya Dave mencoba mengorbitkan mereka karena keahlian mereka dalam bernyanyi, akan tetapi karena tupai-tupai ini demam panggung akhirnya mereka kehilangan kemampuan menyanyinya dan membuat Dave tampak konyol di depan boss-nya dan akhirnya Dave dipecat oleh bosnya, Ian Hawke (David Cross).
Selain itu Dave juga kehilangan Claire (Cameron Richardson), mantan pacarnya, karena ketika ia menemui Dave di rumahnya untuk makan malam, Dave mencertitakan tentang tupai-tupainya yang bisa berbicara dan bernyanyi, sehingga Claire merasa Dave mengolok-oloknya. Akhirnya Alvin, Simon dan Theodore berusaha memperbaiki itu semua dengan mendatangi rumah Ian, sehingga Ian kembali percaya kepada Dave. Akibat kemampuan bernyanyi mereka Alvin and The Chipmunks terkenal di seluruh Amerika Serikat lewat lagu Christmas Don't Be Late.
Kisahnya berawal saat 3 ekor tupai yang bisa berbicara dan pandai bernyanyi tinggal bersama dave Seville, 3 tupai ini bernama Alvin, simon dan theodore mereka bisa tinggal bersama dave karena pohon tempat mereka tinggal di tebang untuk di jadikan pohon natal di sebuah perusahaan produksi music. Kemudian saat pohon di hias dengan aksesoris pohon natal 3 tupai ini keluar dari pohon dan mencari tempat lain kemudian mereka masuk ke tempat kue yang di bawa oleh dave, dave sendiri dapat keranjang kue yang bearisi muffin ini dari salah satu karyawan perusahaan yang diambilnya.
Dave sendiri adalah pencipta lagu yang terkenal di Los Angeles, kalifornia. Dimana hari itu dave akan mendemokan lagu terbarunya, tapi lagu yang dave buat di tolak oleh ian (produser musik) karena musiknya di anggap kurang fres dan sangat monoton, dave yang awalnya diperlakukan dengan baik oleh karyawan yang lain tiba tiba sikap mereka berubah saat dave keluar dari ruangan ian, maka dari itu dave membawa lari keranjang kue dari salah satu karyawan.
Kemudisn dave pulang kerumah dengan keranjang muffinnya yang tanpa dia sadari di dalam keranjang itu ada 3 tupai. Sesampainya di rumah dave membuang keranjang yang berisi muffin tersebut ke tempat sampah. Dave kemudian beristirahat sambil menonton televisi. Pada saat dave menikmati acara telivisi dia di ganggu oleh suara aneh dari dapurnya yang posisinya berada di belakang tempatnya menonton televisi. Kemudian dia mencari asal tempat ribut tersebut tapi dave tidak menemukan apapun,kemudian dave kembali menonton televisi. Sebelum sampai di tempat duduk untuk menonton televise kembali ada yang aneh dari 3 mangkok yang bergerak sendiri kemudaian dave mendekati mangkok itu dan membukanya tapi tidak ada sesuatu. Kemudian dave meninggalkan mankok itu dan ternyata saat dave maju beberapa langkah 3 mangkok itu dalam keadaan bergerak dan terbuka, kemudian dia juga mendengar suara pintu lemari dapur tertutup kemudian dave mendekatinya , sambil membawa sepatula dia membuka pintu lemari dapur itu sambil mengacak-acak isinya, dia berusaha mencari sesuatu yang membuat ribut di dapur.
Kemudian dave di kagetkan dengan kemunculan 3 tupai tersebut dan yang membuat dave merasa kaget dan tak percaya adalah ketiga tupai tersebut bisa berbicara padanya. Dave merasa ketakutan dan menangkap 3 tupai tersebut dengaan ember dan membuangnya ke luar rumah. Ketiga tupai tersebut berusaha masuk kembali ke kamar dave tapi tidak bisa karena pintu dan jendela rumah dave telah di kunci.
Dave merasa kaget ketika mendengar suara nyanyian, dia mendengarkan dengan teliti sambil membuka jendela rumah dan ternyata yang terlihat adalah 3 tupai yang sedang bernyanyi. Akhirnya dave merasa senang dan memperbolehkan mereka tinggal di rumah dave.
Dengan mengandalkan 3 tupai yang bisa bernyanyi dave berencana untuk menunjukkannya kepada ian. Dia berharap ian akan senang dengan ke tiga tupai tersebut. Setelah semalaman dave membuat miniature sebuah rumah dengan pemandangan musim salju akhirnya dave mambawa ketiga tupai tersebut ke kantor ian. Sesampainya di kantor dave langsung menunjukkan tupai tersebut pada ian. Tapi ian merasa kaget karena tupai tersebut tidak bisa bernyanyi dan hanya diam ketakutan dan dave pun merasa bingung, akhirnya dave dan ketiga tupai tersebut di suruh kembali ke rumah.
Hari hari berikutnya adalah ketiga tupai tersebut selalu mengganggu dave dan mengacaukan seluruh isi rumah. Saat makan malam bersama claire mereka semua mengganggunya dan yang paling parah adalah ketiga tupai tersebut mencorat coret kertas persentasi dave dengan menuliskan nama-nama mereka dengan pensil warna.
Dave kembali ke rumah dengan marah karena merasa malu persentasinya telah gagal. Dia bertanya kepada ketiga tupai tersebut tapi dave malah mendapat jawaban yang sangat tenang dari ketiga tupai tersebut. Mendengar jawaban dari ketiga tupai tersebut dave bertambah marah dan dave berencana untuk mengembalikan ketiga tupai tersebut ke tempat aslanya yaitu di pohon tapi dave tidak tega.
Alvin. Simon dan theodore marasa bersalah karena sudah membuat dave marah kemudian malam harinya ketiga tupai tersebut berangkat ke rumah ian untuk menunjukkan bakat menyanyinya.
Keesokan harinya dave mengajak ketiga tupai tersebut berbelanja ke supermarket dan seperti biasa meraka mambuat ulah hingga dave kualahan. Saat memarahi ketiga tupai tersebut dave tiba-tiba tersenti karena mendengar nyanyian ketiga tupai tersebut dari soud system yang berada di supermarket tersebut. Tak lama dengan rasa kagetnya tiba-tiba handpone dave berdering. Ternya ta dari ian dan dia memberi selamat pada dave karena telah mendapatkan kontrak rekaman. Dave pun merasa senang dan cepat-cepat kembali ke rumah.
Pada malam harinya salah satu dari tiga tupai tersebut yang bernama theodore meminta untuk tidur bersama dave dan dave pun menyetujuinya. Esok telah tiba dan hari itu adalah natal. Alvin, simon dan theodore membangunkan dave dan bergerak ke ruang tamu untuk memberikan kado natal untuk dave, Alvin memberikan kompas untuk dave, simon memberikan dompet dan tidore member dave sebuah gambar mereka berempat, tapi dave merasa heran karena gambaran itu seperti buah nanas kemudian theodore menjelaskan jka mereka berempat adalah keluarga.
Dave tidak menyetujui permintaan dari tidore karena dave hanya menganggap mereka teman kerja saja. Giliran dave yang memberikan hadiah, dave memberi mereka check dengan tulisan sejumlah uang untuk membeli keperluan mereka di dalam anvelope dan tak lama kemudian dating ian dengan membawakan begitu banyak hadiah untuk Alvin, simon dan theodore. Mereka bertiga merasa senang karena mendaptkan hadiah mainan dari ian.
Setiap hari mereka hanya membuat gaduh di rumah dave dan selalu memberikan pujian pada ian. Ian juga mengirimkan pembantu rumah tangga ke rumah dave. Dave akhirnya marah dan menyuruh Alvin, simon dan theodore untuk tinggal di rumah ian.
Tentu saja Alvin, simon and theodore merasa senang karena di rumah ian mereka bisa mendapat permainan yang sangat banyak dan bebas untuk memainkannya. Tapi kesenangan itu hanya sementara, setelah mereka menjadi terkenal mereka mereka tak punya waktu lagi untuk bermain karena jadwal konser mereka yang cukup padat. Ian terus memeksa mereka untuk selalu konsen dalam menyanyi hingga akhirnya ketiga tupai tersebut jatuh sakit karena telah banyak melakukan aktivitas tanpa istirahat.
Setelah berpisah dengan Alvin, simon dan Theodore, dave selalu memperhatikan mereka dan dave merasa Alvin, simon dan Theodore di manfaatkan oleh dave untuk mencari keuntungan yang begitu banyak. Dave mencoba menghubungi mereka lewat ian. Tapi malah ian menolak dan berbicara tidak jelas kepada dave.
Setelah sakit ketiga tupai tersebut menjadi kurang semangat tapi ian tetap melanjutkan untuk melakukan pertunjukan. Dave tak bisa tinggal diam, dia kemudaian berangkat ke tempat dimana Alvin and the chipmunks akan melakukan pertunjukan.
Awalnya dave tidak bisa masuk karena penjaga pintu telah karena nama dave tidak tercatat. Tapi dave beruntung bertemu dengan Claire yang bisa membawanya masuk. Saat di dalam dave ingin mendekati ketiga tupai tersebut yang sedang asyik bernyanyi tapi dave di tahan oleh bodyguard ian.
Dave memanggil nama Alvin dengan keras akhirnya Alvin mendengar dan mengacaukan pertunjukan tersebut. Alvin, simon dan Theodore ingin pulang bersama dave tapi mereka malah tertangkap oleh ian. Dave pun pulang dengan perasaan yang sedih tapi dave terkejud saat muncul 3 tupai dalam mobilnya akhirnya dave merasa senang bisa pulang bersama tiga tupai tersebut yaitu Alvin, simon dan Theodore dan dan dave akhirnya menganggap mereka sebagai keluarga.
Selain itu Dave juga kehilangan Claire (Cameron Richardson), mantan pacarnya, karena ketika ia menemui Dave di rumahnya untuk makan malam, Dave mencertitakan tentang tupai-tupainya yang bisa berbicara dan bernyanyi, sehingga Claire merasa Dave mengolok-oloknya. Akhirnya Alvin, Simon dan Theodore berusaha memperbaiki itu semua dengan mendatangi rumah Ian, sehingga Ian kembali percaya kepada Dave. Akibat kemampuan bernyanyi mereka Alvin and The Chipmunks terkenal di seluruh Amerika Serikat lewat lagu Christmas Don't Be Late.
Kisahnya berawal saat 3 ekor tupai yang bisa berbicara dan pandai bernyanyi tinggal bersama dave Seville, 3 tupai ini bernama Alvin, simon dan theodore mereka bisa tinggal bersama dave karena pohon tempat mereka tinggal di tebang untuk di jadikan pohon natal di sebuah perusahaan produksi music. Kemudian saat pohon di hias dengan aksesoris pohon natal 3 tupai ini keluar dari pohon dan mencari tempat lain kemudian mereka masuk ke tempat kue yang di bawa oleh dave, dave sendiri dapat keranjang kue yang bearisi muffin ini dari salah satu karyawan perusahaan yang diambilnya.
Dave sendiri adalah pencipta lagu yang terkenal di Los Angeles, kalifornia. Dimana hari itu dave akan mendemokan lagu terbarunya, tapi lagu yang dave buat di tolak oleh ian (produser musik) karena musiknya di anggap kurang fres dan sangat monoton, dave yang awalnya diperlakukan dengan baik oleh karyawan yang lain tiba tiba sikap mereka berubah saat dave keluar dari ruangan ian, maka dari itu dave membawa lari keranjang kue dari salah satu karyawan.
Kemudisn dave pulang kerumah dengan keranjang muffinnya yang tanpa dia sadari di dalam keranjang itu ada 3 tupai. Sesampainya di rumah dave membuang keranjang yang berisi muffin tersebut ke tempat sampah. Dave kemudian beristirahat sambil menonton televisi. Pada saat dave menikmati acara telivisi dia di ganggu oleh suara aneh dari dapurnya yang posisinya berada di belakang tempatnya menonton televisi. Kemudian dia mencari asal tempat ribut tersebut tapi dave tidak menemukan apapun,kemudian dave kembali menonton televisi. Sebelum sampai di tempat duduk untuk menonton televise kembali ada yang aneh dari 3 mangkok yang bergerak sendiri kemudaian dave mendekati mangkok itu dan membukanya tapi tidak ada sesuatu. Kemudian dave meninggalkan mankok itu dan ternyata saat dave maju beberapa langkah 3 mangkok itu dalam keadaan bergerak dan terbuka, kemudian dia juga mendengar suara pintu lemari dapur tertutup kemudian dave mendekatinya , sambil membawa sepatula dia membuka pintu lemari dapur itu sambil mengacak-acak isinya, dia berusaha mencari sesuatu yang membuat ribut di dapur.
Kemudian dave di kagetkan dengan kemunculan 3 tupai tersebut dan yang membuat dave merasa kaget dan tak percaya adalah ketiga tupai tersebut bisa berbicara padanya. Dave merasa ketakutan dan menangkap 3 tupai tersebut dengaan ember dan membuangnya ke luar rumah. Ketiga tupai tersebut berusaha masuk kembali ke kamar dave tapi tidak bisa karena pintu dan jendela rumah dave telah di kunci.
Dave merasa kaget ketika mendengar suara nyanyian, dia mendengarkan dengan teliti sambil membuka jendela rumah dan ternyata yang terlihat adalah 3 tupai yang sedang bernyanyi. Akhirnya dave merasa senang dan memperbolehkan mereka tinggal di rumah dave.
Dengan mengandalkan 3 tupai yang bisa bernyanyi dave berencana untuk menunjukkannya kepada ian. Dia berharap ian akan senang dengan ke tiga tupai tersebut. Setelah semalaman dave membuat miniature sebuah rumah dengan pemandangan musim salju akhirnya dave mambawa ketiga tupai tersebut ke kantor ian. Sesampainya di kantor dave langsung menunjukkan tupai tersebut pada ian. Tapi ian merasa kaget karena tupai tersebut tidak bisa bernyanyi dan hanya diam ketakutan dan dave pun merasa bingung, akhirnya dave dan ketiga tupai tersebut di suruh kembali ke rumah.
Hari hari berikutnya adalah ketiga tupai tersebut selalu mengganggu dave dan mengacaukan seluruh isi rumah. Saat makan malam bersama claire mereka semua mengganggunya dan yang paling parah adalah ketiga tupai tersebut mencorat coret kertas persentasi dave dengan menuliskan nama-nama mereka dengan pensil warna.
Dave kembali ke rumah dengan marah karena merasa malu persentasinya telah gagal. Dia bertanya kepada ketiga tupai tersebut tapi dave malah mendapat jawaban yang sangat tenang dari ketiga tupai tersebut. Mendengar jawaban dari ketiga tupai tersebut dave bertambah marah dan dave berencana untuk mengembalikan ketiga tupai tersebut ke tempat aslanya yaitu di pohon tapi dave tidak tega.
Alvin. Simon dan theodore marasa bersalah karena sudah membuat dave marah kemudian malam harinya ketiga tupai tersebut berangkat ke rumah ian untuk menunjukkan bakat menyanyinya.
Keesokan harinya dave mengajak ketiga tupai tersebut berbelanja ke supermarket dan seperti biasa meraka mambuat ulah hingga dave kualahan. Saat memarahi ketiga tupai tersebut dave tiba-tiba tersenti karena mendengar nyanyian ketiga tupai tersebut dari soud system yang berada di supermarket tersebut. Tak lama dengan rasa kagetnya tiba-tiba handpone dave berdering. Ternya ta dari ian dan dia memberi selamat pada dave karena telah mendapatkan kontrak rekaman. Dave pun merasa senang dan cepat-cepat kembali ke rumah.
Pada malam harinya salah satu dari tiga tupai tersebut yang bernama theodore meminta untuk tidur bersama dave dan dave pun menyetujuinya. Esok telah tiba dan hari itu adalah natal. Alvin, simon dan theodore membangunkan dave dan bergerak ke ruang tamu untuk memberikan kado natal untuk dave, Alvin memberikan kompas untuk dave, simon memberikan dompet dan tidore member dave sebuah gambar mereka berempat, tapi dave merasa heran karena gambaran itu seperti buah nanas kemudian theodore menjelaskan jka mereka berempat adalah keluarga.
Dave tidak menyetujui permintaan dari tidore karena dave hanya menganggap mereka teman kerja saja. Giliran dave yang memberikan hadiah, dave memberi mereka check dengan tulisan sejumlah uang untuk membeli keperluan mereka di dalam anvelope dan tak lama kemudian dating ian dengan membawakan begitu banyak hadiah untuk Alvin, simon dan theodore. Mereka bertiga merasa senang karena mendaptkan hadiah mainan dari ian.
Setiap hari mereka hanya membuat gaduh di rumah dave dan selalu memberikan pujian pada ian. Ian juga mengirimkan pembantu rumah tangga ke rumah dave. Dave akhirnya marah dan menyuruh Alvin, simon dan theodore untuk tinggal di rumah ian.
Tentu saja Alvin, simon and theodore merasa senang karena di rumah ian mereka bisa mendapat permainan yang sangat banyak dan bebas untuk memainkannya. Tapi kesenangan itu hanya sementara, setelah mereka menjadi terkenal mereka mereka tak punya waktu lagi untuk bermain karena jadwal konser mereka yang cukup padat. Ian terus memeksa mereka untuk selalu konsen dalam menyanyi hingga akhirnya ketiga tupai tersebut jatuh sakit karena telah banyak melakukan aktivitas tanpa istirahat.
Setelah berpisah dengan Alvin, simon dan Theodore, dave selalu memperhatikan mereka dan dave merasa Alvin, simon dan Theodore di manfaatkan oleh dave untuk mencari keuntungan yang begitu banyak. Dave mencoba menghubungi mereka lewat ian. Tapi malah ian menolak dan berbicara tidak jelas kepada dave.
Setelah sakit ketiga tupai tersebut menjadi kurang semangat tapi ian tetap melanjutkan untuk melakukan pertunjukan. Dave tak bisa tinggal diam, dia kemudaian berangkat ke tempat dimana Alvin and the chipmunks akan melakukan pertunjukan.
Awalnya dave tidak bisa masuk karena penjaga pintu telah karena nama dave tidak tercatat. Tapi dave beruntung bertemu dengan Claire yang bisa membawanya masuk. Saat di dalam dave ingin mendekati ketiga tupai tersebut yang sedang asyik bernyanyi tapi dave di tahan oleh bodyguard ian.
Dave memanggil nama Alvin dengan keras akhirnya Alvin mendengar dan mengacaukan pertunjukan tersebut. Alvin, simon dan Theodore ingin pulang bersama dave tapi mereka malah tertangkap oleh ian. Dave pun pulang dengan perasaan yang sedih tapi dave terkejud saat muncul 3 tupai dalam mobilnya akhirnya dave merasa senang bisa pulang bersama tiga tupai tersebut yaitu Alvin, simon dan Theodore dan dan dave akhirnya menganggap mereka sebagai keluarga.
Langganan:
Postingan (Atom)