Add

Kampus Universitas Teknokrat Indonesia

Kampus Universitas Teknokrat Indonesia .

Acara Hari Pahlawan

Semangat Belajar danmelaksanakan kegiatan dengan baik dan bertanggung jawab.

SURATNO JIMBO

GENTOF Generasi yang siap ngetof.

SURATNO JIMBO

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Karya Menuju Tak Terbatas Dan Melampaunya

Semangat membara harus Selalu ditanamkan dalam diri seseorang meskipun harus mengorbankan waktu dan tempat.

Selasa, 30 Maret 2021

Process Synchrinization

 


PENGERTIAN SINKRONISASI  

      Sinkronisasi merupakan suatu proses pengaturan jalannya beberapa proses pada waktu yang bersamaan untuk menyamakan waktu dan data supaya tidak terjadi inconsitensi (ketidak konsistenan) data akibat adanya akses data secara konkuren agar hasilnya bagus dan sesuai dengan apa yang diharapkan. Disini sinkronisasi diperlukan agar data tersebut tetap konsisten.

      Shared memory merupakan solusi ke masalah bounded-butter yang mengijinkan paling banyak n-1 materi dalam buffer pada waktu yang sama. Suatu solusi, jika semua N buffer digunakan tidaklah sederhana. Dimisalkan kita memodifikasi producer-consumer code dengan menambahkan suatu variable counter, dimulai dari 0 dan masing-masing waktu tambahan dari suatu item baru diberikan kepada buffer. Sinkronisasi merupakan “issue” penting dalam rancangan/implementasi OS (shared resources, data, dan multitasking).

TUJUAN SINKRONISASI

      Tujuan dari sinkronisasi itu sendiri ialah untuk menghindari terjadinya inkonsitensi data karena pengaksesan oleh beberapa proses yang berbeda serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan baik dan sesuai apa yang di harapkan.

 MASALAH DALAM SINKRONISASI BESERTA SOLUSINYA  

Race Condition

       Race Condition adalah situasi di mana beberapa proses mengakses dan memanipulasi data bersama pada saat besamaan. Nilai akhir dari data bersama tersebut tergantung pada proses yang terakhir selesai. Untuk mencegah race condition, proses-proses yang berjalan besamaan harus di disinkronisasi.  Dalam beberapa sistem operasi, proses-proses yang berjalan bersamaan mungkin untuk membagi beberapa penyimpanan umum, masing-masing dapat melakukan proses baca (read) dan proses tulis (write). Penyimpanan bersama (shared storage) mungkin berada di memori utama atau berupa sebuah berkas bersama, lokasi dari memori bersama tidak merubah kealamian dari komunikasi atau masalah yang muncul. Untuk mengetahui bagaimana komunikasi antar proses bekerja, mari kita simak sebuah contoh sederhana, sebuah print spooler. Ketika sebuah proses ingin mencetak sebuah berkas, proses tersebut memasukkan nama berkas ke dalam sebuah spooler direktori yang khusus. Proses yang lain, printer daemon, secara periodik memeriksa untuk mengetahui jika ada banyak berkas yang akan dicetak, dan jika ada berkas yang sudah dicetak dihilangkan nama berkasnya dari direktori.

 

Critical Section

       Critical Section adalah sebuah segmen kode di mana sebuah proses yang mana sumber daya bersama diakses. Terdiri dari:

1) Entry Section: kode yang digunakan untuk masuk ke dalam critical section
2) Critical Section: Kode di mana hanya ada satu proses yang dapat dieksekusi pada satu waktu

3) Exit Section: akhir dari critical section, mengizinkan proses lain

4) Remainder Section: kode istirahat setelah masuk ke critical section.

 

Solusi ke Masalah Critical-Section

Ada bebrapa Solusi untuk mengatasi masalah Critical Section, yaitu:

• Mutual exclution

Jika proses pi sedang mengeksekusi critical section-nya maka tidak ada proses lain yang dapat mengeksekusi dalam critical section mereka.

• Progress

Jika tidak ada proses yang sedang dieksekusi dalam critical section  dan ada beberapa proses yang ingin masuk ke critical section mereka, maka pemilihan proses yang akan masuk ke critical section berikutnya tidak bias ditunda.
• Bounded Waiting

Suatu keterikatan harus ada pada sejumlah proses yang diijinkan masuk ke critical section mereka, setelah adanya proses yang meminta masuk ke critical section dan sebelum  permintaan itu diterima.

a. Asumsikan bahwa tiap proses mengeksekusi pada nonzero speed.

b. Tidak ada asumsi mengenai kecepatan relative dan n proses.

Cara-cara memecahkan masalah

• Hanya dua proses, Po dan P1

• Struktur umum dari proses adalah Pi (proses lain Pj)

 

Bakery Algorithm

Critical section untuk n proses:

a). Sebelum memasuki critical Section-nya, proses menerima nomor pemilik nomor terkecil memasuki critical section.

b). Jika proses Pi dan Pj menerima nomor yang sama, jika i < j, maka Pi dilayani duluan, lainnya Pj dilayani duluan (if i< j, then Pi is served first; else Pj is served first).
c
). Skema penomoran selalu menghasilkan angka –angka yang disebutkan satu per satu, yaitu 1,2,3,3,3,3,4,5….

 

Semaphore

Semaphore adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Seperti proses dapat dipaksa berhenti pada suatu saat, sampai proses mendapatkan penanda tertentu itu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan struktur penanda yang cocok untuk kebutuhan itu.Variabel khusus untuk penanda ini disebut semaphore.

Semaphore mempunyai dua sifat, yaitu:

a. Semaphore dapat diinisialisasi dengan nilai non-negatif.

b. Terdapat dua operasi terhadap semaphore, yaitu Down dan Up. Usulan asli yang disampaikan Djikstra adalah operasi P dan V.

 

• Operasi Down

Operasi ini menurunkan nilai semaphore, jika nilai semaphore menjadi non-positif maka proses yang mengeksekusinya diblocked. Operasi Down adalah atomic, tidak dapat diinterupsi sebelum diselesaikan. Menurunkan nilai, memeriksa nilai, menempatkan proses pada antrian dan memblocked sebagai instruksi tunggal. Sejak dimulai, tidak ada proses lain yang dapat mengakses semaphore sampai operasi selesai atau diblocked.

• Operasi Up

Operasi Up menaikkan nilai semaphore. Jika satu proses atau lebih diblocked pada semaphore itu tidak dapat menyelesaikan operasi Down, maka salah satu dipilih oleh system dan menyelesaikan operasi Down-nya. Urutan proses yang dipilih tidak ditentukan oleh Djikstra, dapat dipilih secara acak. Adanya semaphore mempermudah persoalan mutual exclusion. Skema penyelesaian mutual exclusion mempunyai bagian sebagai berikut:

      Sebelum masuk critical section, proses melakukan Down. Bila berhasil maka proses masuk ke critical section. Bila tidak berhasil maka proses di-blocked atas semaphore itu. Proses yang diblocked akan dapat melanjutkan kembali bila proses yang ada di critical section keluar dan melakukan opersai up sehingga menjadikan proses yang diblocked ready dan melanjutkan sehingga opersi Down-nya berhasil.

 

Problem Klasik pada Sinkronisasi

Ada tiga hal yang selalu menjadi masalah pada proses sinkronisasi:

a. Problem Bounded buffer.

b. Problem Reades and Writer.

c. Problem Dining Philosophers.

 

Monitors

      Solusi sinkronisasi ini dikemukakan oleh Hoare pada tahun 1974. Monitor adalah kumpulan prosedur, variabel dan struktur data di satu modul atau paket khusus. Proses dapat memanggil prosedur-prosedur kapan pun diinginkan. Tapi proses tidak dapat mengakses struktur data internal dalam monitor secara langsung. Hanya lewat prosedur-prosedur yang dideklarasikan minitor untuk mengakses struktur internal.

      Properti-properti monitor adalah sebagai berikut:

a)      Variabel-variabel data lokal, hanya dapat diakses oleh prosedur-prosedur dalam monitor dan tidak oleh prosedur di luar monitor.

b)      Hanya satu proses yang dapat aktif di monitor pada satu saat. Kompilator harus mengimplementasi ini(mutual exclusion).

c)     Terdapat cara agar proses yang tidak dapat berlangsung di-blocked. Menambahkan variabel-variabel kondisi, dengan dua operasi, yaitu Wait dan Signal.

d)    Wait: Ketika prosedur monitor tidak dapat berkanjut (misal producer menemui buffer penuh) menyebabkan proses pemanggil diblocked dan mengizinkan proses lain masuk monitor.

e)    Signal: Proses membangunkan partner-nya yang sedang diblocked dengan signal pada variabel kondisi yang sedang ditunggu partnernya.

f)      Versi Hoare: Setelah signal, membangunkan proses baru agar berjalan dan menunda proses lain.

g)    Versi Brinch Hansen: Setelah melakukan signal, proses segera keluar dari monitor.Dengan memaksakan disiplin hanya satu proses pada satu saat yang berjalan pada monitor, monitor menyediakan fasilitas mutual exclusion. Variabel-variabel data dalam monitor hanya dapat diakses oleh satu proses pada satu saat. Struktur data bersama dapat dilindungi dengan menempatkannya dalam monitor. Jika data pada monitor merepresentasikan sumber daya, maka monitor menyediakan fasilitas mutual exclusion dalam mengakses sumber daya itu.

 

§  Alamat Blog Dosen : https://syaifulahdan.wordpress.com

§  Alamat Web Siswa : https://sodikinna.blogspot.com/2021/03/process-synchrinization.html

§  Alamat web Program studi, Fakultas, Universitas : http://ti.ftik.teknokrat.ac.idhttp://ftik.teknokrat.ac.idwww.teknokrat.ac.id

§  Nama Mahasiswa : Sodikin


Selasa, 16 Maret 2021

CREATE, RENAME, INSERT TABLE di MYSQL use SQLyog

 SQLoy merupakan software yang dapat anda gunakan sebagai aplikasi client MYSQL yang sangat populer digunakan di Indonesia. Aplikasi ini memiliki banyak fitur yang memudahkan pengguna melakukan administrasi maupun melakukan pengilahan data MYSQL.

Di bawah ini adalah video untuk menambahkan dan mengisi field pada MYSQL 

Demikian Video dari saya semoga bermanfaat selalu dan nggak bakalan move on dari otak ^-^

Senin, 15 Maret 2021

ADD dan INSERT di dalam MYSQL use SQLyog

SQLoy merupakan software yang dapat anda gunakan sebagai aplikasi client MYSQL yang sangat populer digunakan di Indonesia. Aplikasi ini memiliki banyak fitur yang memudahkan pengguna melakukan administrasi maupun melakukan pengilahan data MYSQL.



Di bawah ini adalah video untuk menambahkan dan mengisi field pada MYSQL 

Demikian Postingan dari saya semoga saya tidak melupakan apa yang telah saya kerjakan . Amiin

Minggu, 14 Maret 2021

INSTAGRAM POSTINGAN

PENGISIAN INPUT ARAY MENGGUNAKAN METODE LOOPING



Diatas adalah video Proses pembuatan program untunk mengisikan aray dengan metode looping dan mengeluarkan hasil nya dengan looping

Dibawah adalah hasil output dari program yang saya buat
Dimana pada bagian atas adalah inputan yang harus dimasukan oleh user, kemudain pada bagian bawah adalah output yang dikeluarkan setelah program penginputan selesai,


Klimat deskriptif :

Iteger jumlah;
aray number;
int x;


Alur Algoritma :
Pada awal runing program akan ada pilihan dimana diminta untuk menginputkan jumlah bilangan, yang mana jumlah bilangan ini kita jadikan sebagai jumlah untuk length dari array yang telah kita buat,

Setelah inputan selesai di masukan, kemudian program akan menjalankan syntak while looping yang pertama, dimana kondisi Jika looping telah di ulangi sebanyak jumlah bilangan yang di inputkan maka dia akan mengakhiri looping,

setelah looping pertama selesai kemudian program akan menjalankan syntak for looping yang kedua, dimana kondisi jika looping telah di ulangi kembali sebanyak bilangan yang di inputkan maka looping pun akan berakhir.


Perbedaan antar looping yang pertama dengan yang kedua terletak pada syntaknya diman looping yang pertama berisi syntak untuk menginputkan nilai pada array, sedangkan pada looping yang kedua berisi syntak untuk mengeluarkan inputan yang telah dimasuakn di dalam array yang telah kita buat.


Demikian adalah proses dari looping inputan dan output menggunakan array .


Untuk syntak-nya terdapat pada video yang telah saya buat ^_^

Selasa, 02 Maret 2021

PROGRAM MENGHITUNG GAJI KARYAWAN DAN PERHITUNGAN BILANGAN

Syntak yang telah di buat untuk program adalah sebagai berikut :

using System;

namespace code
{
    class Program
    {
        static void Main(string[] args)
        {
            string namapilihan;
            int data1xdata2y = 0jumlah;
            while(y == 0){
                jumlah = 0;
                Console.Clear();
                Console.WriteLine("1. Program bilangan");
                Console.WriteLine("2. Program Gaji karyawan");
                Console.Write("Masukan pilihan anda: ");
                Console.WriteLine("Masukan q untuk keluar");
                pilihan = Console.ReadLine();
                x = 1;
                switch(pilihan){
                    case "1":
                        Console.Write("Masukan Jumlah bilangan yang akan kamu jumlahkan: ");
                        data1 = int.Parse(Console.ReadLine());
                        while(x <= data1){
                            Console.Write("Bialangan ke-{0} :"x);
                            data2 = int.Parse(Console.ReadLine());
                            x++;
                            jumlah = jumlah + data2;
                        }
                        System.Console.WriteLine("Jumlah data adalah : "jumlah);
                        Console.ReadLine();
                    break;
                    case "2":
                        int karyawangajiawgajiakbonusjamdata;
                        Console.Write("Masukan jumlah karyawan: ");
                        karyawan = int.Parse(Console.ReadLine());
                        while(x <= karyawan){
                            Console.WriteLine("------ Karyawan ke-{0} -----"x);
                            Console.Write("Masukan Nama: ");
                            nama = Console.ReadLine();
                            Console.Write("Jam lembur: ");
                            jam = int.Parse(Console.ReadLine());

                            gajiaw = 2000000;

                            if(jam <= 5){
                                bonus = jam * 100000;
                            }else{
                                bonus = jam * 50000;
                            }
                            gajiak = gajiaw + bonus;
                            x++;
                            
                            Console.WriteLine();
                            System.Console.WriteLine("Nama : "nama);
                            System.Console.WriteLine("Bonus: "+  bonus);
                            System.Console.WriteLine("Total gaji: "gajiak);
                            Console.ReadLine();
                        }
                        


                    break;
                    case "q":
                        y = 12;
                    break;
                    default :
                        Console.WriteLine("Pilihan yang anda masukan tidak sesuai");
                    break;
            }
            }
            Console.Clear();
            Console.WriteLine("Terimakasih telah menjalankan program silahkan tekan enter untuk keluar");
            Console.ReadKey();
        }
    }
}