Rabu, 01 Februari 2012

contoh jurnal


PEMBUATAN WEBSITE PERCETAKAN

Oleh :
Angelina Vendy Anindita
Mila Dwi Putri
Novi Karlina
Nurmalita Rahayu
Wahab
Yuliyanni

Jurusan Sistem Informasi
Fakultas Ilmu Komuter dan Teknologi Informatika, Universitas Gunadarma
Kata Kunci : Website, Internet

ABSTRAKSI

Di zaman modern ini penggunaan internet sebagai sumber informasi dan pemenuhan kebutuhan menjadikan masyarakat banyak mencari informasi kebutuhannya melaui internet. Dengan browsing misalnya, seseorang dapat mencantumkan apa yang ingin ia ketahui dan dapatkan. Internet akan menyodorkan informasi-informasi yang anda butuhkan. Dan dengan adanya internet manusia juga ingin mendapatkan kemudahan untuk mendapatkan apa yang mereka butuhkan.
Oleh karena itu penulis berusaha membuat website percetakan ini agar para pengunjung situs yang ingin mengetahui dan memesan barang tentang percetakan akan melihat website ini, dan menemukan kemudahan di dalamnya. Sehingga percetakan ini tidak kehilangan pelanggan yang selalu ingin mencari kemudahan untuk mendapatkan pesanan barang yang diinginkan. Dan dengan adanya website ini percetakan juga dapat bersaing dengan percetakan yang lainnya, karena melalui website ini percetakan dapat meningkatkan kualitas percetakan dalam memberikan kemudahan kepada pelanggannya.
Permasalahan yang diangkat pada penulisan ilmiah kali ini adalah dengan membuat sebuah website yang bersifat dinamis. Website ini dibuat dengan menggunakan bahasa pemrograman PHP.





PENDAHULUAN

Latar Belakang

            Percetakan merupakan salah satu jenis usaha yang menarik untuk dijalankan dan memiliki berbagai bidang yang terdapat di dalamnya. Percetakan merupakan usaha yang banyak diminati oleh masyarakat yang ingin memiliki usaha, baik dalam skala besar maupun skala kecil.
            Percetakan yang umum dan banyak dipesan ialah untuk mencetak kop surat, memo, agenda, kalender, brosur, dan sebagainya. Karena pencetakan hal-hal tersebut dilakukan secara terus-menerus, dan dalam suatu instansi harus selalu tersedia sebelum barang habis. Maka pada dasarnya usaha percetakan mudah untuk dijalankan, terutama apabila sudah mendapatkan kepercayaan dari para pelanggan. Percetakan ini merupakan salah satu bidang usaha percetakan yang besar dan sudah mempunyai banyak pelanggan dari dalam kota maupun luar kota. Dalam usahanya percetakan ini juga melakukan pemesanan yang bisa dipesan di website sehingga mempermudah pemesanan dan disertai pengiriman langsung ke tempat pemesan. Meskipun usaha percetakan di Indonesia sudah sangat banyak namun kepercayaan pelanggan terhadap perusahaan percetakan tidak sembarangan. Karena pelanggan memperhatikan kualitas yang baik dan hasil yang memuaskan. Dan karena permintaan para pelanggan untuk memudahkan pemesanan barang yang diinginkan, hal inilah yang melatarbelakangi “Pembuatan Website Percetakan” agar dapat memberikan informasi bagi user yang belum mengetahui percetakan ini dan memudahkan user yang sudah menjadi member dalam memesan barang.







METODOLOGI PENULISAN

            Metode penulisan yang digunakan dalam Penulisan Ilmiah ini ialah:
Pengumpulan Data:
            Dalam pengumpulan data, metode yang digunakan dalam penulisan ini yaitu Studi Pustaka, denggan mempelajari dan membaca buku-buku tentang pembuatan website yang menunjang penulisan ini serta referensi yang akan menunjang pembahasan.

Analisis Data:
            Membahas tentang keterkaitan antar data-data yang diperoleh dengan masalah yang ada kemudian menyelesaikannya. Dan juga menganalisa proses serta hasil penyelesaiannya.

Perancangan :
Pada tahapan rancangan penulis merancang web, storyboard, struktur navigasi, script sebuah aplikasi dengan menggunakan PHP. Selain itu program aplikasi ini memungkinkan penggunaan database MySQL serta webserver Appserv.

Uji Coba :
Penulis melakukan uji coba terhadap rancangan aplikasi tersebut kepada para sebagian user, agar mendapatkan masukkan atau kekurangan dari pengujian awal atau uji coba. Yaitu uji coba dilakukan untuk melihat perkembangan terakhir dari aplikasi yang dibuat. Untuk melakukan uji coba hanya dengan cara meng-klik link yang tersedia pada aplikasi yang telah dibuat.






TINJAUAN PUSTAKA


Pengenalan Website
            Website adalah suatu kumpulan dokumen Hyper Text Markup Language (HTML) pribadi atau sebuah perusahaan dalam web server. Sebuah web server dapat berisi lebih dari satu situs. Web server adalah perangkat keras dan perangkat lunak yang dipakai untuk menyimpan dan mengirim dokumen HTML untuk digunakan dalam World Wide Web (WWW). WWW adalah service internet yang dapat me-link ke dokumen multimedia bersama Hyper Text. Pemakai dapat berpindah antar dokumen dengan menggunakan link untuk melihat text, grafik, video dan media lainnya.

Pengklasifikasian Situs Web
            Situs web dapat diklasifikasikan berdasarkan isinya (Website Content) yang terdiri dari dua jenis, yaitu:
1.      Situs web Statis (Static website), yaitu situs web yang isinya bersifat statis. Situs ini sangat cocok untuk perusahaan berskala kecil yang ingin memberikan informasi singkat mengenai keberadaan perusahaan, produk atau jasa yang diberikan. Kelemahan situs web jenis ini adalah isi situs web yang sifatnya statis dan apabila terjadi perubahan isi situs atau penambahan halaman situs, pemilik situs harus melakukan perubahan isi atau menambah halaman situs web secara manual.
2.      Situs web Dinamis (Dinamis website), yaitu situs web yang isi dan tampilannya disimpan dalam suatu database sehingga untuk melakukan perubahan atau penambahan halaman situs, pemilik hanya perlu melakukan perubahan atau penambahan data melalui interface berbasis situs web yang telah disediakan. Situs ini sangat cocok perusahaan berskala menengah dan besar yang ingin memberikan informasi terbaru bagi konsumen atau pengunjung situs webnya. Kelebihan situs web ini adalah isinya yang akan menjadi semakin lengkap dengan berjalannya waktu karena semua isi situs web disimpan dalam suatu system manajemen database yang rapi.

Sistem Informasi
Sistem informasi adalah kumpulan elemen yang saling berhubungan satu sama lain yang membentuk satu kesatuan untuk mengintegrasikan data, memproses dan menyimpan serta mendistribusikan informasi (Sutedjo, 2002). Sistem informasi adalah suatu tipe khusus dari sistem kerja yang fungsi internalnya terbatas pada pemrosesan informasi dengan melakukan enam tipe operasi: menangkap (capturing), mentransmisikan (transmitting), menyimpan (storing), mengambil (retrieving), memanipulasi (manipulating), dan menampilkan (displaying) informasi (Jogiyanto, 2007). Menurut Eko (2000), sistem informasi merupakan suatu kumpulan dari komponenkomponen dalam perusahaan atau organisasi yang berhubungan dengan proses penciptaan dan pengaliran informasi.


PEMBAHASAN

Identifikasi Masalah
                  Percetakan merupakan salah satu jenis usaha yang sangat menjanjikan bagi masyarakat. Terutama bagi mereka yang memiliki keahlian dalam mendesain suatu objek dan berkreativitas, menggabungkan warna menjadi satu kesatuan yang harmonis dan enak dilihat. Karena banyak sekali pengangguran di Indonesia, oleh karena itu dengan adanya usaha percetakan dapat menambah lapangan usaha yang baik. Selain itu usaha percetakan yang besar dan sudah memiliki pelanggan tetap dapat menghasilkan omset yang sangat memuaskan.
                  Percetakan besar dan sudah memiliki kepercayaan dari para pelanggan biasanya selalu dijadikan tempat untuk berhubungan bisnis. Sementara itu pelanggan tidak selalu memiliki waktu untuk mengurus satu bidang saja. Pelanggan pasti ingin selalu mencari kemudahan untuk berinteraksi, yang tetap dapat berhubungan kapanpun dan dimanapun tanpa harus menyisihkan waktu untuk datang ke tempat percetakan. Kualitas yang baik, kemiripan hasil dengan yang diinginkan, ketepatan waktu pengiriman, dan kemudahan dalam pemesanan itulah yang menjadi daya tarik bagi para pelanggan untuk mempercayakan pesanannya pada suatu percetakan. Dan hal itulah yang harus dicapai oleh suatu percetakan agar tetap dapat bertahan dalam dunia persaingan bisnis dewasa ini.
                  Dari analisis tersebut di atas, maka penulis mencoba menulis “Pembuatan Website Percetakan Menggunakan PHP dan MySQL” agar dapat meningkatkan promosi percetakan ini dan juga dapat mempermudah pelanggan baik dari dalam kota maupun luar kota untuk tetap dapat memesan barang sesuai kebutuhan mereka dengan mudah dan cepat.

Usulan Pemecahan Masalah
Sejalan dengan identifikasi masalah yang telah kami uraikan, kami bermaksud untuk membantu pihak  percetakan dalam menyusun sistem informasi manajemen yang meliputi:
  1. Sistem dan Perangkat Iunak (system software)
  2. Perangkat keras (system hardware)
  3. Sumberdaya manusia (system brainware)

Perancangan Program
Ada beberapa program yang sangat penting agar aplikasi system informasi percetakan ini dapat berjalan. Diantaranya adalah Koneksi database, penambahan database, pengubahan database, penghapusan database.

Daftar Menu
Menu pada Website Percetakan terdiri dari 4 menu utama antara lain :
1.      Home
2.      Produk
3.      About
4.      Pembayaran
Memahami Kerja Sistem
Keunggulan Sistem Buatan Kami :
1.      Memiliki tampilan (interface) yang menarik.
2.      Memberikan kemudahan akses untuk pengguna
3.      Menu pada website mudah digunakan
4.      Memberikan informasi barang yang dapat di pesan dilengkapi gambar.

Fitur Sistem
      Aplikasi yang kami buat mempunyai fitur sebagai berikut :
  1. Tampilan aplikasi user friendly, artinya aplikasi dapat digunakan dengan mudah oleh orang awam sekalipun.
  2. Data diinput dapat di kategorikan berdasarkan ketentuan yang berlaku
  3. Menggunakan database MYSQL sehingga dapat di penyimpanan data dapat lebih terinci.

Kebutuhan Staf Pendukung
1.     Programmer database
2.     Progammer aplikasi
3.     Desain grafis
4.     Analis software
5.     Network Engineer
6.     Security System

Uraian Tugas Tenaga Ahli.
  1. Tim Leader
  2. Programmer database
  3. Progammer aplikasi
  4. Desain grafis
  5. Analis software
  6. Network Engineer
  7. Security System

Rencana Kerja
  1. Tahap persiapan
  2. Tahap rancangan
  3. Tahap Pembuatan
  4. Tahap pemeriksaan software dan sistem
  5. Tahap Training
  6. Tahap Monitoring

Menganalisis Sistem
Gambaran Sistem
            Website Percetakan merupakan aplikasi berbasis web yang dibuat untuk memenuhi kebutuhan pelanggan untuk pemesanan produk. Sehingga dengan adanya website percetakan ini kebutuhan akan adanya informasi yang cepat, tepat, handal serta murah dapat dilakukan dengan baik.
Website Percetakan ini adalah sebuah aplikasi yang berfungsi sebagai pemberi jasa, layanan, dan informasi yang menyatukan banyak proses. Proses-proses yang dipadukan di sini antara lain adalah :
1.    PENDAFTARAN MEMBER
2.    INPUT PRODUK
3.    PEMESANAN
4.    PEMBAYARAN









TAMPILAN PROTOTYPE

Tampilan Halaman Website Index

Tampilan Halaman Website Home




Tampilan Halaman Website Produk Bukan Member

Tampilan Halaman Website Produk Member




Tampilan Halaman Website Beli

Tampilan Halaman Website About

Tampilan Halaman Website Pembayaran


Tampilan Halaman Produk Admin
Tampilan Halaman Website Daftar Pesanan Admin

Tampilan Halaman Website Input Produk Admin



Tampilan Halaman Website Members Admin



Tampilan Halaman Website Input Member Admin

KESIMPULAN

Dari pembahasan bab-bab sebelumnya, maka dapat diambil kesimpulan bahwa PHP dan MySql dapat dijadikan suatu alternatif  dalam pembuatan aplikasi berbasis web. PHP dan MySql dapat digunakan untuk pemula yang ingin membuat website dinamis.
         Akan lebih baik apabila pemrogram pemula yang ingin membuat aplikasi berbasis website memiliki pengetahuan tentang HTML, walaupun sekarang tanpa HTML pun pemrogram dapat membuat aplikasi berbasis website, karena dasar dari pembuatan aplikasi berbasis website ini adalah skrip HTML.
         Dengan adanya aplikasi berbasis website ini, diharapkan agar dapat memudahkan user yang sudah mendaftarkan diri sebagai member dalam memesan suatu barang, khususnya pelanggan yang memiliki kesibukan dan berada di tempat yang jauh dari lokasi Percetakan ini. Dan juga diharapkan dengan adanya website ini dapat semakin meningkatan mutu dan kualitas percetakan untuk melayani pelanggan. Pengujian website ini dilakukan secara offline.

DAFTAR PUSTAKA


Abdul Kadir, Dasar Pemrograman Web Dinamis Dengan Menggunakan PHP, Andi Offset, Yogyakarta, 2008.
Bunafit Nugroho, Membuat Sistem Informasi Penjualan Berbasis Web dengan PHP dan MySQL, Gava Media, Yogyakarta, 2008.
Bunafit Nugroho, Membuat Website Sendiri Dengan PHP-MySQL, Mediakita, Jakarta, 2009.
Sutarman, Membangun Aplikasi Web dengan PHP dan MySQL Edisi 2, Graha Ilmu, Yogyakarta, 2007.

thread (PROSES)


PROSES
Konsep Proses
Sebuah proses adalah suatu program yang sedang dieksekusi. Proses lebih dari sebuah kode program tetapi juga mencakup program counter, stack, dan sebuah data section. Seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalakan beberapa task secara bersamaan walaupun otaknya hanya satu.
Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Sedangkan multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen.

Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:

1.      Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara  thread yang lain berusaha menampilkan gambar.
2.       Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan
berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
3.      Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.
4.      Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.

De…nisi Proses

Secara tidak langsung, proses merupakan program yang sedang dieksekusi. Menurut Silberschatz, suatu proses adalah lebih dari sebuah kode program, yang terkadang disebut text section. Proses jugamencakup program counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang akan dieksekusi selanjutnya dan register. Sebuah proses pada umumnya juga memiliki sebuah stack yang berisikan data-data yang dibutuhkan selama proses dieksekusi seperti parameter metoda, alamat return dan variabel lokal, dan sebuah data section yang menyimpan variabel global.
Sama halnya dengan Silberschatz, Tanenbaum juga berpendapat bahwa proses adalah sebuah program yang dieksekusi yangmencakup program counter, register, dan variabel di dalamnya. Kami tekankan bahwa program itu sendiri bukanlah sebuah proses; suatu program adalah satu entitas pasif; seperti isi dari sebuah berkas yang disimpan didalam disket. Sedangkan sebuah proses dalam suatu entitas aktif, dengan sebuah program counter yang menyimpan alamat instruksi selanjut yang akan dieksekusi dan seperangkat sumber daya (resource) yang dibutuhkan agar sebuah proses dapat dieksekusi.
Untuk mempermudah kita membedakan program dengan proses, kita akan menggunakan analogi yang diberikan oleh Tanenbaum. Misalnya ada seorang tukang kue yang ingin membuat kue ulang tahun untuk anaknya. Tukang kue tersebut memiliki resep kue ulang tahun dan bahan-bahan yang dibutuhkan untuk membuat kue ulang tahun di dapurnya seperti: tepung terigu, telur, gula, bubuk vanila dan bahan-bahan lainnya. Dalam analogi ini, resep kue ulang tahun adalah sebuah program, si tukang kue tersebut adalah prosesor (CPU), dan bahan-bahan untuk membuat kue tersebut adalah data input. Sedangkan proses-nya adalah kegiatan sang tukang kue untuk membaca resep, mengolah bahan, dan memanggang kue tersebut.
Walau dua proses dapat dihubungkan dengan program yang sama, program tersebut dianggap dua urutan eksekusi yang berbeda. Sebagai contoh, beberapa pengguna dapat menjalankan salinan yang berbeda pada mail program, atau pengguna yang sama dapat meminta banyak salinan dari program editor. Tiap-tiap proses ini adakah proses yang berbeda dan walau bagian text-section adalah sama, data section-nya bervariasi. Adalah umum untuk memiliki proses yang menghasilkan banyak proses begitu ia bekerja.

Status Proses

Bila sebuah proses dieksekusi, maka statusnya akan berubah-ubah. Status dari sebuah proses mencerminkan aktivitas atau keadaan dari proses itu sendiri. Berikut ini adalah status-status yangmungkin dimiliki sebuah proses menurut Tanenbaum:
  • Running: pada saat menggunakan CPU pada suatu waktu.
  •  Ready: proses diberhentikan sementara karena menunggu proses lain untuk dieksekusi.
  • Blocked: tidak dijalankan sampai event dari luar, yang berhubungan dengan proses tersebut terjadi.
Sedangkan menurut Silberschatz, terdapat lima macam jenis status yang mungkin dimiliki oleh suatu proses:
ü  New: status yang dimiliki pada saat proses baru saja dibuat.
ü  Running: status yang dimiliki pada saat instruksi-instruksi dari sebuah proses dieksekusi.
ü   Waiting: status yang dimiliki pada saat proses menunggu suatu event (contohnya: proses I/O).
ü  Ready: status yang dimiliki pada saat proses siap untuk dieksekusi oleh prosesor.
ü   Terminated: status yang dimiliki pada saat proses telah selesai dieksekusi.
Nama-nama tersebut adalah berdasar opini, istilah tersebut bervariasi di sepanjang sistem operasi. Keadaan yang mereka gambarkan ditemukan pada seluruh sistem. Namun, pada sistem operasi tertentu lebih baik menggambarkan keadaan/status proses. Penting untuk diketahui bahwa hanya satu proses yang dapat berjalan pada prosesor mana pun pada satu waktu. Namun, banyak proses yang dapat berstatus ready atau waiting. Keadaan diagram yang berkaitan dengan keadaan tersebut dijelaskan pada gambar berikut.
Ada tiga kemungkinan bila sebuah proses memiliki status running:


  • Jika program telah selesai dieksekusi maka status dari proses tersebut akan berubah menjadi Terminated.
  •  Jika waktu yang disediakan oleh OS untuk proses tersebut sudah habis maka akan terjadi interrupt dan proses tersebut kini berstatus Ready.
  •  Jika suatu event terjadi pada saat proses dieksekusi (seperti ada request I/O) maka proses tersebut akan menunggu event tersebut selesai dan proses berstatus Waiting.

Proses Control Block

Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesi…k, termasuk hal -hal di bawah ini:
  • Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
  • Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan
proses tersebut berjalan/bekerja dengan benar setelahnya. Tiap proses digambarkan dalam sistem operasi oleh sebuah process control block (PCB) - juga disebut sebuah control block. Sebuah PCB ditunjukkan dalam berikut. PCB berisikan banyak bagian dari informasi yang berhubungan dengan sebuah proses yang spesi…k, termasuk hal-hal di bawah ini:
  • Status proses: status mungkin, new, ready, running, waiting, halted, dan juga banyak lagi.
  • Program counter: suatu stack yang berisi alamat dari instruksi selanjutnya untuk dieksekusi untuk proses ini.
  • CPU register: Register bervariasi dalam jumlah dan jenis, tergantung pada rancangan komputer. Register tersebut termasuk accumulator, register indeks, stack pointer, general-purposes register, ditambah code information pada kondisi apa pun. Beserta dengan program counter, keadaan/status informasi harus disimpan ketika gangguan terjadi, untuk memungkinkan proses tersebut berjalan/bekerja dengan benar setelahnya.
  • Informasi managemen memori: Informasi ini dapat termasuk suatu informasi sebagai nilai dari dasar dan batas register, tabel page/halaman, atau tabel segmen tergantung pada sistem memori yang digunakan oleh sistem operasi.
  • Informasi pencatatan: Informasi ini termasuk jumlah dari CPU dan waktu riil yang digunakan, batas waktu, jumlah akun jumlah job atau proses, dan banyak lagi.
  • Informasi status I/O: Informasi termasuk daftar dari perangkat I/O yang di gunakan pada proses ini, suatu daftar berkas-berkas yang sedang diakses dan banyak lagi.
  • PCB hanya berfungsi sebagai tempat penyimpanan informasi yang dapat bervariasi dari proses yang satu dengan yang lain.


Thread

Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter, register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu.
Banyak perangkat lunak yang berjalan pada PC modern dirancang secara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gam bar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.


STATUS PROSES
Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server Dapat mempunyai ratusan klien yangmengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.
Java mempunyai pengunaan lain dari thread. Perlu diketahui bahwa Java tidak mempunyai konsep asynchronous. Sebagai contohnya kalau program java mencoba untuk melakukan koneksi ke server maka ia akan berada dalam keadaan block state sampai koneksinya jadi (dapat dibayangkan apa yang terjadi apabila servernya mati). Karena Java tidak memiliki konsep asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap waktu (misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi ke server, kalau thread tersebutmasih dalam keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke server.

Keuntungan Thread

Keuntungan dari program yang multithreading dapat dipisah menjadi empat kategori:

  1. Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
  2. Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
  3. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan context switch thread.
  4. Utilisasi arsitektur multiprocessor: Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu -satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).

User dan Kernel Thread

User Thread
User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadualan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur. Tetapi user threadmempunyai kelemahan yaitu apabila kernelnyamerupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX Pthreads, Mach C-threads, dan Solaris threads.

Kernel Thread
Kernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space. Karena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkunganmultiprocessor, kernel dapatmenjadual thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung kernel thread adalah Windows NT, Solaris, Digital UNIX.



Multithreading Model

Many to one Model
Many-to-One model memetakan banyak user-level thread ke satu kernel thread. Pengaturan thread dilakukan di user space, oleh karena itu ia e…sien tetapi ia mempunyai kelemahan yang sama dengan user thread. Selain itu karena hanya satu thread yang dapat mengakses thread pada suatu waktu makamultiple thread tidak dapat berjalan secara pararel pada multiprocessor. Userlevel thread yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Many-to-One model.

One to one Model
One-to-Onemodel memetakan setiap user thread ke kernel thread. Ia menyediakan lebih banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan pembuatan kernel thread. Karena pembuatan thread dapat menurunkan performa dari sebuah aplikasi maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem operasi yang mendukung One-to-One model adalah Windows NT dan OS/2.

Many to many Model
Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread dapat spesi…k untuk sebagian aplikasi atau sebagian mesin. Many-to-One model mengizinkan developer ntuk membuat user thread sebanyak yang iamau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadual oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.


Fork dan Exec System Call

Ada dua kemungkinan dalam system UNIX jika fork dipanggil oleh salah satu thread dalam proses:
  • Semua thread diduplikasi.
  • Hanya thread yang memanggil fork.

Kalau thread memanggil exec System Call maka program yang dispesi...kasi di parameter exec akan mengganti keseluruhan proses termasuk thread dan LWP. Penggunaan dua versi dari fork di atas tergantung dari aplikasi. Kalau exec dipanggil seketika sesudah fork, maka duplikasi seluruh thread tidak dibutuhkan, karena program yang dispesi…kasi di parameter exec akan mengganti seluruh proses. Pada kasus ini cukup hanya mengganti thread yang memanggil fork. Tetapi jika proses yang terpisah tidak memanggil exec sesudah fork maka proses yang terpisah tersebut hendaknya menduplikasi seluruh thread.

Cancellation

Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan Java Virtual Machine (JVM) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh dahulu. Thread yang akan diberhentikan biasa disebut target thread.

Pemberhentian target thread dapat terjadi melalui dua cara yang berbeda:

  • Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
  • Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.

Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akanmengambil kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang diberhentikan.
Alternatifnya adalah dengan menggunakan de¤ered cancellation. Cara kerja dari de¤ered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target threadmemeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia dapat diberhentikan secara aman yang aman. Pthreadmerujuk tersebut sebagai cancellation points.

Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan deferred cancellation.
Penanganan Sinyal

Sebuah sinyal digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal.
  • Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama.
  • Sebuah sinyal dimunculkan oleh kejadian dari suatu persitiwa.
  • Sinyal yang dimunculkan tersebut dikirim ke proses.
  • Sesudah dikirim, sinyal tersebut harus ditangani.

Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secarai ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. Contoh dari sinyal asynchronous misalnya kitamengirimkan sinyal untuk mematikan proses dengan keyboard (ALT-F4)maka sinyal asynchronous dikirim ke proses tersebut. Jadi ketika suatu sinyal dimunculkan oleh peristiwa diluar proses yang sedang berjalan maka proses tersebut menerima sinyal tersebut secara asynchronous. Setiap sinyal dapat ditangani oleh salah satu dari dua penerima sinyal:

  • Penerima sinyal yang merupakan set awal dari sistem operasi.
  • Penerima sinyal yang dide…nisikan sendiri ole user.

Penanganan sinyal pada program yang hanya memakai thread tunggal cukup mudah yaitu hanya dengan mengirimkan sinyal ke prosesnya. Tetapi mengirimkan sinyal lebih rumit pada program yang multithreading, karena sebuah proses dapat memiliki beberapa thread. Secara umum ada empat pilihan kemana sinyal harus dikirim:

  • Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.
  • Mengirimkan sinyal ke setiap thread pada proses tersebut.
  • Mengirimkan sinyal ke thread tertentu dalam proses.
  • Menugaskan thread khusus untuk menerima semua sinyal yang ditujukan pada proses.

Cara untuk mengirimkan sebuah sinyal tergantung dari jenis sinyal yang dimunculkan. Sebagai contoh sinyal synchronous perlu dikirimkan ke thread yang memunculkan sinyal tersebut bukan thread lain pada proses tersebut. Tetapi situasi dengan sinyal asynchronous menjadi tidak jelas. Beberapa sinyal asynchronous seperti sinyal yang berfungsi untuk mematikan proses (contoh: alt-f4) harus dikirim ke semua thread. Beberapa versi UNIX yang multithreading mengizinkan thread menerima sinyal yang akan ia terima dan menolak sinyal yang akan ia tolak. Karena itu sinyal asynchronouns hanya dikirimkan ke thread yang tidak memblok sinyal tersebut. Solaris 2 mengimplementasikan pilihan ke-4 untuk menangani sinyal. Windows 2000 tidak menyediakan fasilitas untuk mendukung sinyal, sebagai gantinya Windows 2000 menggunakan asynchronous procedure calls (APCs). Fasilitas APC memperbolehkan user thread untuk memanggil fungsi tertentu ketika user thread menerima noti…kasi peristiwa tertentu.
           




Thread Pools

Pada web server yang multithreading ada dua masalah yang timbul:
  • Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.
  • Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.

Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas.

Keuntungan thread pool:
  • Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat.
  • Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistemyang tidak dapatmendukung banyak thread yang berjalan secara concurrent. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori …sik, dan jumlah permintaan klien yang concurrent.