Monday, August 21, 2023

Create Auto Translate On Discord

Di blog ini, kita akan membahas tentang cara membuat bot yang dapat melakukan terjemahan otomatis di platform Discord. Fitur ini dapat sangat berguna dalam server yang memiliki anggota dari berbagai bahasa yang berbeda.



Langkah 1: Persiapan Awal


Sebelum kita mulai, pastikan Anda memiliki:


1. Akun Discord:Anda perlu memiliki akun Discord untuk dapat mengakses server dan membuat bot.


2. Akun Developer Discord: Anda harus membuat aplikasi dan bot di portal pengembang Discord. (https://discord.com/developers/applications)


3. Pengetahuan Dasar tentang Coding:Untuk langkah-langkah lebih teknis, pengetahuan dasar tentang pemrograman dan JavaScript akan sangat membantu.


Langkah 2: Membuat Aplikasi dan Bot di Developer Portal


1. Masuk ke Developer Portal: Kunjungi https://discord.com/developers/applications dan masuk dengan akun Discord Anda.


2. Buat Aplikasi Baru: Klik tombol "New Application" dan beri nama aplikasi Anda (misalnya, "AutoTranslateBot").


3. Buat Bot: Di panel navigasi sebelah kiri, klik "Bot" dan kemudian "Add Bot". Konfirmasikan saat diminta.


Langkah 3: Undang Bot ke Server Anda


1. Mengambil Token Bot: Di halaman bot Anda, di bawah bagian "TOKEN", klik "Copy" untuk menyalin token bot Anda. Jangan pernah membagikan token ini dengan siapa pun.


2. Undang Bot ke Server: Di halaman "OAuth2" pada portal pengembang, pilih "bot" di bagian "Scopes". Kemudian pilih izin yang dibutuhkan untuk bot Anda. Salin URL yang dihasilkan dan buka di jendela browser baru. Pilih server tempat Anda ingin mengundang bot, lalu klik "Authorize".


Langkah 4: Mengatur Lingkungan Pengembangan


1. Instal Node.js: Jika belum terpasang, unduh dan pasang Node.js dari https://nodejs.org/.


2. Inisialisasi Proyek: Buat direktori baru untuk proyek Anda. Buka terminal dan arahkan ke direktori tersebut. Jalankan perintah `npm init` untuk menginisialisasi proyek Node.js baru.


3. Instalasi Modul Discord.js: Jalankan perintah berikut untuk menginstal pustaka Discord.js:

   ```

   npm install discord.js

   ```


Langkah 5: Kode Bot Auto Translate


Berikut adalah contoh sederhana bagaimana bot dapat menerjemahkan pesan otomatis menggunakan API terjemahan seperti Google Translate. Anda perlu menyesuaikannya sesuai kebutuhan Anda:


```javascript

const Discord = require('discord.js');

const { Translate } = require('@google-cloud/translate');


const client = new Discord.Client();

const translate = new Translate();


const prefix = '!'; // Prefix untuk bot commands


client.once('ready', () => {

  console.log('Bot is online!');

});


client.on('message', async message => {

  if (message.author.bot) return; // Hindari tanggapan terhadap pesan dari bot lain

  if (!message.content.startsWith(prefix)) return;


  const args = message.content.slice(prefix.length).trim().split(/ +/);

  const command = args.shift().toLowerCase();


  if (command === 'translate') {

    if (args.length < 2) {

      return message.reply('Penggunaan: `!translate <dari bahasa> <ke bahasa> <teks>`');

    }


    const sourceLang = args.shift();

    const targetLang = args.shift();

    const text = args.join(' ');


    try {

      const [translation] = await translate.translate(text, {

        from: sourceLang,

        to: targetLang,

      });


      message.channel.send(`**${sourceLang}**: ${text}\n**${targetLang}**: ${translation}`);

    } catch (error) {

      console.error('Error translating:', error);

      message.reply('Terjadi kesalahan saat menerjemahkan.');

    }

  }

});


const token = 'YOUR_BOT_TOKEN';

client.login(token);

```


Pastikan untuk mengganti `'YOUR_BOT_TOKEN'` dengan token bot yang Anda dapatkan di langkah sebelumnya.


Langkah 6: Menjalankan Bot


1. Simpan kode di atas dalam file dengan ekstensi `.js` (misalnya, `translateBot.js`).


2. Buka terminal, arahkan ke direktori proyek Anda, dan jalankan bot dengan perintah berikut:

   ```

   node translateBot.js

   ```


Catatan Penting:

- Pastikan Anda memahami kode yang Anda jalankan dan memiliki kontrol penuh atas bot Anda.

- Tutorial ini hanya memberikan contoh dasar. Anda dapat mengembangkan fitur ini lebih lanjut sesuai kebutuhan Anda.


Sekarang Anda memiliki dasar untuk membuat bot Discord yang dapat melakukan terjemahan otomatis! Jangan ragu untuk menyesuaikan dan mengembangkan fitur ini sesuai dengan visi Anda. Jika Anda memiliki pertanyaan lebih lanjut, jangan ragu untuk bertanya. Selamat berkoding!

Tuesday, November 23, 2021

Delete File Otomatis dengan CRON



Halo ges , kali ini saya akan membagikan sedikit tentang cara menghapus file secara otomatis dan terjadwal. File yang sudah tidak dibutuhkan memang terkadang banyak sekali di komputer kita apalagi komputer server ya ges ya . 
Contoh misal kita ingin menghapus file yang tidak digunakan atau dibuka sama sekali selama 1 tahun , kita mau hapus . tapi gak mungkin ya kalo kita cek satu persatu . biasanya kita filter pakai data modified. memang sedikit membantu . tapi bagaimana kalau kita gak mau nyari atau lupa jadwal hapus. Bagaimana kalau cara tersebut terjadwal dengan satu perintah? Seperti ini ges

0 17 10 * * find /var/www/Backup/* -mtime +14 -delete

perintah adalah contoh perintah cron untuk menghapus file terjadwal dan otomatis.

Ini Penjelasan perintah diatas

0 17 10 * *

ini adalah jadwal waktu eksekusi yang kita inginkan , perintah diatas artinya jam 5pm tanggal 10 setiap bulannya. jadi waktu eksekusinya satu bulan sekali pada tanggal 10 jam 5 sore. Lebih jelasnya tentang syntax jadwal cron silahkan kunjungi https://crontab.guru.

find /var/www/Backup/*
Adalah path atatu folder target dimana file berada, /* berarti seluruh file yg berada di folder tsb

-mtime +14 -delete
Perintah ini yg menentukan berapa umur file, -m berarti modified dan +14 adalah umur file yg melebihi 14 hari, dan yg terkahir delete untuk menghapus file. kalo mau file yang berumur berarti tinggal ganti aja +365


Mudah sekali kan ya 

Sekian semoga bermanfaat

Monday, November 22, 2021

Backup Database Otomatis Terjadwal Dengan Cron



Kali ini saya akan membagikan sedikit ilmu tentang backup database secara otomatis dan terjadwal sesuai keinginan kita ges. yuk langsung praktek

pertama kalian install dulu aplikasi CRON

apt-get install cron

Tuesday, October 30, 2018

Tutorial Instalasi Ubuntu 18.04 Server

Pada post kali ini kita akan membahas tutorial instalasi ubuntu yang versi 18.04 Server. Sekalian saja saya buatkan video biar jelas.

Download Ubuntu here https://www.ubuntu.com/download

Silahkan Lihat Video Saya Untuk Lebih Jelasnya


Selamat Mencoba :)

Tuesday, October 9, 2018

How to scan viruses from file uploads Pure Ftp with Clam AV

        ClamAV adalah mesin anti-virus open source (GPL) yang digunakan dalam berbagai situasi termasuk pemindaian email, pemindaian web, dan keamanan titik akhir. Ini menyediakan sejumlah utilitas termasuk daemon multi-berulir fleksibel dan scalable, scanner baris perintah dan alat canggih untuk pembaruan database otomatis.
            
           Nah disini kita akan menggunakan Clam AV untuk menscan file dari file yang di upload ke FTP Server kita supaya mencegah file yang terinfeksi virus masuk ke server.
  
Untuk percobaan kali ini saya menggunakan ubuntu 18 . Berikut langkah-langkah untuk konfigurasi Clam AV
  1. Install ClamAV
  2. 
    #sudo apt-get install clamav clamav-daemon
  3. Konfigurasi Clamav
  4. #nano /etc/clamav/clamd.conf
    
    Tambahkan kode berikut :
    
    TCPSocket 3310
    TCPAddr 127.0.0.1
    
    Kemudian silahkan restart clamav
  5. Install Pure Ftp
  6. 
    #sudo apt-get install pure-ftpd-common pure-ftpd-mysql
    
  7. Configure pure-ftpd.conf
  8. 
    #nano /etc/pure-ftpd/pure-ftpd.conf
    
    Cari kata CallUploadScipt , dan hilangkan tanda pagar didepannya
    
    CallUploadScript         yes
    
  9. Buat File clamscan.sh
  10. 
    #nano /etc/pure-ftpd/clamscan.sh
    
    Isi dengan kode berikut:
    
    #!/bin/sh
    /usr/bin/clamdscan --remove --quiet --no-summary "$1"
    
  11. Edit pure-ftpd-common
  12. 
    #nano /etc/default/pure-ftpd-common
    
    Pada UPLOADSCRIPT=...] isi dengan lokasi file clamscan.sh
    
    UPLOADSCRIPT=/etc/pure-ftpd/clamscan.sh
    
    Kemudian Restart Pure-ftpd dan coba upload virus ke ftp, maka file virus akan langsung di hapus oleh. Memang ada pesan succes transfer , tapi ketika di cek di ftp file tersebut tidak ada.
Untuk Tutorial Video bisa langsung dilihat

    Selamat Mencoba 😁

Monday, July 2, 2018

Konfigurasi dan Implementasi 2 Mail Server dan 2 Mailing list yang berbeda di Ubuntu

Kali ini kita akan membahas konfigurasi meliputi dns, web server, mail server dan mailing list di ubuntu beserta implementasinya . Bagaimana cara mengirim email dengan beda server , bagaimana cara menambahkan anggota mailis berbeda domain . yuk kita simak.
Gambar di atas adalah konsep jaringan yang akan kita gunakan.
Keterangan :
- Untuk dns dan mail server1 jadi satu , jadi ada 2 server yaitu
1. Dns dan mail server1 , ip : 170.16.48.1
2. Mail server2 , ip : 170.16.48.2
·         Buatlah 2 mail server yang mewakili 2 domain berbeda (domain1.org dan domain2.org).
·         Di Mail_Server1 terdapat 4 user : Agus (L), Anton (L), Ana (P) dan Ani (P).
·         Di Mail_Server2 juga terdapat 4 user : Toni (L), Tono (L), Tini (P), Tina (P)
·         Percobaan berhasil, jika semua user dapat berkirim email satu sama lain (walaupun berbeda domain).
·         Kedua mail server masing2 menerapkan webmail (anda boleh menggunakan Squirrel Mail atau lainnya yang sejenis)
·         Selain itu, kedua mail server mendukung penggunaan protokol POP dan IMAP, sehingga user di komputernya masing2 dapat mendownload email dari mail server menggunakan protokol POP3 atau IMAP. Anda bebas menggunakan mail client (Mail User Agent)
·         Di Mail_Server1 terdapat Mailing List bernama siswa@domain1.org yang anggotanya semua user laki2
·         Di Mail_Server2 terdapat Mailing List bernama siswi@domain2.org yang anggotanya semua user perempuan.


Pertama kita harus konfigurasi dns ,  web server dan mail server
  1. Konfigurasi DNS Server
  2. Dns server berfungsi sebagai penerjemah alamat ip menjadi nama domain. Untuk yang belum tahu cara konfigurasi dns lebih dari 1 domain silahkan klik di sini
  3. Instalasi dan Konfigurasi Web Server
  4. Web server adalah sebuah software yang memberikan layanan berbasis data dan berfungsi menerima permintaan dari HTTP atau HTTPS pada klien yang dikenal dan biasanya kita kenal dengan nama web browser dan untuk mengirimkan kembali yang hasilnya dalam bentuk beberapa halaman web dan pada umumnya akan berbentuk dokumen HTML. Nantinya kita akan gunakan sebagai web mail untuk klien. Untuk yang belum tahu konfigurasi web server untuk bisa di gunakan oleh 2 domain silahkan klik di sini
  5. Instalasi dan Konfigurasi Mail server dan Webmail
  6. Untuk yang belum tahu konfigurasi mail server dan webmail silahkan klik di sini
Oke sekarang kita akan konfigurasi untuk 2 mail server dan 2 mailing list
  1. Konfigurasi mail server agar bisa mengirim email ke beda domain
  2. Untuk yang belum tahu konfigurasinya silahkan klik di sini . Jangan lupa konfigurasi juga pada mail server 2
  3. Konfigurasi mailing list dengan mailman
  4. klik disini untuk konfigurasi mailman
  5. Menambahkan mailis siswa@domain1.org untuk user laki-laki (pada mail1) dan siswi@domain2.org untuk user perempuan ( pada mail2)
  6. Integrasi mailman dengan postfix
  7. Konfigurasi postfix agar mailman dapat terhubung dengan domain lain
  8. 
    postconf -e 'relay_domains = domain2.org'
    postconf -e 'mailman_destination_recipient_limit = 1'
    
  9. Buka browser tulis url namadomain/cgi-bin/mailman/admin/nama_mailis
  10. Daftarkan user yang akan menjadi anggota mailis tersebut , pilih menu membership management lalu pilih mass subscription . untuk mailis siswa@domain1.org anggotanya adalah agus, anton, tono dan toni , kemudian siswi@domain2.org anggotanya adalah ana, ani, tina dan tini.
  11. Setelah klik tombol submit your change , maka ada pesan sukses
  12. Cek pada user , jika ada pemberitahuan pesan dari siswa@domain1.org maka berhasil
  13. Mencoba mengirim pesan mailis , semua user yang terdaftar akan menerima pesan tersebut
  14. User agus@domain1.org sebagai pengirim

    Maka seluruh anggota dari mailis akan menerima pesan tersebut meskipun beda domain
Sekian tutorial dari saya . Terimakasih dan Selamat Mencoba :D

Download Laporan full 

Konfigurasi Mailing list dengan mailman 100% work

  1. Install mailman
  2. 
    sudo apt-get install mailman
    
  3. Konfigurasi mailman
  4. 
    nano /etc/mailman/mm_cfg.py
    
    hilangkan tanda # pada MTA='Postfix'
  5. Membuat grup mailman
  6. Aktifkan web interface mailman di apache agar bisa di pakai melalui browser
  7. Aktifkan Mailman service
  8. 
    /etc/init.d/mailman start
    
  9. Test pada browser klien url : namadomain/cgi-bin/mailman/listinfo
  10.  
    Apabila tidak muncul tampilan diatas, tapi malah download file , solusinya aktifkan cgi pada apache2.
#a2enmod cgid
Setelah itu restart apache2 dan test pada browser

Selamat Mencoba :)

Konfigurasi Mail Server Agar Bisa Mengirim E-mail ke Domain yang Berbeda

  1. Konfigurasi Postfix
  2. Buat file /etc/postfix/sasl_passwd
  3. kemudian lakukan postmap /etc/postfix/sasl_passwd
  4. 
    sudo postmap /etc/postfix/sasl_passwd
    
  5. restart postfix
  6. 
    sudo service postfix restart
    
  7. Test mengirim email dari domain1 ke domain2

  8. cek email user tina@domain2.org

Konfigurasi Mail server dan web mail di ubuntu

  1. instal pada kedua mail server postfix courier-imap courier-pop courier-ssl courier-imap-ssl
  2. 
    sudo apt-get install postfix courier-imap courier-pop courier-ssl courier-imap-ssl
    
    nb : jika ada yang gagal install satu persatu
  3. Konfigurasi postfix

  4. Buat folder maildir otomatis pada user

  5. Buat user untuk percobaan mail.

  6. Restart postfix dan courier

  7. Install aplikasi webmail squirrelmail
  8. 
    sudo apt-get install squirrelmail
    
  9. Aktifkan koneksi squirrelmail ke apache , kemudian restart apache
  10. 
    ln -s /usr/share/squirrelmail /var/www/html/squirrelmail
    service apache2 restart
    
    nb : /var/www/html samakan dengan dokumen root kalian , bisa di cek untuk document root di /etc/apache2/sites-available/000-default.conf
  11. Test squirrelmail di brower klien

Instalasi dan Konfigurasi Web server untuk Domain Lebih Dari 1 di ubuntu

  1. Instal apache2
  2. sudo apt-get install apache2

  3. Install php
  4. sudo apt-get install php php-mysql libapache2-mod-php

  5. Konfigurasi virtual host untuk domain1 dan domain2
  6. Buat file html di root direktori sama seperti konfigurasi sebelumnya , misal seperti gambar diatas yang kita gunakan adalah /var/www/html/domain1 , disitu adalah tempat file index.html yang akan kita panggil ketika klien menghubungi url domain1.org di browser
  7. Untuk isi dari index.html bisa sesuka kalian , misal
    
    <html>
      <body>
       <h1>
         SELAMAT DATANG DI DOMAIN 1
       </h1>
      </body>
    </html>
    
  8. Test di browser klien

  9. Mudah kan , hehehe

Instalasi dan Konfigurasi DNS Server lebih dari 1 domain di ubuntu

  1. Instalasi Bind9
  2. sudo apt-get install bind9
    

  3. Edit file /etc/named.conf.local

  4. Untuk membuat virtual domain sertakan include “/tempat_file_konfigurasi _virtualdomain/”

  5. Buat file db.riowenda dan db.reverse , nama tergantung pada file konfigurasi named.conf.local

  6. db.riowenda

    db.reverse

     
  7. Daftarkan domain1.org untuk mailserver1 dan domain2.org untuk mailserver2 pada virtualdomain.conf

  8. Buat file untuk konfigurasi virtual domain tersebut

  9. db.domain1

    db.domain2.org
  10. Edit /etc/resolv.conf

  11. Restart bind9 , kemudian test dengan nslookup

  12. service bind9 restart

    Dari sini kita sudah berhasil konfigurasi untuk dns dengan 2 domain

Tuesday, February 13, 2018

Soal Virtual Memory Sistem Operasi



  
1.     Diketahui sistem memory demand paging. Page table menggunakan register. Membutuhkan 8 milisecond untuk melayani page fault jika frame kosong tersedia atau page yang di-replace tidak dimodifikasi dan 20 milisecond jika page yang di-replace dimodifikasi. Waktu akses memori adalah 100 nanosecond. Diasumsikan page yang di-replace akan dimodifikasi adalah 70 persen dari waktu. Berapa rata-rata page fault yang diterima untuk effective access time tidak lebih dari 200 nanosecond ?
Waktu akses memory = 200 nanosecond Rata-rata waktu page-fault service time = 8 milliseconds 1 ms=106 ns EAT = ((1 – p) x 200) + (p x (8 milliseconds))
= ((1 – p) x 200) + (p x 8,000,000) = 200 + (p x 7,999,800)
Jika 1 dari 1.000 kali akses terjadi fault, maka EAT = 8.2 microseconds.

2.     Diketahui string acuan dari page : 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 Berapa banyak page fault yang terjadi untuk algoritma page replacement berikut dengan satu, dua, tiga, empat, lima, enam atau tujuh frame ? Ingat bahwa semua frame diinisialisasi kosong, sehingga setiap page unik pertama akan bernilai masing-masing satu fault
a. LRU
b. FIFO
c. Optimal

3.     Diketahui array 2 dimensi A sebagai berikut: var A : array[1..100] of array{1..100] of integer Dimana A[l][l] berada pada lokasi 200 pada sistem page memory dengan page-page berukuran 200. Suatu proses kecil pada page 0 (lokasi 0 s/d 199) untuk manipulasi matriks, sehingga setiap instruksi dimulai dari page 0. Untuk 3 frame page, berapa banyak page fault yang dibangkitkan oleh loop inisialisasi array berikut menggunakan LRU dan asumsi frame page 1 sudah terdapat proses dan 2 frame page lainnya diinisialisasi kosong.
a. For (j = 1; j <= 100; j++) , For (i = 1; i <- 100; i++) A[i][j] = 0; b.For (i=1;i<=100; i++) For (j = 1; j <= 100; j++) A[i][j] := 0; A[i][j] = 0;

4.     Diketahui sistem demand paging dengan paging disk mempunyai waktu akses dan transfer rata-rata 20 milisec. Alamat ditranslasikan melalui page table di memory, dengan waktu akses 1 microsec per akses memory. Sehingga acuan ke memori melalui page table sama dengan 2 kali akses memory. Untuk memperbaiki waktu, ditambahkan associative memory yang menurunkan waktu akses menjadi satu acuan memori, jika entri page table berada di associative memory. Diasumsikan 80 % akses pada associative memory dan dari sisanya (20%), 10% nya (atau 2 persen dari total) menyebabkan page fault. Berapakah effective access time-nya?

Friday, February 2, 2018

Soal Deadlock Sistem Operasi



1.  Apa yang dimaksud dengan sumber daya ? Berikan contohnya!
Sumber daya (resources) adalah sesuatu proses yang digunakan untuk proses-proses untuk menyelesaikan task.Sumber daya yang ada pada sistem terdiri dari tipe resource CPU cycle, ruang memori, perangkat I/O yang disebut dengan tipe sumber daya R1, R2, . . ., Rm.

2.  Apa yang dimaksud deadlock ?
Deadlock adalah proses dimana saling terjadinya penungguan antara proses-proses yang ingin menggunakan resources (sumber daya), proses yang sedang menunggu tidak mau saling mengalah maka akan terjadi deadlock.

3.  Sebutkan 4 kondisi yang menyebabkan deadlock?
a.    Mutual Exclusion
hanya satu proses pada satu waktu yang dapat menggunakan sumberdaya.

b.    Genggam dan Tunggu (Hold and Wait)
suatu proses membawa sedikitnya satu sumberdaya menunggu mendapatkan tambahan sumber daya baru yang dibawa oleh proses.

c.    Non-Preemption
sebuah sumber daya dapat dibebaskan dengan sukarela oleh proses yangmemegangnya setelah proses menyelesaikan task.

d.    Menunggu Secara Sirkuler (Circular Wait)
Terdapat sekumpulan proses {P0, P1, …, P0} yang menunggu sumber daya dimana P0 menunggu sumber daya yang dibawa P1, P1 menunggu sumber daya yang dibawa P2, dan seterusnya, Pn–1 menunggu sumber dayayang dibawa oleh Pn, dan Pn menunggu sumber daya yang dibawa P0.

4.  Sebutkan cara mencegah deadlock dari 4 kondisi tersebut pada soal 3?
a. Mencegah Mutual Exclusion
Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber dayayang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.

b. Mencegah Hold and Wait
Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses meminta sumberdaya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawasumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumberdaya yang dibutuhkannya dialokasikan untuk proses yang lain.

c. Mencegah Non Preemption
Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu. Cara mencegah kondisi non preemption : Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lainyang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut, maka semuasumber daya yang sedang dibawa proses tersebut harus dibebaskan. Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya. Proses akan di restart hanya jika dapat memperoleh sumber daya yang lama dan sumberdaya baru yang diminta.

d. Mencegah Kondisi Menunggu Sirkular
Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Proses dapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan. Cara ini tidak akan menimbulkan siklus. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.
5.  Diketahui snapshot dari suatu sistem :
Allocation Max Available
A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 1 6 3 2 1 6 5 2
P4 0 0 1 4 0 6 5 6
Jawablah pertanyaan berikut :
a. Bagaimana isi matrik Need ?
b. Apakah sistem dalam state selamat ?
c. Jika proses P1 meminta (0,4,2,0) dapatkah permintaan dipenuhi segera ?
a. Isi matrik Need didefinisikan dengan Max – Allocation :
Need
A B C
P0 7 4 3
P1 1 2 2
P2 6 0 0
P3 0 1 1
P4 4 3 1
Sistem dalam keadaan state selamat dengan urutan <> yang memenuhi kriteria algoritma safety.
Misalnya proses P1 meminta tambahan anggota tipe sumber daya A dan dua anggota tipesumber daya C sehingga Request1 = (1, 0, 2). Untuk menentukan apakah permintaan dapat segera dipenuhi, pertama harus diperiksa apakah Request1 ≤ Available ((1, 0, 2) ≤ (3, 3, 2)) ternyata benar. Maka akan diperoleh state baru berikut :
Allocation Need Available
A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 1 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1
Kemudian harus ditentukan apakah sistem berada dalam state selamat. Setelah mengeksekusi algoritma safety ternyata urutan memenuhi criteria safety. Setelah sistem berada pada state doatas, permintaan (3, 3, 0) oleh P4 tidak dapat dipenuhi karena sumber daya tidak tersedia. Permintaan (0, 2, 0) oleh P1 juga tidak dapat dipenuhi karena meskipun sumber daya tersedia, state hasil tak selamat.
b. Sistem dalam state tidak selamat
c. Dapat