Tuesday, May 26, 2015

I/O Buffering

A. Pengertian Buffering

Buffering adalah suatu proses melakukan buffer dimana buffer merupakan area memori yang menyimpan data ketika data tersebut sedang dipindahkan antara dua device atau antara device dan aplikasi. 

Terdapat 4 cara buffering yaitu :
1. No Buffering (tidak terdapat buffer dalam sistem operasi).
Ketika proses memberi perintah untuk perangkat I/O , maka data akan langsung melewati sistem operasi dan langsung dikirim ke proses user.

2. Single Buffering (terdapat satu buffer dalam sistem operasi)

Ketika proses memberi perintah untuk perangkat I/O , maka data akan masuk ke dalam buffer di sistem operasi. Untuk perangkat berorientasi blok , transfer masukan akan dibuat ke buffer sistem dan setelah transfer selesai , proses akan memindahkan blok data ke user proses dan segara meminta blok lain.

3. Double Buffering (terdapat 2 buffer pada sistem operasi.)

Proses dapat ditransfer ke/dari satu buffer sementara sistem operasi mengosongkan (atau mengisi) buffer lain. Teknik ini disebut double buffering atau buffer swapping. Double buffering menjamin proses tidak menunggu operasi I/O.

4. Circular Buffering
Pada circular buffering sistem operasi menggunakan lebih dari dua buffer karena jika proses melakukan operasi I/O yang berturutan dengan cepat maka double buffering tidak dapat mengatasinya. Ketika lebih dari dua buffer yang digunakan, kumpulan buffer itu sendiri disebut sebagai circular buffer. Tiap buffer individu adalah satu unit di circular buffer.


B. Alasan dilakukannya Buffering

Buffering dilakukan atas 3 alasan , yaitu :


1. Untuk mengatasi adanya kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data.

2. Untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data.
Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun kembali.

3. Untuk mendukung copy semantics untuk aplikasi I/O.

www.skyconnectiva.com
www.binus.ac.id

Saturday, May 9, 2015

Memory Management

A. Pengertian Memory Management
- Pengelompokan memori untuk menampung beberapa proses
- Memori perlu dialokasikan secara efisien untuk menampung proses sebanyak mungkin.

B. Memory Management Requirement
1. Relocation : programmer tidak akan tahu program itu ditempatkan dimana.
ketika program di execute dan kemudian di execute lagi , kemungkinan program tersebut akan bertukar disk dan kembali ke main memory pada lokasi yang berbeda




2. Protection : proses seharusnya tidak boleh mereference ke lokasi memori dalam proses lain tanpa izin. 

3. Sharing : ada beberapa proses berjalan bersamaan dan saling berbagi memory.

4. Logical Organization :
    - program ditulis dalam bentuk modul/function.
    - modul bisa ditulis / dicompile secara terpisah-pisah.

5. Physical Organization 
   - Memory tersedia untuk sebuah program ditambah data itu sendiri yang mungkin cukup.
   - Programmer tidak mengethaui seberapa banyak space yang tersedia.

C. Addressing
addressing ada 3 , yaitu :
1. Logical
    - mereference ke lokasi memori terpisah dari assignment yang sekarang dari data ke memori.
2. Relative
   - alamat yang diekspresikan sebagai sebagai sebuah lokasi relatif untuk beberapa titik yang diketahui.
3. Physical 
- alamat asli atau lokasi nyata dalam main memori.

Swapping

D. Algoritma Alokasi Memori
1. First Fit            : mencari memory yang paling pertama dan spacenya cukup
2. Next Fit           : mencari memory dari lokasi memori sekarang ke sebelahnya , bukan dari lokasi memori yang pertama
3. Best Fit            : mencari blok memori yang ukurannya mendekati dengan yang diminta
4. Worst Fit         : mencari ukuran memori yang terbesar
5. Quick Fit
6. Buddy System : mencari lokasi memori menggunakan rumus. 
    Rumus buddy system :
    2U-1 < s <= 2U

Memory Allocation Algoritm

Deadlock

A. Pengertian Deadlock
     - dua atau lebih proses saling memperrebutkan satu resources
Permanent blocking adalah saling memblok dan sifatnya bisa permanent (sampai salah satu ada yang mengalah).

(a). kondisi sebelum terjadi deadlock
(b). kondisi setelah terjadi deadlock

B. Kondisi sumber terjadinya deadlock
1. Mutual exclusion : hanya ada satu proses yang bisa menggunkan resources
2. Hold and wait      : satu proses sedang holding / memegang paling sedikit satu resources sembari menunggu resources lain yang sedang dipegang oleh proses lain.
3. No preemption     : satu resources dapat di released hanya jika mendapatkan izin dari proses yang memegang resources tersebut , setelah proses tersebut menyelesaikan tugasnya.
4. Circular Wait       : sekumpulan proses yang saling menunggu satu sama lain , misal ada proses (P0, P1 , .. , P0) maka P0 menunggu resources yang dipegang oleh P1 , P1 menunggu resources yang dipegang oleh P2 , ... , Pn menunggu resources yang dipegang oleh P0.

C. Deadlock Modeling 
Resources allocation graph :
1. Holding a resources      : proses sedang menunggu resources
2. Requesting a resources : proses sedang merequest resources
3. Deadlock
D. Deadlock

Jika request datang seperti urutan diatas dan CPU memproses A, B dan C berurutan à tidak terjadi deadlock tetapi tidak ada paralelisme.

Contoh deadlock :
Jika proses diatas ditambah dengan proses (d) berikut maka akan menyebabkan deadlock
Strategi untuk mengatasi deadlock :
ada beberapa strategi untuk mengatasi deadlock :
1. Abaikan permasalahan (Ostrich Algorithm)
2. Deteksi dan recovery
3. Dynamic avoidance dengan pengalokasian resource dengan hati-hati.
4. Pencegahan

Safe and Unsafe State
Contoh : safe state

Contoh : unsafe state

Contoh : (a) Safe State
               (b) Safe State
                    (c) Unsafe State

E. Banker's Agorithm dengan multiple resources

F. Deadlock Prevention
Kesimpulan dari deadlock prevention
Link :

Concurrency

Concurrency untuk mengatasi :
1. Multiple applications
    - Multiprogramming (programnya yang concurrent)
2. Structured application
   - aplikasi yang dapat mengatur proses concurrent (prosesnya yang concurrent)
3.Operating-system structure
   - Sistem operasi yang mengatur sekumpulan proses atau thread

A. Masalah dalam Concurrency
    - Berbagi resource global
      contoh : printer (ketika printer digunakan bersama-sama)
    - Bagaimana alokasi resources supaya lebih aman
    - Programming error dificult to locate

Operating system konsen pada beberapa hal di bawah ini :
1. Mencari tahu proses yang aktif apa saja.
2. Mengalokasikan dan mendealokasikan resources.
3. Melindungi data dan resources.
4. Hasil prosesnya harus independent dari hasil ekseskusi proses lain.

B. Kompetisi antara proses dan resources
1. Mutual Exclusion : 1 proses diberikan hak khusus untuk menggunakan resources.
2. Deadlock              : banyak proses memperebutkan 1 resources
3. Starvation             : setiap proses berfikir bahwa ada proses lain yang sedang memakai resources tersebut padahal sebenarnya tidak ada yang memakai.

    Kerja sama antar proses
1. By Sharing (berbagi)
2. By Communication (berkomunikasi)

C, Mutual Exclusion
Alasan untuk menciptakan mutual exclusion (memberikan hak khusus pada 1 proses) :
1. Disabling Interrupt (tidak bisa interrupt - non preemptive)
2. Lock variables
    contoh : a = 10 (lock variable)
                  jika ada b yang mau mengubah nilai a maka tidak bisa karena a merupakan lock variable
3. Strict Alternation : biasanya terjadi di java script / VB 
4. Peterson's solution 
5, The TSL instruction

D. Semaphores
- spesial variable yang disebut semaphore digunakan untuk signalling.
- jika sebuah proses sedang mununggu sinyal maka dia akan dimatikan sampai sinyalnya dikirim.
- operasi wait dan operasi sinyal tidak bisa diinterrupt
- semaphore adalah sebuah variable yang mempunyai nilai integer :
    1. mungkin di inisialisasi dengan angka positif.
    2. operasi wait akan mengurangi nilai semaphore
    3. operasi sinyal akan menambah nilai semaphore.

E. Produces Consumer's Problem
- consumer tidak akan bisa konsumsi sebelum ada yang dihasilkan oleh producer.
- hanya single customer yang mendapatkan product pada satu waktu.

cara mengatasi Producer consumer's problem :
1. menggunakan semaphore

2. menggunakan thread


F. Dining Philosopher's Problem
1. Philosopers makan/berfikir.
2. Makan membutuhkan 2 forks
3. Hanya bisa mengambil 1 fork pada satu waktu.
4. Bagaimana caranya untuk mencegah deadlock

Solusi untuk dining philosopher's problem :
1. monitor      : dicek apakah forknya itu ada atau tidak.
2. semaphore : dicek philosophernya ada berapa

G. Mutex 
- Mirip dengan semaphore
  bedanya : 
  1. mutex         : hanya ada 2 operasi / penanda.
  2. semaphore : mempunyai 3 operasi / penanda.
Mutex dalam pthread :
H. Monitor
- ada 5 kondisi yang dicatat , tapi dia mengecek forknya itu available atau tidak.
- hanya satu proses actif di dalam monitor.
I. Message Passing
- jika ingin melakukan komunikasi maka dengan kirim-kiriman pesan (antara sender dan receiver.) 



Link :

Process Scheduling

PROCESS SCHEDULING

- Proses Scheduling : bagaimana caranya mengatur dalam satu prosesor dapat menjadwalkan prosenya masing-masing.
- Multiprosesor Scheduling : schedule dengan banyak prosesor

A. Behavior Of Process 
a. Process-bound : dilihat dari proses itu sendiri
b. I/O bound        : dilihat dari input dan output

CPU Scheduler (Penjadwalan CPU)
-memilih beberapa proses di memory yang siap untuk di eksekusi.
prosesor : memastikan bahwa tidak ada aplikasi yang menyalahgunakan kekuasaannya.

Dispatcher : modul dispatcher memberikan kontrol kepada CPU untuk proses yang dipilih oleh short term scheduler.
-shorterm scheduler : penjadwalan untuk jangka pendek.
-longterm scheduler : penjadwalan untuk jangka panjang.
Dispatch Latency : waktu yang diambil oleh si dispatcher untuk mengakhiri proses A dan merestart proses B.

B. Scheduling Criteria (Kriteria Penjadwalan)

1. CPU utilization    : penggunaan CPU dimana memastikan bahwa CPU harus tetap bekerja.
2. Throughput          : setiap waktunya ada berapa proses yang selesai.
3. Turnaround time  : waktu untuk mengeksekusi proses tertentu.
4. Waiting Time       : seberapa lama dia menunggu proses lainnya yang sedang berjalan.
5. Response Time    : waktu yang dibutuhkan sejak request sampai ada response.

C. Kriteria Optimisasi
1. maksimal CPU utilization : penggunaan CPU-nya maksimal
2. maksimal througput          : jumlah proses yang selesai maksimal
3. minimal turnaround time  : semakin cepat semakin bagus
4. minimal waiting time        : waktu nunggunya sedikit
5. minimal response time      : waktu responsenya cepat

C. Tujuan Scheduling 
1. All Systems
    - fairness : membagi masing-masing proses dari CPU sama rata.
    - policy enforcement : terdapat kebijakan atau aturan
    - balance : prosenya dibikin balance , satu sibuk yang lain sibuk
2. Batch Systems
   - throughput : memaksimalkan job per hour
   - turnaround time : minimize waktu antara submission dan termination.
   - CPU Utilization : bagaimana caranya supaya menjaga penggunaan CPU-nya tetap bagus.
3. Interactive Systems
   - Response time : merespon request dengan cepat
   - Proportionality : memastikan apakah yang didapatkan sesuai dengan yang diminta.
4. Real Time Systems
   - Meeting deadlines : menghindari kehilangan data.
   - Predictability : harus ada prediksi supaya datanya dapat dipercaya.

D. Algoritma Batch System

1. First Come First Serve
    Pada saat ada request maka langsung dijalankan.
    - Keuntungan : Mudah dimengerti dan mudah diprogram
    - Kelemahan  : Pekerjaan yang singkat mungkin menunggu jika ada pekerjaan yang lama berada di depan.


2. Shortest Job First
    Jika ada pekerjaan yang lebih ringan maka akan dikerjakan terlebih dahulu.
    Pada shortest job first terdapat 2 skema :
    1. nonpreemptive : harus menunggu sampai proses pertama selesai dulu. (tidak bisa diinterrupt)


    2. preemptive       : jika ada yang lebih cepat / sisa tunggu lebih sedikit , maka bisa dijalankan terlebih dahulu. (bisa di interrupt)
                                   
                                 Shortest Job First - Preemptive
E. Algoritma Interactive Scheduling
• Round-robin scheduling
• Priority scheduling
• Multiple queues
• Shortest process next
• Guaranteed scheduling
• Lottery scheduling
• Fair-share scheduling
Contoh Round Robin Scheduling :
Link :

Process and Threads

I. PROSES

A. Konsep

Perbedaan proses dengan program
- Program : terdiri dari instruksi untuk melakukan tugas
- Proses    : eksekusi dari sebuah program

Proses :
- disebut juga sebuah task
- eksekusi dari sebuah individual program
- dapat ditelusuri berupa daftar instruksi yang dapat dieksekusi

B. The Creation and Termination  of a Process

Event yang menyebabkan proses pembuatan adalah :
  • System Inisialisasi 
  • Ekseskusi dari sebuah proses pembuatan system pemanggil oleh running process (fork())
  • Seorang user merequest untuk membuat proses baru
  • Inisiasi batch job 
Proses Creation menggunakan system call :
1. System() : Mengeksekusi perintah dari dalam program
2. fork()
Ketika program memanggil fork maka proses duplikat yang disebut dengan proses child akan dibuat. Proses parent terus melaksanakan program dari titik yang disebut fork.
Proses child juga mengeksekusi program yang sama dari tempat yang sama fork pid_t (void)
Return dari fungsi fork adalah 0 untuk child, >0 untuk parent, dan -1 untuk kesalahan/error.
hasilnya adalah :
$. / fork
Proses Program ID yang utama adalah 18.611
ini adalah proses child, dengan id 18612
ini adalah proses parent, dengan id 18611
Proses id child adalah 1861

3. Exec()
    Event yang menyebabkan proses terminasi / pengakhiran adalah :
    • Normal exit (voluntary)
    • Error exit (voluntary).
    • Fatal error (involuntary).
    • Killed by another process (involuntary)
    Alasan proses terminasi adalah :
    1. I / O gagal
    2. instruksi yang tidak valid
    3. terjadi ketika mencoba untuk mengeksekusi data
    4. instruksi istimewa
    5. penyalahgunaan Data
    6. Intervensi sistem operasi seperti ketika deadlock terjadi
    7. Parent berakhir sehingga proses child mengakhiri permintaan parent

    5 state dari proses model
    • dispatch berfungsi untuk menjalankan suatu fungsi tertentu.
    • exit kondisi ketika proses sudah terputus (terminated)
    Suspended Process
    • Prosesor lebih cepat daripada I / O sehingga semua proses dapat menunggu I / O
    • Tukar proses ini ke disk untuk membebaskan lebih banyak memory
    • Keadaan yang diblokir akan menjadi keadaan suspend ketika bertukar disk
    • 2 keadaan baru :
                 1. blocked , suspend
                 2. ready , suspend

    Process Table
    - Dimana proses berada
    - Atribut yang diperlukan untuk manajemen :
      1. proses ID
      2. proses state
      3. lokasi di memori

    Lokasi Proses
    - Proses mencakup set program yang akan dieksekusi
         -Lokasi data untuk variabel lokal dan global
         -Setiap konstanta yang didefinisikan
         -stack
    -Proses Kontrol Block : sekumpulan atribut
    -Proses Gambar : sekumpulan program, data, stack, dan atribut

    C. Mode-mode dari Eksekusi
    1. User Mode
        - lebih sedikit hak akses modenya
        - program user biasanya mengeksekusi mode ini.
    2. System Mode, Control Mode, atau Kernel Mode
       - lebih besar hak akses modenya
       - kernel dari operating system


    II. THREADS

    A. Konsep
    Thread memungkinkan beberapa eksekusi berlangsung dalam lingkup proses yang sama
    Thread ada 2 macam :

    1. Lightweight process (LWP) : karena threads memiliki beberapa sifat/properti dari proses. LWP mengambil properti / atribute.
    LWP mempunyai 2 element , yaitu :
          1. LWP Identifier
          2. Prioritas dari LWP : dengan LWP ini proses-proses tertentu akan diprioritaskan dan secara otomatis thread-thread di dalamnya juga akan didahulukan

    2. Multithreading         : memungkinkan beberapa thread dalam proses yang sama
    keadaan eksekusi :
    1. ready          : siap untuk jalan
    2. running      : bekerja / sistem berjalan
    3. terminated : sistem diakhiri

    (a) One to One    : 1 proses 1 thread
    (b) Many to One : 1 proses banyak thread

    B. Thread Model
    Keterangan :
    1. Address Space : mendefinisikan virtual address space yang di assign untuk proses
        -virtual address space : virtual storage yang di assign untuk sebuah proses.
    2. Register : ada di prosesor yang paling cepat
    3. Accounting Information : perhitungan processor time , clock time , resourcenya efisien atau tidak.

    keterangan gambar diatas : 1 proses memiliki banyak thread dan setiap thread mempunyai stacknya masing-masing.


    C. Manfaat Threads
    1. memerlukan waktu lebih sedikit untuk membuat thread baru daripada membuat proses baru.
    2. membutuhkan waktu lebih sedikit untuk mengakhiri thread daripada proses.
    3. membutuhkan waktu lebih sedikit untuk bertukar antara 2 thread dalam proses yang sama.
    4. bisa saling komunikasi.

    D. Implementasi Thread
    A. User Space
         Keuntungan :
       - memungkinkan setiap proses dapat dijadwalkan masing-masing
       - performancenya lebih cepat
      
         Kerugian :
        - implementasi dari non blocking system calls.
        - tidak ada thread yang boleh jalan apabila thread pertama sedang berjalan. (harus menunggu)

    B. Kernel Space
         Keuntungan :
      - tidak membutukan non blocking system calls baru

         Kerugian :
       - membutuhkan biaya yang besar dalam membuat dan merusak threads.

    Pop Up Thread : pembuatan thread baru ketika ada pesan datang (thread yang tiba-tiba muncul)

    E. Hubungan antara Threads dan Process
    One to One (1:1)     : 1 thread berhubungan dengan 1 proses (1 proses 1 thread)
    Many to One (M:1) : Multiple thread yang mengeksekusi 1 proses (1 proses banyak thread)
    One to Many (1:M) : 1 thread mengerjakan banyak proses 
    (M:M)                      : kombinasi antara many to one dengan one to many.

    File System

    A. Konsep File System
         - File system mengorganisasikan file-file dan memanage akses ke data
         - Funsgi file system :
           1.  File Management (bagaimana mengatur file kita mulai dari pembacaan file dll.)
           2.  Auxilary File Storage Management
           3.  File Integrity Mechanism (untuk memastikan bahwa data tidak rusak dan menjaga keabsahan data)
           4. File Access Method.
        -  File system berfokus pada managing secondary (disk) storage.

    Secara khas file system mempunyai meta data yang berhubungan dengannya, beberapa meta data yang termasuk adalah :
    1. Owner dan Group information (UGO)
    2. Time : waktu yang kita habiskan untuk mengotak atik file kita
    3. Permission : yang mengizinkan apakah data bisa di execute , dibaca , atau dua-duanya.

    Beberapa contoh disk yang berbasiskan file system :
    1. UFS (Unix File System  )
    2. HSFS (High Sierra File System) juga dikenal sebagai ISO9660
    3. EXT2
    4. FAT32
    5. HFS+
    6. Elephant FS

    B. Unix File System
         Meskipun berbeda dengan versi Unix , tapi kebanyakan structure sama. Unix File System berisi hanya folder dan file
     
    Ada 2 cara untuk mengidentifikasikan file-file dalam file system :
    1. Menspesifikasikan absolute pathname
        absolute pathname adalah path relative untuk root dalam sebuah file system.
    2. Mereferensikan file dalam file system dengan menggunakan sebuah relative pathname.

    C. Tipe-tipe Objek dalam file system :
         Ada 5 tipe file dasar , yaitu :
         1. Regular Files 
         2. Directories
         3. Links (termasuk symbolic links)
         4. Special Files
         5. Named Pipes

    Direktori menyediakan sebuah mapping antara nama file dan file itu sendiri. Kita bisa juga mengurutkan file kita sendiri.

    Special File
    tidak mengandung file tapi mengandung servis untuk file system atau memappingkan perangkat fisik.

    contoh : con (connection)
                  prn (printer)
                  nul (kosong)
    :: dimana jika kita membuat folder dengan nama dari salah satu diatas maka folder tersebut tidak akan bisa dihapus.

    Named Pipe
    named pipe adalah tipe spesial dari special file. Named pipe ini tidak mengarah ke blok dari sebuah disk , perangkat ataupun servis tapi dia mengarah ke struktur dalam memory.

    Hardlinks
    Hardlinks adalah link antara file-file yang hanya dalam file system yang sama.
    - harus berada pada satu file system

    Softlinks
    Softlinks adalah link yang bisa menunjuk file pada disk yang berbeda , bahkan pada network yang berbeda.
    - bisa dibuat antar network.

    File Operations
    chmod : digunakan untuk memodifikasi file 

    R W X : Read Write Execute
    contoh : 
                   001 : bisa execute
                   101 : bisa read dan execute
                   111 : bisa read , write , execute

    Operating System Overview

    A. Pengertian Operating System
         -    Operating system adalah sebuah program yang mengontrol eksekusi dari program aplikasi.
         -    Operating system adalah sebuah interface antara aplikasi dan hardware.
         -  Operating system bertindak sebagai intermediasi (perantara) antara hardware & software dimana apabila hardware mau menginstall software maka harus melalui OS.

    B. Tujuan dan Fungsi Operating System
       - Convenience  : untuk mempermudah pemakaian computer
       - Effieciency    : untuk melakukan pemakaian yang lebih efisien dan untuk hasil yang lebih baik
       -  Ability to evolve  : OS bisa dikembangin untuk jangka panjang.

    Operating system sebagai user/computer interface menyediakan beberapa area servis sebagai berikut :
    1.      Program Development (bagaimana cara untuk mendevelop sebuah program)
    Contoh : Visual Studio , dev C++, gcc
    2.      Program Execution (jumlah step yang dibutuhkan untuk mengexecute program)
    3.      Access to I/O devices
    4.      Controlled access to files (bagaimana cara membuat hak akses.)
    5.      System access
    6.      Error Detection & Response
    7.      Accounting
    8.      ISA
    9.      ABI
    10.  API

    C.   Evolusi dari Operating System
    1.      Serial Processing
    2.      Simple Batch System
    3.      Multiprogrammed Batch System

    Contoh utilization :
    Read one record from file   15µs
    Precute 100 instruction         1µs
    Write one record to file       15µs
    Total                                   31µs

    Percent CPU utilization = 1/31 = 0,032 = 3,2%

    RWX (Read Write Execute) dengan rumus probabilitas = 1 / total




    - Deadlock adalah suatu kemungkinan dimana terdapat 2 atau lebih program yang menunggu
      program yang sama dalam satu waktu sehingga tidak terdapat satu program yang mendapat data
      tersebut.

    - Memory Management adalah bagaimana cara kita memanage / mengatur penggunaan memory pada
       sistem kita supaya penggunaanya lebih efisien dan efektif.

    - Virtual memory adalah suatu fasilitas yang memungkinkan program untuk menempatkan data kita
       ke suatu address memory secara logic tanpa menampungnya di tempat penyimpanan fisik.

    Information protection and security mempertimbangkan beberapa hal berikut :
    a. Availability
        terdapatnya suatu program yang berfokus pada proteksi sistem.
    b. Confidentialy
        untuk memastikan user yang tidak terautorisasi dan supaya tidak dapat membaca data tertentu
        yang bukan miliknya.
    c. Data Integrity
        untuk menjaga keabsahan data dan memproteknya dari pemodifikasian data tanpa terautorisasi.
    d. Autenticity
       Fokus pada verifikasi user dan validasi data.


    Link :