Penggunaan fungsi SEMAFORE pada PHP

7

BAB 2

LANDASAN TEORI

2.1 Teori Umum

2.1.1   Jaringan Komputer

Jaringan komputer adalah sejumlah komputer yang dikelompokkan dan

dihubungkan satu dengan yang lainnya menggunakan protocol

komunikasi

melalui media transmisi atau media komunikasi, sehingga dapat saling berbagi

data

atau

informasi,

program-program, penggunaan bersama

piranti keras

(printer, hardisk, scanner, CD Room, serta piranti keras lainnya), dan

memberikan

layanan

komunikasi

antar pemakai.

Dua

komputer

atau

lebih

dikatakan saling berhubungan (terkoneksi) bila saling dapat bertukar informasi

dan

data.  

Hubungan

antar

Komputer tersebut tidak terbatas

berupa

kabel

tembaga saja, namun bisa juga melalui fiber optic, gelombang microwave,

infrared, dan bahkan melalui satelit. Pada dasarnya tujuan daripada pembuatan

jaringan adalah untuk :

•  Dapat menghemat hardware seperti berbagi pemakaian printer dan CPU

•  Melakukan komunikasi, contohnya surat elektronik,

instant

messaging, dan

chatting

•  Mendapatkan akses informasi dengan cepat, contohnya web browsing

•  Melakukan sharing data

8

Berdasarkan  tipe  transmisinya,  network  dibagi  menjadi  dua  bagian

besar yaitu broadcast dan point-to-point. Dalam broadcast network, komunikasi

terjadi dalam sebuah saluran komunikasi yang digunakan secara bersama-sama,

dimana data berupa paket yang dikirimkan dari sebuah komputer akan

disampaikan

ke

tiap komputer

yang

ada

dalam jaringan

tersebut.

Paket

data

hanya

akan diproses oleh

komputer tujuan

dan

akan dibuang oleh

komputer

yang bukan tujuan paket tersebut. Sedangkan pada point-to-point network,

komunikasi

data

terjadi

melalui

beberapa koneksi antar sepasang komputer,

sehingga

untuk

mencapai

tujuannya sebuah paket mungkin harus melalui

beberapa

komputer terlebih

dahulu. Oleh karena

itu,

dalam tipe

jaringan

ini,

pemilihan rute yang baik menentukan bagus tidaknya koneksi data yang

berlangsung.

a. Local  Area  Network  (LAN), adalah sebuah jaringan komputer yang

jaringannya 

hanya 

mencakup  wilayah 

kecil 

seperti 

jaringan 

komputer

kampus,

gedung,

kantor,

dalam rumah,

sekolah

atau

yang

lebih

kecil.

Biasanya LAN menggunakan teknologi IEEE 802.3 yang

mempunyai

kecepatan transfer 10, 100, 1000 Mbit/s. Pada sebuah LAN, setiap komputer

mempunyai daya komputasi sendiri, berbeda dengan konsep dump terminal.

Setiap komputer juga dapat mengakses sumber daya yang ada di LAN sesuai

dengan hak akses yang telah diatur. Sumber daya tersebut dapat berupa data

atau perangkat seperti printer. Pada LAN, seorang pengguna juga dapat

berkomunikasi dengan pengguna yang lain dengan menggunakan aplikasi

yang sesuai.

9

Beberapa teknologi yang digunakan dalam LAN antara lain :

Ethernet

Token ring

FDDI

b.

Wide

Area

Network

(WAN),

adalah

jaringan

komputer

yang

merupakan

gabungan beberapa LAN. WAN dapat memberikan akses kepada komputer,

printer ataupun device yang lain untuk saling berkomunikasi dan melakukan

sharing  sehingga  untuk  berkomunikasi  dapat  dilakukan  tanpa  mengenal

jarak. Wide Area Network dirancang untuk :

Menghubungkan antar jaringan pada skala geografis yang besar.

Membuat

user dapat

melakukan komunikasi dengan

user yang

lain

tanpa

mengenal jarak.

Mendukung email, internet, file transfer, dan service e-commerce.

Untuk merancang sebuah Wide Area Network maka diperlukan beberapa

device  maupun  protocol.  Biasanya  jenis  protocol  yang  digunakan  dalam

Wide Area Network antara lain :

Multi Protocol Layer Switching (MPLS)

Integrated Services Digital Network (ISDN)

Digital subscriber line (DSL)

Frame Relay

X.25

PPP

HDLC

10

VPN

Selain

itu,

device

yang

biasa

digunakan

antara

lain

router,

communication

server, modem CSU/DSU, dan frame relay switch.

c. Metropolitan

Area

Network

(MAN),

adalah

jaringan

komputer

yang

merupakan gabungan beberapa LAN di

satu wilayah geografis. MAN

biasanya dibuat jika jaringan LAN tersebut hanya berada dalam satu wilayah

saja. Penggunaan device dan protocolnya hampir sama dengan WAN.

2.1.2   Internet

Internet adalah suatu jaringan publik dimana pengguna yang ada di luar

jaringan dapat mengakses sumber yang ada di jaringan publik. Definisi lain

mengatakan bahwa internet adalah suatu jaringan antar komputer yang saling

dihubungkan.

Media

penghubung

tersebut

bisa

melalui kabel, kanal satelit

maupun frekuensi radio, sehingga komputer-komputer yang terhubung tersebut

dapat saling berkomunikasi. Setiap komputer

yang terhubung dengan jaringan

tersebut,

diberikan

sebuah

nomor

yang unik, dan berkomunikasi satu sama

lainnya dengan bahasa komunikasi yang sama. Bahasa komunikasi yang sama

ini disebut protokol. Protokol yang digunakan di internet adalah TCP/IP

(Transmission Control Protocol / Internet Protocol).

Internet

itu

sendiri

memiliki beberapa kegunaan

yang sangat membantu bagi

para penggunanya, yaitu :

11

•  Fungsi komunikasi

Internet adalah alat komunikasi, kegunaan yang sangat penting dari internet

adalah pertukaran pesan dengan menggunakan electronic mail (e-mail).

•  Fungsi Resource Sharing

Dengan internet, kita dapat mencari software, essay, data dan program dari

ribuan titik distribusi di seluruh dunia.

•  Fungsi Resource Discovery

Navigasi

untuk

mencari

file

tertentu,

dokumen,

host atau

orang diantara

jutaan host.

•  Fungsi Komunitas

Masyarakat pengguna internet

Layanan yang diberikan oleh internet yaitu :

•  Internet memungkinkan aplikasi – aplikasi terdistribusi yang berjalan pada

end system yangberbedauntuksalingbertukar data. Beberapa contoh dari

aplikasi   tersebut   adalah   remote   login,   e-mail,   web   surfing,   instant

messaging, dll.

•  Internet menyediakan dua layanan sehubungan dengan aplikasi terdistribusi

yang

dijalankan,    yaitu    connection-oriented   reliable   service   dan

connectionless

unreliable

service. Connection-oriented

reliable

service

menjamin bahwa data yang dikirimkan sampai kepada penerima secara utuh

dan dalam urutan yang benar. Sedangkan connectionlessunreliableservice

tidak menjamin keutuhan dan urutan data yang sampai kepada penerima.

Penggunaan fungsi SEMAFORE pada PHP

12

2.1.3   TCP/IP

Definisi

dari

TCP/IP

adalah sebuah

protokol

yang

menentukan

bagaimana

komputer

komputer

dalam suatu

jaringan

saling

terhubung,

mengirim, serta menerima pesan lewat internet. TCP/IP merupakan “bahasa

internet”,  dimana  TCP/IP 

memungkinkan  aneka  jenis  komputer,  dari  PC

sampai mainframe untuk bertukar informasi.( Tanenbaum, 2003)

TCP/IP protocol suite terdiri dari banyak protokol dengan dua protokol

utama,

yaitu

Transport

Control

Protocol

(TCP)

dan Internet

Protocol

(IP).

Dalam protokol

jaringan

TCP/IP,

sebuah

port

adalah

mekanisme

yang

mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan

komputer

lainnya

dan

program di

dalam jaringan.

Port

dapat

mengidentifikasikan aplikasi dan layanan yang menggunakan koneksi di dalam

jaringan 

TCP/IP. 

Sehingga,  port  juga 

mengidentifikasikan  sebuah 

proses

tertentu di mana sebuah server dapat memberikan sebuah layanan kepada klien

atau bagaimana sebuah klien dapat mengakses sebuah layanan yang ada dalam

server. Port dapat dikenali dengan angka 16-bit (dua byte) yang disebut dengan

Port Number dan diklasifikasikan dengan jenisprotokoltransport

apa

yang

digunakan, ke dalam Port TCP dan Port UDP.

Dilihat dari penomorannya, port UDP dan TCP dibagi menjadi tiga jenis, yakni

sebagai berikut:

a. Well-known

Port:

yang

pada

awalnya

berkisar

antara

0

hingga

255

tapi

kemudian diperlebar

untuk

mendukung antara 0

hingga 1023. Port

number

Penggunaan fungsi SEMAFORE pada PHP

13

yang termasuk ke dalam well-known port, selalu merepresentasikan layanan

jaringan   yang   sama,   dan   ditetapkan   oleh   Internet   Assigned   Number

Authority (IANA). Beberapa di antara port-port yang berada di dalam range

Well-known   port   masih   belum   ditetapkan   dan   direservasikan   untuk

digunakan

oleh

layanan

yang

bakal

ada

di

masa

depan. Well-known

port

didefinisikan dalam RFC 1060.

b. Registered  Port:  Port-port  yang  digunakan  oleh  vendor-vendor  komputer

atau

jaringan

yang

berbeda

untuk

mendukung

aplikasi dan sistem operasi

yang mereka buat. Registered port juga diketahui dan didaftarkan oleh IANA

tapi tidak dialokasikan secara permanen, sehingga vendor lainnya dapat

menggunakan port number

yang

sama. Range registered port berkisar dari

1024  hingga  49151  dan  beberapa  port  di  antaranya  adalah  Dynamically

Assigned Port.

c.

Dynamically  Assigned  Port: merupakan port-port yang ditetapkan oleh

sistem operasi

atau

aplikasi

yang

digunakan

untuk

melayani

request

dari

pengguna sesuai dengan kebutuhan. Dynamically Assigned Port berkisar dari

1024 hingga 65536 dan dapat digunakan atau dilepaskan sesuai kebutuhan.

Ciri-ciri yang terdapat pada protokol TCP/IP yang juga merupakan keunggulan

dari protokol tersebut adalah :

• 

Perkembangan protokol TCP/IP menggunakan standar protokol terbuka

• 

Tidak tergantung pada perangkat keras atau sistem operasi jaringan tertentu

•  Cara pengalamatan bersifat unik dalam skala global

• 

TCP/IP memiliki fasilitas routing

Penggunaan fungsi SEMAFORE pada PHP

14

Application Layer

Transport Layer

Internet Layer

Network Access Layer

Physical Layer

Dalam arsitektur

jaringan

komputer,

terdapat

suatu

lapisan

-

lapisan

(layer)

yang memiliki

tugas

spesifik

serta

memiliki

protokol

tersendiri.

ISO

(International Standard Organization) telah mengeluarkan suatu standard untuk

arsitektur jaringan komputer yang dikenal dengan nama Open System

Interconnection

(OSI).

Standard

ini terdiri

dari

7

lapisan

protokol

yang

menjalankan

fungsi

komunikasi

antara 2

komputer.

Dalam TCP/IP

hanya

terdapat 5 lapisan, yaitu :

Application Layer

Presentation Layer

Session Layer

Transport Layer

Network Layer

Data Link Layer

Physical Layer

Arsitektur OSI

Arsitektur TCP/IP

Gambar 2.1 Perbandingan Arsitektur OSI dan TCP/IP

Walaupun jumlahnya berbeda, namun semua

fungsi dari lapisan –

lapisan arsitektur

OSI telah

tercakup oleh

arsitektur

TCP/IP.

Adapun

rincian

fungsi masing – masing layer arsitektur TCP/IP adalah sbb :

a. Physical

Layer

(lapisan

fisik)

merupakan

lapisan

terbawah

yang

mendefinisikan besaran fisik seperti media komunikasi, tegangan, arus, dsb.

15

Lapisan 

ini 

dapat  bervariasi 

bergantung  pada 

media 

komunikasi  pada

jaringan

yang

bersangkutan.

TCP/IP

bersifat

fleksibel sehingga dapat

mengintegralkan mengintegralkan berbagai jaringan dengan media fisik yang

berbeda - beda.

b.

Network

Access

Layer

mempunyai

fungsi

yang

mirip

dengan

Data

Link

layer pada OSI. Lapisan ini mengatur penyaluran data frame-frame data pada

media fisik yang digunakan secara handal. Lapisan ini biasanya memberikan

servis

untuk

deteksi

dan

koreksi

kesalahan dari data yang ditransmisikan.

Beberapa contoh protokol

yang

digunakan

pada

lapisan

ini

adalah

X.25

jaringan

publik,

Ethernet

untuk

jaringan Etehernet, AX.25 untuk jaringan

Paket Radio dsb.

c.

Internet

Layer

mendefinisikan

bagaimana

hubungan

dapat

terjadi

antara

dua pihak yang berada pada jaringan yang berbeda seperti Network Layer

pada OSI.

Pada jaringan Internet yang terdiri atas puluhan juta host dan

ratusan ribu jaringan

lokal, lapisan ini bertugas

untuk

menjamin agar suatu

paket yang dikirimkan dapat menemukan tujuannya dimana pun berada. Oleh

karena itu, lapisan ini memiliki peranan penting terutama dalam mewujudkan

internetworking yang meliputi wilayah luas (worldwide Internet).

Beberapa tugas penting pada lapisan ini adalah :

Addressing,

yakni

melengkapi

setiap

datagram

dengan

alamat

Internet

dari tujuan. Alamat pada protokol inilah yang dikenal dengan Internet

Protocol

Address (IP Address). Karena pengalamatan (addressing) pada

16

jaringan TCP/IP berada pada level ini (software), maka jaringan TCP/IP

independen dari jenis media dan komputer yang digunakan.

Routingyakni  menentukan  kemana  datagram  akan  dikirim  agar

mencapai tujuan yang diinginkan. Fungsi ini merupakan fungsi terpenting

dari Internet Protocol (IP). Sebagai protokol yang bersifat connectionless,

proses

routing

sepenuhnya

ditentukan

oleh

jaringan.

Pengirim tidak

memiliki kendali terhadap paket yang dikirimkannya untuk bisa mencapai

tujuan.

Router-router pada

jaringan TCP/IP lah yang sangat

menentukan

dalam penyampaian datagram dari penerima ke tujuan.

d. Transport  Layer  mendefinisikan cara-cara untuk melakukan pengiriman

data

antara

end

to

end host

secara

handal. Lapisan

ini

menjamin

bahwa

informasi yang diterima pada sisi penerima adalah sama dengan informasi

yang dikirimkan pada pengirim.

Untuk itu, lapisan ini memiliki beberapa fungsi penting antara lain :

Flow

Control.

Pengiriman data

yang telah

dipecah

menjadi paket-paket

tersebut

harus

diatur

sedemikian

rupa

agar

pengirim tidak

sampai

mengirimkan data dengan kecepatan yang melebihi kemampuan penerima

dalam menerima data.

Error Detection.

Pengirim

dan

penerima juga

melengkapi

data dengan

sejumlah informasi yang bisa digunakan untuk memeriksa data yang

dikirimkan

bebas

dari kesalahan.

Jika

ditemukan

kesalahan

pada paket

data

yang

diterima,

maka penerima

tidak akan

menerima data

tersebut.

Penggunaan fungsi SEMAFORE pada PHP

17

Pengirim akan

mengirim

ulang paket data yang mengandung kesalahan

tadi.

e.

Application  Layer  merupakan lapisan terakhir dalam arsitektur TCP/IP

yang berfungsi mendefinisikan aplikasi-aplikasi yang

dijalankan pada

jaringan.  Karena  itu,  terdapat  banyak  protokol  pada  lapisan  ini,  sesuai

dengan banyaknya aplikasi TCP/IP yang dapat dijalankan. Contohnya adalah

SMTP (Simple Mail Transfer Protocol) untuk pengiriman e-mail, FTP

(File

Transfer Protocol) untuk transfer file, HTTP (Hyper Text Transfer Protocol)

untuk aplikasi web, dll.

Proses enkapsulasi data pada protokol TCP/IP dapat dijelaskan dari gambar

di bawah ini :

Gambar 2.2 Proses Enkapsulasi Data Pada Protocol TCP/IP

2.1.4   Web Server

Web Server

adalah

software

yang

menjadi tulang belakang dari worl

wide 

web 

(www). 

Web 

server 

menunggu 

permintaan 

dari 

client 

yang

18

menggunakan browser seperti Netscape Navigator, Internet Explorer, Mozilla,

dan

program browser

lainnya.

Jika ada permintaan dari

browser,

maka

web

browser   akan   memproses   permintaan   itu   kemudian   memberikan   hasil

prosesnya berupa data yang diinginkan kembali ke browser.

Data ini mempunyai format yang standar, disebut dengan format SGML

(standargeneral

markup

language).

Data

yang

berupa

format

ini

kemudian

akan

ditampilkan

oleh

browser

sesuai dengan

kemampuan

browser

tersebut.

Contohnya, bila data yang dikirim berupa gambar, browser yang hanya mampu

menampilkan teks (misalnya lynx) tidak akan mampu

menampilkan gambar

tersebut, dan jika ada akan menampilkan alternatifnya saja.

Web server, untuk berkomunikasi dengan client-nya (web browser)

mempunyai protokol sendiri, yaitu HTTP (hypertext tarnsfer protocol). Dengan

protokol

ini,

komunikasi

antar

web

server

dengan

client-nya dapat saling

dimengerti dan lebih mudah.

Seperti telah dijelaskan diatas, format data pada world wide web adalah

SGML. Tapi para pengguna internet saat ini lebih banyak menggunakan format

HTML

(hypertext

markup

language)

karena

penggunaannya

lebih

sederhana

dan mudah dipelajari.

Kata

HyperText

mempunyai arti bahwa seorang

pengguna

internet

dengan  web  browsernya  dapat  membuka  dan  membaca  dokumen-dokumen

yang

ada

dalam komputernya

atau

bahkan

jauh

tempatnya

sekalipun. Hal

ini

memberikan cita rasa dari suatu proses yang tridimensional, artinya pengguna

19

internet  dapat  membaca  dari  satu  dokumen  ke  dokumen  yang  lain  hanya

dengan mengklik beberapa bagian dari halaman-halaman dokumen (web) itu.

Proses yang dimulai dari permintaan webclient (browser), diterima web

server, diproses, dan dikembalikan hasil prosesnya oleh web server ke web

client

lagi

dilakukan secara

transparan.

Setiap orang

dapat

dengan mudah

mengetahui apa yang terjadi pada tiap-tiap proses. Secara garis besarnya web

server   hanya   memproses   semua   masukan   yang   diperolehnya   dari   web

clientnya.

2.1.5   HTTP

Protokol  HTTP  pertama  kali  dipergunakan  dalam  www  pada  tahun

1990. Pada saat itu yang gunakan adalah protokol HTTP versi 0.9. Versi 0.9 ini

adalah protokol

transfer dokumen secara

mentah, yaitu data dokumen dikirim

sesuai dengan isi dari dokumen tersebut tanpa memandang tipe dari dokumen.

Kemudian pada tahun 1996 protokol HTTP diperbaiki menjadi HTTP versi 1.0.

Perubahan ini untuk mengakomodasi

tipe-tipe dokumen yang hendak dikirim

beserta enkoding yang dipergunakan dalam pengiriman data dokumen.

Sesuai

dengan

perkembangan

infrastruktur

internet

maka

pada

tahun

1999 dikeluarkan HTTP versi 1.1 untuk mengakomodasi proxy, cache dan

koneksi yang persisten. HTTP (HyperText Transfer Protocol) adalah protokol

yang

dipergunakan

untuk

mentransfer

dokumen

dalam World

Wide

Web

(WWW). Protokol ini adalah protokol ringan, tidak berstatus dan generik yang

dapat  dipergunakan  berbagai  macam  tipe  dokumen.  Pengembangan  HTTP

20

dikoordinasi

oleh

Konsorsium World

Wide

Web

(W3C)

dan

grup

bekerja

Internet  Engineering  Task  Force  (IETF),  bekerja  dalam  publikasi  satu  seri

RFC,  yang  paling  terkenal  RFC  2616,  yang  menjelaskan  HTTP/1.1,  versi

HTTP yang digunakan umum sekarang ini.

HTTP adalah sebuah protokol meminta atau menjawab antara client dan

server. Sebuh client HTTP seperti web browser, biasanya memulai permintaan

dengan membuat hubungan TCP/IP ke port tertentu di tuan rumah yang jauh

(biasanya port 80). Sebuah server HTTP yang mendengarkan di port tersebut

menunggu

client

mengirim kode

permintaan

(request),

lalu

me-replydengan

HTTP response.

Contoh request HTTP:

GET

/index.htm HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0

Contoh Response HTTP:

HTTP/1.1 200 OK

Date: Wed, 10 Jun 2009 19:53:40 GMT

Server: Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4

OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.2

Content-Length: 22

Content-Type: text/html

21

<HTML>

:

</HTML>

2.1.6   HTTPS

Hyper

Text

Transfer

Protocol

over Secure socket layer (HTTPS)

merupakan versi aman (save) dari HTTP. Ditemukan oleh Netscapes

communication Corporation untuk menyediakan otentifikasi dan komunikasi

tersandi (memiliki sandi). Selain menggunakan komunikasi Plain Text, HTTPS

menyandikan sesi data menggunakan protokol SSL (Secure Socket Layer) atau

protocol TLS (Transport Layer Security). Kedua protokol tersebut memberikan

perlindungan

yang cukup dari serangan eavesdroppersdan maninthe middle

attacks. Pada umumnya, port HTTPS adalah 443.

2.1.7   PHP

Bahasa scripting adalah bahasa yang dapat menambah fitur –

fitur

tambahan

secara

tertulis

pada HTML,

mengingat

terbatasnya

kemampuan

HTML.Bahasascripting dibagimenjadi2jenis,yaituserver side scripting dan

client side scripting.

Server

side

script adalahscript

yang

diterjemahkan

oleh webserver.

Server side script merupakan

satu set

instruksi

yang diproses oleh serverdan

menghasilkan

HTML.

HTML

yang

dihasilkan

dikirim sebagai

bagian

dari

tanggapan HTTPke browser.Browserkemudian menampilkan HTMLtersebut.

22

Sedangkan 

client 

side  script  merupakan script  yang diterjemahkan

oleh

browser.

PHP

merupakan serversidescriptyang tergabung dalam HTML

yang

didukung

oleh

banyak web

server dan

termasuk

server

HTTP

Apache,

dan

internet

Informatioan

Service

milik

Microsoft. PHP

juga

merupakan

bahasa

pemograman yang

disukai

pada

bahasa scripting web linux. PHP

telah

dipengaruhi

oleh

perkembangan

bahasa

pemograman

lain

seperti

Perl,

‘C’,

Java dan beberapa cakupan ASP (Active Server Pages).

PHP memiliki beberapa kelebihan, yaitu :

•  Ekstensibility, memiliki cakupan yang luas.

Sejumlah

modul

disediakan

untuk mendukung

hal –

hal

seperti

hubungan

dengan database, xml, mail.

Didukung oleh sejumlah besar ISP(Internet Server Provider), yang berarti

aplikasi yang ditulis dengan PHPdapat dengan mudah diletakkan pada web

untuk dilihat oleh siapa saja.

Kombinasi yang popular saat ini adalah server HTTP Apache, PHP, dan

database  MYSQL  atau Postgre  SQL. Di bawah ini merupakan langkah

langkah 

untuk 

mengirim 

web 

(Choi,2000,p2,pp49-51;Connoly,2002,pp965-

966) :

•  Pertama – tama clientmeminta halaman webkemudian webservermencari

lokasi halaman web yang diminta.

• 

Jika

halamn web

tersebut merupakan

halaman PHP

maka webserver perlu

untuk memproses PHPuntuk menghasilkan HTMLyang akan dikembalikan

23

ke browser. Pada tahap ini jika halaman

web

diakhiri

dengan php, maka

server mengirimnya ke server machine PHP yang ada dalam web server

untuk diproses. Jadi kode PHP dimasukkan ke salah satu ujung web server

yang kemudian menghasilkan outputberupa halaman

HTML murni. alaman

HTML  tersebut kemudian dikirimkan ke  browser.  Di browser, halaman

HTML akan diterjemahkan untuk ditampilkan.

2.1.8   MySQL

Menurut artikel “MSIT 643 Relational Database Management System”

dan

“Migrating

From

Microsoft

SQL

Server

and

Access

to

MySQL”, pada

mulanya MySQL dikembangkan oleh TcX, sebuah perusahaan di Swedia oleh

Michael Widenius

sebagai perancang

utama.

Pada

tahun

1979,

ia

mengembangkan sebuah Database Management System yang pertama kali

diberi

nama

UNIREG.

Lalu pada tahun 1995, terlahirlah MySQL yang dirilis

ke internet. Pada tahun 1999, diperkirakan ada sekitar setengah juta server yang

menggunakan MySQL.

MySQL

sebagai

salah satu

DBMS

yang

paling

popular

memiliki

beberapa keunggulan, antara lain :

1.  Performance yang tinggi, reliable, dan mudah untuk digunakan.

2.  Open Source,

yang berarti dapat digunakan dan dikembangkan oleh siapa

saja.

3.  Dapat  dijalankan  pada  system  client/server maupun

sebagai  embedded

system.

24

4.  Cross-Platform, MySQL  dapat  digunakan  pada  berbagai  macam  sistem

operasi.

2.1.9   Bahasa C

Bahasa C

dikembangkan pertama

kali

pada

laboratorium Bell

(USA)

sekitar tahun 1972 oleh Dennis Ritchie pada komputer DEC PDP-11 dengan

sistem   operasi   UNIX.   Untuk   melaksanakan   pembakuan   (standardisasi)

terhadap bahasa C, ANSI (American National Standards Institute) membentuk

team untuk

membuat

bahasa

C

standard

ANSI,

yang

dimulai

tahun

1983.

Standard ANSI inilah yang selanjutnya digunakan sebagai acuan dari berbagai

versi C yang beredar dewasa ini.

Bahasa C mempunyai kemampuan lebih dibanding dengan bahasa

pemrograman yang lain. Bahasa C merupakan bahasa

pemrograman yang

bersifat portabel, yaitu suatu program yang dibuat dengan bahasa C pada suatu

komputer akan dapat dijalankan pada komputer lain dengan sedikit (atau tanpa)

perubahan yang berarti.

Bahasa C merupakan bahasa yang

biasa digunakan untuk keperluan

pemrograman sistem, antara lain untuk membuat :

assembler

interpreter

kompiler

sistem operasi

program bantu (utility)

25

editor

paket program aplikasi

Beberapa

program paket

yang

beredar

seperti

dBase 

dibuat

dengan

menggunakan

bahasa

C,

bahkan

sistem Operasi

UNIX

juga

dibuat

dengan

menggunakan bahasa C. Bahasa C sesungguhnya merupakan bahasa

pemrograman yang serbaguna yang pemakaiannya tidak terbatas untuk

pemrograman sistem, namun juga dapat digunakan untuk aplikasi bisnis,

matematis maupun games, bahkan untuk aplikasi

kecerdasan

buatan.

Dalam

beberapa literatur, bahasa C digolongkan

sebagai

bahasa

aras

menengah

(medium level language).

Penggolongan ini bukan berarti bahasa C kurang ampuh atau lebih sulit

dibandingkan dengan

bahasa

aras

tinggi

(high

level language, seperti Pascal,

Basic,  Fortran,  dll),  namun  untuk  menegaskan  bahwa  bahasa  C  bukanlah

bahasa yang berorientasi pada mesin (yang merupakan ciri bahasa aras rendah

(low level language), yaitu bahasa mesin dan assembly). Pada kenyataannya, C

mengkombinasikan elemen dalam

bahasa aras tinggi dan bahasa aras

rendah,

yaitu kemudahan dalam membuat program yang ditawarkan pada bahasa aras

tinggi dan kecepatan eksekusi dari bahasa aras rendah.

2.1.10 Thread

Thread adalah sebuah pengontrol aliran program pelaksanaan program

dengan menggunakan kendali tunggal (Tanenbaum, 2001). Operasi yang paling

Modern saat ini adalah sistem yang banyak sekali menyediakan berbagai cara,

26

dan memungkinkan suatu proses terkendali dengan baik.Pendekatan tradisional

sebuah thread eksekusi per-proses, dimana konsep thread tidak dikenal.

Thread

bermanfaat

untuk

Multithreading yang berguna untuk

Multiprocessor dan Singleprocessor. Kegunaan untuk sistem Multiprocessor,

adalah :

Sebagai unit pararel atau tingkat granularitas pararelisme

Peningkatan kinerja disbanding berbasis proses

Sedangkan kegunaan Multithreading pada singleprocessor, adalah :

Kerja foreground dan background sekaligus di satu aplikasi

Penanganan asynchronous processing menjadi lebih baik

Mempercepat eksekusi program

Pengorganisasian program menjadi lebih baik

Karakteristik thread adalah :

Proses merupakan lingkungan eksekusi bagi thread-thread yang

dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang

dimiliki proses, yaitu :

Ruang alamat

Himpunan berkas yang dibuka

Himpunan berkas yang dibuka

Timer-timer

Sinyal-sinyal

Sumber daya-sumber daya lain milik proses

27

Tiap thread mempunyai property independen berikut seperti :

Keadaan (state) eksekusi thread (running, ready dan sebagainya)

Konteks pemroses

Thread

dapat dipandang

sebagai

satu PC

(program counter)

tersendiri

independen 

di 

satu 

proses. 

Beberapa 

penyimpan 

statik 

per-thread 

untuk

variable-variabel lokal.

a.   Paket Thread

Paket thread adalah sekumpulan primitive (misalnya library calls)

untuk

pemrogram berhubungan

dengan

thread

di

program aplikasi.

Pertimbangan penting pembuatab paket thread adalah :

Waktu penciptaan thread

Penanganan critical region di tingkat thread

Penanganan private global variables

Implementasi paket thread

b.  Jenis-jenis Thread Berdasarkan Waktu

Berikut

ini

adalah

macam –

macam

thread

berdasarkan waktu

penciptaannya, yaitu :

1.   Static threads

Jumlah thread yang akan dibuat ditentukan saat penulisan dan kompilasi

program.

Tiap

thread

langsung

dialokasikan

stack

tetap.

Keunggulan

dari thread ini adalah sederhana. Sedangkan kelemahannya adalah tidak

fleksibel.

28

2.   Dynamic threads

Penciptaan dan penghancuran thread “on-the-fly” saat eksekusi.

Penciptaan thread biasanya lebih spesifik pada fungsi utamanya (seperti

pointer ke prosedur) dan ukuran stack, dapat juga ditambah parameter-

parameter  lain  seperti  prioritas  panjadualan.  Keunggulan  thread  ini

adalah fleksibel. Kelemahannya adalah lebih rumit.

2.1.11 IPC (Inter-Process Communication)

Inter-Process Communication (IPC) atau Komunikasi antar Proses

adalah teknik-teknik untuk penukaran data antara banyak thread (fork kepada

dua atau lebih task yang berjalan secara konkuren) dalam satu atau lebih proses

(Tanenbaum, 2001). Proses dapat berjalan pada satu atau lebih computer yang

terhubung oleh sebuah network. Teknik-teknik IPC dibagi menjadi

metode-

metode untuk message passing, synchronization, shared memory, dan remote

procedure calls

(RPC).

Metode

IPC

yang

digunakan

dapat

berbeda-beda

tergantung bandwidthdan

latensi komunikasi antar thread, dan tipe data

yang

dikomunikasikan.

A. Shared Memory

Shared Memory merupakan salah satu metode interprocess

communication

yang

paling

sederhana, dimana

shared

memory

memperbolehkan 2 atau lebih proses untuk mengakses memory yang sama,

biasa disebut dengan

malloc, dan pointer dikembalikan ke memory yang

sebenarnya.

29

B. Socket Programming

Socket  adalah  mekanisme  komunikasi  yang  memungkinkan

terjadinya pertukaran data antar program atau proses baik dalam satu

mesin

maupun antar mesin(Stevens, 1998). Gaya pemrograman socket sendiri

berawal dari sistem Unix

BSD

yang

terkenal

dengan

kepeloporannya

pada

bidang

penanganan

jaringan,

sehingga sering disebut BSD Socket. Socket

pertama kali diperkenalkan di system Unix BSD versi 4.2 tahun 1983 sebagai

kelanjutan

dari

implementasi

protokol

TCP/IP

yang

muncul

pertama

kali

pada system Unix BSD 4.1 pada akhir 1981. Hampir setiap varian Unix dan

Linux mengadopsi BSD socket.

Linux

menggunakan

paradigma

open-read-write-close. Sebagai

contoh, suatu aplikasi pertama harus memanggil open untuk menyiapkan file

yang akan diakses. Kemudian aplikasi tersebut

memangil

read atau write

untuk

membaca data dari pada

file atau

menuliskan data ke

file. Setelah itu

close dijalankan untuk mengakhiri aplikasi yang digunakan. Interface soket

dalam berkomunikasi  bisa dilihat dalam gambar berikut :

Penggunaan fungsi SEMAFORE pada PHP

30

Gambar 2.3 Interface Socket Dalam Berkomunikasi Data

Di dalam kotak menunjukkan system call / function yang dibutuhkan

untuk koneksi / komunikasi, misalnya socket(), bind(), listen(), connect(), dll.

Secara garis besar langkah – langkah yang dilakukan pada client dan server

adalah sebagai berikut :

1.   Langkah – langkah dasar di client :

a) 

Membuka koneksi client ke server, yang di dalamnya adalah :

Membuat socket dengan printah socket()

Melakukan pengalamatan ke server

Menghubungi server dengan connect()

b) 

Melakukan 

komunikasi 

(mengirim 

dan 

menerima 

data), 

dengan

menggunakan perintah write()dan read().

c) 

Menutup hubungan dengan perintah close().

Penggunaan fungsi SEMAFORE pada PHP

31

2.   Langkah – langkah dasar di server :

a) 

Membuat socket dengan printah socket()

b) 

Mengikatkan socket kepada sebuah

alamat

network dengan perintah

bind()

c) 

Menyiapkan

socket

untuk

menerima

koneksi

yang

masuk ke

server

dengan perintah listen()

d) 

Menerima koneksi yang masuk ke server dengan perintah accept()

e) 

Melakukan 

komunikasi 

(mengirim 

dan 

menerima 

data), 

dengan

menggunakan perintah write()dan read()

Gambar 2.4 Komunikasi Antar Sepasang Socket

Penggunaan fungsi SEMAFORE pada PHP

32

Gambar 2.5 Client – Server Socket

Struktur Pengalamatan

Jaringan

komputer

dalam melakukan

pengiriman

data

dapat

diilustrasikan

seperti

pengiriman

surat. Supaya surat

dapat

terkirim secara

benar,

maka alamat pengirim dan

penerima harus tertulis dengan jelas dan

lengkap.

Begitu juga dengan koneksi di socket, diperlukan variable yang

dipakai

untuk

menyimpan

address

clent dan server. Variable yang dipakai

berupa structure sockaddrdan sockaddr_inpada include socket.h di direktori

/usr/include/sys. Address

ini

akan dipakai pada waktu

melaukan connect(),

bind(), danaccept().

33

C. Mutex

Mutex (mutual

exclusion)

adalah

suatu

jenis

semaphore

yang

digunakan untuk menjamin hanya

ada satu proses yang berjalan untuk

mengakses

buffer pada

suatu

waktu.

Sehingga

thread –

thread lain yang

mencoba

mengakusisi

mutex

akan

memblock. Pemblokiran didapatkan

dengan melakukan spinning atau sleeping. Mutex biasanya diberi inisialisasi

dengan angka 1.

Solaris memiliki dua tipe dasar mutex, yaitu “adaptive” dan “spin”.

Tipe default mutex adalah adaptive.

Tipe

mutex

ditentukan

ketika

diinisialisasikan oleh

mutex_init(9f). Sebagian besar

mutex di sistem adalah

adaptive,

dan

kode

pengunci dioptimalisasikan

untuk

mutex adaptive tanpa

perlu diperdebatkan. Dengan kata lain, mengakusisi mutex adaptive yang

tidak ada pemilikinya merupakan kasus yang paling umum dan path kodenya

paling cepat.

a.   Mutex adaptive bekerja sebagai berikut :

Thread peminta mencoba mendapatkan pengunci. Jika pengunci

tidak ada pemiliknya, thread peminta “mengakusisi” pengunci dan

melanjutkan pemorosesannya. Jika pengunci telah ada pemiliknya, dan

pemilik

pengunci

sekarang

sedang berjalan

di

prosesor

(tentunya

ini

mempengaruhi mesin berprosesor gdana), thread peminta men-spin untuk

mencoba mengakusisi pengunci. Jika pemilik pengunci mem-blok (men-

switch keluar membiarkan thread lain berjalan), thread peminta tidur (

berhenti 

men-spin 

dan 

men-switch 

keluar). 

Jika 

pemilik 

pengunci

34

melepaskan penguncinya, thread peminta bisa mengakusisi pengunci

tersebut (tentunya bisa saja terdapat

beberapa

thread

men-spin,

dalam

kasus ini hanya satu thread akan mendapatkan penguncinya). Jika thread

pemilik tidak sedang berjalan di prosesor, thread peminta tidur. Dalam

kasus   dimana   beberapa   thread   peminta   tidur   untuk   mendapatkan

pengunci, thread-thread seperti ini

mengakusisi

pengunci

berdasarka

prioritas urutan FIFO.

b. 

Mutex spin bekerja sebagai berikut :

Thread  peminta  me-mask  interupsi  di  tingkat  yang  ditentukan

oleh

sebuah

argumen

dari

mutex_init(9f).  Thread peminta mencoba

mengakusisi 

pengunci. 

Jika  pengunci 

telah 

ada  pemiliknya,  thread

peminta men-spin dengan interrupts masked hingga pengunci dilepaskan

dan thread peminta dijamin memperoleh penguncinya. Ketika pengunci

tidak ada pemiliknya, thread peminta mengakusisi pengunci dan

melanjutkan pemrosesanya dengan  interrupts masked. Interupsi di-

unmasked ketika pengunci dilepaskan. Dalam kasus dimana beberapa

thread

men-spin

(di prosesor

yang berbeda,

tentunya), salah satu thread

ini akan mengakusisi pengunci ketika pengunci dilepaskan. Siapa yang

akan mengakusisi pengunci tergantun siapa yang lebih dulu

mendapatkannya.

Penggunaan

mutex

bersifat

“sukarela” (voluntary). Penggunaan

mutex

terlalu

banyak

menimbulkan

resiko kinerja buruk. Hindari

penggunaan mutex karena menimbulkan resiko data tak-konsisten.

35

D. Semaphore

Semaphore

pada

UNIX

merupakan suatu counter yang dapat

digunakan untuk mensinkronisasi multiple

thread.

Apabila

menggunakan

semaphore, maka harus menyertakan preprocessor include <semaphore.h>

Secara deskripsi, semaphore dapat  

digambarkan sebagai suatu

pemrograman struktur komponen data yang merupakan suatu variable

bilangan bulat tak negatif semval.

Seperti yang kita ketahui bersama bahwa semaphore dapat digunakan

ketika beberapa proses mencoba untuk mengakses file yang sama. Dalam hal

ini

kita

harus

membuat

semaphore

yang tersedia

agar

dapat

diakses

oleh

semua proses sehingga mereka dapat membaca dan memeriksa nilai juga

menginisialisasi

serta

mereinilisasi nilai

dari

semaphore

yang

sewajarnya.

Untuk alasan tersebut semaphore hanya disimpan di dalam kernel sehingga

dapat diakses oleh semua proses.

Karena

beberapa

kegunaan

seperti

onmode

menggunakan

koneksi -

koneksi memori yang dibagi bersama, maka kita harus mengatur sedikitnya

dua semaphore untuk menetapkan masing –

masing kejadian pada server

database. Pertama, karena set awal dari VPs dan yang kedua adalah karena

koneksi –

koneksi 

memori yang dibagi bersama

untuk setiap penggunaan

server database.

Parameter

konfigurasi

sistem operasi

SEM-NI

pada

umumnya

menerapkan banyaknya semaphore untuk menetapkan pengalokasiannya.

Karena informasi tentang bagaimana cara menetapkan parameter – parameter

36

terkait dengan semaphore melihat perintah konfigurasi untuk sistem operasi

yang digunakan.

Parameter

konfigurasi

sistem operasi

SEMMSL

pada

umumnya

menetapkan nomor maksimum dari semaphore – semaphore per set. Tetapan

parameter ini untuk minimal 100.

Beberapa

sistem operasi

memerlukan

pengaturan

suatu

total

nomor

yang maksimum dari semaphore – semaphore yang tersedia, yang mana pada

umumnya parameter konfigurasi ditetapkan oleh sistem operasi SEMMNS.

Semaphore dapat juga digunakan sebagai mekanisme sleep / wakeup.

Perbedaan antara semaphore dan variabel kondisi adalah semaphore tidak

memiliki

cara

untuk membangunkan

semua

thread (seperti

fungsi

cv_broadcast pada variabel kondisi).

a.   Macam – macam semaphore, yaitu :

1.   binary semaphore, nilai hanya berkisar 0 dan 1.

2.   counting semaphore, nilai tidak terikat pada 0 dan 1.

b. 

Semaphore system calls teridiri dari 3, yaitu :

1.   semget(key;nsems;flags)

buat  satu  array  semaphore  –  semaphore 

nsems  dan  kembalikan

identifikasinya sid

2.   semop(sid;ops;nops)

laksanakan

valensi daftar operasi di sid seperti

yang ditetapkan oleh

array ops dari panjangnya nops

37

3.   semctl(sid;snum;cmd;arg)

merubah  atau  mengembalikan 

informasi  tentang  arus  status  dari

semaphore – semaphore seperti yang terdapat pada struct sem

c.   Suatu struktur data pemeliharaan semaphore ditunjukkan dalam :

1.   semval, adalah nilai semaphore pada saat ini.

2.   sempit, adalah nomor identifikasi proses

yang

menunjukkan operasi

terakhir.

3.   semncnt,   adalah   nomor   proses   yang   menunggu   semval   untuk

mencapai nilai positif yang cocok.

4.   semzcnt, adalah nomor proses

yang

menunggu semval menjadi

nol.

System call ini dikembalikan satu integer id ke semaphore (analisator

ke suatu file descriptor), atau -1 dalam hal kesalahan (error).

E. Message Passing

Sistem ini

menyediakan suatu

mekanisme agar

proses-proses dapat

berkomunikasi dan mesinkronkan tugas-tugasnya tanpa harus berbagi pakai

ruang

alamat

yang

sama

dan

terutama

digunakan

dalam lingkungan

terdistribusi, dimana komunikasi proses terjadi antar komputer yang

terhubung melalui jaringan. Fasilitas yang disediakan terdiri dari dua operasi

yaitu send(message)

dan receive(message).

Pengiriman pesan

ukuran

yang

tetap maupun dinamis.

Penggunaan fungsi SEMAFORE pada PHP

38

Gambar 2.6 Cara Kerja Message Passing

Jika suatu proses P dan Q berkomunikasi diantaranya harus

mengirimkan pesan dan menerima pesan dari yang lainnya. Beberapa metode

hubungan komunikasi antar proses tersebut diantaranya adalah:

a) 

Komunikasi langsung dan tidak langsung

Komunikasi Langsung

Proses-proses yang ingin dikomunikasikan harus memiliki sebuah

cara untuk memilih satu dengan yang lain. Mereka dapat menggunakan

komunikasi

langsung/tidak

langsung.Setiap

proses yang

ingin

berkomunikasi harus memiliki nama yang bersifat eksplisit baik

penerimaan atau pengirim dari komunikasi tersebut. Dalam konteks ini,

39

pengiriman 

dan 

penerimaan 

pesan 

secara 

primitif 

dapat 

dijabarkan

sebagai berikut:

Send (P, message) - mengirim sebuah pesan ke proses P.

Receive (Q, message) - menerima sebuah pesan dari proses Q.

Komunikasi Tidak Langsung

Dengan komunikasi tidak langsung, pesan akan dikirimkan pada

dan diterima dari/melalui mailbox (Kotak Surat) atau terminal-terminal,

sebuah  mailbox  dapat  dilihat  secara  abstrak  sebagai  sebuah  obyek  di

dalam setiap

pesan

yang

dapat ditempatkan

dari

proses

dan

dari

setiap

pesan

yang bias

dipindahkan.

Setiap

kotak

surat

memiliki

sebuah

identifikasi

(identitas)

yang

unik, sebuah

proses

dapat

berkomunikasi

dengan beberapa proses lain melalui sebuah nomor dari mailbox yang

berbeda. Dua proses dapat saling berkomunikasi apabila kedua proses

tersebut berbagi pakai

mailbox. Pengirim dan penerima dapat dijabarkan

sebagai:

Send (A, message) - mengirim pesan ke mailbox A.

Receive (A, message) - menerima pesan dari mailbox A.

b)  Komunikasi sinkron dan asinkron

Komunikasi

antara

proses

membutuhkan

place

by

calls untuk

mengirim

dan

menerima

data

primitif.

Terdapat

desain

yang

berbeda-

beda  dalam  implementasi  setiap  primitif.  Pengiriman  pesan  mungkin

40

dapat

diblok

(blocking)

atau

tidak

dapat

dibloking

(nonblocking)-juga

dikenal dengan nama sinkron atau asinkron.

Pengiriman  yang  diblok:  Proses  pengiriman  di  blok  sampai  pesan

diterima oleh proses penerima (receiving process) atau oleh mailbox.

Pengiriman   yang   tidak   diblok:   Proses   pengiriman   pesan   dan

mengkalkulasi operasi.

Penerimaan yang diblok: Penerima memblok sampai pesan tersedia.

Penerimaan

yang tidak diblok: Penerima

mengembalikan pesan

valid

atau null.

c) 

Penyangga (buffering) otomatis dan eksplisit

Apa pun jenis komunikasinya, langsung atau tidak langsung,

penukaran pesan oleh proses memerlukan antrian sementara. Pada

dasarnya, terdapat tiga cara untuk mengimplementasikan antrian tersebut:

Kapasitas Nol.

Antrian

mempunyai

panjang

maksimum 0,

sehingga

tidak ada penungguan pesan (message waiting). Dalam kasus ini,

pengirim harus memblok sampai penerima menerima pesan.

Kapasitas   TerbatasAntrian 

mempunyai   panjang   yang   telah

ditentukan, paling banyak “n” pesan dapat dimasukkan. Jika antrian

tidak penuh ketika pesan dikirimkan, pesan yang baru akan menimpa,

dan pengirim pengirim dapat

melanjutkan eksekusi tanpa

menunggu.

Link

mempunyai

kapasitas

terbatas.

Jika

link

penuh,

pengirim

harus

memblok sampai terdapat ruang pada antrian.

41

Kapasitas

Tidak

Terbatas.

Antrian

mempunyai

panjang

yang

tak

terhingga, sehingga semua pesan dapat menunggu disini. Pengirim

tidak akan pernah di blok.

F. Signalling

Signalling  adalah  sebuah  sinyal  yang  digunakan  di  sistem  UNIX

untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal

dapat digunakan secara synchronous atau asynchronous tergantung dari

sumber  dan  alas  an  kenapa  peristiwa 

itu 

meberi  sinyal. Semua  sinyal

(asynchronous dan synchronous) mengikuti pola yang sama :

Sebuah sinyal dimunculkan oleh kejadian dari suatu peristiwa.

Sinyal yang dimunculkan tersebut dikirim ke proses

Sesudah dikirim, sinyal tersebut harus ditangani.

Setiap sinyal dapat ditangani oleh salah satu dari dua penerima sinyal :

a) 

Penerima sinyal yang merupakan set awal dari system operasi.

b) 

Penerima

sinyal

yang didefinisikan sendiri oleh

user. Penanganan sinyal

pada program yang hanya memakai thread tunggal cukup mudah yaitu

hanya

dengan

mengirimkan

sinyal

ke prosesnya.

Tetapi

mengirimkan

sinyal

lebih

rumit

pada

program yang

multithreading,

karena

sebuah

proses dapat memiliki beberapa thread.

42

Secara umum ada tiga pilihan kemana sinyal harus dikirim :

a) 

Mengirimkan sinyal ke thread yang dituju oleh sinyal tersebut.

b)  Mengirimkan sinyal ke setiap threadpadaprosestersebut.

c) 

Mengirimkan sinyal ke thread tertentu dalam proses.

G. Named Pipe

Named  pipe  hanya  bisa  digunakan  untuk  komunikasi  antara  dua

proses

yang

men-share common

file sistem. Keuntungan

dari

named

pipe

adalah kemampuan untuk mengkomunikasikan dua proses yang dimulai

secara independent, dimana salah satu proses tidak fork off sebuah proses

baru.

H. Unnamed Pipe

Unnamed pipe

digunakan ketika

program Linux

mematikan sebuah

proses yang terpisah setelah menggunakan pipe library call untuk men-create

dua

file

descriptors (salah

satunya

tiap

bagian

akhir

dari

pipe).

file

unnamed_pipe.c mengimplementasikan ends of a pipe dengan meng-create

dua input/output file descriptors:

int file_descriptors[2]

Pipe(file_descriptors)

dan kemudian forking off sebuah proses baru menggunakan fork library call:

pid_t spawned_process_pid = fork()

43

2.1.12 Embedded System

Embedded

system merupakan

suatu

sistem /

program yang

sengaja

dirancang untuk melakukan tugas yang sangat spesifik. Sehingga, karena tugas

yang dilakukannya sangat spesifik dan berulang –

ulang, tidak dibutuhkan

kekuatan

prosesor

yang

sangat

tinggi.

Dan

hal

ini

akan

sangat

menghemat

biaya produksi.

Embedded

system biasanya

merupakan

bagian

dari

piranti

yang

lebih

besar.

Dalam

hal

ini,

embedded

system di

pergunakan

untuk

meningkatkan

kapabilitas

piranti

itu

sendiri.

Banyak dari kita

yang tidak

menyadari

bahwa

embedded

system sebenarnya

telah

menjadi

bagian

dari

kehidupan,

karena

mereka selalu ada di hamper semua piranti eletronik yang kita gunakan saat ini.

Beberapa embedded system yang banyak ditemui saat ini :

-

Sistem Pemrosesan Signal

Real-time video, DVD player, peralatan kesehatan.

-

Distributed control

Network router, switche, firewall, mass transit system, elevator

-

“Small” systems

Mobile

phone,

pager, toys,

smartcard, MP3 player, PDA,

kamera

digital,

sensor.

Karakteristik dari embedded system adalah :

Menjadi bagian dari system yang lebih besar

Application-specific, 

bahkan 

sebagian 

bekerja 

dengan 

real-time 

Baik

hardware

maupun software dirancang khusus

untuk aplikasi yang spesifik.

44

Software

yang dipergunakan untuk embedded system biasa disebut dengan

firmware,

dan

disimpan

di

dalam ROM

atau

Flash

Memory.

Firmware

tersebut bekerja dengan sumber daya yang sangat terbatas. (Tanpa Monitor,

Keyboard dan memory yang besar)

• 

Interaksi dengan dunia fisik

Aspek  –  aspek  yang  membedakan  embedded  system  dari  sistem  –  sistem

lainnya yaitu :

a.  Biaya (cost)

Ini merupakan aspek yang dapat dikatakan paling penting karena

sangat

mempengaruhi desain suatu embedded

system secara

keseluruhan.

Dalam membuat

suatu

embedded

system,

biasanya

dipilih

komponen-

komponen secara optimal, yaitu yang memungkinkan implementasi sistem

tersebut tetapi dengan biaya yang

serendah-rendahnya. Hal ini karena

perbedaan harga sedikit saja dapat sangat berpengaruh ketika embedded

system tersebut harus dipasarkan secara luas dalam jumlah yang besar.

b.  Constraintwaktu

Tidak sedikit embedded system yang sekaligus merupakan real-time

system,

yaitu

sistem yang prosesnya

terbatasi

oleh

batas waktu. Sistem -

sistem

ini

umumnya

merupakan

sistem yang

digunakan

untuk

keperluan

yang kritikal, dan harus selalu

aktif. Dengan demikian tidak seperti system

computer

desktop

yang

dapat

dilakukan reboot,

misalnya

untuk

menjaga

kestabilannya atau menangani serangan tertentu seperti virus, dalam

embedded  system  tertentu  hal  tersebut  mungkin  tidak  dapat  diterima.

45

Embedded

system harus

selalu

stabil,

termasuk

dalam gangguan

oleh

serangan. Harus diperhatikan bagaimana jika suatu real-time system

mengalami

serangan

Denial

of

Service (DoS) yang membuatnya menjadi

lambat sehingga batas waktunya tidak lagi terpenuhi.

c.  Interaksi langsung dengan dunia nyata

Banyak embedded system, umumnya embedded control application,

harus berhubungan langsung dengan dunia nyata. Akibatnya adalah

kesalahan suatu gangguan bisa berakibat lebih fatal dibandingkan sistem

komputer yang biasa. Jika misalnya suatu komputer server yang menyimpan

database mengalami gangguan, paling parah yang terjadi adalah kehilangan

data, dan apabila database tersebut

di-backup

secara

berkala

maka

kerugiannya lebih kecil

lagi. Hal ini akan sangat berbeda jika misalnya

sistem kontrol

dalam suatu

pabrik

kimia

mengalami

gangguan

dan

melakukan kesalahan.

d.  Constraint energi

Banyak embedded system yang mengambil daya dari baterai. Hal ini

berarti

munculnya

satu titik

serangan baru

pada

embedded

system,

yaitu

power supply.

e.  Elektronika

Masih berhubungan dengan yang terakhir, karena embedded system

merupakan

sistem yang

sangat

erat

dengan

elektronika,

maka

seranganserangan atau gangguan juga

mungkin dilakukan secara elektrik,

misalnya 

analisis 

dengan 

multimeter, 

logic 

analyzer, 

dan 

sebagainya.

46

Walaupun

sistem komputer

lain

pada

dasarnya

juga

merupakan

alat

elektronik,

tetapi

kemungkinan

hal ini

dilakukan

lebih

tinggi

untuk

embedded system.

2.1.13 Enkripsi

a.   Algoritma Asimetrik

Algoritma kriptografi asimetrik (Algoritma asimetrik) merupakan

algoritma  kriptografi  yang  menggunakan  dua  buah  kunci  yang  berbeda

untuk proses enkripsi dan dekripsi. Kunci yang digunakan untuk enkripsi

disebut  kunci  publik  sedangkan  kunci  yang  digunakan  untuk  dekripsi

disebut kunci private. Dinamai kunci publik karena nilai kunci ini bisa

diketahui

oleh siapa saja.

Maksudnya jika

kunci

ini

diketahui oleh

semua

orang,

tidak

akan

mempengaruhi

keamanan dari informasi yang akan

dikirim. Namun, jika kunci private diketahui oleh banyak orang, maka

keamanan informasi tidak akan terjamin. Oleh sebab itu, privatee key hanya

diketahui oleh orang-orang tertentu (pihak yang berwenang).

Pada

awalnya, algoritma asimetrik hadir untuk mengatasi masalah

yang terjadi pada algoritma simetrik (key manajemen). Namun, seiring

dengan   perkembangan   zaman,   algoritma   asimetrik   digunakan   untuk

enkripsi dan dekripsi data.

Sebenarnya, dua buah kunci yang digunakan pada algoritma

asimetrik (kunci publik dan kunci privatee)

didapatkan

melalui

suatu

perhitungan.   Kunci   private   dihitung   menggunakan   perhitungan   yang

Penggunaan fungsi SEMAFORE pada PHP

47

melibatkan kunci publik dan sejumlah parameter tertentu, sehingga

seseorang yang hanya mengetahui kunci publik saja akan sulit bahkan tidak

mungkin untuk menghitung kunci private. Pada umumnya, algoritma

asimetrik

mengaplikasikan

beberapa persoalan pada

matematika,

seperti

pemfaktoran bilangan integer yang sangat besar, masalah

logaritma diskrit

(discrete

logarithm

problem),

elliptic

curve, bilangan

kompleks

(complex

number), dsb. Contoh dari algoritma asimetrik adalah RSA.

Saya

!!x!!??!x!

E

D

Saya

plaintext

enkripsi

dekripsi

ciphertext

plaintext

Gambar 2.7 Enkripsi Asimetrik

b.  Algoritma Simetrik

Algoritma kriptografi simetrik (algoritma simetrik) merupakan

algoritma kriptografi yang menggunakan satu buah kunci untuk proses

enkripsi dan dekripsi. Karena kunci yang digunakan untuk enkripsi dan

dekripsi adalah sama, maka kekuatan dari algoritma ini terletak pada kunci

yang digunakan. Kunci yang digunakan pada algoritma

simetrik disebut

dengan secret key.

Kelemahan algoritma simetrik terletak pada manajemen kunci (key

management). Karena kunci yang digunakan pada algoritma simetrik

memegang peranan penting, maka kunci ini tidak boleh diketahui oleh pihak

Penggunaan fungsi SEMAFORE pada PHP

48

yang tidak berhak. Sehingga diperlukan suatu

mekanisme

yang

menjamin

pengiriman/distribusi kunci pada semua pihak yang berwenang secara aman.

Masalah distribusi kunci ini merupakan salah satu aspek yang terdapat pada

manajemen kunci.

Rumitnya masalah manajemen kunci pada algoritma simetrik ini

membuat algoritma simetrik lebih memfokuskan pada masalah manajemen

kunci

dibandingkan

masalah

enkripsi

data.

Selain

manajemen

kunci,

hal

yang

tidak

kalah

penting

dalam algoritma

simetrik

adalah

meyakinkan/jaminan

bahwa

pengirim

dan

penerima

message

benar-benar

memiliki kunci yang sama.

Saya

!!x!!??!x!

Saya

E

D

plaintext

enkripsi

ciphertext

dekripsi

plaintext

Gambar 2.8 Enkripsi Simetrik

Berdasarkan  proses  yang  dilakukannya,  algoritma  simetrik  dibagi

menjadi dua, yaitu :

Block

cipher,

rangkaian

bit-bit

plainteks dibagi

menjadi

blok-blok

bit

dengan panjang sama, biasanya 64 bit (tapi adakalanya lebih). Algoritma

enkripsi menghasilkan blok cipherteks yang –

pada kebanyakan sistem

kriptografi simetri –  berukuran sama dengan blok plainteks.

49

•  Stream cipher, suatu  sistem  dimana  kuncinya  dimasukkan  ke  dalam

suatu algoritma yang menggunakan kunci untuk membangkitkan suatu

rangkaian yang tak terbatas. Algoritma tersebut biasanya dikenal sebagai

pembangkit 

rangkaian  (sequence 

generator) 

atau 

pembangkit 

kunci

stream (stream key

generator),

stream cipher

memiliki

karakteristik

membagi teks

terang ke dalam karakter-karakter dan

menyandi

masing-

masing karakter bit per waktu dengan suatu fungsi waktu bervariasi yang

ketergantungan waktunya di atur berdasarkan kondisi (state) internal dari

algoritma

sistem sandi tersebut. Setiap penyandian satu karakter selesai,

perangkat tersebut akan merubah kondisi (state) sesuai formulasinya.

Sehingga pemunculan dua karakter teks terang yang sama biasanya tidak

akan

menghasilkan

karakter

teks

sandi

yang

sama.

stream cipher

juga

sebagai sistem sandi data digital yang

menyandi 1 bit atau 1 byte dalam

satuan

waktu.    Proses    enkripsi    pada    stream    cipher    umumnya

menggunakan operasi XOR sehingga kekuatan kriptografis dari algoritma

stream cipher terletak pada key generatornya. Sebuah key generator harus

menghasilkan

rangkaian kunci

yang

acak

dan memiliki

periode

yang

sangat panjang sehingga dapat dihindari pengulangan pemakaian kunci

akibat dari periode yang tidak maksimum.

2.1.14 RC-4

RC4

merupakan salah satu jenis

stream cipher,

yaitu

memproses

unit

atau input data pada satu saat. Unit atau data pada umumnya sebuah byte atau

50

bahkan kadang kadang bit (byte dalam hal RC4). Dengan cara ini enkripsi atau

dekripsi

dapat

dilaksanakan

pada

panjang yang variabel. Algoritma ini tidak

harus

menunggu

sejumlah

input

data

tertentu

sebelum diproses,

atau

menambahkan byte tambahan untuk mengenkrip. Contoh stream cipher adalah

RC4, Seal, A5, Oryx, dll. Tipe lainnya adalah block cipher yang memproses

sekaligus sejumlah tertentu data (biasanya 64 bit atau 128 bit blok), contohnya :

Blowfish, DES, Gost, Idea, RC5, Safer, Square, Twofish, RC6, Loki97, dll.

RC4

merupakan enkripsi stream simetrik proprietary

yang dibuat oleh

RSA Data Security, Inc (RSADSI). Penyebarannya diawali dari sebuah source

code yang diyakini sebagai RC4 dan dipublikasikan secara 'anonymously' pada

tahun

1994.

Algoritma

yang

dipublikasikan ini sangat identik dengan

implementasi

RC4

pada

produk

resmi. RC4

digunakan

secara

luas

pada

beberapa aplikasi dan umumnya dinyatakan sangat aman. Sampai saat ini

diketahui tidak ada yang dapat memecahkan/membongkarnya, hanya saja versi

ekspor 40 bitnya dapat dibongkar dengan cara "brute force" (mencoba semua

kunci yang mungkin). RC4 tidak dipatenkan oleh RSADSI, hanya saja tidak

diperdagangkan secara bebas (trade secret).

2.1.15 Use Case Diagram

Use-case

diagram menjelaskan

manfaat dari

aplikasi

jika

dilihat dari

sudut

pandang

orang

yang

berada

diluar

sistem (actor).

Diagram ini

menunjukkan

fungsionalitas

suatu

sistem atau

kelas

dan

bagaimana

sistem

berinteraksi

dengan

dunia

luar.

Use-case

diagram dapat

digunakan

selama

proses analisa untuk menangkap requirements atau permintaan terhadap sistem

Penggunaan fungsi SEMAFORE pada PHP

51

dan

untuk memahami bagaimana sistem tersebut harus berkerja.Selama tahap

desain, use-case diagram menetapkan perilaku dari aplikasi saat

implementasi.

Dalam  sabuah  model 

memungkinkan  terdapat  satu  atu  beberapa  use-case

diagram.

Gambar 2.9 Use Case

2.1.16 Sequence Diagram

Sequence 

Diagram  menjelaskan 

interaksi  objekyang  disusun  dalam

suatu

urutan

waktu.

Diagram ini

secara

khusus

berasosiasi

dengan

use-case.

Sequencediagram memperlihatkan tahap demi tahap apa yang arusterjadi untuk

menghasilkan suatu didalam use-case diagram.

Tipe diagram yang digunakan

sebaiknya 

digunakan 

diawal 

tahap  desain 

atau 

analisis 

karena

kesederhanaannya dan mudah untuk di mengerti.

Penggunaan fungsi SEMAFORE pada PHP

52

Gambar 2.10 Sequence Diagram

2.1.17 Entity Relationship Diagram

ERD merupakan suatu model untuk

menjelaskan

hubungan antar data

dalam basis

data

berdasarkan

objek-objek

dasar

data

yang

mempunyai

hubungan

antar

relasi. ERD untuk

memodelkan struktur

data dan

hubungan

antar data, untuk menggambarkannya digunakan beberapa notasi dan simbol.

Pada dasarnya ada tiga simbol yang digunakan, yaitu :

a.   Entiti

Entiti

merupakan

objek

yang

mewakili

sesuatu

yang nyata

dan dapat

dibedakan dari sesuatu yang lain (Fathansyah, 1999: 30). Simbol dari entiti

ini biasanya digambarkan dengan persegi panjang.

b.   Atribut

Setiap entitas pasti mempunyai elemen yang disebut atributyang berfungsi

untuk

mendeskripsikan

karakteristik

dari

entitas tersebut.

Isi

dari

atribut

mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan

yang lain. Gambar atribut diwakili oleh simbol elips.

Penggunaan fungsi SEMAFORE pada PHP

53

c.   Hubungan / Relasi

Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang

berbeda. Relasi dapat digambarkan sebagai berikut :

Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam

satu basis data yaitu (Abdul Kadir, 2002: 48) :

1). Satu ke satu (One to one)

Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas

A berhubungan paling banyak dengan satu entitas pada himpunan entitas

B.

2). Satu ke banyak (One to many)

Setiap entitas pada himpunan entitas A dapat berhubungan dengan

banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas

B dapat berhubungan dengan satu entitas pada himpunan entitas A.

3). Banyak ke banyak (Many to many)

Setiap entitas pada himpunan entitas A dapat berhubungan dengan

banyak entitas pada himpunan entitas B.

2.1.18 State Transition Diagram

State-Transition Diagram menggambarkan bagaimana perilaku sistem

saat mendapatkan event dari luar (External Events). STD mewakili berbagai

mode perilaku dari sistem dan perlakuan yang terdapat pada transisi antar state.

STD menjadi dasar dari model perilaku. Informasi tambahan mengenai aspek-

Penggunaan fungsi SEMAFORE pada PHP

54

aspek

kontrol

terhadap

perangkat

lunak

terdapat

dalam

spesifikasi

kontrol

(Control Specification).

Contoh :

State 1

Condition

Action

State 2

Gambar 2.11 State Transition Diagram

2.1.19 Flowchart

Flowchart adalah

gambaran dalam bentuk diagram alir dari algoritma-

algoritma dalam suatu program, yang menyatakan arah alur program tersebut.

Berikut  adalah  beberapa  simbol  yang  digunakan  dalam  menggambar  suatu

flowchart :

Tabel 2.1 Simbol Flowchart

SIMBOL

NAMA

FUNGSI

TERMINATOR

Permulaan/akhir program

Penggunaan fungsi SEMAFORE pada PHP

55

GARIS ALIR

(FLOW LINE)

Arah aliran program

PREPARATION

Proses

inisialisasi/pemberian harga

awal

PROSES

Proses perhitungan/proses

pengolahan data

INPUT/OUTPUT

DATA

Proses input/output data,

parameter, informasi

PREDEFINED

PROCESS

(SUB PROGRAM)

Permulaan sub

program/proses

menjalankan sub program

DECISION

Perbandingan pernyataan,

penyeleksian data yang

memberikan pilihan untuk

langkah selanjutnya

ON PAGE

CONNECTOR

Penghubung bagian-bagian

flowchart yang berada pada

satu halaman

OFF PAGE

CONNECTOR

Penghubung bagian-bagian

flowchart yang berada pada

halaman berbeda

2.1.20 Online Processing

Online

Processing

adalah

sebuah sistem yang

mengaktifkan

semua

periferal

sebagai

pemasok

data,

dalam kendali

komputer

induk.

Informasi-

informasi

yang

muncul

merupakan

refleksi dari kondisi data yang paling

mutakhir,

karena

setiap

perkembangan

data

baru

akan

terus

diupdatekan

ke

data induk. Salah satu contoh penggunaan online processing adalah transaksi

56

online.

Dalam

sistem pengolahan

online,

transaksi

secara

individual dientri

melalui 

peralatan 

terminal, 

divalidasi  dan 

digunakan 

untuk 

meng-update

dengan

segera

file

komputer.

Hasil pengolahan

ini

kemudian tersedia segera

untuk permintaan keterangan atau laporan.

2.1.21 Batch Processing

Batch

processing

adalah

suatu model

pengolahan

data,

dengan

menghimpun data terlebih dahulu, dan diatur pengelompokkan datanya dalam

kelompok-kelompok yang disebut batch. Tiap batch ditandai dengan identitas

tertentu, 

serta 

informasi 

mengenai 

data-data 

yang 

terdapat 

dalam 

batch

tersebut. Setelah data-data tersebut terkumpul dalam jumlah tertentu, data-data

tersebut akan langsung diproses.

Contoh dari penggunaan batch processing adalah e-mail dan transaksi

batch

processing.

Dalam

suatu

sistem batch

processing,

transaksi

secara

individual dientri melalui peralatan terminal, dilakukan validasi tertentu, dan

ditambahkan ke transaction file yang berisi transaksi lain, dan kemudian dientri

ke dalam sistem secara periodik. Di waktu kemudian, selama siklus pengolahan

berikutnya,   transaction   file   dapat   divalidasi   lebih   lanjut   dan   kemudian

digunakan untuk meng-up date master file yang berkaitan.

2.2 Teori Khusus

2.2.1   Telemetri

Telemetri adalah sebuah teknologi

yang

memungkinkan

pengukuran

jarak

jauh dan pelaporan

informasi

terhadap

suatu

obyek kepada

perancang

Penggunaan fungsi SEMAFORE pada PHP

57

atau operator sistem yang berada di tempat

yang jauh dari objek pengukuran.

Setelah di terima oleh operator sistem, data tersebut dapat diolah kembali atau

ditampilkan Kata

telemetri berasal dari

akar bahasa Yunani,

tele

yang berarti

jarak

jauh,

dan

metron

yang

berarti

pengukuran.

Sistem yang

membutuhkan

instruksi

atau

data

yang

dikirim kepada

mereka

untuk

mengoperasikan

membutuhkan lawan dari telemetri, telekomando.

Telemetri

awalnya

merujuk

pada komunikasi

nirkabel

(contohnya

menggunakan sistem radio untuk mengimplementasikan komunikasi data), tapi

kini juga dapat merujuk pada komunikasi data melalui media lain, seperti

telepon,  kabel  optic,  kabel  tembaga  atau  jaringan  komputer  atau  internet.

Secara umum sistem telemetri terdiri atas enam bagian pendukung yaitu objek

ukur, sensor, pemancar, saluran transmisi, penerima dan tampilan/display.

Gambar 2.12 Sistem Telemetri

2.2.2   Telecommand

Telecommand adalah perintah yang dikirimkan

untuk mengatur sistem

remote

atau

sistem

yang

tidak

terhubung secara

langsung

(misalnya

melalui

58

kabel) ke tempat dari mana telecommand dikirimkan. Kata tersebut berasal dari

tele = jauh (yunani), dan command = mempercayakan / order (Latin).

Telecommand

biasa

diaplikasikan pada

sistem

yang

membutuhkan

pengukuran jarak jauh dan pelaporan informasi yang menarik bagi sistem

desainer atau operator. Dalam prakteknya, aplikasi yang digunakan tidak hanya

membutuhkan telecommand saja tetapi juga telemetri.