Rabu, 30 Maret 2011

Konsep Manajemen Proses di Sistem Operasi Android 3.0 Honeycomb

1. Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara keseluruhan android bukanlah linux, karena dalam android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Oleh karenanya pada android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan.
2. Libraries
Android menggunakan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya:
• Media Library untuk memutar dan merekam berbagai macam format audio dan video.
• Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.
• Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan 2D dan 3D.
• SQLite untuk mengatur relasi database yang digunakan pada aplikasi.
• SSl dan WebKit untuk browser dan keamanan internet. Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).
3. Android Runtime
Pada android tertanam paket pustaka inti yang menyediakan sebagian besar fungsi android. Inilah yang membedakan Android dibandingkan dengan sistem operasi lain yang juga mengimplementasikan Linux. Android Runtime merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian utama, diantaranya:
• Pustaka Inti, android dikembangkan melalui bahasa pemrograman Java, tapi Android Runtime bukanlah mesin virtual Java. Pustaka inti android menyediakan hampir semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus android.
• Mesin Virtual Dalvik, Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh Dan Bornstein yang terinspirasi dari nama sebuah perkampungan yang berada di Iceland. Dalvik hanyalah interpreter mesin virtual yang mengeksekusi file dalam format Dalvik Executable (*.dex). Dengan format ini Dalvik akan mengoptimalkan efisiensi penyimpanan dan pengalamatan memori pada file yang dieksekusi. Dalvik berjalan di atas kernel Linux 2.6, dengan fungsi dasar seperti threading dan manajemen memori yang terbatas. [Nicolas Gramlich, Andbook, anddev.org]
4. Application Framework
Kerangka aplikasi menyediakan kelas-kelas yang dapat digunakan untuk mengembangkan aplikasi android. Selain itu, juga menyediakan abstraksi generik untuk mengakses perangkat, serta mengatur tampilan user interface dan sumber daya aplikasi. Bagian terpenting dalam kerangka aplikasi android adalah sebagai berikut [Hello Android 2nd Edition]:
1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan menjaga keadaan ”Backstack“ untuk navigasi penggunaan.
2. Content Providers, berfungsi untuk merangkum data yang memungkinkan digunakan oleh aplikasi lainnya, seperti daftar nama.
3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program. Serta menyediakan akses sumber daya diluar kode program, seperti karakter, grafik, dan file layout.
4. Location Manager, berfungsi untuk memberikan informasi detail mengenai lokasi perangkat android berada.
5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan masuk, janji, dan lain sebagainya yang akan ditampilkan pada status bar.
5. Application Layer
Puncak dari diagram arsitektur android adalah lapisan aplikasi dan widget. Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika menjalankan program. Pengguna hanya akan melihat program ketika digunakan tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi. Lapisan ini berjalan dalam Android runtime dengan menggunakan kelas dan service yang tersedia pada framework aplikasi.
Lapisan aplikasi android sangat berbeda dibandingkan dengan sistem operasi lainnya. Pada android semua aplikasi, baik aplikasi inti (native) maupun aplikasi pihak ketiga berjalan diatas lapisan aplikasi dengan menggunakan pustaka API (Application Programming Interface) yang sama.
Komponen Aplikasi
Fitur penting android adalah bahwa satu aplikasi dapat menggunakan elemen dari aplikasi lain (untuk aplikasi yang memungkinkan). Sebagai contoh, sebuah aplikasi memerlukan fitur scroller dan aplikasi lain telah mengembangkan fitur scroller yang baik dan memungkinkan aplikasi lain menggunakannya. Maka pengembang tidak perlu lagi mengembangkan hal serupa untuk aplikasinya, cukup menggunakan scroller yang telah ada [developer.android.com].
Agar fitur tersebut dapat bekerja, sistem harus dapat menjalankan aplikasi ketika setiap bagian aplikasi itu dibutuhkan, dan pemanggilan objek java untuk bagian itu. Oleh karenanya android berbeda dari sistem-sistem lain, Android tidak memiliki satu tampilan utama program seperti fungsi main() pada aplikasi lain. Sebaliknya, aplikasi memiliki komponen penting yang memungkinkan sistem untuk memanggil dan menjalankan ketika dibutuhkan.
1. Activities
Activity merupakan bagian yang paling penting dalam sebuah aplikasi, karena Activity menyajikan tampilan visual program yang sedang digunakan oleh pengguna. Setiap Activity dideklarasikan dalam sebuah kelas yang bertugas untuk menampilkan antarmuka pengguna yang terdiri dari Views dan respon terhadap Event. Setiap aplikasi memiliki sebuah activity atau lebih. Biasanya pasti akan ada activity yang pertama kali tampil ketika aplikasi dijalankan.
Perpindahan antara activity dengan activity lainnya diatur melalui sistem, dengan memanfaatkan activity stack. Keadaan suatu activity ditentukan oleh posisinya dalam tumpukan acitivity, LIFO (Last In First Out) dari semua aplikasi yang sedang berjalan. Bila suatu activity baru dimulai, activity yang sebelumnya digunakan maka akan dipindahkan ketumpukan paling atas. Jika pengguna ingin menggunakan activity sebelumnya, cukup menekan tombol Back, atau menutup activity yang sedang digunakan, maka activity yang berada diatas akan aktif kembali. Memory Manager android menggunakan tumpukkan ini untuk menentukan prioritas aplikasi berdasarkan activity, memutuskan untuk mengakhiri suatu aplikasi dan mengambil sumber daya dari aplikasi tersebut.
Ketika activity diambil dan disimpan dalam tumpukkan activity terdapat 4 kemungkinan kondisi transisi yang akan terjadi [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009]:
1) Active, setiap activity yang berada ditumpukan paling atas, maka dia akan terlihat, terfokus, dan menerima masukkan dari pengguna. Android akan berusaha untuk membuat activity aplikasi ini untuk untuk tetap hidup dengan segala cara, bahkan akan menghentikan activity yang berada dibawah tumpukkannya jika diperlukan. Ketika activity sedang aktif, maka yang lainnya akan dihentikan sementara.
2) Paused, dalam beberapa kasus activity akan terlihat tapi tidak terfokus pada kondisi inilah disebut paused. Keadaan ini terjadi jika activity transparan dan tidak fullscreen pada layar. Ketika activity dalam keadaan paused, dia terlihat active namun tidak dapat menerima masukkan dari pengguna. Dalam kasus ekstrim, android akan menghentikan activity dalam keadaan paused ini, untuk menunjang sumber daya bagi activity yang sedang aktif.
3) Stopped, ketika sebuah activity tidak terlihat, maka itulah yang disebut stopped. Activity akan tetap berada dalam memori dengan semua keadaan dan informasi yang ada. Namun akan menjadi kandidat utama untuk dieksekusi oleh sistem ketika membutuhkan sumberdaya lebih. Oleh karenanya ketika suatu activity dalam kondisi stopped maka perlu disimpan data dan kondisi antarmuka saat itu. Karena ketika activity telah keluar atau ditutup, maka dia akan menjadi inactive.
4) Inactive, kondisi ketika activity telah dihentikan dan sebelum dijalankan. Inactive activity telah ditiadakan dari tumpukan activity sehingga perlu restart ulang agar dapat tampil dan digunakan kembali.
Kondisi transisi ini sepenuhnya ditangani oleh manajer memori android. Android akan memulai menutup aplikasi yang mengandung activity inactive, kemudian stopped activity, dan dalam kasus luar biasa paused activity juga akan di tutup.
2. Services
Suatu service tidak memiliki tampilan antarmuka, melainkan berjalan di background untuk waktu yang tidak terbatas. Komponen service diproses tidak terlihat, memperbarui sumber data dan menampilkan notifikasi. Service digunakan untuk melakukan pengolahan data yang perlu terus diproses, bahkan ketika Activity tidak aktif atau tidak tampak.
3. Intents
Intens merupakan sebuah mekanisme untuk menggambarkan tindakan tertentu, seperti memilih foto, menampilkan halaman web, dan lain sebagainya. Intents tidak selalu dimulai dengan menjalankan aplikasi, namun juga digunakan oleh sistem untuk memberitahukan ke aplikasi bila terjadi suatu hal, misal pesan masuk. Intents dapat eksplisit atau implisit, contohnya jika suatu aplikasi ingin menampilkan URL, sistem akan menentukan komponen apa yang dibutuhkan oleh Intents tersebut.
4. Broadcast Receivers
Broadcast Receivers merupakan komponen yang sebenarnya tidak melakukan apa-apa kecuali menerima dan bereaksi menyampaikan pemberitahuan. Sebagian besar Broadcast berasal dari sistem misalnya, Batre sudah hampir habis, informasi zona waktu telah berubah, atau pengguna telah merubah bahasa default pada perangkat. Sama halnya dengan service, Broadcast Receivers tidak menampilkan antarmuka pengguna. Namun, Broadcast Receivers dapat menggunakan Notification Manager untuk memberitahukan sesuatu kepada pengguna.
5. Content Providers
Content Providers digunakan untuk mengelola dan berbagi database. Data dapat disimpan dalam file sistem, dalam database SQLite, atau dengan cara lain yang pada prinsipnya sama. Dengan adanya Content Provider memungkinkan antar aplikasi untuk saling berbagi data. Komponen ini sangat berguna ketika sebuah aplikasi membutuhkan data dari aplikasi lain, sehingga mudah dalam penerapannya.
Tipe Aplikasi Android
Terdapat tiga kategori aplikasi pada android [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009] :
1. Foreground Activity
Aplikasi yang hanya dapat dijalankan jika tampil pada layar dan tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti mempertimbangkan siklus hidup activity, sehingga perpindahan antar activity dapat berlangsung dengan lancar.
2. Background Service
Aplikasi yang memiliki interaksi terbatas dengan user, selain dari pengaturan konfigurasi, semua dari prosesnya tidak tidak tampak pada layar. Contohnya aplikasi penyaringan panggilan atau sms auto respon.
3. Intermittent Activity
Aplikasi yang masih membutuhkan beberapa masukkan dari pengguna, namun sebagian sangat efektif jika dijalankan di background dan jika diperlukan akan memberi tahu pengguna tentang kondisi tertentu. Contohnya pemutar musik.
Untuk aplikasi yang kompleks akan sulit untuk menentukan kategori aplikasi tersebut apalagi aplikasi memiliki ciri-ciri dari semua kategori. Oleh karenanya perlu pertimbangan bagaimana aplikasi tersebut digunakan dan menentukan kategori aplikasi yang sesuai.
Siklus Hidup Aplikasi Android
Siklus hidup aplikasi android dikelola oleh sistem, berdasarkan kebutuhan pengguna, sumberdaya yang tersedia, dan sebagainya. Misalnya Pengguna ingin menjalankan browser web, pada akhirnya sistem yang akan menentukan menjalankan aplikasi. Sistem sangat berperan dalam menentukan apakah aplikasi dijalankan, dihentikan sementara, atau dihentikan sama sekali. Jika pengguna ketika itu sedang menjalankan sebuah Activity, maka sistem akan memberikan perioritas utama untuk aplikasi yang tersebut. Sebaliknya, jika suatu Activity tidak terlihat dan sistem membutuhkan sumber daya yang lebih, maka Activity yang prioritas rendah akan ditutup. [Sayed . Y. Hashimi and Satya Komatineni, Pro Android, Apress, USA 2009]
Android menjalankan setiap aplikasi dalam proses secara terpisah, yang masing-masing memliki mesin virtual pengolah sendiri, dengan ini melindungi penggunaan memori pada aplikasi. Selain itu juga android dapat mengontrol aplikasi mana yang layak menjadi prioritas utama. Karenanya android sangat sensitive dengan siklus hidup aplikasi dan komponen-komponennya. Perlu adanya penanganan terhadap setiap kondisi agar aplikasi menjadi stabil.
Gambar



Konsep Manajemen Proses di Sistem Operasi Android 3.0 Honeycomb

1. Linux Kernel
Android dibangun di atas kernel Linux 2.6. Namun secara keseluruhan android bukanlah linux, karena dalam android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Oleh karenanya pada android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan.
2. Libraries
Android menggunakan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya:
• Media Library untuk memutar dan merekam berbagai macam format audio dan video.
• Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi.
• Graphic Library termasuk didalamnya SGL dan OpenGL, untuk tampilan 2D dan 3D.
• SQLite untuk mengatur relasi database yang digunakan pada aplikasi.
• SSl dan WebKit untuk browser dan keamanan internet. Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).
3. Android Runtime
Pada android tertanam paket pustaka inti yang menyediakan sebagian besar fungsi android. Inilah yang membedakan Android dibandingkan dengan sistem operasi lain yang juga mengimplementasikan Linux. Android Runtime merupakan mesin virtual yang membuat aplikasi android menjadi lebih tangguh dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian utama, diantaranya:
• Pustaka Inti, android dikembangkan melalui bahasa pemrograman Java, tapi Android Runtime bukanlah mesin virtual Java. Pustaka inti android menyediakan hampir semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus android.
• Mesin Virtual Dalvik, Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh Dan Bornstein yang terinspirasi dari nama sebuah perkampungan yang berada di Iceland. Dalvik hanyalah interpreter mesin virtual yang mengeksekusi file dalam format Dalvik Executable (*.dex). Dengan format ini Dalvik akan mengoptimalkan efisiensi penyimpanan dan pengalamatan memori pada file yang dieksekusi. Dalvik berjalan di atas kernel Linux 2.6, dengan fungsi dasar seperti threading dan manajemen memori yang terbatas. [Nicolas Gramlich, Andbook, anddev.org]
4. Application Framework
Kerangka aplikasi menyediakan kelas-kelas yang dapat digunakan untuk mengembangkan aplikasi android. Selain itu, juga menyediakan abstraksi generik untuk mengakses perangkat, serta mengatur tampilan user interface dan sumber daya aplikasi. Bagian terpenting dalam kerangka aplikasi android adalah sebagai berikut [Hello Android 2nd Edition]:
1. Activity Manager, berfungsi untuk mengontrol siklus hidup aplikasi dan menjaga keadaan ”Backstack“ untuk navigasi penggunaan.
2. Content Providers, berfungsi untuk merangkum data yang memungkinkan digunakan oleh aplikasi lainnya, seperti daftar nama.
3. Resuource Manager, untuk mengatur sumber daya yang ada dalam program. Serta menyediakan akses sumber daya diluar kode program, seperti karakter, grafik, dan file layout.
4. Location Manager, berfungsi untuk memberikan informasi detail mengenai lokasi perangkat android berada.
5. Notification Manager, mencakup berbagai macam peringatan seperti, pesan masuk, janji, dan lain sebagainya yang akan ditampilkan pada status bar.
5. Application Layer
Puncak dari diagram arsitektur android adalah lapisan aplikasi dan widget. Lapisan aplikasi merupakan lapisan yang paling tampak pada pengguna ketika menjalankan program. Pengguna hanya akan melihat program ketika digunakan tanpa mengetahui proses yang terjadi dibalik lapisan aplikasi. Lapisan ini berjalan dalam Android runtime dengan menggunakan kelas dan service yang tersedia pada framework aplikasi.
Lapisan aplikasi android sangat berbeda dibandingkan dengan sistem operasi lainnya. Pada android semua aplikasi, baik aplikasi inti (native) maupun aplikasi pihak ketiga berjalan diatas lapisan aplikasi dengan menggunakan pustaka API (Application Programming Interface) yang sama.
Komponen Aplikasi
Fitur penting android adalah bahwa satu aplikasi dapat menggunakan elemen dari aplikasi lain (untuk aplikasi yang memungkinkan). Sebagai contoh, sebuah aplikasi memerlukan fitur scroller dan aplikasi lain telah mengembangkan fitur scroller yang baik dan memungkinkan aplikasi lain menggunakannya. Maka pengembang tidak perlu lagi mengembangkan hal serupa untuk aplikasinya, cukup menggunakan scroller yang telah ada [developer.android.com].
Agar fitur tersebut dapat bekerja, sistem harus dapat menjalankan aplikasi ketika setiap bagian aplikasi itu dibutuhkan, dan pemanggilan objek java untuk bagian itu. Oleh karenanya android berbeda dari sistem-sistem lain, Android tidak memiliki satu tampilan utama program seperti fungsi main() pada aplikasi lain. Sebaliknya, aplikasi memiliki komponen penting yang memungkinkan sistem untuk memanggil dan menjalankan ketika dibutuhkan.
1. Activities
Activity merupakan bagian yang paling penting dalam sebuah aplikasi, karena Activity menyajikan tampilan visual program yang sedang digunakan oleh pengguna. Setiap Activity dideklarasikan dalam sebuah kelas yang bertugas untuk menampilkan antarmuka pengguna yang terdiri dari Views dan respon terhadap Event. Setiap aplikasi memiliki sebuah activity atau lebih. Biasanya pasti akan ada activity yang pertama kali tampil ketika aplikasi dijalankan.
Perpindahan antara activity dengan activity lainnya diatur melalui sistem, dengan memanfaatkan activity stack. Keadaan suatu activity ditentukan oleh posisinya dalam tumpukan acitivity, LIFO (Last In First Out) dari semua aplikasi yang sedang berjalan. Bila suatu activity baru dimulai, activity yang sebelumnya digunakan maka akan dipindahkan ketumpukan paling atas. Jika pengguna ingin menggunakan activity sebelumnya, cukup menekan tombol Back, atau menutup activity yang sedang digunakan, maka activity yang berada diatas akan aktif kembali. Memory Manager android menggunakan tumpukkan ini untuk menentukan prioritas aplikasi berdasarkan activity, memutuskan untuk mengakhiri suatu aplikasi dan mengambil sumber daya dari aplikasi tersebut.
Ketika activity diambil dan disimpan dalam tumpukkan activity terdapat 4 kemungkinan kondisi transisi yang akan terjadi [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009]:
1) Active, setiap activity yang berada ditumpukan paling atas, maka dia akan terlihat, terfokus, dan menerima masukkan dari pengguna. Android akan berusaha untuk membuat activity aplikasi ini untuk untuk tetap hidup dengan segala cara, bahkan akan menghentikan activity yang berada dibawah tumpukkannya jika diperlukan. Ketika activity sedang aktif, maka yang lainnya akan dihentikan sementara.
2) Paused, dalam beberapa kasus activity akan terlihat tapi tidak terfokus pada kondisi inilah disebut paused. Keadaan ini terjadi jika activity transparan dan tidak fullscreen pada layar. Ketika activity dalam keadaan paused, dia terlihat active namun tidak dapat menerima masukkan dari pengguna. Dalam kasus ekstrim, android akan menghentikan activity dalam keadaan paused ini, untuk menunjang sumber daya bagi activity yang sedang aktif.
3) Stopped, ketika sebuah activity tidak terlihat, maka itulah yang disebut stopped. Activity akan tetap berada dalam memori dengan semua keadaan dan informasi yang ada. Namun akan menjadi kandidat utama untuk dieksekusi oleh sistem ketika membutuhkan sumberdaya lebih. Oleh karenanya ketika suatu activity dalam kondisi stopped maka perlu disimpan data dan kondisi antarmuka saat itu. Karena ketika activity telah keluar atau ditutup, maka dia akan menjadi inactive.
4) Inactive, kondisi ketika activity telah dihentikan dan sebelum dijalankan. Inactive activity telah ditiadakan dari tumpukan activity sehingga perlu restart ulang agar dapat tampil dan digunakan kembali.
Kondisi transisi ini sepenuhnya ditangani oleh manajer memori android. Android akan memulai menutup aplikasi yang mengandung activity inactive, kemudian stopped activity, dan dalam kasus luar biasa paused activity juga akan di tutup.
2. Services
Suatu service tidak memiliki tampilan antarmuka, melainkan berjalan di background untuk waktu yang tidak terbatas. Komponen service diproses tidak terlihat, memperbarui sumber data dan menampilkan notifikasi. Service digunakan untuk melakukan pengolahan data yang perlu terus diproses, bahkan ketika Activity tidak aktif atau tidak tampak.
3. Intents
Intens merupakan sebuah mekanisme untuk menggambarkan tindakan tertentu, seperti memilih foto, menampilkan halaman web, dan lain sebagainya. Intents tidak selalu dimulai dengan menjalankan aplikasi, namun juga digunakan oleh sistem untuk memberitahukan ke aplikasi bila terjadi suatu hal, misal pesan masuk. Intents dapat eksplisit atau implisit, contohnya jika suatu aplikasi ingin menampilkan URL, sistem akan menentukan komponen apa yang dibutuhkan oleh Intents tersebut.
4. Broadcast Receivers
Broadcast Receivers merupakan komponen yang sebenarnya tidak melakukan apa-apa kecuali menerima dan bereaksi menyampaikan pemberitahuan. Sebagian besar Broadcast berasal dari sistem misalnya, Batre sudah hampir habis, informasi zona waktu telah berubah, atau pengguna telah merubah bahasa default pada perangkat. Sama halnya dengan service, Broadcast Receivers tidak menampilkan antarmuka pengguna. Namun, Broadcast Receivers dapat menggunakan Notification Manager untuk memberitahukan sesuatu kepada pengguna.
5. Content Providers
Content Providers digunakan untuk mengelola dan berbagi database. Data dapat disimpan dalam file sistem, dalam database SQLite, atau dengan cara lain yang pada prinsipnya sama. Dengan adanya Content Provider memungkinkan antar aplikasi untuk saling berbagi data. Komponen ini sangat berguna ketika sebuah aplikasi membutuhkan data dari aplikasi lain, sehingga mudah dalam penerapannya.
Tipe Aplikasi Android
Terdapat tiga kategori aplikasi pada android [Reto Meier, Profesional Android Application Development, Wiley Publishing, Canada, 2009] :
1. Foreground Activity
Aplikasi yang hanya dapat dijalankan jika tampil pada layar dan tetap efektif walaupun tidak terlihat. Aplikasi dengan tipe ini pasti mempertimbangkan siklus hidup activity, sehingga perpindahan antar activity dapat berlangsung dengan lancar.
2. Background Service
Aplikasi yang memiliki interaksi terbatas dengan user, selain dari pengaturan konfigurasi, semua dari prosesnya tidak tidak tampak pada layar. Contohnya aplikasi penyaringan panggilan atau sms auto respon.
3. Intermittent Activity
Aplikasi yang masih membutuhkan beberapa masukkan dari pengguna, namun sebagian sangat efektif jika dijalankan di background dan jika diperlukan akan memberi tahu pengguna tentang kondisi tertentu. Contohnya pemutar musik.
Untuk aplikasi yang kompleks akan sulit untuk menentukan kategori aplikasi tersebut apalagi aplikasi memiliki ciri-ciri dari semua kategori. Oleh karenanya perlu pertimbangan bagaimana aplikasi tersebut digunakan dan menentukan kategori aplikasi yang sesuai.
Siklus Hidup Aplikasi Android
Siklus hidup aplikasi android dikelola oleh sistem, berdasarkan kebutuhan pengguna, sumberdaya yang tersedia, dan sebagainya. Misalnya Pengguna ingin menjalankan browser web, pada akhirnya sistem yang akan menentukan menjalankan aplikasi. Sistem sangat berperan dalam menentukan apakah aplikasi dijalankan, dihentikan sementara, atau dihentikan sama sekali. Jika pengguna ketika itu sedang menjalankan sebuah Activity, maka sistem akan memberikan perioritas utama untuk aplikasi yang tersebut. Sebaliknya, jika suatu Activity tidak terlihat dan sistem membutuhkan sumber daya yang lebih, maka Activity yang prioritas rendah akan ditutup. [Sayed . Y. Hashimi and Satya Komatineni, Pro Android, Apress, USA 2009]
Android menjalankan setiap aplikasi dalam proses secara terpisah, yang masing-masing memliki mesin virtual pengolah sendiri, dengan ini melindungi penggunaan memori pada aplikasi. Selain itu juga android dapat mengontrol aplikasi mana yang layak menjadi prioritas utama. Karenanya android sangat sensitive dengan siklus hidup aplikasi dan komponen-komponennya. Perlu adanya penanganan terhadap setiap kondisi agar aplikasi menjadi stabil.
Gambar




Selasa, 29 Maret 2011

Penggunaan TAG HTML

sambungan dari tugas HTML

<a href='....'> untuk memberikan link
<font> untuk mengatur tentang font
<table> untuk memberikan tabel
<td> table down untuk membuat tabel menurun
<tr> table row menyamping
<p> untuk membuat paragraf
<br /> untuk memindah baris ke bawah
<img src=''> untuk menambahkan gambar
< **** style=""> untuk menambahkan style CSS pada suatu script HTML

jangan lupa untuk menutup tag tersebut dengan </ (tag html) >


Selasa, 22 Maret 2011

ANDROID HONEYCOMB 3.0

Android

Android Honeycomb dirancang khusus untuk tablet. Android versi ini mendukung ukuran layar yang lebih besar. User Interface pada Honeycomb juga berbeda karena sudah didesain untuk tablet. Honeycomb juga mendukung multi prosesor dan juga akselerasi perangkat keras (hardware) untuk grafis. Tablet pertama yang dibuat dengan menjalankan Honeycomb adalah Motorola Xoom.

Google Android 3.0 Honeycomb, Sistem Operasi Mobile saingan ketat iOS, OS untuk produk Apple. Honeycomb diciptakan khusus oleh google untuk gadget PC Tablet. perangkat PC Tablet Pertama yang menggunakan Android 3.0 Honeycomb adalah Motorola Xoom Android 3.0 Honeycomb memiliki kemampuan real multitasking, yaitu anda tidak perlu menutup layar aktif untuk memilih thumbnail. Sekarang Anda dapat melakuka scrolling melalui tab dengan mudah. Ditambah menu untuk browser sekarang ditemukan di atas halaman.

Dalam Urusan Text editing, menggunakan Honeycomb terasa lebih mudah. Anda dapat memilih teks dengan memegang jari Anda di atasnya dan tunggu pop-up menu untuk melakukan berbagai urusan teks editing.

Android 3.0 Honeycomb menyempurnakan user interface dari seri sebelumnya. Hanya dengan sekali tekan, anda bisa melihat berbagai fungsi tablet anda, seperti kondisi batrai, sinyal jaringan, waktu dan tanggal. Anda juga bisa mengakses pengaturan Wi-Fi, flight mode, penguncian layar, brightness screen control, dan lainnya hanya dengan 1 kali tekan di layar PC tablet Android 3.0 Honeycomb anda.

Fitur lainnya pada OS Google Android 3.0 Honeycomb adalah tentang virtual keyboard yang ditata lebih apik dan responsif, jauh lebih baik dari Android versi sebelumnya.


Sabtu, 19 Maret 2011

Lowongan Pekerjaan Di American Standard


DBMS - Daftar Perangkat Lunak Basis Data

Perangkat lunak basis data yang banyak digunakan dalam pemrograman dan merupakan perangkat basis data aras tinggi (high level):
  • Microsoft SQL Server
  • Oracle
  • Sybase
  • Interbase
  • XBase
  • Firebird
  • MySQL
  • PostgreSQL
  • Microsoft Access
  • dBase III
  • Paradox
  • FoxPro
  • Visual FoxPro
  • Arago
  • Force
  • Recital
  • dbFast
  • dbXL
  • Quicksilver
  • Clipper
  • FlagShip
  • Harbour
  • Visual dBase
  • Lotus Smart Suite Approach
Selain perangkat lunak di atas, terdapat juga perangkat lunak pemrograman basis data aras rendah (low level), diantaranya:
  • Btrieve
  • Tsunami Record Manager


Jumat, 18 Maret 2011

Kelebihan dan Kekurangan Microsoft acces

A. Microsoft acces
Microsoft Access (atau Microsoft Office Access) adalah sebuah program aplikasi basis data komputer relasional ditujukan untuk kalangan rumahan dan perusahaan kecil hingga menengah. Aplikasi ini merupakan anggota dari beberapa aplikasi Microsoft Office, selain tentunya Microsoft Word, Microsoft Excel, dan Microsoft PowerPoint.

Aplikasi ini menggunakan mesin basis data Microsoft Jet Database Engine, dan juga menggunakan tampilan grafis yang intuitif sehingga memudahkan pengguna. Versi terakhir adalah Microsoft Office Access 2007 yang termasuk ke dalam Microsoft Office System 2007.

Microsoft Access dapat menggunakan data yang disimpan di dalam format Microsoft Access, Microsoft Jet Database Engine, Microsoft SQL Server, Oracle Database, atau semua kontainer basis data yang mendukung standar ODBC. Para pengguna/programmer yang mahir dapat menggunakannya untuk mengembangkan perangkat lunak aplikasi yang kompleks, sementara para programmer yang kurang mahir dapat menggunakannya untuk mengembangkan perangkat lunak aplikasi yang sederhana.

Access juga mendukung teknik-teknik pemograman berorientasi objek, tetapi tidak dapat digolongkan ke dalam perangkat bantu pemrograman berorientasi objek.


A. Sejarah Microsoft Acces
Microsoft merilis Microsoft Access 1.0 pada November 1992 dan dilanjutkan dengan merilis versi 2.0 pada tahun 1993. Microsoft menentukan spesifikasi minimum untuk menjalankan Microsoft Access 2.0 adalah:

OS : Microsoft Windows 3.0;
Memory : 4 MB (6 MB lebih disarankan)
HD : 8 MB ( 14 MB lebih disarankan)
Versi 2.0 dari Microsoft Access
7 buah floppy disc 3½ inci berukuran 1.44 megabyte.

Perangkat lunak tersebut bekerja dengan sangat baik pada sebuah basis data dengan banyak record tapi terdapat beberapa kasus di mana data mengalami kerusakan. Sebagai contoh, pada ukuran basis data melebihi 700 megabyte sering mengalami masalah seperti ini (pada saat itu, memang hard disk yang beredar masih berada di bawah 700 megabyte). Buku manual yang dibawanya memperingatkan bahwa beberapa kasus tersebut disebabkan oleh driver perangkat yang kuno atau konfigurasi yang tidak benar.

Nama kode (codename) yang digunakan oleh Access pertama kali adalah Cirrus yang dikembangkan sebelum Microsoft mengembangkan Microsoft Visual Basic, sementara mesin pembuat form antarmuka yang digunakannya dinamakan dengan Ruby. Bill Gates melihat purwarupa (prototype) tersebut dan memutuskan bahwa komponen bahasa pemograman BASIC harus dikembangkan secara bersama-sama sebagai sebuah aplikasi terpisah tapi dapat diperluas. Proyek ini dinamakan dengan Thunder. Kedua proyek tersebut dikembangkan secara terpisah, dan mesin pembuat form yang digunakan oleh keduanya tidak saling cocok satu sama lainnya. Hal tersebut berakhir saat Microsoft merilis Visual Basic for Applications (VBA).

Versi
Microsoft access 1.1 : 1992
Versi 1 (T/A)
Mendukung Microsoft Windows
Microsoft access 2.2 : 1993
Versi 2 ( Microsoft Office 4.3 Professional)
Mendukung Microsoft Windows
Microsoft Access for Windows 95 : 1995
Versi 7 (Microsoft Office 95 Professional)
Mendukung Win 95 dan NT 3.51
Microsoft Access 97 : 1997
Versi 8 (Mic. Office 97 Professional)
Mendukung Win 95/98 dan NT3.51/NT 4.0
Microsoft Access 2000 : 1999
Versi 9 (Mic Office 2000 Premium/Professional)
Mendukung Win 98/Me dan NT 4.0/2000
Microsoft Access 2002 : 2001
Versi 10 (Mic Office XP Professional)
Mendukung Win 98/Me, Win NT/2000/XP
Microsoft Access 2003 : 2003
Versi 11 (Microsoft Office System 2003)
Mendukung Win 2000 (SP3 ke atas)/XP(SP1 ke atas) Server 2003
Microsof Office 2007 : 2007
Versi 12 ( Mic Office System 2007)
Mendukung XP(SP2)/Server 2003/Vista/Server 2008 (Beta 2 ke atas)



B. Penggunaan Ms. Acces
Microsoft Access digunakan kebanyakan oleh bisnis-bisnis kecil dan menengah, di dalam sebuah organisasi yang kecil bahkan mungkin juga digunakan oleh perusahaan yang cukup besar, dan juga para programmer untuk membuat sebuah sistem buatan sendiri untuk menangani pembuatan dan manipulasi data. Access juga dapat digunakan sebagai sebuah basis data untuk aplikasi Web dasar yang disimpan di dalam server yang menjalankan Microsoft Internet Information Services (IIS) dan menggunakan Microsoft Active Server Pages (ASP).

Penggunaan Access kurang disarankan, mengingat telah ada Microsoft SQL Server yang memiliki kemampuan yang lebih tinggi. Beberapa pengembang aplikasi profesional menggunakan Microsoft Access untuk mengembangkan aplikasi secara cepat (digunakan sebagai Rapid Application Development/RAD tool), khususnya untuk pembuatan purwarupa untuk sebuah program yang lebih besar dan aplikasi yang berdiri sendiri untuk para salesman.

Microsoft Access kurang begitu bagus jika diakses melalui jaringan sehingga aplikasi-aplikasi yang digunakan oleh banyak pengguna cenderung menggunakan solusi sistem manajemen basis data yang bersifat clien/server. Meskipun demikian, tampilan muka Access (form, report, query, dan kode Visual Basic) yang dimilikinya dapat digunakan untuk menangani basis data yang sebenarnya diproses oleh sistem manajemen basis data lainnya, seperti halnya Microsoft Jet Database Engine (yang secara default digunakan oleh Microsoft Access), Microsoft SQL Server, Oracle Database, dan beberapa produk lainnya yang mendukung ODBC.

C. Fitur
Salah satu keunggulan Microsoft Access dilihat dari perspektif programmer adalah kompatibilitasnya dengan bahsa pemograman Sructured Query Language(SQL); query dapat dilihat dan disunting sebagai statemen-statemen SQL, dan statemen SQL dapat digunakan secara langsung di dalam Macro dan VBA Module untuk secara langsung memanipulasi tabel data dalam Access. Para pengguna dapat mencampurkan dan menggunakan kedua jenis bahasa tersebut (VBA dan Macro) untuk memprogram form dan logika dan juga untuk mengaplikasikan konsep berorientasi objek.

Microsoft SQL Server Desktop Engine (MSDE) 2000, yang merupakan sebuah versi mini dari Microsoft SQL Server 2000, dimasukkan ke dalam Office XP Developer Edition dan dapat digunakan oleh Microsoft Access sebagai alternatif dari Microsoft Jet Database Engine.

Tidak seperti sebuah system menajemen basis data relasional yang komplit, Microsoft JET Database Engine tidak memiliki fitur trigger dan stored procedure. Dimulai dari Microsoft Access 2000 yang menggunakan Microsoft Jet Database Engine versi 4.0, ada sebuah sintaksis yang mengizinkan pembuatan kueri dengan beberapa parameter, dengan sebuah cara seperi halnya sebuah stored procedure, meskipun prosesur tersebut dibatasi hanya untuk sebuah pernyataan tiap prosedurnya.

Access juga mengizinkan form untuk mengandung kode yang dapat dieksekusi ketika terjadi sebuah perubahan terhadap table basis data, seperti halnya trigger, selama modifikasi dilakukan hanya dengan menggunakan form tersebut, dan merupakan sesuatu hal yang umum untuk menggunakan kueri yang akan diteruskan (pass-through dan teknik lainnya di dalam Access untuk menjalankan stored procedure di dalam RDBMS yang mendukungnya.

Dalam berkas Access Database Project (ADP) yang didukung oleh Microsoft Access 2000 dan yang selanjutnya, fitur-fitur yang berkaitan dengan basis data berbeda dari versi format/struktur data yang digunakan Access (*.MDB), karena jenis berkas ini dapat membuat koneksi ke sebuah basis data MSDE atau Microsoft SQL Server, ketimbang menggunakan Microsoft JET Database Engine. Sehingga, dengan menggunakan ADP, adalah mungkin untuk membuat hampur semua objek di dalam server yang menjalankan mesin basis data tersebut (tabel basis data dengan constraints dan trigger, view, stored procedure, dan UDF). Meskipun demikian, yang disimpan di dalam berkas ADP hanyalah form, report, macro, dan modul, sementara untuk tabel dan objek lainnya disimpan di dalam server basis data yang membelakangi program tersebut.

D. Pengembangan Dengan Access
Access mengizinkan pengembangan yang relatif cepat karena semua tabel basis data, kueri, form, dan report disimpan di dalam berkas basis data miliknya (*.MDB). Untuk membuat Query, Access menggunakan Query Design Grid, sebuah program berbasis grafis yang mengizinkan para penggunanya untuk membuat query tanpa harus mengetahui bahasa pemograman SQL. DI dalam Query Design Grid, para pengguna dapat memperlihatkan tabel basis data sumber dari query, dan memilih field-field mana yang hendak dikembalikan oleh proses dengan mengklik dan menyeretnya ke dalam grid. Join juga dapat dibuat dengan cara mengklik dan menyeret field-field dalam tabel ke dalam field dalam tabel lainnya. Access juga mengizinkan pengguna untuk melihat dan memanipulasi kode SQL jika memang diperlukan.

Bahasa pemrograman yang tersedia di dalam Access adalah Microsoft Visual Basic for Applications (VBA), seperti halnya dalam beberapa aplikasi Microsoft Office. Dua buah pustaka komponen Component Object Model (COM) untuk mengakses basis data pun disediakan, yakni Data Access Object (DAO), yang hanya terdapat di dalam Access 97, dan ActiveX Data Objects (ADO) yang tersedia dalam versi-versi Access terbaru.

E. Kelebihan dan Kekurangan MS.Acces
Microsoft Access (atau Microsoft Office Access) adalah sebuah program aplikasi basis data komputer relasional yang ditujukan untuk kalangan rumahan dan perusahaan kecil hingga menengah, yang digunakan untuk menangani pembuatan dan Manipulasi data dan juga di gunakan sebagai basis data untuk aplikasi web dasar. Aplikasi ini merupakan anggota dari beberapa aplikasi Microsoft Office, selain tentunya Microsoft Word, Microsoft Excel, dan Microsoft PowerPoint.

Microsoft Access dapat menggunakan data yang disimpan di dalam format Microsoft Access, Microsoft Jet Database Engine, Microsoft SQL Server, Oracle Database, atau semua kontainer basis data yang mendukung standar ODBC. Access juga mendukung teknik-teknik pemrograman berorientasi objek, tetapi tidak dapat digolongkan ke dalam perangkat bantu pemrograman berorientasi objek.

Microsoft Access digunakan kebanyakan oleh bisnis-bisnis kecil dan menengah, akan tetapi penggunaan Access kurang disarankan, mengingat telah ada Microsoft SQL Server yang memiliki kemampuan yang lebih tinggi.

Microsoft Access kurang begitu bagus jika diakses melalui jaringan sehingga aplikasi-aplikasi yang digunakan oleh banyak pengguna cenderung menggunakan solusi sistem manajemen basis data yang bersifat klien/server.
Salah satu keunggulan Microsoft Access dilihat dari perspektif programmer adalah kompatibilitasnya dengan bahasa pemrograman Structured Query Language (SQL). Para pengguna dapat mencampurkan dan menggunakan kedua jenis bahasa tersebut (VBA dan Macro) untuk memprogram form dan logika dan juga untuk mengaplikasikan konsep berorientasi objek.

Access mengizinkan pengembangan yang relatif cepat karena semua tabel basis data, kueri, form, dan report disimpan di dalam berkas basis data miliknya (*.MDB). Untuk membuat Query, Access menggunakan Query Design Grid, sebuah program berbasis grafis yang mengizinkan para penggunanya untuk membuat query tanpa harus mengetahui bahasa pemrograman SQL.

Bahasa pemrograman yang tersedia di dalam Access adalah Microsoft Visual Basic for Applications (VBA), seperti halnya dalam beberapa aplikasi Microsoft Office.

from :http://albymoon.blogspot.com/2009/12/microsoft-acces.html


Kamis, 17 Maret 2011

Syntax Mongo DB

Berikut adalah contoh2 sytax yang digunakan MongoDB dalam berbagai bahasa pemrograman

JavaScript
[ ]
{}
{ x : 1 }
{ x : 1 }
connect("www.example.net")
cursor.next()
cursor.hasNext()
collection.findOne()
db.eval()


PHP
array()
new stdClass
array('x' => 1)

new Mongo("www.example.net")
$cursor->getNext()
$cursor->hasNext()
$collection->findOne()
$db->execute()

Ruby
[]
{}
{'x' => 1}

Connection.new("www.example.net")
cursor.next_document()
cursor.has_next?
collection.find_one()
db.eval()













Mongo DB

Beberapa hal yang perlu anda ketahui sebelum mengguakan MongoDB

MongoDB memiliki banyak sekali kelebihan yang diantaranya, yaitu:
1. Sangat bagus untuk data list produk, karena MongoDB bisa melakukan searching lebih cepat ketimbang MySql
2. Kita tidak perlu membuat struktur tabel, kita hanya perlu melakukan proses insert maka MongoDB akan otomatis membuatkan struktur tabelnya
3. Proses CRUD (Create, Update, Delete) terasa sangat ringan (waktu saya mencobanya menggunakan PHP)
4. Banyak website besar yang sudah menggunkan MongoDB
Membaca kelebihan dari MongoDB diatas tentunya sangat menggoda sekali agar kita segera mencoba MongoDB, namun ada beberapa hal yang harus diperhatikan yaitu:
1. MongoDB harus diinstall di sebuah server, dan ketika kita menggunakan PHP anda juga harus merestart server anda driver MongoDB anda dapat digunakan oleh PHP
2. Belum support di hosting, namun bisa diakali dengan menggunakan MongoHQ (untuk free terdapat limit sampai 16MB)


Rabu, 16 Maret 2011

Konsep manajemen proses di Sistem Operasi

Konsep Manajemen Proses pada Sistem Operasi

Secara informal, proses adalah program dalam eksekusi. Suatu proses adalah lebih dari kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada program counter dan isi dari daftar prosesor/ processor’s register. Suatu proses umumnya juga termasuk process stack, yang berisikan data temporer (seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah data section, yang berisikan variabel global. suatu program adalah satu entitas pasif, seperti isi dari sebuah berkas yang disimpan didalam disket, sebagaimana sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang mengkhususkan pada instruksi selanjutnya untuk dijalankan dan seperangkat sumber daya/ resource yang berkenaan dengannya.
Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan copy yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak copy dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian tulisan-text adalah sama, data section bervariasi. Juga adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja.
Setiap proses dalam sebuah sistem operasi mendapatkan sebuah PCB (Process Control Block) yang memuat informasi tentang proses tersebut, yaitu: sebuah tanda pengenal proses (Process ID) yang unik dan menjadi nomor identitas, status proses, prioritas eksekusi proses dan informasi lokasi proses dalam memori. Prioritas proses merupakan suatu nilai atau besaran yang menunjukkan seberapa sering proses harus dijalankan oleh prosesor. Proses yang memiliki prioritas lebih tinggi, akan dijalankan lebih sering atau dieksekusi lebih dulu dibandingkan dengan proses yang berprioritas lebih rendah. Suatu sistem operasi dapat saja menentukan semua proses dengan prioritas yang sama, sehingga setiap proses memiliki kesempatan yang sama. Suatu sistem operasi dapat juga merubah nilai prioritas proses tertentu, agar proses tersebut akan dapat memiliki kesempatan lebih besar pada eksekusi berikutnya (misalnya: pada proses yang sudah sangat terlalu lama menunggu eksekusi, sistem operasi menaikkan nilai prioritasnya).
Komunikasi antar proses
(Inter Process Communinication / IPC) :
Beberapa proses biasanya berkomunikasi dengan proses lainnya.
Contohnya pada shell pipe line : output dari proses pertama harus diberikan kepada proses ke dua dan seterusnya.
Pada beberapa sistem operasi, proses-proses yang bekerja bersama sering sharing (berbagi) media penyimpanan, dimana suatu proses dapat membaca dan menulis pada shared storage (main memory atau files).
Mekanisme proses untuk komunikasi dan sinkronisasi aksi
  • Sistem Pesan – komunikasi proses satu dengan yang lain dapat dilakukan tanpa perlu pembagian data.
  • IPC menyediakan dua operasi :
    • send(message) – pesan berukuran pasti atau variabel
    • receive(message)
    • Jika P dan Q melakukan komunikasi, maka keduanya memerlukan :
      • Membangun jalur komunikasi diantara keduanya
      • Melakukan pertukaran pesan melaui send/receive
    • Implementasi jalur komunikasi
      • physical (shared memory, hardware bus)
      • logical (logical properties)
Create and Destroyed Process
  • Pembuatan Proses (Create)
Penciptaan proses terjadi karena terdapat batch baru. SO dengan kendali batch job, setelah menciptakan proses baru, kemudian melanjutkan membaca job selanjutnya.
Penciptaan proses melibatkan banyak aktivitas, yaitu :
  • Menamai (memberi identitas) proses.
  • Menyisipkan proses pada senarai proses atau tabel proses.
  • Menentukan prioritas awal proses.
  • Menciptakan PCB.
  • Mengalokasikan sumber daya awal bagi proses.
  • Penghancuran Proses (Destroyed)
Penghancuran proses terjadi karena :
  • Selesainya proses secara normal.
  • Proses mengeksekusi panggilan layanan So untuk menandakan bahwa proses telah berjalan secara lengkap.
  • Batas waktu telah terlewati.
  • Proses telah berjalan melebihi batas waktu total yang dispesifikasikan. Terdapat banyak kemungkinan untuk tipe waktu yang diukur, termasuk waktu total yang dijalani (“walk clock time”) jumlah waktu yang dipakai untuk eksekusi, dan jumlah waktu sejak pemakai terakhir kali memberi masukan (pada proses interaktif) .
  • Memori tidak tersedia.
  • Proses memerlukan memori lebih banyak daripada yang dapat disediakan oleh sistem.
  • Pelanggaran terhadap batas memori.
  • Proses memcoba mengakses lokasi memori yang tidak diijinkan untuk diakses.
  • Terjadi kesalahan karena pelanggaran proteksi.
  • Proses berusaha menggunakan sumber daya atau file yang tidak diijinkan dipakainya, atau proses mencoba menggunakannya tidak untuk peruntukannya, seperti menulis file read only.
  • Terjadi kesalahan aritmatika.
  • Proses mencoba perhitungan terlarang, seperti pembagian dengan nol, atau mencoba menyimpan angka yang lebih besar daripada yang ddapat diakomodasi oleh H/W.
  • Waktu telah kadaluwarsa.
  • Proses telah menunggu lebih lama daripada maksimum yang telah ditentukan untuk terjadinya suatu kejadian spesfiik.
  • Terjadi kegagalan masukan/keluaran.
  • Kesalahan muncul pada masukan atau keluaran, seprti ketidakmampuan menemukan file, kegagalan membaca atau mennulis setelah sejumlah maksimum percobaan yang ditentukan (misalnya area rusak didapatkan pada tape,atau operasi tidak valid seperti membaca dari line printer).
  • Intruksi yang tidak benar.
  • Proses berusaha mengeksekusi instruksi yang tidak ada (sering sebagi akibat pencabangan ke daerah data dan berusaha mengeksekusi data tersebut).
  • Terjadi usaha memakai instruksi yang tidak diijinkan.
  • Proses berusaha mengeksekusi instruksi yang disimpan untuk SO.
  • Kesalahan penggunaan data.
  • Bagian data adalah tipe yang salah atau tidak diinisialisasi.
  • Diintervensi oleh SO atau operator.
  • Untuk suatu alasan, operator atau sistem operasi mengakhiri proses (misalnya terjadi deadlock).
  • Berakhirnya proses induk.
  • Ketika parent berakhir. So mungkin dirancannng secara otomatis mengakhiri semua anak proses dari parent itu.
  • Atas permintaan proses induk.
  • Parent process biasanya mempunyai otoritas mengakhiri suatu anak proses.
Penghancuran lebih rumit bila proses telah menciptakan proses-proses lain. Terdapat dua pendekatan, yaitu :
  • Pada beberapa sistem, proses-proses turunan dihancurkan saat proses induk dihancurkan secara otomatis.
  • Beberapa sistem lain menganggap proses anak independen terhadap proses induk Proses anak tidak secara otomatis dihancurkan saat proses induk dihancurkan.
Penghancuran proses melibatkan pembebasan proses dari sistem, yaitu :
  • Sumber daya-sumber daya yang dipakai dikembalikan.
  • Proses dihancurkan dari senarai atau tabel sistem.
  • PCB dihapus (ruang memori PCB dikembalikan ke pool memori bebas).
Threads
Sebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan.
Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk memiliki eksekusi multithreads, agar dapat dapat secara terus menerus mengetik dalam karakter dan menjalankan pengecek ejaan didalam proses yang sama. Maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari satu tugas pada satu waktu.
1.       2. Keadaan Proses
1)      Running, yaitu suatu kondisi pemroses sedang mengeksekusi instruksi. Benar-benar menggunakan CPU pada saat itu (sedang mengeksekusi instruksi proses itu).
2)      Ready, yaitu suatu kondisi proses siap dieksekusi, akan tetapi pemroses belum siap atau sibuk.
3)      Blocked, yaitu suatu proses menunggu kejadian untuk melengkapi tugasnya. Bentuk kegiatan menunggu proses yaitu : selesainya kerja dari perangkat I/Otersedianya memori yang cukup.

Transisi Status




1)      Proses di blok untuk melayani input karena sumber daya yang diminta belum tersedia / meminta layanan I/O sehingga menunggu kejadian muncul.
2)      Penjadwalan mengambil proses lain.
3)      Penjadwalan mengambil proses ini (baru).
4)      Input telah tersedia.
Implementasi Proses :
  • Untuk mengimplementasikan model proses, sistem operasi menggunakan suatu tabel / array yang disebut tabel proses dengan 1 entry per-proses.
  • Setiap entry berisi tentang : status proses, program counter, stack pointer, alokasi memori, status file, informasi schedulling / penjadwalan informasi, dll dari status kerja ke status siap.
1.       3. Penjadwalan Proses
Kriteria untuk mengukur dan optimasi kinerja penjadwalan :
a)      Adil (fairness)
Adalah proses-proses yang diperlakukan sama, yaitu mendapat jatah waktu  pemroses yang sama dan tak ada proses yang tak kebagian layanan pemroses sehingga mengalami kekurangan waktu.
b)      Efisiensi (eficiency)
Efisiensi atau utilisasi pemroses dihitung dengan perbandingan (rasio) waktu
sibuk pemroses.
c)       Waktu tanggap (response time)
Waktu tanggap berbeda untuk :
1)      Sistem interaktif
Didefinisikan sebagai waktu yang dihabiskan dari saat karakter terakhir dari . perintah dimasukkan atau transaksi sampai hasil pertama muncul di layar. Waktu tanggap ini disebut terminal response time.
2)      Sistem waktu nyata
Didefinisikan sebagai waktu dari saat kejadian (internal atau eksternal) sampai instruksi pertama rutin layanan yang dimaksud dieksekusi, disebut event response time.
d)      Turn around time
Adalah waktu yang dihabiskan dari saat program atau job mulai masuk ke sistem sampai proses diselesaikan sistem. Waktu yang dimaksud adalah waktu yang dihabiskan di dalam sistem, diekspresikan sebagai penjumlah waktu eksekusi (waktu pelayanan job) dan waktu menunggu, yaitu : Turn arround time = waktu eksekusi + waktu menunggu.
e)      Throughput
Adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu. Cara untuk mengekspresikan throughput adalah dengan jumlah job pemakai yang dapat dieksekusi dalam satu unit/interval waktu
Algoritma Penjadwalan
Berikut jenis-jenis algoritma berdasarkan penjadwalan :
1.       Nonpre-emptive, menggunakan konsep :
1.       FIFO (First In First Out) atau FCFS (First Come First Serve)
2.       SJF (Shortest Job First)
3.       HRN (Highest Ratio Next)
4.       MFQ (Multiple Feedback Queues)
5.       Pre-emptive, menggunakan konsep :
1.       RR (Round Robin)
2.       SRF (Shortest Remaining First)
3.       PS (Priority Schedulling)
4.       GS (Guaranteed Schedulling)
Algoritma Pre-emptive
1.       A. Round Robin (RR)
Merupakan :
  • Penjadwalan yang paling tua, sederhana, adil,banyak digunakan algoritmanya dan mudah diimplementasikan.
  • Penjadwalan ini bukan dipreempt oleh proses lain tetapi oleh penjadwal berdasarkan lama waktu berjalannya proses (preempt by time).
  • Penjadwalan tanpa prioritas.
  • Berasumsi bahwa semua proses memiliki kepentingan yang sama, sehingga tidak   ada prioritas tertentu.
Semua proses dianggap penting sehingga diberi sejumlah waktu oleh pemroses yang disebut kwanta (quantum) atau time slice dimana proses  itu berjalan. Jika proses masih running sampai akhir quantum, maka CPU akan mempreempt proses itu dan memberikannya ke proses lain.
Algoritma yang digunakan :
1)      Jika kwanta habis dan proses belum selesai, maka proses menjadi runnable dan pemroses dialihkan ke proses lain.
2)      Jika kwanta belum habis dan proses menunggu suatu kejadian (selesainya operasi I/O), maka proses menjadi blocked dan pemroses dialihkan ke proses lain.
3)      Jika kwanta belum habis tetapi proses telah selesai, maka proses diakhiri dan pemroses dialihkan ke proses lain.
Diimplementasikan dengan :
1)      Mengelola senarai proses ready (runnable) sesuai urutan kedatangan.
2)      Ambil proses yang berada di ujung depan antrian menjadi running.
3)      Bila kwanta belum habis dan proses selesai, maka ambil proses di ujung depan antrian proses ready.
4)      Jika kwanta habis dan proses belum selesai, maka tempatkan proses running ke ekor antrian proses ready dan ambil proses di ujung depan antrian proses ready.
Masalah yang timbul adalah menentukan besar kwanta, yaitu :
  • Kwanta terlalu besar menyebabkan waktu tanggap besar dan turn arround time rendah.
  • Kwanta terlalu kecil menyebabkan peralihan proses terlalu banyak sehingga  menurunkan efisiensi proses.
Penjadwalan ini :
  • Baik untuk sistem interactive-time sharing dimana kebanyakan waktu dipergunakan menunggu kejadian eksternal.
Contoh : text editor, kebanyakan waktu program adalah untuk menunggu keyboard, sehingga dapat dijalankan proses-proses lain.
  • Tidak cocok untuk sistem waktu nyata apalagi hard-real-time applications.
1.       B. Priority Schedulling (PS)
Adalah tiap proses diberi prioritas dan proses yang berprioritas tertinggi mendapat jatah waktu lebih dulu (running).  Berasumsi bahwa masing-masing proses memiliki prioritas tertentu, sehingga akan dilaksanakan berdasar prioritas yang dimilikinya. Ilustrasi yang dapat memperjelas prioritas tersebut adalah dalam komputer militer, dimana proses dari jendral berprioritas 100, proses dari kolonel 90, mayor berprioritas 80, kapten berprioritas 70, letnan berprioritas 60 dan seterusnya. Dalam UNIX perintah untuk mengubah prioritas menggunakan perintah nice.
Pemberian prioritas diberikan secara :
1.       Statis (static priorities)
Berarti prioritas tidak berubah.
Keunggulan :
  • Mudah diimplementasikan.
  • Mempunyai overhead relatif kecil.
Kelemahan :
  • Tidak tanggap terhadap perubahan lingkungan yang mungkin menghendaki  penyesuaian prioritas.
1.       Dinamis (dynamic priorities)
Merupakan mekanisme untuk menanggapi perubahan lingkungan sistem   beroperasi. Prioritas awal yang diberikan ke proses mungkin hanya berumur pendek setelah disesuaikan ke nilai yang lebih tepat sesuai lingkungan.
Kelemahan :
  • Implementasi mekanisme prioritas dinamis lebih kompleks dan mempunyai  overhead lebih besar. Overhead in diimbangi dengan peningkatan daya     tanggap sistem.
Dalam algoritma berprioritas dinamis dituntun oleh keputusan untuk memenuhi kebijaksanaan tertentu yang menjadi tujuan. Layanan yang bagus adalah menset prioritas dengan nilai 1/f, dimana f adalah ration kwanta terakhir yang digunakan proses.
Contoh :
  • Proses yang menggunakan 2 msec kwanta 100 ms, maka prioritasnya50.
  • Proses yang berjalan selama 50 ms sebelum blocked berprioritas 2.
  • Proses yang menggunakan seluruh kwanta berprioritas 1.
1.       C. Multiple Feedback Queues (MFQ)
Merupakan :
  • Penjadwalan berprioritas dinamis.
Penjadwalan ini untuk mencegah (mengurangi) banyaknya swapping dengan proses-proses yang sangat banyak menggunakan pemroses (karena menyelesaikan tugasnya memakan waktu lama) diberi jatah waktu (jumlah kwanta) lebih banyak dalam satu waktu. Penjadwalan ini juga menghendaki kelas-kelas prioritas bagi proses-proses yang ada. Kelas tertinggi berjalan selama satu kwanta, kelas berikutnya berjalan selama dua kwanta, kelas berikutnya berjalan empat kwanta, dan seterusnya.
Ketentuan yang berlaku adalah sebagai berikut  :
  • Jalankan proses pada kelas tertinggi.
  • Jika proses menggunakan seluruh kwanta yang dialokasikan, maka diturunkan kelas prioritasnya.
  • Proses yang masuk untuk pertama kali ke sistem langsung diberi kelas tertinggi.
Mekanisme ini mencegah proses yang perlu berjalan lama swapping berkali-kali  dan mencegah proses-proses interaktif yang singkat harus menunggu lama.
1.       D. Shortest Remaining First (SRF)
Merupakan :
  • Penjadwalan berprioritas dinamis.
  • Adalah preemptive untuk timesharing.
  • Melengkapi SJF.
Pada SRF, proses dengan sisa waktu jalan diestimasi terendah dijalankan, termasuk proses-proses yang baru tiba.
  • Pada SJF, begitu proses dieksekusi, proses dijalankan sampai selesai.
  • Pada SRF, proses yang sedang berjalan (running) dapat diambil alih proses baru dengan sisa waktu jalan yang diestimasi lebih rendah.
Kelemahan :
  • Mempunyai overhead lebih besar dibanding SJF. SRF perlu penyimpanan waktu  layanan yang telah dihabiskan job dan kadang-kadang harus menangani peralihan.
  • Tibanya proses-proses kecil akan segera dijalankan.
  • Job-job lebih lama berarti dengan lama dan variasi waktu tunggu lebih lama   dibanding pada SJF.
SRF perlu menyimpan waktu layanan yang telah dihabiskan , menambah overhead.  Secara teoritis, SRF memberi waktu tunggu minimum tetapi karena overhead peralihan, maka pada situasi tertentu SFJ bisa memberi kinerja lebih baik dibanding SRF.
1.       E. Guaranteed Scheduloing (GS)
Penjadwalan ini memberikan janji yang realistis (memberi daya pemroses yang sama) untuk membuat dan menyesuaikan performance adalah jika ada N pemakai, sehingga setiap proses (pemakai) akan mendapatkan 1/N dari daya pemroses CPU. Untuk mewujudkannya, sistem harus selalu menyimpan informasi tentang jumlah waktu CPU untuk semua proses sejak login dan juga berapa lama pemakai sedang login. Kemudian jumlah waktu CPU, yaitu waktu mulai login dibagi dengan n, sehingga lebih mudah menghitung rasio waktu CPU. Karena jumlah waktu pemroses tiap pemakai dapat diketahui, maka dapat dihitung rasio antara waktu pemroses yang sesungguhnya harus diperoleh, yaitu 1/N waktu pemroses seluruhnya dan waktu pemroses yang telah diperuntukkan proses itu.
Rasio 0,5 berarti sebuah proses hanya punya 0,5 dari apa yang waktu CPU miliki dan rasio 2,0  berarti sebuah proses hanya punya 2,0 dari apa yang waktu CPU miliki. Algoritma akan menjalankan proses dengan rasio paling rendah hingga naik ketingkat lebih tinggi diatas pesaing terdekatnya. Ide sederhana ini dapat diimplementasikan ke sistem real-time  dan memiliki penjadwalan berprioritas dinamis.
Algoritma Non Pre-emptive
1.       A. First In First Out (FIFO)
Merupakan :
  • Penjadwalan tidak berprioritas.
FIFO adalah penjadwalan paling sederhana, yaitu :
  • Proses-proses diberi jatah waktu pemroses berdasarkan waktu kedatangan.
  • Pada saat proses mendapat jatah waktu pemroses, proses dijalankan sampai selesai.
Penjadwalan ini :
  • Baik untuk sistem batch yang sangat jarang berinteraksi dengan pemakai.
Contoh : aplikasi analisis numerik, maupun pembuatan tabel.
  • Sangat tidak baik (tidak berguna) untuk sistem interaktif, karena tidak memberi waktu tanggap yang baik.
  • Tidak dapat digunakan untuk sistem waktu nyata (real-time applications).
1.       B. Shortest Job First (SJF)
Penjadwalan ini mengasumsikan waktu jalan proses sampai selesai diketahui sebelumnya. Mekanismenya adalah menjadwalkan proses dengan waktu jalan terpendek lebih dulu sampai selesai, sehingga memberikan efisiensi yang tinggi dan turn around time rendah dan penjadwalannya tak berprioritas.
Masalah yang muncul adalah :
  • Tidak mengetahui ukuran job saat job masuk.
Untuk mengetahui ukuran job adalah dengan membuat estimasi berdasarkan  kelakukan sebelumnya.
  • Proses yang tidak datang bersamaan, sehingga penetapannya harus dinamis.
Penjadwalan ini jarang digunakan, karena merupakan kajian teoritis untuk  pembandingan turn around time.
1.       C. Highest Ratio Next (HRN)
Merupakan :
  • Penjadwalan berprioritas dinamis.
  • Penjadwalan untuk mengoreksi kelemahan SJF.
  • Adalah strategi penjadwalan dengan prioritas proses tidak hanya merupakan fungsi waktu layanan tetapi juga jumlah waktu tunggu proses. Begitu proses mendapat jatah pemroses, proses berjalan sampai selesai.
Prioritas dinamis HRN dihitung berdasarkan rumus :
Prioritas = (waktu tunggu + waktu layanan ) / waktu layanan
Karena waktu layanan muncul sebagai pembagi, maka job lebih pendek berprioritas lebih baik, karena waktu tunggu sebagai pembilang maka proses yang telah menunggu lebih lama juga mempunyai kesempatan lebih bagus.
Disebut HRN, karena waktu tunggu ditambah waktu layanan adalah waktu tanggap, yang berarti waktu tanggap tertinggi yang harus dilayani.
Interupsi
Kerja prosesor pada suatu proses terhenti oleh pensaklaran konteks (perubahan kegiatan prosesor dari proses ke proses yang terjadi diantara proses sistem / proses aplikasi).
2 cara interupsi pada processor :
1.       1. Interupsi langsung
Berasal dari luar prosesor (peripheral / alat mengirim sinyal kepada prosesor untuk meminta pelayanan)
1.       2. Interupsi Tanya / Polling
Berasal dari prosesor (prosesor secara bergiliran mengecek apakah ada peripheral yang memerlukan pelayanan atau tidak)
  • Interupsi dapat di-enable dan disable tergantung pada levelnya.
  • Pembangkit interupsi dapat berasal dari :
    • Program, di dalam program telah dirancang pada bagian tertentu akan terjadi pensaklaran konteks, yang menimbulkan interupsi, contohnya pada saat penggunaan alat / prosesor secara bergantian.
    • Prosesor, prosesor sendiri dapat membangkitkan interupsi, yang biasa mengolah logika dan aritmatika. Jika melampoi ukuran tampung register di dalam prosesor, maka terjadi kekeliruan yang akan menginterupsi kerjanya sendiri dan menyerahkan kendali prosesor pada sistem operasi. Misalnya pembagian dengan bilangan nol.
    • Satuan kendali, tugas untuk melaksanakan interupsi terletak pada satuan kendali, sehingga satuan kendali dapat membangkitkan interupsi. Misalnya kekeliruan instruksi
    • Kunci waktu / clock, menggunakan interupsi berkala. Misalnya pada program looping yang tak terhingga, diinterupsi pada setiap selang waktu 60 detik.
    • Peripheral I/O, I/O jika akan bekerja memberitahukan pada prosesor dengan interupsi prosesor dan juga ketika pekerjaan selesai atau pada saat terjadi kekeliruan paritas.
    • Memori, karena terjadi kekeliruan, misalnya ketika prosesor ingin mencapai alamat memori yang terletak di luar bentangan alamat memori yang ada.
Sumber daya lain, misal dibangkitkan oleh operator sistem komputer yang mengerti cara interupsi.
î  Interupsi vector : Berisi alamat prosedur service interupsi
î  Penerimaan interupsi dan interupsi berganda : ada kalanya interupsi ditolak oleh prosesor atau interupsi yang datang tidak hanya satu sehingga diperlukan prioritas.
Tindak lanjut interupsi :
1.       1. Penata interupsi / interrupt handler
Jika terjadi interupsi, maka kendali prosesor diserahkan ke bagian penata interupsi pada sistem operasi, maka penata interupsi inilah yang melaksanakan interupsi.
1.       Instruksi yang sedang diolah oleh prosesor dibiarkan sampai selesai program.
2.       Penata interupsi merekam semua informasi proses ke dalam blok kendali proses.
3.       Penata interupsi mengidentifikasi jenis dan asal interupsi.
4.       Penata interupsi mengambil tindakan sesuai dengan yang dimaksud interupsi.
5.       Penata interupsi mempersiapkan segala sesuatu untuk pelanjutan proses yang diinterupsi.
6.       2. Penata keliru / error handler
yaitu interupsi karena kekeliruan pada pengolahan proses dan bagian pada sistem operasi yang menata kegiatan akibat kekeliruan adalah penata keliru.
1.       Pemulihan, komputer telah dilengkapi dengan sandi penemuan dan pemulihan kekeliruan, contohnya telah dilengkapi dengan sandi Hamming sehingga ketika menemukan kekeliruan sandi akan mengoreksi kekeliruan itu, proses pulih ke bentuk semula sebelum terjadi kekeliruan.
2.       Pengulangan, mengatur agar proses yang membangkitkan interupsi keliru dikerjakan ulang, jika kekeliruan dapat diatasi maka proses akan berlangsung seperti biasa, jika tidak teratasi maka interupsi akan menempuh tindak lanjut keluar dari proses.
3.       Keluar dari proses, penata keliru menyiapkan tampilan berita keliru dari monitor, setelah itu prosesor keluar dari proses, ini adalah tindakan terakhir jika tidak dapat menolong proses yang keliru tersebut.
Langkah-langkah yang dilakukan sistem operasi pada saat terjadi interupsi :
1.       hardware memasukkan program counter, dl.l.
memasukkan ke dalam stack pencacah program
1.       Hardware memuatkan (load) program counter baru dari vector interrupsi
2.       Prosedur bahasa rakitan menyimpan isi register
3.       Prosedur bahasa rakitan men-set stack yang baru
4.       Prosedur C menandai proses servis siap (ready)
5.       Scheduler / penjadwalan menentukan proses mana yang akan jalan berikutnya
6.       Prosedur C kembali ke modus bahasa rakitan
7.       Prosedur bahasa rakitan memulai proses yang sedang dilaksanakan.

referensi dari http://www.linkpdf.com/download/dl/so-2-manajemen-proses-sistem-operasi-.pdf