Showing posts with label Algoritma. Show all posts
Showing posts with label Algoritma. Show all posts

Friday, June 20, 2014

Pengertian Distributed Information Retrieval Systems

Jumlah kumpulan dokumen semakin meningkat atau membesar sehingga dengan adanya Sistem Information Retrieval Terdistribusi dapat mengatasi masalah tersebut dengan cara mendistribusikan dokumen-dokumen yang ada ke semua komputer yang ada.
Jenis khusus dari Sistem Information Retrieval Terdistribusi adalah Sistem IR Peer-to-Peer(P2P), yaitu jika informasi dapat diulang pada beberapa komputer maka tidak ada control akses

Masalah-masalah utama rekayasa informasi:
a. Mendefinisikan protokal pencarian untuk permintaan transmisi dan hasil
b. Merancang server yang dapat menerima permintaan secara efisien, memulai subproses

Masalah-masalah algoritma:
a.   Bagaimana mendistribusikan dokumen-dokumen di server pencarian yang terdistribusi
b.   Bagaiman untuk menentukan server mana yang seharusnya menerima permintaan
c.   Bagaimana menggambungkan hasil dari server yang berbeda

Distributed  Information Retrieval System menggunakan tools yang namanya Gnutella dan Napster dimana kedua tools ini memiliki sifat P2P atau Peer to Peer yaitu jika informasi dapat diulang pada beberapa komputer maka tidak ada control akses terpusat.

Saturday, January 5, 2013

Algoritma Penempatan pada Partisi Memori Dinamis

kali ini saya akan membahas mengenai algoritma penempatan yang ada pada partisi memori dinamis.. langsung aja,

terdapat 3 algoritma yang dapat digunakan

  1. First Fit
  2. Next Fit
  3. Best Fit
Sesuai dengan urutan 1 sampai 3 dilihat dari tingkat efisien nya

First Fit merupakan algoritma penempatan yang paling bagus karena paling cepat dan paling sederhana. Pencarian blok memori kosong dimulai dari awal dan blok memori yang dipilih adalah blok memori yang pertama kali ditemukan dan ukurannya sesuai

Next Fit kurang efisien dibanding First Fit karena blok memori yang sering ditemukan berada pada ujung akhir memori yang merupakan blok memori yang ukurannya paling besar. Pencarian blok memori kosong dimulai dari lokasi placement terakhir

Best Fit biasanya merupakan performasi yang dapat dikatakan paling buruk dikarenakan proses pencariannya paling lama dan membebani prosesor. Pencarian nya memilih blok memori yang paling sedikit menyisakan ruang memori

Proteksi dan Keamanan Komputer

Proteksi dan Keamanan Komputer
Daerah keamanan computer secara fisik didukung dan dikontrol otomatis secara administrative. Kita memulai dengan memeriksa tipe ancaman yang dihadapi oleh fasilitas computer komunikasi, pendekatan tradisional untuk keamanan computer, termasuk memori dan data.
Untuk memahami tipe threat dari keamanan yang ada, kita membutuhkan definisi persyaratan dari keamanan. Keamanan computer dan jaringan menekankan kepada empat persyaratan :
·      Kerahasiaan: Informasi dalam system computer hanya diakses untuk dibaca oleh pihak berkepentingan. Tipe dari akses ini termasuk pencetakan, penampilan , dan bentuk objek dari pembatasan, termasuk penampakan dari keberadaan objek.
·      Integritas : asset system computer hanya dapat dimodifikasi oleh pihak yang berwenang. Modifikasi termasuk menulis, mengubah, mengganti status, penghapusan dan pembentukan.
·      Ketersediaan : Aset system computer yang tersedia untuk pihak yang berwenang.
·      Autentifikasi : Sistem computer dapat memverifikasi identitas dari user.

Tipe dari Ancaman
Tipe penyerangan dalam keamanan system computer atau jaringan merupakan yang terbaik dikarakterisikkan dengan menampilkan fungsi system computer yang menyediakan informasi secara umum, terdapat alur informasi dari sebuah sumber, seperti sebuah file atau sebuah daerah memori utama, untuk tujuan seperti file lain atau user. Arus normal ini dinyatakan dalam empat kategori penyerangan berikut :
·      Interupsi : Aset dari system yang dihancurkan atau menjadi tidak tersedia. Ini merupakan penyerangan dari ketersediaan. Contoh penghancuran sebuah potongan hardware, seperti sebuah hard disk, potongan dari sebuah baris komunikasi atau ketidakmampuan dari system manajemen file
·      Intersepsi : Pihak yang tidak diberi wewenang mencoba akses untuk sebuah asset. Ini merupakan asset kerahasiaan. Pihak yang tidak diberi wewenang dapat berupa orang, sebuah program, array computer. Contoh termasuk penyadapan telepon untuk mendapatkan data dalam sebuah jaringan dan pengopian file atau program
·      Modifikasi : Pihak yang tidak berwenang yang tidak memiliki akses, namun menggantikan dengan sebuah asset. Ini merupakan penyerangan dari integritas. Contoh termasuk perubahan nilai dalam file data, mengubah program dan memodifikasi isi dari pesan yang sedang ditransmisikan dalam jaringan.
·      Pabrikasi : pihak yang tidak berwenang menyisipkan objek palsu dalam system. Ini termasuk penyerangan autentifikasi. Contoh termasuk penyisipan dari pesan palsu dalam jaringan atau menambahkan record dalam sebuah file.

Proteksi
Pengantar kepada multiprogramming membawa kemampuan untuk men share sumber berikut di antara user. Sharing ini melibatkan tidak hanya prosedur, namun juga :
·      Memori
·      Device I/O seperti printer dan disket
·      Program
·      Data
Kemampuan untuk menshare sumber ini memperkenalkan kebutuhan untuk proteksi yang menunjuk kepada system operasi yang dapat menawarkan proteksi terhadap spectrum berikut :
·      Isolasi : Pendekatan ini berakibat bahwa masing masing proses beroperasi terpisah dari proses lainnya dengan tidak ada sharing dan komunikasi. Masing masing proses memiliki daerah alamatnya sendiri dan objek lainnya
·      Share seluruhnya atau share tidak sama sekali : kepemilikan dari objek (misalnya file atau segmen memori) mendeklarasikan menjadi public atau private (pribadi). Dalam kasus sebelumnya, setiap proses dapat mengakses objek, berikutnya hanya pemilik proses yang dapat mengakses objek.
·      Share melalui kemampuan dinamis : Perluasan dari konsep control akses untuk memungkinkan pembentukan hak sharing untuk objek.
·      Pembatasan penggunaan objek : Bentuk proteksi ini membatasi tidak hanya akses ke sebuah objek nyang akan ditempatkan. Sebagai contoh, seorang user memungknkan untuk menampilkan sebuah dokumen yang sensitive, namun tidak mencetaknya. Contoh lain adalah user diperbolehkan untuk mengakses ke sebuah database yang menurunkan simpulan statis, namun tidak menentukan nilai data secara spesifik.
Item berikut didaftarkan secara kasat dalam urutan meningkatkan untuk kesulitan dalam implementasi, namun juga urutan meningkatkan dari kebaikan proteksi yang mereka sediakan. Sebuah system operasi dapat menyediakan tingkatan yang berbeda dari proteksi untuk objek, user , atau aplikasi yang berbeda.
          Sistem operasi menyeimbangkan kebutuhan untuk sharing yang meningkatkan utilitas dari system computer dengan kebutuhan proteksi dari sumber user individual. Dalam bagian ini kita akan memperhatikan beberapa mekanisme dari system operasi yang mendukung proteksi untuk objek ini.

Proteksi dari memori
Dalam lingkukan multiprogramming, proteksi dari memori utama adalah esensial. Perhatikan tidak hanya keamanan, namun juga fungsi dari berbagai proses yang sedang aktif. Jika satu proses dapat secara acak dituliskan dalam daerah memori proses lainnya, maka proses berikutnya akan tidak dieksekusi dengan benar.
Pembagian daerah memori dari berbagai proses mudah diselesaikan dengan sebuah skema memori virtual. Segmentasi atau paging atau kombinasi keduanya, menyediakan alat yang efektif dari pengaturan memori utama. Jika menyelesaikan isolasi yang dibutuhkan maka system operasi harus memastikan bahwa masing masing segmen atau page diakses hanya oleh proses yang ditujukan. Ini mudah untuk diarahkan dengan menyebutkan bahwa tidak ada entri yang duplikat dalam page atau table segmen.
Jika sharing diperbolehkan, maka segmen yang sama atau page dapat muncul dalam satu atau lebih table. Tiap sharing ini paling mudah untuk diseleksaikan dalam system yang mendukung segmentasi atau kombinasi dari segmentasi dan paging. Dalam kasus ini, struktur segmen adalah visible untuk aplikasi, dan aplikasi dapat mendeklarasikan secara individual untuk di share atau tidak di share. Dalam lingkungan paging murni, menjadi lebih sulit untuk mendiskriminasikan antara dua tipe memori karena struktur memori transparan untuk aplikasi.
Sebagai contoh dari dukungan software disediakan proteksi memori yang terdapat dalam mesin keluarga IBM system 370, OS/390 berjalan berhubungan dengan masing masing page dalam memori utama 7 bit penyimpanan dari control kunci, yang dapat diset oleh system operasi. Dua dari bit mengindikasikan apakah page menempati ini yang telah direferensikan dan diubah; ini digunakan oleh algoritma penggantian page. Bit sisa digunakan untuk mekanisme proteksi; 4 bit kunci akses control dan sebuah proteksi bit fetch. Prosesor mereferensikan ke sebuah memori dan DMA I/O memori harus menggunakan sebauh kunci pemadanan untuk mendapatkan izin mengakses page itu. Bit proteksi fetch mengindikasikan apakah kunci control akses diterapkan untuk ke atau baca dan tulis. Dalam prosesor, terdapat sebuah program status word (PWS), yang mengandung control informasi yang berhubungan dengan proses yang proses mencoba untuk mengakses sebuah page atau untuk mengisi sebuah operasi DMA dalam sebuah page, kunci PSCW dibandingkan dengan kode akses. Sebuah operasi tulis dilakukan hanya jika kode sesuai. Jika bit fetch di set , maka kunci PSW harus memadankan kode akses untuk operasi baca.

Penyusupan
Satu dari dua ancaman yang paling sering dipublikasikan dalam keamanan adalah penyusupan (lainnya adalah virus), yang biasanya direferensikan sebagai hacker atau cracker. Dalam studi awal penyelundupan, Andersen mengidentifikasikan tiga kelas dari penyusupan
·      Penyamaran : Seorang individu yang tidak diberi otoritas untuk menggunakan computer dan yang memasuki control akses system untuk mendapatkan sebauh account user yang legitimasi.
·      Mesfeasor : Seorang user yang diberi legitimasi untuk mengakses data, program atau sumber, untuk akses yang demikian tidak diotorisasi atau diberi otorisasi untuk akses demikian namun menyalah gunakan privasinya
·      User Clandestine : Seorang individu yang merampas control supervisor atas system dan menggunakan control ini untuk menginvasi auditing dan control akses atau untuk meneruskan kolektif audit
Penyamaran sepertinya menjadi bagian lain; penyelundupan biasanya berada di dalam; dan user clandestine dapat menjadi bagian luar dan bagian dalam.
Penyusupan menyerang berkisar dari baik ke serius. Dalam bagian baik akhir dari skala terdapat banyak manusia yang hanya menginginkan untuk memperdalam internet dan melihat apakah yang terjadi di sana. Dala  bagian yang serius secara individual siapa yang mencoba untuk membaca data privasi, melakukan modifikasi yang tidak diotorisasi ke data atau merusak system.

Software Malicious
Mungkin tipe yang paling berbahaya untuk system computer dinyatakan dalam program yang mengeksploitasi kerentanan dalam system komputasi. Dalam konteks ini, kita memerhatikan dengan program aplikasi sebagaimana halnya dengan program utilitas, secara editor dan compiler. Istilah generikan untuk penyerangan demikian adalah software malicious atau malware. Malware merupakan software yang didesain untuk mengakibatkan kerusakan atau untuk menggunakan sampai seluruh sumber diri target computer. Sangat sering untuk dinyatakan dalam penyamaran dari software yang resmi. Dalam beberapa kasus, akan menebarkan dirinya ke dalam computer lainnya melalui email atau floppy disket yang terinfeksi.
Kita memulai bagian ini dengan kilasan dari spectrum penyerangan software. Sisa dari bagian ini ditunjukan untuk virus, pertama dengan melihat dalam keberadaan dan kemudian dalam pengukurannya.



Keamanan Windows 2000
Sebuah contoh yang baik dari konsep control akses yang telah kita bahas adalah fasilitas control akses windows 2000 (W2k) yang mengeksploitasi konsep berorientasi objek untuk menyediakan sebauh kemampuan dari control akses yang fleksibel.
W2K menyediakan fasilitas control akses seragam yang diterapkan untuk proses thread, files, semaphore, windows, dan objek lainnya. Control akses dibatasi oleh dua entitas: sebuah akses token yang diasosiasikan dengan masing masing proses dan sebuah descriptor keamanan yang diasosiasikan dengan masing masing objek untuk akses antarproses yang memungkinkan.
1.    Skema Control Akses
Ketika seorang user masuk ke sebuah system W2K, W2K menggunakan sebuah skema nama / password untuk mengautentifikasi user. Jika log on diterima, sebuah proses dibentuk untuk user dan sebuah akses diasosiasikan dengan proses objek tersebut. Akses token secara rinci dijelaskan kemudian, termasuk ID keamanan (SID), yang mana identifier oleh user ini dikenal untuk system dengan tujuan keamanan. Ketika sebuah tambahan proses yang diperluas oleh user pada awal proses, objek proses yang baru menerima warisan tanda akses yang sama. Akses token bertindak untuk dua tujuan :
a.    Tetap dari seluruh informasi keamanan bersama dengan akses validasi kecepatan. Ketika proses apa pun yang berhubungan dengan akses upaya user, subsistem keamanan dapat membuat penggunaan dari token yang dihubungkan dengan proses untuk menentukan privasi akses user.
b.    Memungkinkan untuk masing masing proses memodifikasi karakteristiknya dalam cara yang terbatas tanpa mempengaruhi lainnya yang sedang berjalan dalam kepentingan dari user lainnya
Hal signifikan utama dari nomor dua adalah privasi yang dapat diasosiasikan dengan seorang user. Akses token yang mengindikasikan pribadi seorang user didapat. Secara umum, token diawali dengan masing masing privasi dalam keadaan nonaktif. Selanjutnya , jika satu dari proses membutuhkannya untuk melakukan operasi privasi, proses dapat memungkinkan untuk privasi yang tepat dan mencoba untuk akses. Akan diminati untuk tetap dalam seluruh dari informasi keamanan untuk seorang user dalam satu system, karena dalam kasus memungkinkan sebuah privasi untuk satu proses memungkinannya untuk semua.
2.    Akses Token
a.    Security ID : Mengidentifikasi seorang user secara unik terhadap seluruh sesi dalam jaringan. Ini umumnya berhubungan dengan sebuah nama log on user.
b.    Group SID : Daftar kelompok pemakai yang menjadi anggota. Sebuah group yang merupakan sekumpulan user ID yang mengidentifikasikan sebagai sebuah grup yang bertujuan untuk control akses. Masing masing grup memiliki grup SID tunggal. Akses untuk sebuah obkel dapat didefinisikandari grup SID, individual SID< atau kombinasi.
c.    Privasi : Daftar dari system layanan security sensitive yang mana user dapat dipanggil. Sebuah contoh adalah pembentukan toke. Contoh lain adalah kumpulan dari backup privasi; user dengan privasi ini diperbolehkan untuk menggunakan sebuah file tool backup yang normalnya mereka tidak dapat dibaca. Kebanyakan user akan kita memiliki privasi
d.    Default ACL : Merupakan daftar inisial proteksi yang diterapkan untuk objek membuat user. User dapat dengan langsung ACL untuk setiap objek yang memiliki atau yang mana grup miliki.
3.    Pendeskripsian keamanan
a.    Flag : Mendefinisikan tipe penjelasan keamanan (security descriptor). Flag mengindikasikan apakah atau tidak SACL dan DACI yang hadir, apakah atau tidak mereka ditempatkan dalam objek dengan sebuah mekanisme default, apakah pointer dalam pendeskripsi menggunakan pengalamatan absolut atau relative. Penjelasan relative dibutuhkan untuk objek yang ditransmisikan melalui sebuah jaringan, seperti informasi yang ditransmisikan dalam RPC.
b.    Pemilik : Pemilik objek secara umum dapat melakukan aksi apa saja dalam penjelasan keamanan, pemilik dapat secara individual atau grup dari SID. Pemilik memiliki otoritas untuk mengubah isi dari DACL.
c.    System Access Control List (SACL) : menyatakan jenis apa dari operasi dalam objek yang seharusnya membangun pesan audit. Sebuah aplikasi harus memiliki privasi yang berhubungan dalam token akses untuk membaca atau menulis dari SACL dari objek mana saja. Ini untuk menghindari aplikasi yang tidak diberi otorisasi dari pembacaan SCAL (lebih lanjut pembelajaran tidak untuk menghindari pembangun audit) atau menuliskan mereka (untuk membangun banyak audit yang mengakibatkan sebuah operasi tertentu tidak diperhatikan).
d.    Discretionaru Access Control List (DACL) : menentukan user dan grup mana yang dapat mengakses objek untuk operasi tertentu. Berisi daftar entri akses control (ACE).
Ketika sebuah objek dibentuk, pembentukan proses dapat menyatan sebagai pemilik dari SID atau kelompok SID itu sendiri dalam akses token. Proses yang dibentuk tidak dapat dinyatakan sebagai pemilik yang tidak berada dalam akses token saat ini. Selanjutnya, setiap proses yang telah diberikan hak dapat melakukan mengubah pemilik dari sebuah objek, namun sekali lagi dengan pembatasan yang sama. Alas an untuk pembatasan adalah untuk menghindarkan seorang user menutupi jalurnya setelah mencoba beberapa aksi yang tidak otorisasi
Yang paling penting 16 bit dari penyamaran mengandung bit yang diperuntukan untuk seluruh tipe dari objek . Lima dari ini dinyatan sebagai tipe akses standar :
·      Sinkronisasi : Memberikan izin untuk sinkronisasi eksekusi dengan beberapa even yang dihubungkan dengan obje. Secara khusus, objek ini dapat digunakan dalam sebuah fungsi tunggu.
·      Write_owner : Memungkinkan program untuk memodifikasi pemilik dari objek. Ini sangat bermanfaat karena pemilik objek dapat selalu berubah dari proteksi dalam objek (Pemilik tidak dapat menolak akses write DAC)
·      Write_DAC : Memungkinkan aplikasi untuk memodifikasi DACL dan proteksi dalam objek.
·      Read_Control : memungkinkan aplikasi untuk meminta query pemilik dan fiel DACL dari penjelasan keamanan objek
·      Delete : Memungkinkan aplikasi untuk menghapus objek.

Sumber : Operating SystemInternal and Design (William Stallings edisi 6) bab 14 (Computer Security
Threats) dan bab 15 (Computer Security Techniques).

Friday, November 30, 2012

Jenis Routing , Routing Statis, dan Routing dinamis

Sebelum ke jenis konfigurasi routing sebelumnya ada jenis router berdasarkan keterhubungan dengan router lain.

  • Router Global berarti semua router memiliki informasi lengkap mengenai link cost, dan topologi jaringan. Algoritma yang digunakan adalah link state
  • Decentralized berarti router tersebut hanya mengetahui link cost ke router berikutnya yang terhubung langsung dengan dirinya. Algoritma yang digunakan adalah algoritma distance vector.
Routing Statis
Routing statis merupakan protokol routing yang dilakukan secara manual dengan menambahkan rute rute di routing tabel dari setiap router
Kelebihan : tidak ada overhead proses pada router, tidak ada pengaturan bandwidht diantara router, menambah keamanan karena admin dapat memilih untuk mengizinkan akses ke network tertentu
Kerugian : admin harus benar benar mengerti internetworking pada router, menambah route pada tabel routing secara manual bila network ditambahkan, kurang valid dan sulit untuk network yang besar

Routing Dinamis
Routing dinamis secara otomatis memperbaharui tabel routing, yang mengurangi beban administrative, namun meningkatkan lalu lintas dalam jaringan yang besar dan menggunakan protokol routing.
Kelebihan : lebih mudah karena routing secara otomatis
Kerugian : membebani dalam proses proses di CPU router sehingga perlu router yang lebih handal dan mahal.

Monday, November 26, 2012

Algoritma Penjadualan Feedback (FB)

Feedback ( FB )
dalam algoritma Feedback setiap proses yang datang langsung masuk pada antrian prioritas tertinggi, sehingga langsung di eksekusi selama satu slot atau satu kuantum, jadi setiap proses yang datang selalu didahulukan karena memiliki prioritas yang tinggi, bila proses tersebut ter-preempt(tersela) oleh proses lain atau jatah waktunya habis selanjutnya dimasukkan ke dalam antrian prioritas lebih rendah ( teknik ini disebut multilevel feedback )

apa saja sih dalam pokok pembahasan Feedback ( FB )?
  • penjadualan menggunakan model preemptive
  • setiap proses mempunyai prioritas
  • nomor prioritas dapat berubah
  • setiap satu nomor prioritas disediakan antrian tersendiri
  • dalam setiap antrian digunakan algoritma FCFS, kecuali antrian untuk prioritas terendah
  • pada antrian prioritas terendah digunakan algoritma round robin
kekurangan dari algoritma Feedback (FB)
  • turn around time (TAT) proses yang panjang dapat semakin lama
  • proses yang panjang dapat mengalami starvation bila terus menerus datang proses yang baru
  • overhead tinggi
kelebihan dari algoritma Feedback (FB)
  • dapat digunakan pada kondisi dimana informasi tentang panjang proses atau perkiraan waktu eksekusi tidak diketahui
Bagaimana solusi untuk mencegah starvation?
dapat menggunakan FB dinamis dan digunakan jatah waktu eksekusi dinamis ( menggunakan kuantum 2 pangkat i )

Friday, November 23, 2012

Penjadualan Higest Response Ration Next


Highest Response Ratio Next (HRRN)
Highest response ration next merupakan algoritma yang pemilihan proses didasarkan pada rasio response tertinggi
Rasio response diperoleh dari pertandingan antara jumlah waktu tunggu ditambah perkiraan service time dengan perkiraan service time, data waktu eksekusi diperoleh dari developer atau berdasarkan rekaman sebelumnya, proses kecil akan cenderung menghasilkan rasio response besar.

Kekurangan dari response ratio next
  • Terjadi overhead akibat scheduler harus mengetahui/memperkirakan service time proses proses yang akan dieksekusi

Kelebihan dari response ratio next
  • Dapat mencegah starvation
  • Setiap proses akan mendapatkan layanan yang seimbang
  • Response time cepat


Penjadualan Algoritma Shortest Remaining Time


Shortest remaining time merupakan algortima yang eksekusi proses diatur berdasarkan perkiraan sisa waktu terkecil
Proses yang baru masuk dapat langsung dieksekusi bila total waktu eksekusinya lebih kecil daripada sisa waktu proses yang sedang running dan merupakan model preemtivenya SPN.

Kekurangan dari shortest remaining time
  • terjadi overhead akibat scheduler harus menghitung/memperkirakan sisa waktu eksekusi setiap proses untuk menentukan sisa waktu yang terkecil
  • dapat terjadi starvation pada proses yang panjang
  • proses yang panjang dikalahkan oleh proses yang kecil
Kelebihan dari shortest remaining time
  • Kualitas layanan rata rata yang diterima proses lebih baik
  • Throughput tinggi
  • Response time cepat




Penjadualan Algoritma Shortest Process Next


Shortest process next merupakan algoritma yang eksekusi proses diatur berdasarkan perkiraan ukuran proses terkecil
Kekurangan dari shortest process next
  •  scheduler harus mengetahui/memperkirakan ukuran setiap proses yang akan dieksekusi
  •  proses besar dapat mengalami starvation
  • overhead bisa tinggi

Kelebihan dari shortest process next
  •  dapat mencegah kerugian yang dialami proses kecil seperti pada FCFS
  •  throughput tinggi
  •  proses kecil mempunyai response time kecil

Penjadualan Algoritma Round Robin


Round Robin (RR)
round robin merupakan algoritma yang eksekusi proses diatur berdasarkan alokasi waktu tertentu (slot waktu ) yang di atur dengan clock interrupt, clock interrupt mengatur waktu secara periodik. Bila terjadi clock interrupt maka proses yang seddang running dimasukkan ke dalam antrian ready dan proses di antrian ready paling depan di eksekusi

kekurangan dari round robin
  • performansi lebih buruk dibanding FCFS jika ukuran slot lebih besar daripada ukuran proses terbesar
  • dapat terjadi overhead berlebihan jika ukuran setiap slot terlalu kecil
  • proses I/O bound mendapatkan waktu layanan lebih sedikit
Solusi dari kekurangan round robin
round robin dimodifikasi menjadi virtual round robin(VRR)  dengan menambahkan sebuah antrian yang disebut memory antrian auxiliary

Kelebihan dari round robin
  • dapat menghindari ketidak adilan layanan terhadap proses kecil seperti yang terjadi pada FCFS
  • respone time lebih cepat untuk proses berukuran kecil
  • dapat mencegah starvation
  • overhead kecil, jika ukuran proses rata rata lebih kecil dibanding ukuran quantum/slot

Thursday, November 22, 2012

Routing Algoritma


Routing Algoritma
Apa sih routing algoritma itu ? suatu router akan melakukan routing dan forwarding suatu data dengan tetangga router 1 , 2 , dan 3 . Kemudian router tersebut akan melakukan routing terhadap router 2, bagaimana caranya ? Routing algoritma akan membuat sebuah table local forwarding yang akan menentukan router manakah yang akan dijadikan output dari router tujuan, seperti gambar di bawah ini 


Routing algoritma memiliki 2 classification berdasarkan algoritma, algoritma tersebut adalah link state dengan distance vector algoritma, dan apakah perbedaan antara algoritma link state dengan distance vector ? untuk link state router harus memahami atau mengetahui semua informasi berkaitan topologi jaringan yang dilakukan secara broadcast antara router satu terhadap router lainnya

Pada link state memiliki dijkstra algoritma yang menentukan suatu jalur mana yang memiliki bobot terkecil dan setiap nodenya harus terpenuhi
Pada distance vector memiliki bellman-ford algoritma yang menentuhkan jalur manakah yang memiliki bobot terkecil dan setiap nodenya tidak harus terpenuhi,
Dan apa perbedaan antara dijkstra dengan bellman-ford ? ya , seperti apa yang saya sebutkan di atas bahwa dijkstra menentukan jalur mana yg memiliki bobot terkecil dengan semua node harus terpenuhi tetapi bellman-ford tidak harus terpenuhi

contoh :

menggunakan algoritma dijkstra akan didapat
dengan algoritma bellman-ford


Sumber : kurose chapter4_5th_2009 slide

Saturday, May 26, 2012

Prinsip & Konsep design

Disini saya akan share latihan untuk uas RPL besok nih , dimulai dari prinsip & konsep design.. langsung aja ke definisi design

Definisi design : Proses pendefinisian arsitektur PL, komponen, modul, antarmuka, pendekatan pengujian serta data untuk memenuhi kebutuhan yang telah ditentukan.

Model proses design
 kemudian terdapat tahap design secara umum, antara lain :
  1. Penentuan solusi
  2. Validasi solusi
  3. Memodelkan Solusi
  4. Memperbaiki dan menjabarkan solusi
Pemodelan design
  1. design data : Data design ( proses transformasi domain informasi yan dibentuk pada saat analisis menjadi struktur data yang dibutuhkan pada tahapan implementasi)
  2. design arsitektural : structure chart ( mendefinisikan relasi antar elemen" struktural yang utama dari program menjadi kerangka modular)
  3. design antarmuka : mockup / UI kasar (menjabarkan bagaimana PL dapat berkomunikasi dengan komponen lain)
  4. design prosedural : algoritma /pseudo code ( mentransformasikan elemen" struktural pada arsitektur program menjadi deskripsi prosedural dari komponen" PL )

Konsep design
  1. Abstraksi ( konsep rekayasa system pada level generalisasi tertentu)
  2. penghalusan/perbaikan ( setiap langkah design PL dilakukan refinement)
  3. modularitas (konsep yang dapat didekoposisi menjadi komponen")
  4. arsitektur perangkat lunak (mendeskripsikan PL secara keseluruhan)
  5. control hierarchy ( merepresentasikan organisasi modul")
  6. structural partitioning (struktur program harus dapat dipartisi vertikal,horizontal)
  7. data structure ( representasi dari keterhubungan logik antar elemen data)
  8. sw procedure ( penjabarak detail pemrosesan dari setiap modul)
  9. information hiding ( modul" PL harus dispesifikasikan dan didisian)
Penjabaran dari konsep design saya hanya menjabarkan dari soal ujian tahun kemarin :p , soalnya buat acuan belajar juga.. he hee

soalnya seperti ini :
berikan 3 contoh abstraksi data berikut abstraksi procedure yang dapat digunakan untuk memanipulasi data tersebut!
Jawab :
Physical level :
Memperlihatkan data & strukturnya
Conceptual level :
memperlihatkan data misalnya
data karyawan direpresentasikan
dalam beberapa file
View level :
data yang terlihat pada
hasil pengolahan dari
applikasi basis data
nah itu jawaban yang memenuhi pertanyaan di atas..
lanjut ke...

Jelaskan bagaimana keterkaitan konsep "information"hiding" (sebagai atribut dari modularitas efektif) dengan konsep "module independence". berikan contoh.
 langsung jawab bahwa :
Functional Independence, modularitas PL ditentukan
Coupling : keterkaitan antar modul dalam PL
Cohesion : keterkaitan komponen" dalam 1 modul
jadi konsep diaman informasi dalam modul tidak dapat diakses oleh modul lain yang tidak membutuhkan informasi tersebut.

Wednesday, May 16, 2012

Branch and Bound TSP java

Branch and Bound implementation TSP for Java
copy this code in the same folder or if take software like eclipse, netbeans ect. take in the same package.


Matrik.java
package branchandbound;/**
 *
 * @Rezaakhmadg
 */
public class Matrik {
int graph[][]=new int['H']['H'];
    Matrik(){
        graph['A']['A']=0;graph['A']['B']=75;graph['A']['C']=60;graph['A']['D']=50;graph['A']['E']=215;graph['A']['F']=130;graph['A']['G']=95;
        graph['B']['A']=60;graph['B']['B']=0;graph['B']['C']=60;graph['B']['D']=70;graph['B']['E']=85;graph['B']['F']=50;graph['B']['G']=135;

        graph['C']['A']=40;graph['C']['B']=55;graph['C']['C']=0;graph['C']['D']=130;graph['C']['E']=95;graph['C']['F']=100;graph['C']['G']=55;
        graph['D']['A']=40;graph['D']['B']=75;graph['D']['C']=140;graph['D']['D']=0;graph['D']['E']=45;graph['D']['F']=60;graph['D']['G']=135;
        graph['E']['A']=20;graph['E']['B']=85;graph['E']['C']=100;graph['E']['D']=40;graph['E']['E']=0;graph['E']['F']=90;graph['E']['G']=95;
        graph['F']['A']=120;graph['F']['B']=55;graph['F']['C']=110;graph['F']['D']=60;graph['F']['E']=95;graph['F']['F']=0;graph['F']['G']=65;
        graph['G']['A']=80;graph['G']['B']=135;graph['G']['C']=60;graph['G']['D']=130;graph['G']['E']=95;graph['G']['F']=60;graph['G']['G']=0;
    }

}


Matrikint.java
package branchandbound;
/**
 *
 * @Rezaakhmadg
 */
public class Matrikint {
int graphI[][]=new int[8][8];
    Matrikint(){
            graphI[1][1]=0;graphI[1][2]=75;graphI[1][3]=60;graphI[1][4]=50;graphI[1][5]=215;graphI[1][6]=130;graphI[1][7]=95;
            graphI[2][1]=60;graphI[2][2]=0;graphI[2][3]=60;graphI[2][4]=70;graphI[2][5]=85;graphI[2][6]=50;graphI[2][7]=135;
            graphI[3][1]=40;graphI[3][2]=55;graphI[3][3]=0;graphI[3][4]=130;graphI[3][5]=95;graphI[3][6]=100;graphI[3][7]=55;
            graphI[4][1]=40;graphI[4][2]=75;graphI[4][3]=140;graphI[4][4]=0;graphI[4][5]=45;graphI[4][6]=60;graphI[4][7]=135;
            graphI[5][1]=20;graphI[5][2]=85;graphI[5][3]=100;graphI[5][4]=40;graphI[5][5]=0;graphI[5][6]=90;graphI[5][7]=95;
            graphI[6][1]=120;graphI[6][2]=55;graphI[6][3]=110;graphI[6][4]=60;graphI[6][5]=95;graphI[6][6]=0;graphI[6][7]=65;
            graphI[7][1]=80;graphI[7][2]=135;graphI[7][3]=60;graphI[7][4]=130;graphI[7][5]=95;graphI[7][6]=60;graphI[7][7]=0;
    }

}


bb.java
package branchandbound;

/**
 *
 * @Rezaakhmadg
 */
public class bb {
        char hasil[];
        int idx;
}


branchbound.java
package branchandbound;
/**
 *
 * @Rezaakhmad
 */
public class branchbound {
    bb br[]= new bb[10];
    Matrik S=new Matrik();
    Matrikint Mat=new Matrikint();
    public float bound;
    public float cekbound;
    public char getMinNode(char n){
    char k='A';
    int l=999;
    for (char i='A';i<'H';i++) {
        if (S.graph[n][i]<l&&i!='A'&&S.graph[n][i]!=0){
            k=i;
            l=S.graph[n][i];
        }
    }
    return (k);
}
     public int isZero(){
        int x=1;
        for (char i='A';i<'H';i++){
            for (char j='A';j<'H';j++){
                if (S.graph[i][j]!=0) x=0;
            }
        }
        return x;
    }

     public void empty (char a,char b){
    if (a=='A'||b=='A'){
        S.graph[a][b]=0;
        S.graph[b][a]=0;
    }else{
    for (char i='A';i<'H';i++){
        if (a!='A'){
        S.graph[a][i]=0;
        S.graph[i][a]=0;
        }
        }

    }
    }

    public bb Solusi(){
    bb Brn=new bb();
    Brn.idx=0;
    Brn.hasil=new char[100];
    char p='A';
    char temp;
    Brn.hasil[Brn.idx]=p;
    Brn.idx++;
    int ketemu=0;
    while (ketemu==0){
        temp=getMinNode(p);
        Brn.hasil[Brn.idx]=temp;
        Brn.idx++;
        empty(p,temp);
        p=temp;
        if (isZero()==1){
            ketemu=1;
        }
    }
    Brn.hasil[Brn.idx]='A';
    Brn.idx++;
    return Brn;
}
    public int minDouble(char p,char c){
    int min1=999;
    int min2=999;
    int hasil=0;
    for (char i='A';i<'H';i++){
        if (i!=p&&i!=c){
            for (char j='A';j<'H';j++){
                if (S.graph[i][j]<min1&&S.graph[i][j]!=0) {
                    min2=min1;
                    min1=S.graph[i][j];
                }else if(S.graph[i][j]<min2&&S.graph[i][j]!=0){
                    min2=S.graph[i][j];
                }
            }
            if (min1==999) min1=0;
            if (min2==999) min2=0;
            hasil+=min1+min2;
            min1=999;min2=999;

        }
        }

    return hasil;
}
    public int minSingle(char p,char c){
    int min1=999;
    int min2=999;
    int hasil=S.graph[p][c]+S.graph[c][p];
        for (char i='A';i<'H';i++){
            if (S.graph[p][i]<min1&&S.graph[p][i]!=0&&i!=c) {
                min1=S.graph[p][i];
            }
            if (S.graph[c][i]<min2&&S.graph[c][i]!=0&&i!=p) {
                min2=S.graph[c][i];
            }
        }
    if (min1==999) min1=0;
    if (min2==999) min2=0;
    hasil+=min1+min2;
    return hasil;
}

    public float getBound(char p,char c){
      
    bound = ((minSingle(p,c))+(minDouble(p,c))/2);
    return bound;
}

    public void cetakSolusi(char c[],int n){
    int i=1,j=1;
    String d="A ";
    int h=0;
    int temp1=1;
    int temp2=0;
//    for (i=1;i<n;i++) {
//         System.out.print("Solusi Indeks : " +i+ "\n");
//         System.out.print("Solusi Kota   : " +c[i]+ " \n");
//       
//     }
//
// i=1;
        while (i<n){
            if (c[i]=='A' && i==n-1) break;
          
            d+=c[i]+ " ";
          
            switch (c[i]) {
            case 'A': temp2 = 1;
                     break;
            case 'B': temp2 = 2;
                     break;
            case 'C': temp2 = 3;
                     break;
            case 'D': temp2 = 4;
                     break;
            case 'E': temp2 = 5;
                     break;
            case 'F': temp2 = 6;
                     break;
            case 'G': temp2 = 7;
                     break;
            }
            System.out.print("isi  : " + temp1 + " " +temp2 + " " + c[i] + " \n");
            h+=Mat.graphI[temp1][temp2];
          
            switch (c[i]) {
            case 'A': temp1 = 1;
                     break;
            case 'B': temp1 = 2;
                     break;
            case 'C': temp1 = 3;
                     break;
            case 'D': temp1 = 4;
                     break;
            case 'E': temp1 = 5;
                     break;
            case 'F': temp1 = 6;
                     break;
            case 'G': temp1 = 7;
                     break;
            }
            i++;
          
          
              }
      
        System.out.print("Solusi : " + d + "total waktu yang dibutuhkan " + h + " \n");

    }
 
   public void branchNbound(){
    int idx=1;
    float cek=999;
    char p='A';
    char min;
    char c[];
   c=new char[20];
   float b[];
   b=new float[10];

    c[0]='A';
    while(isZero()==0){
        min='A';
        for(char i='A';i<'H';i++){
            if(i!='H'&&S.graph[p][i]!=0){
            b[i]=getBound(p,i);
            if (b[i]<cek){
                cek=b[i];
                min=i;
            }
            }
        }
        cek=999;
                c[idx]=min;
                idx++;

        empty(p,min);
        for(char i='A';i<'H';i++){
            b[i]=0;
        }
        p=min;
    }

    cetakSolusi(c,idx);
}
}



Main.java
package branchandbound;

/**
 *
 * @Rezaakhmadg
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Matrik BF =new Matrik();

        for (char x='A';x<'H';x++){
            for (char y='A';y<'H';y++){
                System.out.print(BF.graph[x][y]+" ");
            }
            System.out.println('\n');
        }

        branchbound b = new branchbound();
        bb keluaran = new bb();
//        b.branchNbound();
        keluaran = b.Solusi();
        System.out.print("Solusi studi kasus dengan algoritma Branch and Bound : \n");
        System.out.print("****************************************************** \n");
        b.cetakSolusi(keluaran.hasil, keluaran.idx);
      
    }

}

Greedy TSP in Java

Greedy Implementation for TSP in java



Matrik.java
package Greedy_TSP;
 *
 * @author Rezaakhmadg
 */
public class Matrik {
int graph[][]=new int[8][8];
    Matrik(){
            graph[1][1]=0;graph[1][2]=75;graph[1][3]=60;graph[1][4]=50;graph[1][5]=215;graph[1][6]=130;graph[1][7]=95;
            graph[2][1]=60;graph[2][2]=0;graph[2][3]=60;graph[2][4]=70;graph[2][5]=85;graph[2][6]=50;graph[2][7]=135;
            graph[3][1]=40;graph[3][2]=55;graph[3][3]=0;graph[3][4]=130;graph[3][5]=95;graph[3][6]=100;graph[3][7]=55;
            graph[4][1]=40;graph[4][2]=75;graph[4][3]=140;graph[4][4]=0;graph[4][5]=45;graph[4][6]=60;graph[4][7]=135;
            graph[5][1]=20;graph[5][2]=85;graph[5][3]=100;graph[5][4]=40;graph[5][5]=0;graph[5][6]=90;graph[5][7]=95;
            graph[6][1]=120;graph[6][2]=55;graph[6][3]=110;graph[6][4]=60;graph[6][5]=95;graph[6][6]=0;graph[6][7]=65;
            graph[7][1]=80;graph[7][2]=135;graph[7][3]=60;graph[7][4]=130;graph[7][5]=95;graph[7][6]=60;graph[7][7]=0;
    }

}


Greedy.java

package Greedy_TSP;

/**
 *
 * @Rezaakhmadg
 */
public class Greedy {
    Matrik M=new Matrik();
    int[][] hasil=new int[9][9];
    int[] solusi=new int[10];
//    char[] record=new char[100];
  
//    public char ruteKota() {
//  
//}
    public Greedy(){
      
    }
    public void showHasil(){
    String temp="";
    int row=1;
    int col=1;
    int cc=0;
    int rr=0;
    int com=0;
    int cek=2;
    int jarak=0;
    int i=0;
    int j=0;
    int ce=0;
    solusi[1]=1;
    for (i=1;i<=8;i++) {
        for (j=1;j<=8;j++) {
            hasil[i][j]=1;
         }
    }
  
    while (cek<=8) {
        if (cek>7) break;
     com=1000;
       
         col=2;
         while (col<8) {
             if (col>7) break;
             ce=0;
             if (M.graph[row][col]<com && row!=col && hasil[row][col]==1) {
                        com=M.graph[row][col];
                        cc=col;
                        ce=1;
                      
                }
           
           
             col++;
           
           
         }
//         System.out.print("Solusi hasil colom: " + cc + " com : " + com +" cek: "+ col + " row: " + row +" \n");
            jarak+=com;
             for (i=1;i<8;i++) {
                for (j=1;j<8;j++) {
                    if (j==cc) hasil[i][j]=0;
         }
    }
          
            solusi[cek]=cc;
            row=cc;
            cek++;
          
    }          
                                  
           jarak+=M.graph[cc][1];
           solusi[cek]=1;

  
    for (i=1; i<cek; i++) {
          
             switch (solusi[i]) {
                    case 1: temp = temp+ "A ";
                             break;
                    case 2: temp = temp+ "B ";
                             break;
                    case 3: temp = temp+ "C ";
                             break;
                    case 4: temp = temp+ "D ";
                             break;
                    case 5: temp = temp+ "E ";
                             break;
                    case 6: temp = temp+ "F ";
                             break;
                    case 7: temp = temp+ "G ";
                             break;
                    }
                if (i==cek-1){
             System.out.print("Solusi : " + temp + "total waktu yang dibutuhkan " + jarak + " \n");
                }
              
    }
  
  
}
  
  
}
 


Main.java
package Greedy_TSP;

/**
 *
 * @Rezaakhmadg
 */
public class Main {

    /**
     * @param args the command line arguments
     */
        public static void main(String[] args) {
        // TODO code application logic here
//        Matrik baru =new Matrik();
//
//        for (char x='A';x<'H';x++){
//            for (char y='A';y<'H';y++){
//                System.out.print(BF.graph[x][y]+" ");
//            }
//            System.out.println('\n');
//        }

        Greedy g = new Greedy();
//        bb keluaran = new bb();
//        keluaran = b.Solusi();
        System.out.print("Solusi studi kasus dengan algoritma Greedy : \n");
        System.out.print("****************************************************** \n");
        g.showHasil();
      
    }

}

Friday, March 30, 2012