CISC vs RISC

CISC vs RISC
By Armin Gerritsen

- Which one is better? -

RISC vs CISC is a topic quite popular on the Net. Everytime Intel (CISC) or Apple (RISC) introduces a new CPU, the topic pops up again. But what are CISC and RISC exactly, and is one of them really better?

This article tries to explain in simple terms what RISC and CISC are and what the future might bring for the both of them. This article is by no means intended as an article pro-RISC or pro-CISC. You draw your own conclusions …

CISC

Pronounced sisk, and stands for Complex Instruction Set Computer. Most PC’s use CPU based on this architecture. For instance Intel and AMD CPU’s are based on CISC architectures.

Typically CISC chips have a large amount of different and complex instructions. The philosophy behind it is that hardware is always faster than software, therefore one should make a powerful instructionset, which provides programmers with assembly instructions to do a lot with short programs.

In common CISC chips are relatively slow (compared to RISC chips) per instruction, but use little (less than RISC) instructions.

RISC

Pronounced risk, and stands for Reduced Instruction Set Computer. RISC chips evolved around the mid-1980 as a reaction at CISC chips. The philosophy behind it is that almost no one uses complex assembly language instructions as used by CISC, and people mostly use compilers which never use complex instructions. Apple for instance uses RISC chips.

Therefore fewer, simpler and faster instructions would be better, than the large, complex and slower CISC instructions. However, more instructions are needed to accomplish a task.

An other advantage of RISC is that – in theory – because of the more simple instructions, RISC chips require fewer transistors, which makes them easier to design and cheaper to produce.

Finally, it’s easier to write powerful optimised compilers, since fewer instructions exist.

RISC vs CISC

There is still considerable controversy among experts about which architecture is better. Some say that RISC is cheaper and faster and therefor the architecture of the future.

Others note that by making the hardware simpler, RISC puts a greater burden on the software. Software needs to become more complex. Software developers need to write more lines for the same tasks.

Therefore they argue that RISC is not the architecture of the future, since conventional CISC chips are becoming faster and cheaper anyway.

RISC has now existed more than 10 years and hasn’t been able to kick CISC out of the market. If we forget about the embedded market and mainly look at the market for PC’s, workstations and servers I guess a least 75% of the processors are based on the CISC architecture. Most of them the x86 standard (Intel, AMD, etc.), but even in the mainframe territory CISC is dominant via the IBM/390 chip. Looks like CISC is here to stay …

Is RISC than really not better? The answer isn’t quite that simple. RISC and CISC architectures are becoming more and more alike. Many of today’s RISC chips support just as many instructions as yesterday’s CISC chips. The PowerPC 601, for example, supports more instructions than the Pentium. Yet the 601 is considered a RISC chip, while the Pentium is definitely CISC. Further more today’s CISC chips use many techniques formerly associated with RISC chips.

So simply said: RISC and CISC are growing to each other.

x86

An important factor is also that the x86 standard, as used by for instance Intel and AMD, is based on CISC architecture. X86 is thé standard for home based PC’s. Windows 95 and 98 won’t run at any other platform. Therefore companies like AMD an Intel will not abandoning the x86 market just overnight even if RISC was more powerful.

Changing their chips in such a way that on the outside they stay compatible with the CISC x86 standard, but use a RISC architecture inside is difficult and gives all kinds of overhead which could undo all the possible gains. Nevertheless Intel and AMD are doing this more or less with their current CPU’s. Most acceleration mechanisms available to RISC CPUs are now available to the x86 CPU’s as well.

Since in the x86 the competition is killing, prices are low, even lower than for most RISC CPU’s. Although RISC prices are dropping also a, for instance, SUN UltraSPARC is still more expensive than an equal performing PII workstation is.

Equal that is in terms of integer performance. In the floating point-area RISC still holds the crown. However CISC’s 7th generation x86 chips like the K7 will catch up with that.

The one exception to this might be the Alpha EV-6. Those machines are overall about twice as fast as the fastest x86 CPU available. However this Alpha chip costs about €20000, not something you’re willing to pay for a home PC.

Maybe interesting to mention is that it’s no coincidence that AMD’s K7 is developed in co-operation with Alpha and is for al large part based on the same Alpha EV-6 technology.

EPIC

The biggest threat for CISC and RISC might not be eachother, but a new technology called EPIC. EPIC stands for Explicitly Parallel Instruction Computing. Like the word parallel already says EPIC can do many instruction executions in parallel to one another.

EPIC is a created by Intel and is in a way a combination of both CISC and RISC. This will in theory allow the processing of Windows-based as well as UNIX-based applications by the same CPU.

It will not be until 2000 before we can see an EPIC chip. Intel is working on it under code-name Merced. Microsoft is already developing their Win64 standard for it. Like the name says, Merced will be a 64-bit chip.

If Intel’s EPIC architecture is successful, it might be the biggest thread for RISC. All of the big CPU manufactures but Sun and Motorola are now selling x86-based products, and some are just waiting for Merced to come out (HP, SGI). Because of the x86 market it is not likely that CISC will die soon, but RISC may.

So the future might bring EPIC processors and more CISC processors, while the RISC processors are becoming extinct.

Conclusion

The difference between RISC and CISC chips is getting smaller and smaller. What counts is how fast a chip can execute the instructions it is given and how well it runs existing software. Today, both RISC and CISC manufacturers are doing everything to get an edge on the competition.

The future might not bring victory to one of them, but makes both extinct. EPIC might make first RISC obsolete and later CISC too.

Written by A.A.Gerritsen
for the CPU Site
March ’99

Cara sederhana untuk melihat kelebihan dan kelemahan dari arsitektur RISC (Reduced Instruction Set Computers) adalah dengan langsung membandingkannya dengan arsitektur pendahulunya yaitu CISC (Complex Instruction Set Computers).

Perkalian Dua Bilangan dalam Memori

Pada bagian kiri terlihat sebuah struktur memori (yang disederhanakan) suatu komputer secara umum. Memori tersebut terbagi menjadi beberapa lokasi yang diberi nomor 1 (baris): 1 (kolom) hingga 6:4. Unit eksekusi bertanggung-jawab untuk semua operasi komputasi. Namun, unit eksekusi hanya beroperasi untuk data-data yang sudah disimpan ke dalam salah satu dari 6 register (A, B, C, D, E atau F). Misalnya, kita akan melakukan perkalian (product) dua angka, satu disimpan di lokasi 2:3 sedangkan lainnya di lokasi 5:2, kemudian hasil perkalian tersebut dikembalikan lagi ke lokasi 2:3.

Pendekatan CISC

Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup satu saja…

MULT 2:3, 5:2

MULT dalam hal ini lebih dikenal sebagai “complex instruction”, atau instruksi yang kompleks. Bekerja secara langsung melalui memori komputer dan tidak memerlukan instruksi lain seperti fungsi baca maupun menyimpan.

Satu kelebihan dari sistem ini adalah kompailer hanya menerjemahkan instruksi-instruksi bahasa tingkat-tinggi ke dalam sebuah bahasa mesin. Karena panjang kode instruksi relatif pendek, hanya sedikit saja dari RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut.

Pendekatan RISC

Prosesor RISC hanya menggunakan instruksi-instruksi sederhana yang bisa dieksekusi dalam satu siklus. Dengan demikian, instruksi ‘MULT’ sebagaimana dijelaskan sebelumnya dibagi menjadi tiga instruksi yang berbeda, yaitu “LOAD”, yang digunakan untuk memindahkan data dari memori ke dalam register, “PROD”, yang digunakan untuk melakukan operasi produk (perkalian) dua operan yang berada di dalam register (bukan yang ada di memori) dan “STORE”, yang digunakan untuk memindahkan data dari register kembali ke memori. Berikut ini adalah urutan instruksi yang harus dieksekusi agar yang terjadi sama dengan instruksi “MULT” pada prosesor RISC (dalam 4 baris bahasa mesin):

LOAD A, 2:3
LOAD B, 5:2
PROD A, B
%3sebut. Kompailer juga harus melakukan konversi dari bahasa tingkat tinggi ke bentuk kode instruksi 4 baris tersebut.

STORE 2:3, A

Awalnya memang kelihatan gak efisien iya khan? Hal ini dikarenakan semakin banyak baris instruksi, semakin banyak lokasi RAM yang dibutuhkan untuk menyimpan instruksi-instruksi tercellpadding=”0″ align=”left”>

CISC RISC
Penekanan pada
perangkat keras
Penekanan pada
perangkat lunak
Termasuk instruksi
kompleks multi-clock
Single-clock, hanya
sejumlah kecil instruksi
Memori-ke-memori:
“LOAD” dan “STORE”
saling bekerjasama
Register ke register:
“LOAD” dan “STORE”
adalah instruksi2 terpisah
Ukuran kode kecil,
kecepatan rendah
Ukuran kode besar,
kecepatan (relatif) tinggi
Transistor digunakan untuk
menyimpan instruksi2
kompleks
Transistor banyak dipakai
untuk register memori

Bagaimanapun juga, strategi pada RISC memberikan beberapa kelebihan. Karena masing-masing instruksi hanya membuthukan satu siklus detak untuk eksekusi, maka seluruh program (yang sudah dijelaskan sebelumnya) dapat dikerjakan setara dengan kecepatan dari eksekusi instruksi “MULT”. Secara perangkat keras, prosesor RISC tidak terlalu banyak membutuhkan transistor dibandingkan dengan CISC, sehingga menyisakan ruangan untuk register-register serbaguna (general purpose registers). Selain itu, karena semua instruksi dikerjakan dalam waktu yang sama (yaitu satu detak), maka dimungkinkan untuk melakukan pipelining.

Memisahkan instruksi “LOAD” dan “STORE” sesungguhnya mengurangi kerja yang harus dilakukan oleh prosesor. Pada CISC, setelah instruksi “MULT” dieksekusi, prosesor akan secara otomatis menghapus isi register, jika ada operan yang dibutuhkan lagi untuk operasi berikutnya, maka prosesor harus menyimpan-ulang data tersebut dari memori ke register. Sedangkan pada RISC, operan tetap berada dalam register hingga ada data lain yang disimpan ke dalam register yang bersangkutan.

Persamaan Unjuk-kerja (Performance)

Persamaan berikut biasa digunakan sebagai ukuran unjuk-kerja suatu komputer:

Pendekatan CISC bertujuan untuk meminimalkan jumlah instruksi per program, dengan cara mengorbankan kecepatan eksekusi sekian silus/detik. Sedangkan RISC bertolak belakang, tujuannya mengurangi jumlah siklus/detik setiap instruksi dibayar dengan bertambahnya jumlah instruksi per program.

Penghadang jalan (Roadblocks) RISC

Walaupun pemrosesan berbasis RISC memiliki beberapa kelebihan, dibutuhkan waktu kurang lebih 10 tahunan mendapatkan kedudukan di dunia komersil. Hal ini dikarenakan kurangnya dukungan perangkat lunak.

Walaupun Apple’s Power Macintosh menggunakan chip berbasis RISC dan Windows NT adalah kompatibel RISC, Windows 3.1 dan Windows 95 dirancang berdasarkan prosesor CISC. Banyak perusahaan segan untuk masuk ke dalam dunia teknologi RISC. Tanpa adanya ketertarikan komersil, pengembang prosesor RISC tidak akan mampu memproduksi chip RISC dalam jumlah besar sedemikian hingga harganya bisa kompetitif.

Kemerosotan juga disebabkan munculnya Intel, walaupun chip-chip CISC mereka semakin susah digunakan dan sulit dikembangkan, Intel memiliki sumberdaya untuk menjajagi dan melakukan berbagai macam pengembangan dan produksi prosesor-prosesor yang ampuh. Walaupun prosesor RISC lebih unggul dibanding Intel dalam beberapa area, perbedaan tersebut kurang kuat untuk mempengaruhi pembeli agar merubah teknologi yang digunakan.

Keunggulan RISC

Saat ini, hanya Intel x86 satu-satunya chip yang bertahan menggunakan arsitektur CISC. Hal ini terkait dengan adanya kemajuan teknologi komputer pada sektor lain. Harga RAM turun secara dramatis. Pada tahun 1977, DRAM ukuran 1MB berharga %5,000, sedangkan pada tahun 1994 harganya menjadi sekitar $6. Teknologi kompailer juga semakin canggih, dengan demikian RISC yang menggunakan RAM dan perkembangan perangkat lunak menjadi semakin banyak ditemukan.

RISC

The concept was developed by John Cocke of IBM Research during 1974. His argument was based upon the notion that a computer uses only 20% of the instructions, making the other 80% superfluous to requirement. A processor based upon this concept would use few instructions, which would require fewer transistors, and make them cheaper to manufacture. By reducing the number of transistors and instructions to only those most frequently used, the computer would get more done in a shorter amount of time. The term ‘RISC’ (short for Reduced Instruction Set Computer) was later coined by David Patterson, a teacher at the University of California in Berkeley.

The RISC concept was used to simplify the design of the IBM PC/XT, and was later used in  the IBM RISC System/6000 and Sun Microsystems’ SPARC  microprocessors. The latter CPU led to the founding of MIPS Technologies, who developed the M.I.P.S. RISC microprocessor (Microprocessor without Interlocked Pipe Stages). Many of the MIPS architects also played an instrumental role in the creation of the Motorola 68000, as used in the first Amigas (MIPS Technologies were later bought by Silicon Graphics).. The MIPS processor has continued development, remaining a popular choice in embedded and low-end market. At one time, it was suspected the Amiga MCC would use this CPU to reduce the cost of manufacture. However, the consumer desktop market is limited, only the PowerPC processor remains popular in the choice of RISC alternatives. This is mainly due to Apple’s continuous use of the series for its PowerMac range.

CISC

CISC (Complex Instruction Set Computer) is a retroactive definition that was introduced to distinguish the design from RISC microprocessors. In contrast to RISC, CISC chips have a large amount of different and complex instruction. The argument for its continued use indicates that the chip designers should make life easier for the programmer by reducing the amount of instructions required to program the CPU. Due to the high cost of memory and storage CISC microprocessors were considered superior due to the requirements for small, fast code. In an age of dwindling memory hard disk prices, code size has become a non-issue (MS Windows, hello?). However, CISC-based systems still cover the vast majority of the consumer desktop market. The majority of these systems are based upon the x86 architecture or a variant. The Amiga, Atari, and pre-1994 Macintosh systems also use a CISC microprocessor.

RISC Vs. CISC

The argument over which concept is better has been repeated over the past few years. Macintosh owners have elevated the argument to a pseudo religious level in support of their RISC-based God (the PowerPC sits next to the Steve Jobs statue on every Mac altar). Both positions have been blurred by the argument that we have entered a Post-RISC stage.

RISC: For and Against
RISC supporters argue that it the way of the future, producing faster and cheaper processors – an Apple Mac G3 offers a significant performance advantage over its Intel equivalent. Instructions are executed over 4x faster providing a significant performance boost! However, RISC chips require more lines of code to produce the same results and are increasingly complex. This will increase the size of the application and the amount of overhead required. RISC developers have also failed to remain in competition with CISC alternatives. The Macintosh market has been damaged by several problems that have affected the availability of 500MHz+ PowerPC chips. In contrast, the PC compatible market has stormed ahead and has broken the 1GHz barrier. Despite the speed advantages of the RISC processor, it cannot compete with a CISC CPU that boasts twice the number of clock cycles.

CISC: For and Against
As discussed above, CISC microprocessors are more expensive to make than their RISC cousins. However, the average Macintosh is more expensive than the WIntel PC. This is caused by one factor that the RISC manufacturers have no influence over – market factors. In particular, the WIntel market has become the definition of personal computing, creating a demand from people who have not used a computer previous. The x86 market has been opened by the development of several competing processors, from the likes of AMD, Cyrix, and Intel. This has continually reduced the price of a CPU of many months. In contrast, the PowerPC Macintosh market is dictated by Apple. This reduces the cost of x86 – based microprocessors, while the PowerPC market remains stagnant.

Post-RISC

As the world enters the 21st century the CISC Vs. RISC arguments have been swept aside by the recognition that neither terms are accurate in their description. The definition of ‘Reduced’ and ‘Complex’ instructions has begun to blur, RISC chips have increased in their complexity (compare the PPC 601 to the G4 as an example) and CISC chips have become more efficient. The result are processors that are defined as RISC or CISC only by their ancestry.  The PowerPC 601, for example, supports more instructions than the Pentium. Yet the Pentium is a CISC chip, while the 601 is considered to be RISC. CISC chips have also gained techniques associated with RISC processors. Intel describe the Pentium II as a CRISC processor, while AMD use a RISC architecture but remain compatible with the dominant x86 CISC processors. Thus it is no longer important which camp the processor comes from, the emphasis has once-again been placed upon the operating system and the speed that it can execute instructions.

EPIC

In the aftermath of the CISC-RISC conflict, a new enemy has appeared to threaten the peace. EPIC (Explicitly Parallel Instruction Computing) was developed by Intel for the server market, thought it will undoubtedly appear in desktops over the next few years. The first EPIC processor will be the 64-bit Merced, due for release sometime during 2001 (or 2002, 2003, etc.). The market may be divided between combined CISC-RISC systems in the low-end and EPIC in the high-end.

Famous RISC microprocessors

801
To prove that his RISC concept was sound, John Cocke created the 801 prototype microprocessor (1975). It was never marketed but plays a pivotal role in computer history, becoming the first RISC microprocessor.

RISC 1 and 2
The first “proper” RISC chips were created  at Berkeley University in 1985.

ARM
One of the most well known RISC developers is Cambridge based Advanced Research Machines (originally Acorn Research Machines). Their ARM and StrongARM chips power the old Acorn Archimedes and the Apple Newton handwriting recognition systems. Since the unbundling of ARM from Acorn, Intel have invested a considerable amount of money in the company and have utilized the technology in their processor design. One of the main advantages for the ARM is the price- it costs less than £10.
If Samsung had bought the Amiga in 1994, they would possibly have used the chip to power the low-end Amigas.

Sudah sering kita mendengar debat yang cukup menarik antara komputer personal IBM dan kompatibelnya yang berlabel Intel Inside dengan komputer Apple yang berlabel PowerPC.  Perbedaan utama antara kedua komputer itu ada pada tipe prosesor yang digunakannya. Prosesor PowerPC dari Motorola yang menjadi otak utama komputer Apple Macintosh dipercaya sebagai prosesor RISC, sedangkan Pentium buatan Intel diyakini sebagai prosesor CISC. Kenyataannya komputer personal yang berbasis Intel Pentium saat ini adalah komputer personal yang paling banyak populasinya. Tetapi tidak bisa pungkiri juga bahwa komputer yang berbasis RISC seperti Macintosh, SUN adalah komputer yang handal dengan sistem pipelining, superscalar, operasi floating point dan sebagainya.

Apakah memang RISC lebih lebih baik dari CISC atau sebaliknya. Tetapi tahukah kita dimana sebenarnya letak perbedaan itu. Apakah prosesor dengan instruksi yang lebih sedikit akan lebih baik dari prosesor yang instruksinya kompleks dan lengkap. Apakah memang perbedaan prosesor itu hanya dari banyak atau tidaknya instruksi saja. Bukankah jumlah instruksi tidak berhubungan dengan ke-handal-an suatu prosesor. Pertanyaan-pertanyaan ini yang hendak dijawab melalui tulisan berikut. Namun supaya lebih dekat dengan elektronika praktis,  ElectronicLab akan lebih fokus pada mikrokontroler low-cost yang berbasis RISC dan CISC. Sebagai contoh dari mikrokontroler CISC adalah 68HC11 buatan Motorola dan  80C51 dari Intel. Kita juga mengenal keluarga PIC12/16CXX dari Microchip dan COP8 buatan National Semiconductor sebagai mikrokontroler yang berbasis RISC.

CISC adalah singkatan dari Complex Intruction Set Computer dimana prosesor tersebut memiliki set instruksi yang kompleks dan lengkap. Sedangkan RISC adalah singkatan dari Reduced Instruction Set Computer yang artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang kompleks atau sederhana (reduced), maka mari kita bahas sedikit tentang intruksi itu sendiri.

Sistem mikrokontroler selalu terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat lunak ini merupakan deretan perintah atau instruksi yang dijalankan oleh prosesor secara sekuensial. Instruksi itu sendiri sebenarnya adalah bit-bit logik 1 atau 0 (biner) yang ada di memori program. Angka-angka biner ini jika lebarnya 8 bit disebut byte dan jika 16 bit disebut word. Deretan logik biner inilah yang dibaca oleh prosesor sebagai perintah atau instruksi. Supaya lebih singkat, angka biner itu biasanya direpresentasikan dengan bilangan hexa (HEX). Tetapi bagi manusia, menulis program dengan angka biner atau hexa sungguh merepotkan. Sehingga dibuatlah bahasa assembler yang direpresentasikan dengan penyingkatan kata-kata yang cukup dimengerti oleh manusia.

Bahasa assembler ini biasanya diambil dari bahasa Inggris dan presentasinya itu disebut dengan Mnemonic. Masing-masing pabrik  mikroprosesor melengkapi chip buatannya dengan set instruksi yang akan dipakai untuk membuat program.

Biner Hexa Mnemonic

10110110   B6      LDAA …

10010111   97      STAA …

01001010   4A      DECA …

10001010   8A     ORAA …

00100110   26      BNE …

00000001   01      NOP…

01111110   7E      JMP …

Sebagian set instruksi 68HC11

Pada awalnya, instruksi yang tersedia amat sederhana dan sedikit. Kemudian desainer mikroprosesor berlomba-lomba untuk melengkapi set instruksi itu selengkap-lengkapnya. Jumlah instruksi itu berkembang seiring dengan perkembangan desain mikroprosesor yang semakin lengkap dengan mode pengalamatan yang bermacam-macam. Mikroprosesor lalu memiliki banyak instruksi manipulasi bit dan seterusnya dilengkapi dengan instruksi-instruksi aritmatik seperti  penjumlahan, pengurangan, perkalian dan pembagian. Seperti contohnya 68HC11 banyak sekali memiliki set instruksi untuk percabangan seperti BNE, BLO, BLS, BMI, BRCLR, BRSET dan sebagainya.

Perancang mikroprosesor juga memperkaya  ragam instruksi tersebut dengan membuat satu instruksi tunggal untuk program yang biasanya dijalankan dengan beberapa intruksi. Misalnya pada 80C51 untuk contoh program berikut ini.

LABEL    …

DEC    R0

MOV  A,R0

JNZ     LABEL

Program ‘decrement’ 80C51

Program ini adalah program pengulangan yang mengurangi isi register R0 sampai register R0 menjadi kosong (nol). Intel menambah set instruksinya dengan membuat satu instruksi khusus untuk keperluan seperti ini :

LABEL    ….

DJNZ   R0,LABEL

Instruksi ‘decrement jump not zero’  80C51

Kedua contoh program ini hasilnya tidak berbeda. Namun demikian, instruksi kompleks seperti DJNZ mempermudah pembuat program. Set instruksi yang lengkap diharapkan akan semakin membuat pengguna mikroprosesor leluasa menulis  program dalam bahasa assembler yang mendekati bahasa pemrograman level tinggi. Intel 80C51 yang  dikembangkan dari basis prosesor 8048 dirilis pada tahun 1976 memiliki  tidak kurang dari 111 instruksi. Tidak ketinggalan, 68HC11 dari Motorola yang populer di tahun 1984 dilengkapi dengan 145 instruksi. Karena banyak dan kompleksnya instruksi yang dimiliki 68HC11 dan 80C51, kedua contoh mikrokontroler ini disebut sebagai prosesor CISC.

Debat CISC versus RISC dimulai ketika pada tahun 1974 IBM mengembangkan prosesor 801 RISC. Argumen yang dipakai waktu itu adalah mengapa diperlukan instruksi yang kompleks. Sebab pada prinsipnya, instruksi yang kompleks bisa dikerjakan oleh instruksi-instruksi yang lebih sederhana dan kecil. Ketika itu penggunaan bahasa tingkat tinggi seperti Fortran dan kompiler lain (compiler/interpreter) mulai berkembang. Apalagi saat ini compiler seperti C/C++ sudah lazim digunakan. Sehingga sebenarnya tidaklah diperlukan instruksi yang kompleks di tingkat prosesor. Kompiler yang akan bekerja men-terjemahkan program  dari bahasa tingkat tinggi menjadi bahasa mesin.

Untuk melihat bagaimana perbedaan instruksi RISC dan CISC, mari kita lihat bagaimana keduanya melakukan perkalian misalnya c = a x b.  Mikrokontroler 68HC11 melakukannya dengan program sebagai berikut :

LDAA #$5

LDAB #$10

MUL

Program 5×10 dengan 68HC11

Cukup tiga baris saja dan setelah ini accumulator D pada 68HC11 akan berisi hasil perkalian dari accumulator A dan B, yakni 5 x 10 = 50. Program yang sama dengan PIC16CXX, adalah seperti berikut ini.

MOVLW 0×10

MOVWF Reg1

MOVLW 0×05

MOVWF Reg2

CLRW

LOOP  ADDWF  Reg1,0

CFSZ      Reg2,1

GOTO     LOOP

Program 5×10 dengan PIC16CXX

Prosesor PIC16CXX yang RISC ini, tidak memiliki instruksi perkalian yang khusus. Tetapi perkalian 5×10 itu sama saja dengan penjumlahan nilai 10 sebanyak 5 kali. Kelihatannya membuat program assembly dengan prosesor RISC menjadi lebih kompleks dibandingkan dengan prosesor CISC. Tetapi perlu diingat, untuk membuat instruksi yang kompleks seperti instruksi MUL dan instruksi lain yang rumit pada prosesor CISC, diperlukan hardware yang kompleks juga. Dibutuhkan ribuan gerbang logik (logic gates) transistor untuk membuat prosesor yang demikian. Instruksi yang kompleks juga membutuhkan jumlah siklus mesin (machine cycle) yang lebih panjang untuk dapat menyelesaikan eksekusinya. Instruksi perkalian MUL pada 68HC11 memerlukan 10 siklus mesin dan instruksi pembagiannya memerlukan 41 siklus mesin.

Pendukung RISC berkesimpulan, bahwa prosesor yang tidak rumit akan semakin cepat dan handal. Hampir semua instruksi prosesor RISC adalah instruksi dasar (belum tentu sederhana),  sehingga instruksi-instruksi ini umumnya hanya memerlukan 1 siklus mesin untuk menjalankannya. Kecuali instruksi percabangan yang membutuhkan 2 siklus mesin. RISC biasanya dibuat dengan arsitektur Harvard, karena arsitektur ini yang memungkinkan untuk membuat eksekusi instruksi selesai dikerjakan dalam  satu atau dua siklus mesin.

Sebagai perbandingan jumlah instruksi pada prosesor RISC,  COP8 hanya dilengkapi dengan 58 instruksi dan PIC12/16CXX hanya memiliki 33 instruksi saja. Untuk merealisasikan instruksi dasar yang jumlah tidak banyak ini, mikroprosesor RISC tidak memerlukan gerbang logik yang banyak. Karena itu dimensi dice IC dan konsumsi daya prosesor RISC umumnya lebih kecil dibanding prosesor CISC. Bukan karena kebetulan, keluarga mikrokontroler PICXX banyak yang dirilis ke pasar dengan ukuran mini. Misalnya PIC12C508 adalah mikrokontroler DIP 8 pin.

CISC dan RISC perbedaannya tidak signifikan jika hanya dilihat dari terminologi set instruksinya yang kompleks atau tidak (reduced). Lebih dari itu, RISC dan CISC berbeda dalam filosofi arsitekturnya. Filosofi arsitektur CISC adalah memindahkan kerumitan software ke dalam hardware. Teknologi pembuatan IC saat ini memungkinkan untuk menamam ribuan bahkan jutaan transistor di dalam satu dice. Bermacam-macam instruksi yang mendekati bahasa pemrogram tingkat tinggi dapat dibuat dengan tujuan untuk memudahkan programmer membuat programnya. Beberapa prosesor CISC umumnya memiliki microcode berupa firmware internal di dalam chip-nya yang berguna untuk menterjemahkan instruksi makro. Mekanisme ini bisa memperlambat eksekusi instruksi, namun efektif untuk membuat instruksi-instruksi yang kompleks. Untuk aplikasi-aplikasi tertentu yang membutuhkan singlechip komputer, prosesor CISC bisa menjadi pilihan.

Sebaliknya, filosofi arsitektur RISC adalah arsitektur prosesor yang tidak rumit dengan membatasi jumlah instruksi hanya pada instruksi dasar yang diperlukan saja. Kerumitan membuat program dalam bahasa mesin diatasi dengan membuat bahasa program tingkat tinggi dan compiler yang sesuai. Karena tidak rumit, teorinya mikroprosesor RISC adalah mikroprosesor yang low-cost dalam arti yang sebenarnya. Namun demikian, kelebihan ruang pada prosesor RISC dimanfaatkan untuk membuat sistem-sistem tambahan yang ada pada prosesor modern saat ini. Banyak prosesor RISC yang di dalam chip-nya dilengkapi dengan sistem superscalar, pipelining, caches memory, register-register dan sebagainya, yang tujuannya untuk membuat prosesor itu menjadi semakin cepat.

Jadi mana yang lebih baik apakah RISC atau CISC, anda tentu punya pendapat sendiri.

CISC (Complex Instructions Set Computer)
RISC (Reduce Instructions Set Computer)

1. CISC (Complex Instructions Set Computer).
Dimana prosesor tersebut memiliki set instruksi yang kompleks dan lengkap. CISC sendiri adalah salah satu bentuk arsitektur yang menjalani beberapa instruksi dengan tingkat yang rendah. Misalnya intruksi tingkat rendah tersebut yaitu operasi aritmetika, penyimpanan-pengambilan dari memory.
CISC memang memiliki instruksi yang complex dan memang dirasa berpengaruh pada kinerjanya yang lebih lambat. CISC menawarkan set intruksi yang powerful, kuat, tangguh, maka tak heran jika CISC memang hanya mengenal Bahasa Asembly yang sebenarnya ia tujukan bagi para
Programmer. Oleh karena itu ,CISC hanya memerlukan sedikit instruksi untuk berjalan.
Sistem Mikrokontroler selalu terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat lunak ini merupakan deretan perintah atau instruksi yang dijalankan oleh prosesor secara sekuensial. Instruksi itu sendiri sebenarnya adalah bit-bit logik 1 atau 0 (biner) yang ada di memori program. Angka-angka biner ini jika lebarnya 8 bit disebut byte dan jika 16 bit disebut word.
Deretan logik biner inilah yang dibaca oleh prosesor sebagai perintah atau instruksi. Supaya lebih singkat, angka biner itu biasanya direpresentasikan dengan bilangan hexa (HEX). Tetapi bagi manusia, menulis program dengan angka biner atau hexa sungguh merepotkan. Sehingga dibuatlah Bahasa Assembler yang direpresentasikan dengan penyingkatan kata-kata yang cukup dimengerti oleh manusia.
Bahasa Assembler ini biasanya diambil dari bahasa Inggris dan presentasinya itu disebut dengan Mnemonic. Masing-masing pabrik mikroprosesor melengkapi chip buatannya dengan set instruksi yang akan dipakai untuk membuat program.

Contohnya pada Diagram dibawah ini :

Biner Hexa Mnemonic
10110110 B6 LDAA
10010111 97 STAA
01001010 4A DECA
10001010 8A ORAA
00100110 26 BNE
00000001 01 NOP
01111110 7E JMP

Jadi sebenarnya Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup satu saja, Sedangkan

2. RISC (Reduce Instructions Set Computer)
Adalah Prosesor tersebut memiliki set instruksi program yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang kompleks atau sederhana (reduced). RISC lahir pada pertengahan 1980,
kelahirannya ini dilator belakangi untuK CISC. Perbedaan mencolok dari kelahiran RISC ini adalah tidak ditemui pada dirinya instruksi Assembly atau yang dikenal dengan Bahasa Mesin sedangkan itu banyak sekali di jumpai di CISC.
Konsep Arsitektur RISC banyak menerapkan proses eksekusi pipeline.
Meskipun jumlah perintah tunggal yang diperlukan untuk melakukan pekerjaan yang diberikan mungkin lebih besar, eksekusi secara pipeline memerlukan waktu yang lebih singkat daripada waktu untuk melakukan pekerjaan yang sama dengan menggunakan perintah yang lebih rumit. Mesin RISC memerlukan memori yang lebih besar untuk mengakomodasi program yang lebih besar.
Salah satu contoh adalah IBM 801 adalah prosesor komersial pertama yang menggunakan pendekatan RISC. Untuk lebih lanjut memahami RISC, diawali dengan tinjauan singkat tentang karakteristik eksekusi Instruksi yaitu Aspek komputasi yang ditinjau dalam merancang mesin RISC adalah sbb.:
>>Operasi-operasi yang dilakukan:
Hal ini menentukan fungsi-fungsi yang akan dilakukan oleh CPU dan interaksinya dengan memori.
>> Operand-operand yang digunakan:
Jenis-jenis operand dan frekuensi pemakaiannya akan menentukan organisasi memori untuk menyimpannya dan mode pengalamatan untuk mengaksesnya.
>> Pengurutan eksekusi:
Hal ini akan menentukan kontrol dan organisasi pipeline.
Salah satu jenis dari arsitektur, dimana Superscalar adalah sebuah Uniprocessor yang dapat mengeksekusi dua atau lebih operasi scalar dalam bentuk paralel. Merupakan salah satu rancangan untuk meningkatkan kecepatan CPU. Kebanyakan dari komputer saat ini menggunakan mekanisme Superscalar ini.
Standar Pipeline yang digunakan adalah untuk pengolahan bilangan matematika integer (bilangan bulat, bilangan yang tidak memiliki pecahan), kebanyakan CPU juga memiliki kemampuan untuk pengolahan untuk data Floating Point (bilangan berkoma). Pipeline yang mengolah integer dapat juga digunakan untuk mengolah data bertipe floating point ini, namun untuk aplikasi tertentu, terutama untuk aplikasi keperluan ilmiah CPU yang memiliki kemampuan pengolahan floating point dapat meningkatkan kecepatan prosesnya secara dramatis. Peristiwa menarik yang bisa dilakukan dengan metoda superscalar ini adalah dalam hal memperkirakan pencabangan instruksi (brach prediction) serta perkiraan eksekusi perintah (speculative execution). Peristiwa ini sangat menguntungkan buat program yang membutuhkan pencabangan dari kelompok intruksi yang dijalankankannya. Program yang terdiri dari kelompok perintah bercabang ini sering digunakan dalam pemrograman.
Contohnya dalam menentukan aktifitas yang dilakukan oleh suatu sistem berdasarkan umur seseorang yang sedang diolahnya, katakanlah jika umur yang bersangkutan lebih dari 18 tahun, maka akan diberlakukan instruksi yang berhubungan dengan umur tersebut, anggaplah seseorang tersebut dianggap telah dewasa, sedangkan untuk kondisi lainnya dianggap belum dewasa. Tentu perlakuannya akan dibedakan sesuai dengan sistem yang sedang dijalankan. Lalu apa yang dilakukan oleh CPU untuk hal ini? Komputer akan membandingkan nilai umur data yang diperolehnya dengan 18 tahun sehingga komputer dapat menentukan langkah dan sikap yang harus diambilnya berdasarkan hasil perbandingan tersebut. Sikap yang diambil tentu akan diambil berdasarkan pencabangan yang ada.
Pada CPU yang mendukung perintah pencabangan ini, CPU membutuhkan lumayan banyak clock cycle, mengingat CPU menempatkan semuanya pada pipeline dan menemukan perintah berikutnya yang akan dieksekusinya. Sirkuit untuk branch prediction melakukan pekerjaan ini bekerja sama dengan pipeline, yang dilakukan sebelum proses di ALU dilaksanakan, dan memperkirakan hasil dari pencabangan tersebut. Jika CPU berfikir bahwa branch akan menuju suatu cabang, biasanya berdasarkan pekerjaan sebelumnya, maka perintah berikutnya sudah dipersiapkan untuk dieksekusi berikut datadatanya, bahkan dengan adanya pipeline ini, bila tidak diperlukan suatu referensi dari instruksi terakhir, maka bisa dilaksanakan dengan segera, karena data dan instruksi yang dibutuhkan telah dipersiapkan sebelumnya.. Dalam hal speculative execution, artinya CPU akan menggunakan melakukan perhitungan pada pipeline yang berbeda berdasarkan kemungkinan yang diperkirakan oleh komputer. Jika kemungkinan yang dilakukan oleh komputer tepat, maka hasilnya sudah bisa diambil langsung dan tinggal melanjutkan perintah berikutnya, sedangkan jika kemungkinan yang diperkirakan oleh komputer tidak tepat, maka akan dilaksanakan kemungkinan lain sesuai dengan logika instruksi tersebut. Teknik yang digunakan untuk pipeline dan superscalar ini bisa melaksanakan Branch Prediction dan speculative execution tentunya membutuhkan ekstra transistor yang tidak sedikit untuk hal tersebut. Sebagai perbandingan, komputer yang membangkitkan pemrosesan pada PC pertama yang dikeluarkan oleh IBM pada mesin 8088 memiliki sekitar 29.000 transistor. Sedangkan pada mesin Pentium III, dengan teknologi superscalar dan superpipeline, mendukung branch prediction, speculative execution serta berbagai kemampuan lainnya memiliki sekitar 7,5 juta transistor. BeberapA CPU terkini lainnya seperti HP 8500 memiliki sekitar 140 juta transistor.

3. Perbedaan karakteristik CISC dan RISC.
CISC dan RISC perbedaannya tidak signifikan jika hanya dilihat dari terminologi set instruksinya yang kompleks atau tidak (reduced). Lebih dari itu, RISC dan CISC berbeda dalam filosofi arsitekturnya. Filosofi arsitektur CISC adalah memindahkan kerumitan software ke dalam hardware.
Teknologi pembuatan IC saat ini memungkinkan untuk menamam ribuan bahkan jutaan transistor di dalam satu dice. Bermacam-macam instruksi yang mendekati bahasa pemrogram tingkat tinggi dapat dibuat dengan tujuan untuk memudahkan programmer membuat programnya. Beberapa prosesor CISC umumnya memiliki microcode berupa firmware internal di dalam chip-nya yang berguna untuk menterjemahkan instruksi makro. Mekanisme ini bisa memperlambat eksekusi instruksi, namun efektif untuk membuat instruksi-instruksi yang kompleks. Untuk aplikasi-aplikasi tertentu yang membutuhkan singlechip komputer, prosesor CISC bisa menjadi pilihan.

4. Karakteristik CISC versus RISC
Rancangan RISC dapat memperoleh keuntungan dengan mengambil sejumlah feature CISC dan Rancangan CISC dapat memperoleh keuntungan dengan mengambil sejumlah feature RISC.
Hasilnya adalah bahwa sejumlah rancangan RISC yang terbaru, yang dikenal sebagai PowerPC, tidak lagi “murni” RISC dan rancangan CISC yang terbaru, yang dikenal sebagai Pentium, memiliki beberapa karakteristik RISC.

5. Ciri-ciri RISC:
1. Instruksi berukuran tunggal.
2. Ukuran yang umum adalah 4 byte.
3. Jumlah mode pengalamatan data yang sedikit, biasanya kurang dari lima buah.
4. Tidak terdapat pengalamatan tak langsung.
5. Tidak terdapat operasi yang menggabungkan operasi load/store dengan operasi aritmetika (misalnya, penambahan dari memori, penambahan ke memori)

Sebaliknya, filosofi arsitektur RISC adalah arsitektur prosesor yang tidak rumit dengan membatasi jumlah instruksi hanya pada instruksi dasar yang diperlukan saja. Kerumitan membuat program dalam bahasa mesin diatasi dengan membuat bahasa program tingkat tinggi dan compiler yang sesuai. Karena tidak rumit, teorinya mikroprosesor RISC adalah mikroprosesor yang low-cost dalam arti yang sebenarnya. Namun demikian, kelebihan ruang pada prosesor RISC dimanfaatkan untuk membuat sistem-sistem tambahan yang ada pada prosesor modern saat ini. Banyak prosesor RISC yang di dalam chip-nya dilengkapi dengan sistem superscalar, pipelining, caches memory, register-register dan sebagainya, yang tujuannya untuk membuat prosesor itu menjadi semakin cepat.
Sudah sering kita mendengar debat yang cukup menarik antara komputer personal IBM dan kompatibelnya yang berlabel Intel Inside dengan komputer Apple yang berlabel PowerPC. Perbedaan utama antara kedua komputer itu ada pada tipe prosesor yang digunakannya. Prosesor PowerPC dari Motorola yang menjadi otak utama komputer Apple Macintosh dipercaya sebagai prosesor RISC, sedangkan Pentium buatan Intel diyakini sebagai prosesor CISC. Kenyataannya komputer personal yang berbasis Intel Pentium saat ini adalah komputer personal yang paling banyak populasinya. Tetapi tidak bisa pungkiri juga bahwa komputer yang berbasis RISC seperti Macintosh, SUN adalah komputer yang handal dengan sistem pipelining, superscalar, operasi floating point dan sebagainya. Tersedia dari peningkatan kinerja superscalar teknik dibatasi oleh dua bidang utama:
• Tingkat dari hakiki paralel dalam instruksi streaming, yakni terbatasnya jumlah instruksi level parallelism, dan
• Kompleksitas waktu dan biaya yang terkait memberangkatkan dan ketergantungan memeriksa logika.
Binari yang ada telah dijalankan program tahap hakiki paralel. Dalam beberapa kasus petunjuk tidak tergantung pada satu sama lain dan dapat dijalankan secara bersamaan. Dalam kasus lain mereka yang antar-tergantung yaitu satu instruksi dampak baik sumber daya atau hasil lainnya. Petunjuk yang = b + c; d = e + f dapat berjalan secara bersamaan karena tidak ada yang bergantung pada hasil perhitungan lain. Namun, petunjuk yang = b + c; d = a + f mungkin tidak akan runnable secara paralel, tergantung pada urutan petunjuk yang lengkap saat mereka bergerak melalui unit.
Bila jumlah yang dikeluarkan secara simultan petunjuk meningkat, biaya memeriksa dependensi meningkat sangat pesat. Hal ini diperparah oleh kebutuhan untuk memeriksa dependensi di waktu dan menjalankan di CPU jam menilai. Ini termasuk biaya tambahan gerbang logika diperlukan untuk melaksanakan pemeriksaan, dan waktu tunda yang melalui pintu. Penelitian menunjukkan pintu gerbang biaya dalam beberapa kasus dapat NK pintu, dan biaya keterlambatan k2logn, dimana n adalah jumlah instruksi pada prosesor’s set instruksi, dan k adalah jumlah bersamaan menurunkan petunjuk. Dalam matematika, ini disebut sebagai combinatoric masalah melibatkan permutations.
Meski mungkin berisi instruksi streaming tidak antar-instruksi dependensi, superscalar CPU yang sebenarnya harus memeriksa bahwa kemungkinan, karena tidak ada jaminan lain dan kegagalan untuk mendeteksi suatu dependensi akan menghasilkan hasil yang salah.
Tidak peduli bagaimana lanjutan proses yang semikonduktor atau cara cepat kecepatan yang berpindah, ini tempat yang praktis membatasi berapa petunjuk dapat menurunkan secara bersamaan. Meskipun proses kemajuan akan mengijinkan pernah lebih besar jumlah unit fungsional, beban instruksi memeriksa dependensi sehingga tumbuh pesat yang dicapai superscalar dispatch batas relatif kecil. Kemungkinan pada urutan lima hingga enam secara bersamaan menurunkan petunjuk.
Namun akhirnya tak terhingga cepat memeriksa ketergantungan pada logika konvensional yang lain superscalar CPU, jika instruksi streaming itu sendiri memiliki banyak dependensi, ini juga akan membatasi speedup mungkin. Dengan demikiantingkat hakiki paraleldalam kode streaming bentuk kedua dalam keterbatasan.

Karakteristik CISC RISC
IBM
370/168 VAX
11/780 Intel
80486 Motorola
88000
Tahun dibuat 1973 1978 7989 1988
Jumlah Intruksi 208 303 235 51
Intruksi (Bytes) 2-6 2-57 1-11 4
Mode Pengalamatan 4 22 11 3
Jumlah Register
General-purpose 16 16 8 32
Ukuran Memory
Control (Kbits) 420 480 246 _
Ukuran Cache
(Kbytes) 64 64 8 16

6. Kesimpulan.
Diantara kelebihan dan kekurangan dari arsitektur RISC dan arsitektur CISC sampai sekarang masih menjadi sebuah perdebatan. Ada juga teknologi yang menggabungkan kedua arsitektur tersebut, contohnya : Prosesor Intel dan AMD yang dijual secara komersil sekarang adalah pengembangan dari prosesor x86 yang menggunakan basis prosesor CISC. Lucunya, instruksi set yang didukung oleh kedua prosesor tersebut menggunakan instruksi RISC yang lebih efisien dalam menangani
data.

In the early days of computing, you had a lump of silicon which performed a number of instructions. As time progressed, more and more facilities were required, so more and more instructions were added. However, according to the 20-80 rule, 20% of the available instructions are likely to be used 80% of the time, with some instructions only used very rarely. Some of these instructions are very complex, so creating them in silicon is a very arduous task. Instead, the processor designer uses microcode. To illustrate this, we shall consider a modern CISC processor (such as a Pentium or 68000 series processor). The core, the base level, is a fast RISC processor. On top of that is an interpreter which ‘sees’ the CISC instructions, and breaks them down into simpler RISC instructions.

Already, we can see a pretty clear picture emerging. Why, if the processor is a simple RISC unit, don’t we use that? Well, the answer lies more in politics than design. However Acorn saw this and not being constrained by the need to remain totally compatible with earlier technologies, they decided to implement their own RISC processor.

Up until now, we’ve not really considered the real differences between RISC and CISC, so…

A Complex Instruction Set Computer (CISC) provides a large and powerful range of instructions, which is less flexible to implement. For example, the 8086 microprocessor family has these instructions:

       JA      Jump if Above
       JAE     Jump if Above or Equal
       JB      Jump if Below
       ...
       JPO     Jump if Parity Odd
       JS      Jump if Sign
       JZ      Jump if Zero

There are 32 jump instructions in the 8086, and the 80386 adds more. I’ve not read a spec sheet for the Pentium-class processors, but I suspect it (and MMX) would give me a heart attack!

By contrast, the Reduced Instruction Set Computer (RISC) concept is to identify the sub-components and use those. As these are much simpler, they can be implemented directly in silicon, so will run at the maximum possible speed. Nothing is ‘translated’. There are only two Jump instructions in the ARM processor – Branch and Branch with Link. The “if equal, if carry set, if zero” type of selection is handled by condition options, so for example:

       BLNV    Branch with Link NeVer (useful!)
       BLEQ    Branch with Link if EQual

and so on. The BL part is the instruction, and the following part is the condition. This is made more powerful by the fact that conditional execution can be applied to most instructions! This has the benefit that you can test something, then only do the next few commands if the criteria of the test matched. No branching off, you simply add conditional flags to the instructions you require to be conditional:

       SWI     "OS_DoSomethingOrOther"   ; call the SWI
       MVNVS   R0, #0                    ; If failed, set R0 to -1
       MOVVC   R0, #0                    ; Else set R0 to 0

Or, for the 80486:

       INT     $...whatever...           ; call the interrupt
       CMP     AX, 0                     ; did it return zero?
       JE      failed                    ; if so, it failed, jump to fail code
       MOV     DX, 0                     ; else set DX to 0
     return
       RET                               ; and return
     failed
       MOV     DX, 0FFFFH                ; failed - set DX to -1
       JMP     return

The odd flow in that example is designed to allow the fastest non-branching throughput in the ‘did not fail’ case. This is at the expense of two branches in the ‘failed’ case.
I am not, however, an x86 coder, so that can possibly be optimised – mail me if you have any suggestions…

Most modern CISC processors, such as the Pentium, uses a fast RISC core with an interpreter sitting between the core and the instruction. So when you are running Windows95 on a PC, it is not that much different to trying to get W95 running on the software PC emulator. Just imagine the power hidden inside the Pentium…

Another benefit of RISC is that it contains a large number of registers, most of which can be used as general purpose registers.

This is not to say that CISC processors cannot have a large number of registers, some do. However for it’s use, a typical RISC processor requires more registers to give it additional flexibility. Gone are the days when you had two general purpose registers and an ‘accumulator’.

One thing RISC does offer, though, is register independence. As you have seen above the ARM register set defines at minimum R15 as the program counter, and R14 as the link register (although, after saving the contents of R14 you can use this register as you wish). R0 to R13 can be used in any way you choose, although the Operating System defines R13 is used as a stack pointer. You can, if you don’t require a stack, use R13 for your own purposes. APCS applies firmer rules and assigns more functions to registers (such as Stack Limit). However, none of these – with the exception of R15 and sometimes R14 – is a constraint applied by the processor. You do not need to worry about saving your accumulator in long instructions, you simply make good use of the available registers.

The 8086 offers you fourteen registers, but with caveats:
The first four (A, B, C, and D) are Data registers (a.k.a. scratch-pad registers). They are 16bit and accessed as two 8bit registers, thus register A is really AH (A, high-order byte) and AL (A low-order byte). These can be used as general purpose registers, but they can also have dedicated functions – Accumulator, Base, Count, and Data.
The next four registers are Segment registers for Code, Data, Extra, and Stack.
Then come the five Offset registers: Instruction Pointer (PC), SP and BP for the stack, then SI and DI for indexing data.
Finally, the flags register holds the processor state.
As you can see, most of the registers are tied up with the bizarre memory addressing scheme used by the 8086. So only four general purpose registers are available, and even they are not as flexible as ARM registers.

The ARM processor differs again in that it has a reduced number of instruction classes (Data Processing, Branching, Multiplying, Data Transfer, Software Interrupts).

A final example of minimal registers is the 6502 processor, which offers you:
Accumulator - for results of arithmetic instructions
X register  - First general purpose register
Y register  - Second general purpose register
PC          - Program Counter
SP          - Stack Pointer, offset into page one (at &01xx).
PSR         - Processor Status Register - the flags.
While it might seem like utter madness to only have two general purpose registers, the 6502 was a very popular processor in the ’80s. Many famous computers have been built around it.
For the Europeans: consider the Acorn BBC Micro, Master, Electron…
For the Americans: consider the Apple2 and the Commadore PET.
The ORIC uses a 6502, and the C64 uses a variant of the 6502.
(in case you were wondering, the Speccy uses the other popular processor – the ever bizarre and freaky Z80)

So if entire systems could be created with a 6502, imagine the flexibility of the ARM processor.
It has been said that the 6502 is the bridge between CISC design and RISC. Acorn chose the 6502 for their original machines such as the Atom and the System# units. They went from there to design their own processor – the ARM.

To summarise the above, the advantages of a RISC processor are:

  • Quicker time-to-market. A smaller processor will have fewer instructions, and the design will be less complicated, so it may be produced more rapidly.
  • Smaller ‘die size’ – the RISC processor requires fewer transistors than comparable CISC processors…
    This in turn leads to a smaller silicon size (I once asked Russell King of ARMLinux fame where the StrongARM processor was – and I was looking right at it, it is that small!)
    …which, in turn again, leads to less heat dissipation. Most of the heat of my ARM710 is actually generated by the 80486 in the slot beside it (and that’s when it is supposed to be in ‘standby’).
  • Related to all of the above, it is a much lower power chip. ARM design processors in static form so that the processor clock can be stopped completely, rather than simply slowed down. The Solo computer (designed for use in third world countries) is a system that will run from a 12V battery, charging from a solar panel.
  • Internally, a RISC processor has a number of hardwired instructions.
    This was also true of the early CISC processors, but these days a typical CISC processor has a heart which executes microcode instructions which correlate to the instructions passed into the processor. Ironically, this ‘heart’ tends to be RISC. :-)
  • As touched on my Matthias below, a RISC processor’s simplicity does not necessarily refer to a simple instruction set.
    He quotes LDREQ R0,[R1,R2,LSR #16]!, though I would prefer to quote the 26 bit instruction LDMEQFD R13!, {R0,R2-R4,PC}^ which restores R0, R2, R3, R4, and R15 from the fully descending stack pointed to by R13. The stack is adjusted accordingly. The ‘^’ pushes the processor flags into R15 as well as the return address. And it is conditionally executed. This allows a tidy ‘exit from routine’ to be performed in a single instruction.
    Powerful, isn’t it?
    The RISC concept, however, does not state that all the instructions are simple. If that were true, the ARM would not have a MUL, as you can do the exact same thing with looping ADDing. No, the RISC concept means the silicon is simple. It is a simple processor to implement.
    I’ll leave it as an exercise for the reader to figure out the power of Mathias’ example instruction. It is exactly on par with my example, if not slightly more so!

For a completion of this summary, and some very good points regarding the ARM processor, keep reading…


In response to the original version of this text, Matthias Seifert replied with a more specific and detailed analysis. He has kindly allowed me to reproduce his message here…

RISC vs ARM

You shouldn’t call it “RISC vs CISC” but “ARM vs CISC”. For example conditional execution of (almost) any instruction isn’t a typical feature of RISC processors but can only(?) be found on ARMs. Furthermore there are quite some people claiming that an ARM isn’t really a RISC processor as it doesn’t provide only a simple instruction set, i.e. you’ll hardly find any CISC processor which provides a single instruction as powerful as a

  LDREQ R0,[R1,R2,LSR #16]!

Today it is wrong to claim that CISC processors execute the complex instructions more slowly, modern processors can execute most complex instructions with one cycle. They may need very long pipelines to do so (up to 25 stages or so with a Pentium III), but nonetheless they can. And complex instructions provide a big potential of optimisation, i.e. if you have an instruction which took 10 cycles with the old model and get the new model to execute it in 5 cycles you end up with a speed increase of 100% (without a higher clock frequency). On the other hand ARM processors executed most instruction in a single cycle right from the start and thus don’t have this optimisation potential (except the MUL instruction).

The argument that RISC processors provide more registers than CISC processors isn’t right. Just take a look at the (good old) 68000, it has about the same number of registers as the ARM has. And that 80×86 compatible processors don’t provide more registers is just a matter of compatibility (I guess). But this argument isn’t completely wrong: RISC processors are much simpler than CISC processors and thus take up much less space, thus leaving space for additional functionality like more registers. On the other hand, a RISC processor with only three or so registers would be a pain to program, i.e. RISC processors simply need more registers than CISC processors for the same job.

And the argument that RISC processors have pipelining whereas CISCs don’t is plainly wrong. I.e. the ARM2 hadn’t whereas the Pentium has…

The advantages of RISC against CISC are those today:

  • RISC processors are much simpler to build, by this again results in the following advantages:
    • easier to build, i.e. you can use already existing production facilities
    • much less expensive, just compare the price of a XScale with that of a Pentium III at 1 GHz…
    • less power consumption, which again gives two advantages:
      • much longer use of battery driven devices
      • no need for cooling of the device, which again gives to advantages:
        • smaller design of the whole device
        • no noise
  • RISC processors are much simpler to program which doesn’t only help the assembler programmer, but the compiler designer, too. You’ll hardly find any compiler which uses all the functions of a Pentium III optimally…

And then there are the benefits of the ARM processors:

  • Conditional execution of most instructions, which is a very powerful thing especially with large pipelines as you have to fill the whole pipeline every time a branch is taken, that’s why CISC processors make a huge effort for branch prediction
  • The shifting of registers while other instructions are executed which mean that shifts take up no time at all (the 68000 took one cycle per bit to shift)
  • The conditional setting of flags, i.e. ADD and ADDS, which becomes extremely powerful together with the conditional execution of instructions
  • The free use of offsets when accessing memory, i.e.
    LDR R0,[R1,#16]
    LDR R0,[R1,#16]!
    LDR R0,[R1],#16
    LDR R0,[R1,R2]
    LDR R0,[R1,R2]!
    LDR R0,[R1],R2
    ...

The 68000 could only increase the address register by the size of the data read (i.e. by 1, 2 or 4). Just imagine how much better an ARM processor can be programmed to draw (not only) a vertical line on the screen.

  • The (almost) free use of all registers with all instructions (which may well be an advantage of any RISC processor). It simply is great to be able to use
    ADD PC,PC,R0,LSL #2
    MOV R0,R0
    B R0is0
    B R0is1
    B R0is2
    B R0is3
    ...

or even

    ADD PC,PC,R0,LSL #3
    MOV R0,R0
    MOV R1,#1
    B Continue
    MOV R2,#2
    B Comtinue
    MOV R2,#4
    B Continue
    MOV R2,#8
    B Continue
    ...

I used this technique when programming my C64 emulator even more excessively to emulate the 6510. There the shift is 8 which gives 256 bytes for each instruction to emulate. Within those 256 bytes there is not only the code for the emulation of the instruction but also the code to react on interrupts, the fetching of the next instruction and the jump to the emulation code of that instruction, i.e. the code to emulate the CLC (clear C flag) looks like this:

    ADD     R10,R10,#1            ; increment PC of 6510 to point to next
                                  ; instruction
    BIC     R6,R6,#1              ; clear C flag of 6510 status register
    LDR     R0,[R12,#64]          ; read 6510 interrupt state
    CMP     R0,#0                 ; interrupt occurred?
    BNE     &00018040             ; yes -> jump to interrupt handler
    LDRB    R1,[R4,#1]!           ; read next instruction
    ADD     PC,R5,R1,LSL #8       ; jump to emulation code
    MOV     R0,R0                 ; lots of these to fill up the 256 bytes

This means that there is only one single jump for each instruction emulated. By this (and a bit more) the emulator is able to reach 76% of the speed of the original C64 with an A3000, 116% with an A4000, 300% with an A5000 and 3441% with my RiscPC (SA at 287 MHz). The code may look hard to handle, but the source of it looks much better:

     ;-----------;
     ; $18 - CLC ;
     ;-----------;
     ADD R10,R10,#1               ; increment PC of 6510
     BIC R6,R6,#%00000001         ; clear C flag of 6510 status register
     FNNextCommand                ; do next command
     FNFillFree                   ; fill remaining space

CISC vs. RISC

CISC Principles

  • Large instruction set;
  • Complex operations;
  • Complex addressing modes;
  • Complex hardware, long execution time;
  • Minimum number of instructions needed for a given task;
  • Easy to program, simpler compiler.

Observations

  • Complex operations are infrequently used;
  • Complex addressing modes are infrequently used, and they can always be realized using several simple instructions;
  • Few data types are frequently used;
  • Constants and displacements (offsets) in instructions are often small;
  • Compiler cannot easily exploit complex instructions.

RISC Principles

  • Small instruction set;
  • Simple instructions to allow for fast execution (fewer steps);
  • Both operands should be available in registers to allow for short fetch time;
  • Large number of registers;
  • Only read/write (load/store) instructions should access the main memory, one MM access per instruction;
  • Simple addressing modes to allow for fast address computation;
  • Fixed-length instructions with few formats and aligned fields to allow for fast instruction decoding;
  • Complex tasks are left to the compiler to construct from simple operations, with increased compiler complexity and compiling time;
  • simpler and faster hardware implementation, especially suitable for pipelined architecture.

Comparisons

The execution time of a program depends on

  • total number of instructions in the program;
  • average number of cycles in each instruction
  • clock cycle time.

The CISC instructions are closer to the high-level languages, while the RISC instructions are closer to the signel-step micro-instructions (to be discussed later).

Example:

  • CISC (M68000)

Add the content of MM location pointed to by A3 to the component of an array starting at MM address 100. The index number of the component is in A2. The content of A3 is then automatically incremented by 1.

  • RISC (MIPS)

Pengumuman dan Screenshot Wajib Praktikum OS

Asistensi Perdana Praktikum OS maksimal hari Senin 18 Oktober 2010
1 orang 1 laporan hardcopy
untuk shift 4-6 pukul 11.30 – 13.30
untuk shift 1-3 lace kemudian dir
edit [file yang akan dibuat].[ext]
type [file yang sudah dibuat]
md kemudian dir
cd
cd..
rd kemudian dir
date
time
hidden file dengan windows explorer kemudian attrib -h
attrib /?
attrib -s -h -r /s /d
diskpart
cara membuat partisi harddisk
systeminfo
tasklist
Screenshot untuk perintah jaringan DOS
ipconfig /all
ipconfig /displaydns
ipconfig /showclassid
ping [alamat website]
tracert [alamat website]
netstat
route
Screenshot untuk tools pada windows samakan dengan screenshot pada modul yang sudah saya berikan
Screenshot untuk perintah dasar pada terminal
ls
ls –help
ls -l
ls -a
ls -i
mkdir kemudian ls
cd
gedit [file yang ingin dibuat].[ext]
cat >> [file yang sudah dibuat]
cat [file yang sudah diedit]
cat > [file yang sudah diedit]
mv kemudian ls
rm kemudian ls
Screenshot perintah jaringan terminal
ifconfig
netstat
route
traceroute
mtr
ping
arp
dmesg | grep eth
lspci

Format Laporan Sementara dan Tugas Pendahuluan Praktikum 3 Sistem Operasi

Praktikum yang kemarin dilaksanakan hari Kamis dan Jumat diganti pelaksanaannya menjadi hari Kamis saja karena mendekati LDO berdasarkan rekomendasi dari Dosen Pengampu mata kuliah Dasar Komputer dan Pemrograman.
Berikut kami berikan informasi mengenai pembagian waktu praktikum DKP yang baru :

No

Hari

Pembagian kelompok

1.

Kamis

Shift 4  pkl 08.30 – 10.00 WIB

Shift 5  pkl 10.00 – 11.30 WIB

Shift 6  pkl 11.30 – 13.00 WIB

Shift 1  pkl 14.00 – 15.30 WIB

Shift 2  pkl 15.30 – 17.00 WIB

2.

Jumat

Shift 3  pkl 13.00 – 14.00 WIB

Format laporan sementara untuk Praktikum OS adalah
4.1 DOS
4.1.1 Perintah Internal
4.1.2 Perintah Eksternal
4.1.3 Batch File Programming
4.2 WINDOWS 7
4.2.1 Sejarah Windows
4.2.2 Tools yang terdapat pada Windows 7
4.2.3 Setting IP pada Windows
4.2.4 Windows API
4.2.5 DLL pada Windows
4.3 UBUNTU
4.3.1 Perintah dasar pada terminal
4.3.2 Perintah jaringan pada terminal
4.3.3 Update lewat repository
4.4 Multiple OS
4.4.1 Penginstalan urut
4.4.2 Penginstalan tidak urut
4.5 Virtual OS
4.6 BSOD
Udah ada di modul semua dik tinggal copy paste tapi ngga usah semua dik nanti kebanyakan
TUGAS PENDAHULUAN
Sebutkan jenis OS yang adik2 suka dan sebutkan kelebihannya dari segi grafis, fleksibilitas dan sebagainya
Alasannya tidak boleh sama
Minimal 1 halaman A4 pakai bolpoint biru ya nulisnya, OKE?

Tambahan Materi dari Introduction to OOSAD with UML Version 2

Karena saya rasa posting blog teman saya Yuli Syarif di http://outofthebox.students-blog.undip.ac.id belum lengkap maka akan saya tambahkan sedikit mengenai Use Case Driven dan Rational Unified Process

Pengantar Use Case Driven

Use case driven berarti menggunakan use case sebagai modeling tool utama dalam mendefinisikan perilaku sistem. Use case menggambarkan bagaimana sebuah user berinteraksi dengan sistem untuk melakukan sebuah aktifitas, misalnya search data. Use case umumnya sangat sederhana karena berfokus pada sebuah aktifitas saja pada waktu tertentu. Sementara itu, setiap pendekatan model terhadap analisis sistem dan desain harus bersifat architecture centric. Architecture centric berarti software architecture yang mendasari perkembangan spesifikasi sistem, menentukan spesifikasi, kontruksi, dan dokumentasi sistem. Pendekatan analisis dan desain sistem modern berbasis object-oriented seharusnya mendukung 3 pandangan arsitektur sistem yang terpisah, namun terkait satu sama lain, yaitu functional, static, dan dynamic

RUP (Rational Unified Process)

Rational Unified Process (RUP) merupakan suatu metode rekayasa perangkat lunak yang dikembangkan dengan mengumpulkan berbagai best practises yang terdapat dalam industri pengembangan perangkat lunak. Ciri utama metode ini adalah menggunakan use-case driven dan pendekatan iteratif untuk siklus pengembangan perankat lunak. Gambar dibawah menunjukkan secara keseluruhan arsitektur yang dimiliki RUP.

RUP menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language (UML). Melalui gambar dibawah dapat dilihat bahwa RUP memiliki, yaitu:

Dimensi pertama digambarkan secara horizontal. Dimensi ini mewakili aspek-aspek dinamis dari pengembangan perangkat lunak. Aspek ini dijabarkan dalam tahapan pengembangan atau fase. Setiap fase akan memiliki suatu major milestone yang menandakan akhir dari awal dari phase selanjutnya. Setiap phase dapat berdiri dari satu beberapa iterasi.  Dimensi ini terdiri atas Inception, Elaboration, Construction, dan Transition.

Dimensi kedua digambarkan secara vertikal. Dimensi ini mewakili aspek-aspek statis dari proses pengembangan perangkat lunak yang dikelompokkan ke dalam beberapa disiplin. Proses pengembangan perangkat lunak yang dijelaskan kedalam beberapa disiplin terdiri dari empat elemen penting, yakni who is doing, what, how dan when. Dimensi ini terdiri atas Business Modeling, Requirement, Analysis and Design, Implementation, Test, Deployment, Configuration dan Change Manegement, Project Management, Environtment.

Gambar  Arsitektur Rational Unified Process

Pada penggunaan kedua standard tersebut diatas yang berorientasi obyek (object orinted) memiliki manfaat yakni:

Improve productivity

Standard ini dapat memanfaatkan kembali komponen-komponen yang telah tersedia/dibuat sehingga dapat meningkatkan produktifitas

Deliver high quality system

Kualitas sistem informasi dapat ditingkatkan sebagai sistem yang dibuat pada komponen­komponen yang telah teruji (well-tested dan well-proven) sehingga dapat mempercepat delivery sistem informasi yang dibuat dengan kualitas yang tinggi.

Lower maintenance cost

Standard ini dapat membantu untuk menyakinkan dampak perubahan yang terlokalisasi dan masalah dapat dengan mudah terdeteksi sehingga hasilnya biaya pemeliharaan dapat dioptimalkan atau lebih rendah dengan pengembangan informasi tanpa standard yang jelas.

Facilitate reuse

Standard ini memiliki kemampuan yang mengembangkan komponen-komponen yang dapat digunakan kembali untuk pengembangan aplikasi yang lainnya.

Manage complexity

Standard ini mudah untuk mengatur dan memonitor semua proses dari semua tahapan yang ada sehingga suatu pengembangan sistem informasi yang amat kompleks dapat dilakukan dengan aman dan sesuai dengan harapan semua manajer proyek IT/IS yakni deliver good quality software within cost and schedule time and the users accepted.

Fase RUP

  • Inception

–      Menentukan Ruang lingkup proyek

–      Membuat ‘Business Case’

–      Menjawab pertanyaan “apakah yang dikerjakan dapat menciptakan ‘good business sense’ sehingga proyek dapat dilanjutkan

  • Elaboration

–      Menganalisa berbagai persyaratan dan resiko

–      Menetapkan ‘base line’

–      Merencanakan fase berikutnya yaitu construction

  • Construction

–      Melakukan sederetan iterasi

–      Pada setiap iterasi akan melibatkan proses berikut: analisa desain, implementasi dan testing

  • Transistion

–      Membuat apa yang sudah dimodelkan menjadi suatu produk jadi

–      Dalam fase ini dilakukan:

  • Beta dan performance testing
  • Membuat dokumentasi tambahan seperti; training, user guides dan sales kit
  • Membuat rencana peluncuran produk ke komunitas pengguna

Peran Use Case Pada Setiap Fase

  • Inception

–      Menolong mengembangkan scope proyek

–      Menolong menetapkan penjadwalan dan anggaran

  • Elaboration

–      Menolong dalam melakukan analisa resiko

–      Menolong mempersiapkan fase berikutnya yaitu konstruksi

  • Construction

–      Melakukan sederetan iterasi

–      Pada setiap iterasi akan akan melibatkan proses berikut: analisa desain, implementasi dan testing

  • Transistion

–      Membuat apa yang sudah dimodelkan menjadi suatu produk jadi

–      Dalam fase ini dilakukan:

  • Beta dan performance testing
  • Membuat dokumentasi tambahan seperti; training, user guides dan sales kit
  • Membuat rencana peluncuran produk ke komunitas pengguna

Penerapan Tahapan Metodologi Pengembagan Perangkat Lunak dengan Menggunakan RUP (Contoh Kasus)

Metodologi Rational Unified Process (RUP). Metode RUP merupakan metode pengembangan kegiatan yang berorientasi pada proses. Dalam metode ini, terdapat empat tahap pengembangan perangkat lunak yaitu:

Inception

Pada tahap ini pengembang mendefinisikan batasan kegiatan, melakukan analisis kebutuhan user, dan melakukan       perancangan awal perangkat lunak (perancangan arsitektural dan use case). Pada akhir fase ini, prototipe perangkat lunak versi Alpha harus sudah dirilis

Elaboration :

Pada tahap ini dilakukan perancangan perangkat lunak mulai dari menspesifikasikan fitur perangkat lunak hingga perilisan prototipe versi Betha dari perangkat lunak.

Construction

Pengimplementasian rancangan perangkat lunak yang telah dibuat dilakukan pada tahap ini. Pada akhir tahap ini, perangkat lunak versi akhir yang sudah disetujui administrator dirilis beserta  dokumentasi perangkat lunak.

Transition

Instalasi , deployment dan sosialisasi perangkat lunak dilakukan pada tahap ini.

Introduction to OOSAD with UML Version 2 Part 2

2.4 THE UNIFIED MODELING LANGUAGE, VERSION 2.0

2.4.1 Sejarah Singkat UML

UML (Unified Modeling Language) adalah sebuah bahasa yang berdasarkan grafik/gambar untuk memvisualisasi, menspesifikasikan, membangun, dan pendokumentasian dari sebuah sistem pengembangan software berbasis OO (Object-Oriented).

UML sendiri juga memberikan standar penulisan sebuah sistem blue print, yang meliputi konsep bisnis proses, penulisan kelas-kelas dalam bahasa program yang spesifik, skema database, dan komponen-komponen yang diperlukan dalam sistem software.

Pendekatan analisa & rancangan dengan menggunakan model OO mulai diperkenalkan sekitar pertengahan 1970 hingga akhir 1980 dikarenakan pada saat itu aplikasi software sudah meningkat dan mulai komplek. Jumlah yang menggunakaan metoda OO mulai diuji cobakan dan diaplikasikan antara 1989 – 1994, seperti halnya oleh Grady Booch dari Rational Software Co., dikenal dengan OOSE (Object-Oriented Software Engineering), serta James Rumbaugh dari General Electric, dikenal dengan OMT (Object Modelling Technique).

Kelemahan saat itu disadari oleh Booch maupun Rumbaugh adalah tidak adanya standar penggunaan model yang berbasis OO, ketika mereka bertemu ditemani rekan lainnya Ivar Jacobson dari Objectory mulai mendiskusikan untuk mengadopsi masing-masing pendekatan metode OO untuk membuat suatu model bahasa yang uniform / seragam yang disebut UML (Unified Modeling Language) dan dapat digunakan oleh seluruh dunia.

Secara resmi bahasa UML dimulai pada bulan oktober 1994, ketika Rumbaugh bergabung dengan Booch untuk membuat sebuah project pendekatan metode yang uniform/seragam dari masing-masing metode mereka. Saat itu baru dikembangkan draft metode UML version 0.8 dan diselesaikan serta direlease pada bulan oktober 1995. Bersamaan dengan saat itu, Jacobson bergabung dan UML tersebut diperkaya ruang lingkupnya dengan metoda OOSE sehingga muncul release version 0.9 pada bulan Juni 1996. Hingga saat ini sejak Juni 1998 UML version 1.3 telah diperkaya dan direspons oleh OMG (Object Management Group), Anderson Consulting, Ericsson, Platinum Technology, ObjectTime Limited, dll serta dipelihara oleh OMG yang dipimpin oleh Cris Kobryn.

UML adalah standar dunia yang dibuat oleh Object Management Group (OMG), sebuah badan yang bertugas mengeluarkan standar-standar teknologi objectoriented dan software component.

2.4.2 Apa itu UML

Unified Modelling Language (UML) adalah sebuah “bahasa” yg telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem.

Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun.

Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa-bahasa berorientasi objek seperti C++, Java, C# atau VB.NET. Walaupun demikian, UML tetap dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C.

Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modeling Technique), dan Ivar Jacobson OOSE (Object-Oriented Software Engineering).

Ilustrasi 2.2 Object Management Group

Sejarah UML sendiri cukup panjang. Sampai era tahun 1990 seperti kita ketahui puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia. Diantaranya adalah: metodologi booch [1],  metodologi coad [2], metodologi OOSE [3], metodologi OMT [4], metodologi shlaer-mellor [5], metodologi wirfs-brock [6], dsb. Masa itu terkenal dengan masa perang metodologi (method war) dalam pendesainan berorientasi objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan group/perusahaan lain yang menggunakan metodologi yang berlainan.

Sampai tahun 1995, konsep objek menjadi populer tetapi dilaksanakan dengan berbagai cara oleh pengembang yang berbeda. Setiap pengembang memiliki metodologi sendiri dan notasi (misalnya, Booch, Coad, Moses, OMT, OOSE, dan SOMA1).

1 Lihat Grady Booch, Object-Oriented Analysis and Design with Applications, 2nd Ed.(Redwood City, CA: Benjamin/Cummings, 1994); Peter Coad and Edward Yourdon, Object-Oriented Analysis, 2nd Ed. (Englewood Cliffs, NJ: Yourdon Press, 1991); Peter Coad and Edward Yourdon, Object-Oriented Design (Englewood Cliffs, NJ: Yourdon Press, 1991); Brian Henderson-Sellers and Julian Edwards, BookTwo of Object-Oriented Knowledge: The Working Object (Sydney, Australia: Prentice Hall, 1994); James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and William Lorensen, Object-Oriented Modeling and Design (Englewood Cliffs, NJ, 1991); Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Overgaard, Object-Oriented Software Engineering: A Use Case Approach (Wokingham, England: Addison-Wesley, 1992); Ian Graham, Migrating to Object Technology (Wokingham, England: Addison-Wesley, 1994).

Kemudian pada tahun 1995, Rational Software membawa tiga pemimpin industri bersama-sama untuk menciptakan sebuah pendekatan tunggal untuk perkembangan sistem berorientasi objek. Grady Booch, Ivar Jacobson, dan James Rumbaugh bekerja dengan orang lain untuk menciptakan satu set standar teknik diagram dikenal sebagai Unified Modeling Language (UML). Tujuan dari UML adalah untuk menyediakan kosakata umum untuk istilah berorientasi objek dan teknik diagram yang cukup kaya untuk model setiap proyek pengembangan sistem dari analisis melalui implementasi. Pada November 1997, Object Management Group (OMG) secara resmi diterima UML sebagai standar untuk semua pengembang objek. Selama bertahun-tahun sejak itu, UML telah melalui beberapa revisi minor.
Versi saat ini dari UML, Versi 2.0, diterima oleh anggota OMG ketika musim semi dan pertemuan musim panas 2003.

2.4.3 Diagram Pemodelan

Versi 2.0 dari UML mendefinisikan satu set dari empat belas teknik diagram yang digunakan untuk memodelkan sistem. Diagram yang digunakan dipecah menjadi dua kelompok utama: satu untuk pemodelan struktur dari sistem dan satu untuk pemodelan sifat. Diagram pemodelan struktur termasuk kelas, objek, paket, penyebaran, komponen, dan diagram struktur komposit.
Diagram pemodelan sifat meliputi aktifitas, sequence, komunikasi, tinjauan interaksi, waktu, mesin perilaku negara, mesin penentu sifat, dan diagram use case2.

2 Material yang terdapat pada bab ini diambil dari Unified Modeling Language: Superstructure Version 2.0, ptc/03-08-02 (www.uml.org). Referensi tambahan termasuk Michael Jesse Chonoles and James A. Schardt, UML 2 for Dummies (Indianapolis, IN: Wiley, 2003), Hans-Erik Eriksson, Magnus Penker, Brian Lyons, and David Fado, UML 2 Toolkit (Indianapolis, IN: Wiley, 2004), and Kendall Scott, Fast Track UML 2.0 (Berkeley, CA:Apress, 2004). Untuk deskripsi lengkap dari masing-masing diagaram bisa dilihat di www.uml.org.

Gambar 2.6 menyediakan gambaran dari diagram ini. Tergantung di mana pengembangan proses berada di dalam sistem ini, diagram yang berbeda akan memainkan peran yang lebih penting. Dalam beberapa kasus, teknik diagram yang sama digunakan selama pengembangan proses. Dalam hal ini, diagram bermula sebagai sesuatu yang sangat konseptual dan abstrak. Karena sistem dikembangkan, diagram berevolusi untuk menyertakan rincian yang pada akhirnya akan menghasilkan kode dan pengembangannya. Dengan kata lain, diagram bergerak dari mendokumentasikan persyaratan untuk menentukan desain. Secara keseluruhan, notasi yang konsisten, integrasi antara teknik diagram, dan penerapan diagram di seluruh proses pengembangan membuat UML menjadi bahasa yang kuat dan fleksibel untuk analis dan pengembang. Dalam sisa bagian ini, akan diberikan gambaran tentang teknik diagram yang didukung oleh UML. Dalam bab-bab selanjutnya, akan menyediakan detail lebih lanjut tentang menggunakan subset dari UML dalam analisis dan desain sistem berorientasi objek.

Structure Diagrams

Pada bagian bab ini, akan diperkenalkan structure diagram yang statis, dari UML 2.0. Seperti disebutkan di atas, diagram struktur termasuk kelas, objek, paket, penyebaran, komponen, dan diagram struktur komposit. Diagram struktur menyediakan cara untuk mewakili data dan hubungan statis yang berada dalam sistem informasi. Di bawah ini, akan digambarkan tujuan dasar dari masing-masing diagram struktur.

Class Diagram

Tujuan utama dari class diagram adalah untuk menciptakan sebuah kosa kata yang digunakan oleh analis dan pengguna. Diagram kelas biasanya merupakan hal-hal, ide-ide atau konsep yang terkandung dalam aplikasi. Misalnya, jika anda sedang membangun sebuah aplikasi penggajian, diagram kelas mungkin akan berisi kelas yang mewakili hal-hal seperti karyawan, cek, dan pendaftaran gaji. Diagram kelas juga akan menggambarkan hubungan antara kelas. Sintaks sebenarnya dari class diagram disajikan dalam Bab 7.

Object Diagram

Object diagram sangat mirip dengan diagram kelas. Perbedaan utama adalah bahwa diagram objek menggambarkan objek dan hubungan mereka. Tujuan utama dari diagram objek adalah untuk memungkinkan analis untuk mengungkap rincian tambahan kelas. Dalam beberapa kasus, penyataan variabel dari sebuah class diagram dapat membantu pengguna atau analis dalam menemukan atribut tambahan yang relevan, hubungan, dan atau operasi, atau mungkin menemukan bahwa beberapa atribut, hubungan, atau operasi yang salah tempat. Seperti diagram kelas, sintaks yang aktual dan penggunaan diagram objek disajikan dalam Bab 7.

Gambar 2.6 Kesimpulan dari Diagram UML Versi 2.0

Package Diagram

Package diagram utamanya digunakan untuk mengelompokkan elemen diagram UML yang berlainan secara bersama-sama ke dalam tingkat pembangunan yang lebih tinggi yaitu berupa sebuah paket. Diagram paket pada dasarnya adalah diagram kelas yang hanya menampilkan paket, disamping kelas, dan hubungan ketergantungan, disamping hubungan khas yang ditampilkan pada diagram kelas. Sebagai contoh, jika kita memiliki sistem pendaftaran untuk kantor dokter, mungkin masuk akal untuk kelompok kelas pasien dengan kelas sejarah medis pasien bersama-sama untuk membentuk paket kelas pasien. Selain itu, dapat berguna untuk membuat paket perawatan yang mengandung gejala penyakit, penyakit, dan obat-obatan khas yang diresepkan untuk mereka. Akan disediakan rincian lebih lanjut dalam menggunakan diagram paket di Bab 6 sampai 9.

Deployment Diagram

Deployment diagram digunakan untuk mewakili hubungan antara komponen-komponen hardware yang digunakan dalam infrastruktur fisik sistem informasi. Misalnya, ketika merancang suatu sistem informasi terdistribusi yang akan menggunakan jaringan luas, diagram penyebaran dapat digunakan untuk menunjukkan hubungan komunikasi antara node yang berbeda dalam jaringan. Mereka juga dapat digunakan untuk mewakili komponen perangkat lunak dan bagaimana mereka ditempatkan di atas arsitektur fisik atau infrastruktur sistem informasi. Dalam hal ini, diagram penyebaran merupakan lingkungan pelaksanaan perangkat lunak. Dalam Bab 13, kami menjelaskan merancang arsitektur fisik sistem informasi dan menggunakan ekstensi ke diagram deployment untuk mewakili desain.

Component Diagram

Component diagram memungkinkan desainer untuk memodelkan hubungan fisik antara modul fisik dari kode. Diagram ini bila dikombinasikan dengan diagram penyebaran dapat digunakan untuk menggambarkan distribusi fisik dari modul perangkat lunak melalui jaringan. Misalnya, ketika merancang sistem client-server, hal ini berguna untuk menunjukkan mana kelas atau paket kelas akan berada pada node klien dan mana yang akan berada di server. Diagram komponen juga dapat berguna dalam merancang dan mengembangkan sistem berbasis komponen. Karena bab ini berfokus pada analisis sistem berorientasi objek dan desain, kita tidak akan membahas lebih lanjut menggunakan diagram komponen.

Composite Structure Diagram

UML 2.0 menyediakan diagram baru ketika struktur internal dari kelas bersifat kompleks maka disediakan composite structure diagram. Diagram struktur komposit ini digunakan untuk model hubungan antara bagian-bagian dari sebuah kelas. Sebagai contoh, ketika pemodelan pendaftaran penggajian, analis mungkin ingin kelas yang mewakili seluruh laporan serta kelas-kelas yang mewakili header, footer, dan garis-garis detail laporan. Dalam sebuah diagram kelas standar, ini akan membutuhkan analis untuk memodelkan pendaftaran penggajian menjadi empat kelas terpisah yang memiliki hubungan, kemudian menghubungkan mereka bersama-sama. Sebaliknya, diagram struktur komposit akan berisi tiga subclass: header, footer, dan garis detail. Diagram struktur komposit juga berguna ketika dilakukan pemodelan struktur internal komponen untuk sistem berbasis komponen. Seringkali, diagram struktur komposit merupakan mekanisme pemodelan yang kurang efektif karena pemodelan juga bisa dilakukan dengan mengkomunikasikan penggunaan paket dan diagram paket. Karena ketidakefektifan ini, dan karena kita tidak mencakup pengembangan sistem berbasis komponen, maka kita tidak akan membahas lebih lanjut dalam bab ini.

Behavior Diagram

Pada bagian bab ini, akan diperkenalkan behavior diagram yang dinamis, dari UML 2.0. Diagram sifat yang termasuk dalam UML 2.0 adalah aktifitas, sequence, komunikasi, gambaran interaksi, waktu, mesin penentu sifat, mesin penentu protokol, dan diagram use case. Diagram pemodel sifat menyediakan analis dengan cara menggambarkan hubungan dinamis antara instansi atau benda yang mewakili sistem informasi bisnis. Diagram pemodel sifat juga memungkinkan pemodelan perilaku dinamik dari objek individu sepanjang masa aktifnya. Diagram sifat mendukung analis dalam memodelkan
persyaratan fungsional agar sistem informasi berkembang.

Activity Diagram

Activity diagram menyediakan analis dengan kemampuan untuk memodelkan proses dalam suatu sistem informasi. Activity diagram dapat digunakan untuk alur kerja model, use case individual, atau logika keputusan yang terkandung dalam metode individual3. Activity diagram juga menyediakan pendekatan untuk proses pemodelan paralel. Activity diagram lebih lanjut diuraikan dalam Bab 6.

3 Bagi mereka yang akrab dengan analisis dan desain struktur tradisional, diagram aktifitas menggabungkan ide-ide yang mendasari diagram alir data dan diagram alur sistem. Pada dasarnya, diagram aktifitas canggih dan merupakan diagram aliran data yang terbaru. Secara teknis, diagram aktivitas menggabungkan ide-ide proses pemodelan dengan teknik yang berbeda termasuk model acara, statecharts, dan Petri Nets. Namun, diagram aktifitas UML 2.0 lebih umum menggunakan Petri Nets daripada teknik pemodelan proses lainnya. Untuk penjelasan penggunaan Petri Nets dengan model alur kerja bisnis dapat dilihat di Wil van der Aalst and Kees van Hee, Workflow Management: Model, Metode, and System (Cambridge, MA: MIT Press, 2002).

Interaction Diagram

Interaction diagram menggambarkan interaksi antara objek dari suatu sistem informasi berorientasi objek. UML 2.0 menyediakan empat diagram interaksi yang berbeda: sequence, komunikasi, gambaran interaksi, dan diagram waktu. Masing-masing diagram diperkenalkan di sini.

1. Sequence diagram memungkinkan analis untuk menggambarkan interaksi dinamis antara objek-objek dalam suatu sistem informasi. Sequence diagram sejauh ini merupakan jenis interaksi yang paling umum digunakan dalam pemodelan berorientasi objek. Sequence diagram menekankan penyusunan berbasis waktu untuk kegiatan yang dilakukan dengan satu set dari objek yang berkolaborasi. Sequence diagram sangat berguna dalam membantu analis, memahami spesifikasi real-time dan menggunakan kasus yang rumit (lihat di bawah). Diagram ini dapat digunakan untuk mendeskripsikan baik secara fisik dan logis interaksi antara objek. Dengan demikian, mereka berguna dalam kedua kegiatan analisis dan desain. Akan dijelaskan diagram urutan lebih rinci dalam Bab 8.

2. Communication Diagram memberikan pandangan alternatif dari interaksi dinamis yang terjadi di antara objek dalam suatu sistem informasi berorientasi objek. Dimana sequence diagram menekankan penyusunan berbasis waktu dari suatu kegiatan, diagram komunikasi lebih berfokus pada suatu set pesan yang disampaikan dalam sekumpulan objek yang berkolaborasi. Dengan kata lain, diagram komunikasi menggambarkan bagaimana objek dapat berkolaborasi untuk mendukung beberapa aspek dari fungsi yang diperlukan dari sistem. Urutan atau penyusunan berdasarkan waktu dari pesan ditunjukkan melalui skema urutan penomoran. Dari sudut pandang praktis, diagram komunikasi dan sequence diagram menyediakan informasi yang sama. Dengan demikian, diagram komunikasi dengan sequence diagram akan dijelaskan secara lebih rinci dalam Bab 8.

3. Interaction overview diagram membantu analis memahami use case yang kompleks. Mereka memberikan gambaran aliran proses dari kontrol. Diagram gambaran interaksi memperluas diagram aktifitas melalui penambahan fragmen sequence dari sequence diagram. Akibatnya, urutan fragmen diperlakukan seolah-olah fragmen merupakan aktifitas dalam diagram aktifitas. Keuntungan utama menggunakan diagram gambaran interaksi adalah bahwa anda dapat dengan mudah memodelkan aliran urutan alternatif. Walaupun, dalam prakteknya, hal ini bisa dicapai dengan menggunakan diagram aktifitas disamping diagram use case. Karena keterbatasan dalam penggunaannya, diagram gambaran interaksi tidak dijelaskan secara lebih rinci dalam bab ini.

4. Timing diagram menggambarkan interaksi antara objek sepanjang sumbu waktu. Tujuan utama dari diagram waktu adalah untuk menunjukkan perubahan keadaan objek dalam menanggapi peristiwa-peristiwa yang terjadi dari waktu ke waktu. Diagram waktu cenderung sangat berguna ketika mengembangkan sistem real-time atau embedded. Namun, seperti diagram gambaran interaksi, karena digunakan secara terbatas, maka tidak dijelaskan diagram waktu secara lebih rinci dalam bab ini.

State Machines

Dalam UML 2.0, ada dua state machines yang berbeda yaitu sifat dan protokol.4 Mesin penentu sifat digunakan untuk menjelaskan perubahan yang dialami objek selama masa aktifnya. Mesin penentu protokol menggambarkan urutan peristiwa tertentu yang objek dapat respon.
1. Mesin penentu sifat menyediakan metode untuk memodelkan keadaan yang berbeda, atau set dari nilainya, bahwa variabel dari kelas bisa pergi selama masa aktifnya. Sebagai contoh, seorang pasien bisa berubah statusnya dari waktu ke waktu misalnya seorang yang sebelumnya pasien baru bisa berubah menjadi pasien sekarang. Masing-masing “tipe” pasien benar-benar menunjukkan keadaan yang berbeda dari pasien yang sama. Keadaan yang berbeda dihubungkan dengan peristiwa yang menyebabkan dalam contoh yaitu pasien untuk berubah dari satu keadaan ke keadaan lainnya. Akan digambarkan mesin penentu sifat secara lebih rinci dalam Bab 8.
2. Mesin penentu protokol mendukung analis dalam merancang hubungan antara unsur-unsur antarmuka pada kelas. Sebagai contoh, biasanya anda harus membuka file atau database sebelum query atau memperbarui itu. Tidak seperti mesin penentu sifat, mesin penentu protokol bisa dikaitkan dengan port pada komponen atau interface pada kelas. Mesin penentu protokol sangat khusus. Dengan demikian, tidak akan dijelaskan secara lebih rinci dalam bab ini.

Use Case Diagram

Use case diagram memungkinkan analis untuk memodelkan interaksi antara sistem informasi dan lingkungannya. Lingkungan sistem informasi akan mencakup baik pengguna akhir dan setiap sistem eksternal yang berinteraksi dengan sistem informasi. Penggunaan utama dari diagram use case adalah untuk menyediakan sarana dalam mendokumentasikan dan memahami persyaratan sistem informasi yang sedang berkembang. Use case dan diagram use case adalah beberapa alat yang paling penting untuk digunakan dalam analisis dan desain sistem berorientasi objek. Akan dijelaskan use case dan diagram use case secara lebih rinci dalam bab ini dan dalam Bab 6.

2.4.4 Extension Mechanisms

Karena UML sangat luas dan lengkap, maka mustahil bagi pencipta UML untuk mengantisipasi semua penggunaan secara potensial. Untungnya, pembuat UML juga telah menyediakan satu set mekanisme ekstensi. Yaitu termasuk stereotip, nilai tag, kendala, dan profil. Masing-masing akan dijelaskan berikutnya.

Stereotype

Sebuah stereotype mempersiapkan analis dengan kemampuan secara bertahap memperluas UML menggunakan elemen model yang sudah ada dalam UML. Stereotip akan ditampilkan sebagai teks tertutup dalam guillemets (<<>>) atau sudut kurung (<<>>). Stereotip dapat dikaitkan dengan unsur model (misalnya, kelas, objek, use case, hubungan) dalam suatu diagram UML. Stereotip akan digunakan pada Bab 12 dalam hubungannya dengan bentuk khusus dari mesin penentu sifat yaitu jendela diagram navigasi.

Tagged Values

Dalam UML, semua elemen model memiliki sifat yang menggambarkan mereka. Sebagai contoh, semua elemen memiliki nama. Ada saat-saat yang sangat berguna untuk menambah properti pada elemen-elemen dasar. Tagged values digunakan untuk menambah properti baru ke elemen dasar. Sebagai contoh, jika sebuah tim proyek tertarik dalam menelusuri kepengarangan setiap kelas dalam diagram kelas, tim proyek bisa menambahkan elemen kelas untuk menyertakan sebuah properti penulis. Hal ini juga memungkinkan untuk nilai tag berhubungan dengan stereotip tertentu. Dengan cara ini, ketika analis mengaplikasikan stereotipe ke elemen model, semua nilai tag tambahan yang terkait dengan stereotip juga diterapkan. Tidak akan digambarkan nilai-nilai dalam setiap tag secara lebih rinci dalam bab ini.

Constraints

Constraint memungkinkan analis untuk memodelkan domain masalah ke istilah yang berhubungan secara spesifik dengan menempatkan batasan-batasan tambahan pada penggunaan elemen model. Kendala biasanya dimodelkan menggunakan Object Constraint Language (OCL).5 Hal ini akan didiskusikan kembali dalam bab kendala dalam analisis dan perancangan berorientasi objek pada Bab 10.

Profiles

Profiles mengijinkan pengembang untuk mengelompokkan satu set elemen model yang telah diperluas menggunakan stereotip, nilai tag, dan atau kendala ke dalam satu paket. Profil telah digunakan untuk menciptakan ekstensi pemodelan yang dapat mengatasi jenis-jenis platform implementasi, seperti .NET, atau domain pemodelan spesifik, seperti sistem embedded. Profil hanya kenyamanan. Dalam teks ini, tidak akan digambarkan lebih lanjut tentang penggunaan profil.

5 Untuk pembahasan OCL yang lebih spesifik, lihat Jos Warmer and Anneke Kleppe, The Object Constraint Language: Precise Modeling with UML (Reading, MA: Addison-Wesley, 1999) and the UML 2.0 OCL Specification, ptc/03-10-14 (www.uml.org <http://www.uml.org/>).

Kasus 2.1 Enkapsulasi dan Penyembunyian Informasi

Datang dengan satu set contoh menggunakan enkapsulasi dan menyembunyikan informasi dalam kehidupan sehari-hari. Sebagai contoh, apakah ada informasi tentang diri Anda bahwa Anda tidak akan keberatan jika semua orang tahu? Bagaimana seseorang mengambil informasi ini? Bagaimana dengan informasi pribadi yang Anda inginkan untuk menjadi pribadi? Bagaimana Anda mencegah seseorang dari mengambilnya?

2.3.5 Kasus yang Sering Terjadi

Kasus 2.2 Pewarisan

Lihat jika Anda bisa datang dengan setidaknya tiga kelas yang berbeda yang mungkin Anda temukan dalam situasi bisnis yang khas. Pilih salah satu kelas dan ciptakan setidaknya hirarki pewarisan tiga tingkat menggunakan kelas. Manakah yang merupakan kelas abstrak, jika ada, dan mana yang konkrit?

Kasus 2.3 Polimorfisme dan Dynamic Binding

Dapatkah Anda memikirkan cara di mana anda menggunakan polimorfisme dan atau dynamic binding dalam kehidupan sehari-hari anda? Sebagai contoh, ketika anda diminta untuk melakukan beberapa tugas, apakah anda selalu melakukan tugas seperti orang lain yang anda kenal? Apakah Anda selalu melakukan tugas dengan cara yang sama, atau metode kinerja tergantung pada tempat Anda berada ketika Anda melakukan tugas?

Kasus 2.4 Diagram Struktur
Mengapa diagram struktur dianggap statis? Pertimbangkan implementasi sistem untuk departemen layanan karir universitas anda yang akan mendukung wawancara siswa dan proses penempatan kerja. Jelaskan secara singkat untuk kontak utama anda di bagian layanan karir, jenis informasi yang diagram struktur berikut akan komunikasikan: A) kelas, B) objek, C) paket, D) penyebaran, E) komponen, dan F) struktur komposit . Pastikan untuk menyertakan contoh-contoh dari departemen layanan karir sehingga pengguna non-teknis akan dapat memahami penjelasan anda!

Kasus 2.5 Diagram Sifat
Mengapa diagram sifat dianggap statis? Pertimbangkan implementasi sistem untuk departemen layanan karir universitas anda yang akan mendukung wawancara siswa dan proses penempatan kerja. Jelaskan secara singkat untuk menghubungi kontak utama di bagian layanan karir, jenis informasi yang dapat dikomunikasikan diagram struktur berikut: A) aktivitas, B) sequence, C) komunikasi, D) gambaran interaksi, E) waktu, F) mesing penentu sifat, G) mesin penentu protokol, dan H) use case. Pastikan untuk menyertakan contoh-contoh dari departemen layanan karir anda sehingga pengguna non-teknis akan dapat memahami penjelasan Anda!

Referensi

1. Alistair Cockburn :  http://members.aol.com/acockburn/2001

2. Doug Rosenberg and Kendall Scott: Use Case Driven Object Modeling with UML:A Practical Approach Addison-Wesley

3. Ivar Jacobson: Object-Oriented Software Engineering: A Use Case Driven Approach.Addison-Wesley, 1994

4. Martin Fowler with Kendall Scott: UML Distilled.Addison-Wesley, 1997

5. Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language User Guide.Addison-Wesley, 1999

6. Terry Quatrani: Visual Modeling with Rational Rose and UML.Addison-Wesley, 1998

7. Daniel Tkach, Walter Fang and Andrew So: Visual Modeling Technique, 1996

8. Alistair Cockburn’s Web: http://members.aol.com/acockburn

9. Rational software: http://www.rational.com/uml/documentation.html

10. Dennis, Wixom, Tegarden: Systems Analysis and Design with UML Version 2.0: An Object-Oriented Approach, 2nd Edition

Materi Selanjutnya bisa dilihat di http://outofthebox.students-blog.undip.ac.id/2010/09/29/apbo-chapter-2-introduction-to-object-oriented-systems-analysis-design-with-unified-modeling-language-version-2-0/

Introduction to OOSAD with UML Version 2 Part 1

2.1 TUJUAN

  • Mengerti tentang karakteristik dasar dari sistem berorientasi objek.
  • Mengenal lebih dekat Unified Modelling Language (UML), Versi 2.0.
  • Mengenal lebih dekat Unified Process.
  • Mengenal setidaknya pendekatan tentang sistem analisis dan perancangan berbasis objek.

2.2 INTRODUCTION

Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak bisa lagi dibuat tanpa memperhatikan unsur-unsur pentingnya yang dapat mendukung. Seharusnya piranti lunak  dirancang dengan memperhatikan hal-hal seperti scalability, security, dan eksekusi yang handal walaupun dalam kondisi yang sulit. Selain itu arsitekturnya harus didefinisikan dengan jelas, agar bug mudah ditemukan dan diperbaiki, bahkan oleh orang lain selain programmer aslinya. Keuntungan lain dari perencanaan arsitektur yang matang adalah dimungkinkannya penggunaan kembali modul atau komponen untuk aplikasi piranti lunak lain yang membutuhkan fungsionalitas yang sama.

Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding). Model piranti lunak dapat dianalogikan seperti pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah sistem yang kompleks sangatlah penting karena kita tidak dapat memahami sistem semacam itu secara menyeluruh. Semakin komplek sebuah sistem, semakin penting pula penggunaan teknik pemodelan yang baik.

Dengan menggunakan model, diharapkan pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk faktor-faktor seperti scalability, robustness, security, dan sebagainya.

Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian terkenal dengan sebuah segitiga sukses (the triangle for success). Ketiga unsur tersebut adalah metode pemodelan (notation), proses (process) dan tool yang digunakan.

Memahami notasi pemodelan tanpa mengetahui cara pemakaian yang sebenarnya (proses) akan membuat proyek gagal. Dan pemahaman terhadap metode pemodelan dan proses disempurnakan dengan penggunaan tool yang tepat.


Ilustrasi 2.1 Segitiga sukses

Sampai tahun terakhir, analis terfokus pada data atau proses bisnis saat mengembangkan sistem. Ketika mereka bergerak melalui SDLC, mereka menekankan baik data untuk sistem (pendekatan data-sentris) atau proses yang akan mendukung (pendekatan proses-sentris). Pada pertengahan 1980-an, pengembang mampu membangun sistem yang lebih efisien jika analis itu bekerja dengan data sistem dan proses secara simultan, dan terfokus pada mengintegrasikan keduanya. Dengan demikian, tim proyek mulai menggunakan pendekatan berorientasi obyek, dimana modul yang mengandung komponen itu disebut objek (yang mengandung data dan proses) digunakan sebagai blok bangunan untuk sistem.

Ide dibalik pendekatan berorientasi obyek bukanlah hal baru. Mereka dapat ditelusuri kembali ke bahasa pemrograman berorientasi objek, Simula, diciptakan pada tahun 1960, dan Smalltalk, dibuat pada awal tahun 1970. Hingga pertengahan 1980-an, pengembang harus menyimpan data dan proses terpisah agar dapat membangun sistem yang dapat berjalan pada komputer mainframe pada saat itu. Hari ini, karena kenaikan daya prosesor dan penurunan biaya prosesor, pendekatan berorientasi objek layak digunakan. Salah satu kendala utama dari pembelajaran pendekatan berorientasi objek untuk sistem informasi yang sedang berkembang adalah volume dari terminologi baru. Dalam bab ini kita akan memperoleh gambaran tentang karakteristik dasar dari suatu sistem berorientasi objek, memberikan gambaran tentang Unified Modeling Language (UML, 2.0), memperkenalkan analisis dasar sistem berorientasi objek dan desain dan Proses Unified, dan menyajikan pendekatan minimalis untuk analisis sistem berorientasi objek dan desain dengan UML 2.0.

2.3 BASIC CHARACTERISTICS OF OBJECT-ORIENTED SYSTEMS

2.3.1 Pendahuluan

Pemrograman Berorientasi Objek merupakan perbaikan dari pemrograman structural (atau disebut juga fungsional). Kelemahan dari pemrograman structural adalah kurangnya modularitas dari data yang ada. Sebuah perubahan pada sebuah data yang tersimpan menyebabkan banyaknya perubahan yang harus dilakukan pada data – data lain yang berhubungan.  Salah satu contoh permasalahan yang timbul akibat dari pemrograman structural ini adalah permasalahan Y2K (bug yang terjadi pada tahun 2000) yang menyebabkan kerugian materi dalam jumlah yang besar. OO memberikan sebuah metode untuk membangun perangkat lunak yang lebih handal (robust) dengan semakin besar dan kompleksnya sistem.

2.3.2 Konsep

2.3.2.1 Modularitas

Sistem berorientasi objek terdiri dari modul – modul. Modularitas adalah sebuah konsep yang menekankan penggabungan data – data dan fungsi – fungsi yang berhubungan ke dalam sebuah kesatuan (modul) yang sama.

Ada 2 hal yang yang perlu diketahui tentang modul :

- Untuk setiap modul yang ada, mungkin terdapat beberapa variabel. Setiap variabel memiliki nilai tersendiri.

- Sebuah modul berkomunikasi dengan modul lain dengan cara saling memanggil fungsi yang ada.

2.3.2.2 Enkapsulasi

Enkapsulasi adalah sebuah konsep yang menekankan bahwa hanya setiap variabel yang memiliki data itu sendirilah yang dapat melakukan perubahan (modifikasi) terhadap data tersebut ataupun membaca data tersebut. Konsep ini memberikan struktur yang handal (robust) tetapi menyebabkan perubahan lebih mudah bisa dilakukan terhadap sistem.

2.3.2.3 Terminologi

Setiap modul pada sistem berorientasi objek disebut juga sebagai objek. Pada dunia nyata, objek memiliki 2 karakteristik, yaitu : data dan kelakuan.

Data untuk setiap objek secara umum disebut atribut dari objek. Kelakuan yang berbeda dari setiap objek disebut juga metode dari objek. Metode adalah analogi langsung dari fungsi atau prosedur pada bahasa pemograman.

Kelas adalah template dari sebuah objek. Sebuah kelas mendeskripsikan atribut dan metode yang akan ada untuk semua variabel dari kelas.

2.3.2.4 Kelebihan dan Kelemahan Object Oriented Programming dibanding Structural Programming

Pengembangan perangkat lunak menuntut keahlian teknis yang tinggi, ketekunan luar biasa, serta kemampuan mengelola proyek yang memadai. Di masa lalu, pengembangan perangkat lunak memakan waktu yang lama, biaya yang melebihi perkiraan, kurang memenuhi harapan dan kebutuhan pengguna dan yang paling parah banak perangkat lunak yang tidak bisa digunakan setelah selesai dikembangkan karena jauh dari apa yang diharapkan pengguna.

Pada saat ini, perangkat lunak yang dikembangkan harus mampu mengakomodasi perubahan-perubahan yang terjadi sangat cepat terutama untuk merespon perubahan lingkungan bisnis dan kebutuhan pengguna yang berubah dengan cepat. Oleh karena itu diperlukan metode pengembangan perangkat lunak yang lebih sesuai. Metode terstruktur yang selama ini digunakan dirasakan kurang memadai lagi.

Dalam pengembangan perangkat lunak dengan metode terstruktur, para perancang mulai dengan mengembangkan blok-blok standar kode untuk melakukan operasi tertentu, kemudian menyalinnya ke aplikasi lain yang ditulis. Hal tersebut menyulitkan saat terjadi perubahan pada blok-blok kode awal, sebab pengembang harus menyalinnya dimanapun kode awal tersebut disalin, yang pada akhirnya menjadikan waktu pengembangan lebih lama.

Pemrograman berorientasi obyek (Object Oriented Programming-OOP) dipandang merupakan kerangka kerja yang paling baik saat ini untuk menggantikan metode terstruktur. Dengan OOP para pengembang menciptakan blokblok kode yang dinamakan objek. Objek-objek ini kemudian digunakan oleh berbagai aplikasi. Dan apabila suatu saat terjadi perubahan, para pengembang hanya melakukan perubahan sekali saja dan dengan mudah mewariskannya ke objek lain yang menjadi turunannya.

Paradigma OOP adalah para pengembang membagi aplikasi-aplikasi yang besar menjadi objek-objek yang mandiri satu terhadap lainnya. Karena OOP menggunakan paradigma yang berbeda dengan pemrograman terstruktur, maka dibutuhkan tool yang berbeda pula. Salahsatu tool tersebut adalah UML (Unified Modelling Language). UML merupakan tool yang sangat sesuai karena konsep dasarnya adalah memodelkan kelas-kelas beserta atribut di dalamnya bersamaan dengan relasi-relasi yang terjadi antar kelas yang bersangkutan. Selain itu, UML memungkinkan pengembang sistem untuk melakukan perancangan hingga ke model fisik perangkat keras (misalnya pada jaringan komputer).

Kelebihan pada umumnya

- Sistem yang dibangun lebih handal (robust).

- Memiliki gambaran yang lebih baik tentang dunia nyata.

Kelemahan pada umumnya

- Sulit untuk menggambarkan kelakuan dari sistem secara keseluruhan disebabkan oleh karena kelas adalah kesatuan yang bersifat low-level.

2.3.2.5 Karakteristik Dasar Sistem Berorientasi Objek

Sistem berorientasi objek berfokus untuk menangkap struktur dan perilaku dari sistem informasi dalam modul kecil yang mencakup baik data dan proses. Modul-modul kecil ini dikenal sebagai objek. Pada bagian ini bab, kita menjelaskan karakteristik dasar sistem berorientasi objek, yang meliputi kelas, objek, metode, pesan, enkapsulasi, menyembunyikan informasi, pewarisan, polimorfisme, dan dynamic binding.

Classes and Objects

Kelas adalah template umum kita gunakan untuk mendefinisikan dan membuat variabel tertentu, atau bisa disebut benda. Setiap objek berhubungan dengan kelas. Sebagai contoh, semua objek yang menangkap informasi mengenai pasien dapat masuk ke dalam kelas yang disebut Pasien, karena ada atribut (misalnya, nama, alamat, dan tanggal lahir) dan metode (contoh menyisipkan misalnya, menginputkan pasien baru, memelihara informasi, dan menghapus entri ) semua itu adalah apa yang pasien bagikan (lihat Gambar 2.1).

Sebuah objek adalah variabel dari kelas. Dengan kata lain, sebuah objek adalah orang, tempat, peristiwa, atau hal yang ingin kita peroleh sebagai informasi. Jika kita membangun sebuah sistem pendaftaran untuk kantor dokter, kelas mungkin termasuk dokter, pasien, dan perjanjian. Para pasien tertentu seperti Jim Maloney, Mary Wilson, dan Theresa Marks dianggap contoh, atau objek, dari kelas pasien.
Setiap objek memiliki atribut yang mendeskripsikan informasi tentang objek, seperti nama pasien, tanggal lahir, alamat, dan nomor telepon. Keadaan suatu obyek ditentukan oleh nilai atribut dan hubungan dengan obyek lain pada suatu titik waktu tertentu. Sebagai contoh, pasien mungkin memiliki kondisi “baru” atau “sekarang” atau “telah berobat.”

Setiap objek juga memiliki behaviors. Behaviors adalah sifat yang menentukan apa yang dapat dilakukan oleh objek. Sebagai contoh, objek perjanjian dapat berupa menjadwalkan janji baru, menghapus janji, dan mencari janji yang tersedia berikutnya.


Gambar 2.1 Classes And Object

Salah satu aspek yang lebih membingungkan pengembangan sistem berorientasi objek adalah kenyataan bahwa di kebanyakan bahasa pemrograman berorientasi objek, baik kelas dan variabel dari kelas masing-masing dapat memiliki atribut dan metode. Atribut dari kelas dan metode cenderung digunakan untuk atribut model (atau metode) yang berhubungan dengan isu-isu terkait dengan semua variabel kelas. Misalnya, untuk membuat objek pasien baru, pesan dikirim ke kelas pasien untuk membuat sebuah keterangan yang baru untuk kelas itu sendiri. Dari sudut pandang seorang analisis sistem dan desain, maka kita akan berfokus pada atribut dan metode dari objek dan bukan dari kelas.

Methods and Messages

Metode menerapkan perilaku obyek. Sebuah metode tidak lebih dari suatu tindakan yang dapat objek lakukan. Dengan demikian, mereka bersifat analog dengan fungsi atau prosedur dalam bahasa pemrograman tradisional seperti C, COBOL, atau Pascal. Message adalah informasi yang dikirim ke objek untuk memicu metode. Pada dasarnya, pesan adalah fungsi atau prosedur yang dipanggil dari satu objek ke objek lain. Misalnya, jika seorang pasien, baru mendaftar ke kantor dokter, sistem akan mengirim pesan untuk memasukkan informasi ke aplikasi tersebut. Objek pasien akan menerima pesan (instruksi) dan melakukan apa yang perlu untuk dilakukan, tentang memasukkan pasien baru ke dalam sistem (execute adalah metode yang dipakai). Lihat Gambar 2.2.

Encapsulation and Information Hiding

Ide-ide enkapsulasi dan menyembunyikan informasi sangat berhubungan dalam sistem berorientasi objek. Walaupun tidak ada satu pun penjelasan yang baru. Enkapsulasi hanyalah kombinasi sederhana dari proses dan data ke dalam satu kesatuan. Pendekatan tradisional untuk pengembangan sistem informasi cenderung untuk menjadi proses-sentris (misalnya, sistem terstruktur) ataupun data-sentris (misalnya, teknik informasi). Pendekatan berorientasi objek menggabungkan proses dan data ke dalam (objek) secara keseluruhan yang bisa hadir secara bebas tanpa terpengaruh (objek) lain.

Gambar 2.2 Messages and Methods

Information hiding pertama kali diperkenalkan dalam pengembangan sistem terstruktur. Prinsip menyembunyikan informasi menunjukkan bahwa hanya informasi yang dibutuhkan untuk menggunakan sebuah modul perangkat lunak yang akan diterbitkan kepada pengguna modul. Biasanya, hal ini berarti informasi yang dibutuhkan untuk diteruskan ke modul, dan informasi yang kembali dari modul yang telah diterbitkan. Persisnya bagaimana modul dalam menerapkan fungsi yang dibutuhkan adalah tidak relevan. Kita benar-benar tidak peduli bagaimana benda melakukan fungsinya, selama fungsinya bisa terjadi. Dalam sistem berorientasi objek, menggabungkan enkapsulasi dengan prinsip menyembunyikan informasi, menunjukkan bahwa prinsip menyembunyikan informasi diterapkan pada objek bukan hanya menerapkannya pada fungsi atau proses. Dengan demikian, objek diperlakukan seperti kotak hitam.

Secara fakta, bahwa kita bisa menggunakan objek dengan metode memanggil adalah kunci untuk penggunaan ulang karena hal ini melindungi kerja internal objek dari perubahan yang terjadi di sistem luar, dan menjaga sistem dari keterpengaruhan ketika ada perubahan dilakukan terhadap suatu objek. Pada Gambar 2.2, perhatikan bagaimana sebuah pesan (insert pasien baru) akan dikirim kepada suatu objek, namun algoritma internal yang diperlukan untuk menanggapi pesan, tersembunyi dari bagian yang lain dari sistem. Satu-satunya informasi yang objek perlu tahu adalah seperangkat operasi, atau metode, yang objek lain dapat lakukan dan apa pesan yang perlu dikirim untuk memicunya.

Inheritance

Pewarisan, sebagai karakteristik pengembangan sistem informasi, diusulkan dalam pemodelan data di akhir 1970-an dan awal 1980-an. Literatur pemodelan data menyarankan menggunakan pewarisan untuk mengidentifikasi tingkat yang lebih tinggi, atau lebih umum, seperti kelas dari objek. Setting umum dari atribut dan metode dapat diatur menjadi superclasses. Biasanya, kelas diatur dalam hirarki dimana superclasses, atau kelas umum, berada di atas, dan subkelas, atau kelas tertentu, di bagian bawah. Pada Gambar 2.3, seseorang adalah superclass daripada kelas Dokter dan kelas Pasien. Dokter, pada gilirannya, adalah superclass untuk dokter umum dan spesialis. Perhatikan bagaimana kelas (misalnya, dokter) dapat berfungsi sebagai superclass dan subclass secara bersamaan. Hubungan antara kelas dan superclass dikenal sebagai hubungan A-Kind-Of (AKO). Sebagai contoh, pada Gambar 2.3, seorang dokter umum adalah A-Kind dari dokter, dan merupakan A-Kind-Of dari orang.
Subclass mewarisi atribut dan metode yang sesuai dari superclasses di atas mereka. Artinya, setiap subclass berisi atribut dan metode dari superclass induknya. Sebagai contoh, Gambar 2.3 menunjukkan bahwa baik dokter dan pasien adalah subclass orang dan karena itu akan mewarisi atribut dan metode dari class orang. Pewarisan akan membuatnya pendefinisian kelas lebih sederhana. Alih-alih seperti mengulang atribut dan metode di dokter dan pasien yang kelasnya terpisah, atribut dan metode pada umumnya ditempatkan di kelas orang dan diwarisi oleh kelas-kelas di bawahnya. Perhatikan bagaimana jauh lebih efisien hirarki dari kelas objek daripada objek yang sama tanpa hirarki pada Gambar 2.4.

Gambar 2.3 Hirarki Class

Kebanyakan kelas di seluruh hirarki akan mengakibatkan kasus, setiap kelas yang memiliki variabel disebut kelas konkret. Misalnya, jika Mary Wilson dan Jim Maloney adalah attribut nama dari kelas pasien, pasien akan dianggap sebagai kelas konkret. Beberapa kelas tidak menghasilkan kasus karena mereka digunakan hanya sebagai template untuk kelas yang lebih spesifik lain (terutama kelas yang berlokasi tinggi pada sebuah hirarki). Kelas-kelas yang disebut sebagai kelas abstrak. Orang akan menjadi contoh dari kelas abstrak. Daripada membuat objek dari orang, kita akan menciptakan contoh yang mewakili kelas-kelas yang lebih spesifik dari Dokter dan Pasien, kedua jenis orang (lihat Gambar 2.3). Apa jenis kelas adalah kelas dokter umum? Mengapa?

Gambar 2.4 Pewarisan

Polymorphism and Dynamic Binding

Polimorfisme berarti bahwa pesan yang sama dapat diartikan berbeda oleh kelas yang berbeda dari objek. Sebagai contoh, memasukkan pasien berarti sesuatu yang berbeda dari memasukkan janji. Dengan demikian, bagian yang berbeda informasi yang perlu dikumpulkan dan disimpan. Untungnya, kita tidak perlu khawatir tentang bagaimana sesuatu diselesaikan saat menggunakan objek. Kita hanya mengirim pesan ke objek, dan objek yang akan bertanggung jawab untuk menafsirkan pesan secara tepat. Sebagai contoh, jika kita mengirim pesan “Gambarkan bentukmu” untuk objek persegi, objek lingkaran, dan objek segitiga, hasilnya akan sangat berbeda, walaupun pesan tersebut adalah sama. Perhatikan pada Gambar 2.5 bagaimana setiap objek merespon dengan tepat (dan berbeda) meskipun pesan adalah identik.

Polimorfisme bisa dibentuk melalui dynamic binding. Dinamis, atau terlambat, binding adalah teknik yang menunda untuk menentukan tipe objek sampai waktu running. Dengan demikian, metode khusus yang biasa disebut tidak dipilih oleh sistem berorientasi objek sampai sistem berjalan. Hal ini berbeda untuk binding statis. Dalam sistem statis terikat, jenis objek akan ditentukan pada waktu kompilasi. Oleh karena itu, pengembang harus memilih metode mana yang harus dipanggil disamping mengijinkan sistem untuk melakukannya. Inilah sebabnya mengapa di sebagian besar bahasa pemrograman tradisional anda akan menemukan logika yang rumit dalam mengambil keputusan berdasarkan berbagai jenis objek dalam sistem. Sebagai contoh, dalam bahasa pemrograman tradisional, daripada mengirim pesan “Gambarlah bentukmu” ke berbagai jenis objek grafis pada Gambar 2.5, Anda akan harus menulis logika keputusan menggunakan pernyataan case atau satu set pernyataan untuk menentukan objek grafis apa yang ingin anda gambar, dan anda harus menamai setiap fungsi gambar secara berbeda (misalnya, menggambar-persegi, menggambar lingkaran, atau menggambar-segitiga). Hal ini jelas akan membuat sistem yang jauh lebih rumit dan lebih sulit untuk dipahami.

Gambar 2.5 Polimorfisme dan Enkapsulasi

2.3.2.6 Object Oriented Development (OOD)

Dewasa ini konsep object oriented telah mendominasi hampir seluruh aspek komputerisasi. Mulai dari software game, aplikasi bisnis, DBMS, bahkan sampai ke sistem operasi. Hal tersebut terjadi karena konsep object oriented dipandang sebagai suatu konsep yang maju dan dianggap mampu memodelkan hampir semua fenomena yang ada di dunia ini. Hal lain yang menarik adalah kemampuannya untuk mengembangkan perangkat lunak secara incremental dan mengurangi biaya yang sulit dicapai oleh meodologi sebelumnya.

Membangun sistem perangkat lunak dapat diibatkan dengan membangun gedung bertingkat. Gedung bertingkat tidak mungkin dibangun tanpa memiliki cetak biru arsitektur yang lengkap. Proses tradisional untuk melakukan pengembangan sistem informasi dinamakan System Development Life Cycle (SDLC), yang memuat langkah-langkah yang seharusnya diikuti oleh para profesional dalam pengembangan sistem informasi untuk menetapkan spesifikasi, mengembangkan, dan memelihara sistem informasi. Beberapa metode yang cukup dikenal adalah metode air terjun (waterfalls) dan prototyping.

2.3.2.7 Pemodelan perancangan

Untuk memodelkan aplikasi dunia nyata (real world) menggunakan metodologi berorientasi objek, kita perlu memodelkan data maupun proses yang berjalan pada objek yang bersangkutan. Dalam konteks pengembangan sistem berorientasi objek (Object Oriented Development – OOD), terdapat beberapa keuntungan dari penggunaan pemodelan berorientasi objek, yaitu :

-           Kemampuan untuk menangani tipe-tipe data dan masalah-masalah yang lebih kompleks dan rumit

-           Memperbaiki komunikasi antara pengguna, analis, perancang, dan pemrogram

-           Meningkatkan derajad konsistensi antara tahap analisis, perancangan, serta kegiatan pemrograman karena menggunakan model yang sama untuk setiap tahap

-           Ketangguhan sistem (robustness)

-           Kemampuan untuk menggunakan ulang hasil analisis, perancangan, serta pemrograman (reusable component) pada suatu proyek ke proyek lainnya.

Untuk mengembangkan model perancangan, kita harus mengidentifikasi dan menyelidiki konsekuensi pada lingkungan implementasi akibat langkah-langkah perancangan. Semua keputusan strategis, misalnya penanganan kesalahan dan pustaka komponen yang akan dipakai berulang-ulang harus dibuat. Selanjutnya kita menggunakan keputusan itu untuk beradaptasi dengan lingkungan implementasi. Langkah terakhir adalah membuat formalisasi model perancangan untuk mendeskripsikan bagaimana objek-objek berinteraksi satu sama lain lewat suatu skenario (use case) yang telah dikembangkan sebelumnya.

Pemodelan (modeling) adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding). Model piranti lunak dapat dianalogikan seperti pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah sistem yang kompleks sangatlah penting karena kita tidak dapat memahami sistem semacam itu secara menyeluruh. Semakin komplek sebuah sistem, semakin penting pula penggunaan teknik pemodelan yang baik. Dengan menggunakan model, diharapkan pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan lengkap dan tepat, termasuk faktor-faktor seperti scalability, robustness, security, dan sebagainya. Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian terkenal dengan sebuan segitiga sukses (the triangle for success). Ketiga unsur tersebut adalah metode pemodelan (notation), proses (process) dan tool yang digunakan.

UML (Unified Modelling Language) adalah bahasa pemodelan standar pada rekayasa perangkat lunak. Dengan menggunakan UML akan berdampak pada peningkatan produktifitas dan dan kualitas serta pengurangan biaya dan waktu. Kerumitan arsitektur dalam pengembangan perangkat lunak bisa diatasi dengan menggambarkan cetak biru sistem tersebut. Di sinilah UML bisa banyak berperan.

2.3.2.8 Pertanyaan Pendukung

Dalam membangun sistem berorientasi objek, ada beberapa pertanyaan yang harus dijawab :

- Bagaimana cara mendefinisikan objek yang kita perlukan ketika melakukan perancangan sistem?

- Apa metode dari atribut yang harus dimiliki?

- Seberapa besar sebuah kelas harus dibuat?

Referensi

  1. Dennis, Wixom, Tegarden: Systems Analysis and Design with UML Version 2.0: An Object-Oriented Approach, 2nd Edition
  2. Grady Booch, Object-Oriented Analysis and Design with Application, Benjamin/Cummings, 1991.
  3. Peter Coad and Edward Yourdon, Object-Oriented Analysis, Yourdon Press, 1991.
  4. Ivar Jacobson, Magnus Christerson, Patrik Jonson, and Gunnar Overgaard, Object-Oriented Software Engineering: A Use Case Driven Approach, Addison-Wesley, 1992.
  5. James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, and William Lorenson, Object-Oriented Modeling and Design, Prentice Hall, 1991.
  6. Sally Shlaer and Stephen J. Mellor, Object-Oriented System Analysis: Modeling the World in Data, Yourdon Press, 1988.
  7. Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener, Designing Object-Oriented Software, Prentice Hall, 1990.
  8. Grady Booch, James Rumbaugh, and Ivar Jacobson, The Unified Modeling Language User Guide, Addison-Wesley, 1999.
  9. Ivar Jacobson, Grady Booch, and James Rumbaugh, The Unified Software Development Process, Addison-Wesley, 1999.
  10. James Rumbaugh, Ivar Jacobson, and Grady Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 1999.
  11. Unified Modeling Language Specification, Object Management Group, www.omg.org, 1999.
  12. Introduction to OMG UML [http://www.omg.org/gettingstarted/what_is_uml.htm]
  13. UML Tutorial [http://www.sparxsystems.com.au/UML_Tutorial.htm]
  14. Embarcadero Tech Support [http://www.embarcadero.com/support/uml_central.asp]
  15. Practical UML A Hands-On Introduction for Developers, http://www.togethersoft.com/services/practical_guides/umlonlinecourse/index.html]
  16. Architecture and Design: Unified Modeling Language (UML), [http://www.cetuslinks. org/oo_uml.html]

Virtual Memory Part 5

9.6 Alokasi Bingkai

9.6.1 Pendahuluan

Setiap proses perlu mendapat alokasi memori agar proses tersebut dapat dieksekusi dengan baik. Masalah selanjutnya adalah bagaimana caranya untuk mengalokasikan memori bagi setiap proses yang ada. Saat proses akan dieksekusi, terjadi page fault sehingga sistem akan menggantinya dengan halaman di memori. Untuk melakukan penggantian ini diperlukan bingkai yang terdapat di sistem. Proses dapat menggunakan setiap bingkai yang sedang bebas di sistem. Hal ini mengakibatkan perlu adanya pengaturan lebih lanjut agar tiap proses bisa mendapatkan bingkai yang cukup untuk melakukan penggantian ini.

9.6.2 Jumlah Bingkai

Hal yang perlu diperhatikan dalam strategi alokasi bingkai adalah berapa jumlah bingkai yang harus dialokasikan pada proses tersebut. Jumlah bingkai yang dialokasikan tidak boleh melebihi jumlah bingkai yang tersedia. Hal lain yang perlu diperhatikan adalah jumlah bingkai minimum yang harus dialokasikan agar instruksi dapat dijalankan, karena jika terjadi kesalahan halaman sebelum eksekusi selesai, maka instruksi tersebut harus diulang. Sehingga jumlah bingkai yang cukup harus tersedia untuk menampung semua halaman yang dibutuhkan oleh sebuah instruksi.

9.6.3 Strategi Alokasi Bingkai

Ada dua jenis algoritma yang biasa digunakan untuk pengalokasian bingkai, yaitu:

  1. Algoritma Fixed Allocation . Algoritma fixed allocation dibedakan menjadi dua macam yaitu equal allocation dan proportional allocation. Pada algoritma equal allocation jumlah bingkai yang diberikan pada setiap proses jumlahnya sama (m/n bingkai, m = jumlah bingkai, n = jumlah proses), misalnya: ada 5 buah proses dan 100 bingkai tersisa, maka tiap proses akan mendapatkan 20 bingkai. Algoritma ini kurang baik digunakan jika proses-proses yang ada besarnya berbeda-beda (proses yang besar diberikan bingkai yang sama dengan proses yang kecil), misalnya: ada 2 buah proses sebesar 10 K dan 127 K, ada 64 bingkai bebas. Jika kita memberikan bingkai yang sama yaitu sebesar 32 untuk tiap proses maka misalnya saja proses satu ternyata hanya memerlukan 10 bingkai, dan alhasil 22 bingkai pada proses pertama akan terbuang percuma. Untuk mengatasi masalah tersebut algoritma proportional allocation-lah yang cocok digunakan, yaitu pengalokasian bingkai disesuaikan dengan besarnya suatu proses, contoh:

Si = besarnya proses Pi

S = Si

m = jumlah total bingkai

ai = alokasi bingkai untuk Pi ((Si/S ) x m)

m = 64

S1 = 10

S2 = 127

a1 = (10/137) x 64 = 5 bingkai

a2 = (127/137) x 64 = 59 bingkai

  1. Algoritma Priority Allocation . Algoritma priority allocation merupakan algoritma pengalokasian dengan memberikan jumlah bingkai sesuai dengan prioritas proses tersebut. Pendekatannya mirip dengan proportional allocation, perbandingan frame-nya tidak tergantung ukuran relatif dari proses, melainkan lebih pada prioritas proses atau kombinasi ukuran dan prioritas. Jika suatu proses mengalami page fault maka proses tersebut akan menggantinya dengan salah satu frame yang dimiliki proses tersebut atau menggantinya dengan frame dari proses yang prioritasnya lebih rendah. Dengan kedua algoritma di atas, tetap saja alokasi untuk tiap proses bisa bervariasi berdasarkan derajat multiprogrammingnya. Jika multiprogrammingnya meningkat maka setiap proses akan kehilangan beberapa frame yang akan digunakan untuk menyediakan memori untuk proses lain. Sedangkan jika derajat multiprogramming-nya menurun, frame yang sudah dialokasikan bisa disebar ke proses-proses lainnya.

9.6.4 Alokasi Global dan Lokal

Dalam pengalokasian bingkai, salah satu hal yang penting adalah penggantian halaman. Kita dapat mengklasifikasikan algoritma penggantian halaman ke dalam dua kategori:

  1. Penggantian Global. Penggantian secara global memperbolehkan suatu proses mencari bingkai pengganti dari semua bingkai yang ada, meskipun bingkai tersebut sedang dialokasikan untuk proses lain. Hal ini memang efisien, tetapi ada kemungkinan proses lain tidak mendapatkan bingkai karena bingkainya terambil oleh proses lain.
  2. Penggantian Lokal. Penggantian lokal hanya mengijinkan proses untuk mencari bingkai pengganti dari bingkai-bingkai yang memang dialokasikan untuk proses tersebut.

Pada algoritma penggantian lokal, jumlah bingkai yang dialokasikan pada suatu proses tidak akan berubah. Sedangkan pada algoritma penggantian global jumlah bingkai pada proses tersebut mungkin akan bertambah dengan asumsi proses lain tidak mengambil bingkai proses ini sebagai pengganti dari bingkai proses tersebut.

Masalah pada algoritma penggantian global adalah proses tidak dapat mengontrol page fault rate proses itu sendiri. Keunggulan algoritma ini adalah menghasilkan system throughput yang lebih bagus, oleh karena itu algoritma ini lebih sering dipakai.

Rujukan

[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.

[WEBAmirSch2000] Yair Amir dan Theo Schlossnagle. 2000. Operating Systems 00.418: Memory Management http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ .

[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging http://www.cs.princeton.edu/ courses/ archive / spring02/ cs217/ lectures/ paging.pdf .

[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html .

[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture Notes Part 7 http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html .

[WEBWiki2006f] From Wikipedia, the free encyclopedia. 2006. Page replacement algorithms http://en.wikipedia.org/ wiki/ Page_replacement_algorithms .

[FlynnMcHoes2006] Ida M. Flynn dan Ann Mclver McHoes. 2006. Understanding Operating Systems. Fourth Edition. Thomson Course Technology.

Materi Selajutnya bisa dilihat di http://outofthebox.students-blog.undip.ac.id/2010/09/27/so-chapter-9-virtual-memory/

Virtual Memory Part 4

9.5 Algoritma Ganti Halaman

9.5.1 Pendahuluan

Ganti halaman dilakukan apabila terjadi page fault. Page fault bukan suatu jenis error yang fatal, page fault terjadi apabila ada halaman yang ingin diakses tetapi halaman tersebut tidak terdapat di dalam memori utama. Page fault pasti terjadi minimal satu kali saat pertama kali halaman itu ingin diakses.

Prinsip ganti halaman adalah sebagai berikut:

  1. Proses meminta halaman tertentu.
  2. Jika halaman berada di memori, tidak dilakukan ganti halaman.
  3. Jika halaman tidak berada di memori, maka:
    1. Jika ada frame kosong, maka halaman itu di-load ke dalam frame yang kosong tersebut.
    2. Jika tidak ada frame yang kosong, maka pilih halaman yang akan di-swap dengan menggunakan algoritma ganti halaman.
  4. Update tabel halaman dan table memori.
  5. Restart proses.

Gambar 9.15. Ilustrasi Swapping


Semakin banyak dilakukan swap, semakin sibuk pula CPU mengurus hal ini. Bila berkelanjutan, maka akan terjadi thrashing. Thrashing adalah keadaan di mana banyak terjadi page fault, sehingga mengakibatkan utilisasi CPU menurun drastis karena lebih sibuk mengurusi pergantian halaman daripada mengurusi proses.

Untuk menghindari hal ini, diperlukan pemilihan algoritma ganti halaman yang baik. Kriteria algoritma yang baik adalah:

  • Menyebabkan page fault rate yang rendah.
  • Tidak menyebabkan thrashing .
  • Tidak terlalu sulit untuk diimplementasikan.

Pada umumnya, semakin besar memori, semakin banyak pula jumlah frame-nya. Semakin banyak frame, semakin banyak pula jumlah halaman yang bisa masuk di memori, sehingga page fault rate menurun.

9.5.2 Reference String

Reference string adalah string yang merepresentasikan halaman-halaman yang ingin digunakan/di-load . Kegunaannya adalah untuk menyederhanakan alamat dan mempermudah melihat page fault rate yang terjadi serta mensimulasikan algoritma ganti halaman. Biasanya reference string berisi kumpulan alamat-alamat halaman yang dikelompokkan berdasarkan aturan reduksi reference string. Bila pereduksian alamat sebanyak 1000 bytes, maka alamat-alamat yang berurutan sebanyak 1000 bytes diwakili oleh satu buah reference string. Misalnya 0003, 0563, 0094 diwakili oleh reference string 0. Demikian juga 1745, 1003, 1999 diwakili oleh reference string 1 dan seterusnya.

Contoh:

Urutan alamat yang digunakan oleh sebuah proses adalah 0301, 0213, 0312, 0321, 0341, 0421, 0431, 0132, 0431, 0152. Maka, reference string-nya dengan reduksi 100 bytes adalah 3, 2, 3, 4, 1, 4, 1.

Bagaimana cara men-generate sebuah reference string dari urutan alamat? Reference string dihasilkan dari bit tertentu dari sebuah alamat (biasanya bit kedua dari kiri, yang berarti direduksi 100 bytes), maka alamat 0431 menjadi 4, 0241 menjadi 2, dan 0252 menjadi 2.

Apabila terdapat urutan alamat yang string acuannya sama berturut-turut, misalnya 0431 dan 0452, maka tetap ditulis sebagai 4, karena tidak me-load halaman yang baru.

9.5.3 Algoritma Penggantian Page Acak

Mekanisme algoritma

Setiap terjadi page fault, page yang diganti dipilih secara acak.

Teknik ini tidak memakai informasi apapun dalam menentukan page yang diganti. Semua page di memori utama mempunyai bobot sama untuk dipilih. Teknik ini dapat memilih sembarang page, termasuk page yang sedang diacu (page yang seharusnya tidak diganti, pilihan terburuk).

Teknik ini sangat buruk, percobaan menunjukkan algoritma acak menimbulkan rate terjadinya page fault yang sangat tinggi.

9.5.4 Algoritma FIFO (First In First Out)

Algoritma ini adalah algoritma yang paling sederhana. Prinsip dari algoritma ini adalah seperti prinsip antrian (antrian tak berprioritas), halaman yang masuk lebih dulu maka akan keluar lebih dulu juga. Algoritma ini menggunakan struktur data stack. Apabila tidak ada frame kosong saat terjadi page fault, maka korban yang dipilih adalah frame yang berada di stack paling bawah, yaitu halaman yang berada paling lama berada di memori. Dengan hanya informasi mengenai lama berada di memori, maka algoritma ini dapat memindahkan page yang sering digunakan. Boleh jadi page itu berada terus di memori karena selalu digunakan. Page itu karena mengikuti pola antrian berdasar lamanya berada di memori menjadi elemen terdepan, diganti, dan segera harus masuk kembali ke memori sehingga terjadi page fault kembali.

Gambar 9.16. Algoritma FIFO


Pada awalnya, algoritma ini dianggap cukup mengatasi masalah tentang pergantian halaman, sampai pada tahun 70-an, Belady menemukan keanehan pada algoritma ini yang dikenal kemudian dengan anomali Belady. Anomali Belady adalah keadaan di mana page fault rate meningkat seiring dengan pertambahan jumlah frame , seperti yang bisa dilihat pada contoh di bawah ini.

Gambar 9.17. Anomali Algoritma FIFO


Ketika jumlah frame ditambah dari 3 frame menjadi 4 frame, jumlah page fault yang terjadi malah bertambah (dari 14 page fault menjadi 15 page fault ). Hal ini biasanya terjadi pada kasus yang menginginkan halaman yang baru saja di-swap-out sebelumnya. Oleh karena itu, dicarilah algoritma lain yang mampu lebih baik dalam penanganan pergantian halaman seperti algoritma optimal.

Algoritma FIFO murni jarang digunakan, tetapi dikombinasikan (modifikasi).

Kelemahan FIFO yang jelas adalah algoritma dapat memilih memindahkan page yang sering digunakan yang lama berada di memori. Kemungkinan ini dapat dihindari dengan hanya memindahkan page tidak diacu Page ditambah bit R mencatat apakah page diacu atau tidak. Bit R bernilai 1 bila diacu dan bernilai 0 bila tidak diacu.

Variasi dari FIFO antara lain:

  • Algoritma penggantian page kesempatan kedua (second chance page replacement algorithm)
  • Algoritma penggantian clock page (clock page replacement algorithm)

Algoritma Penggantian Page Kesempatan Kedua

Mekanisme algoritma

  • Saat terjadi page fault, algoritma memilih page elemen terdepan diganti bila bit R bernilai 0.
  • Bila bit R bernilai 1, maka bit page terdepan senarai direset menjadi 0 dan diletakkan ke ujung belakang senarai. Mekanisme ini kembali diterapkan ke elemen berikutnya.

Algoritma Penggantian Clock Page

Algoritma penggantian page kesempatan kedua merupakan algoritma yang memadai tapi tidak efisien karena memindahkan page-page di senarainya. Algoritma penggantian clock page merupakan perbaikan algoritma pertama.

Mekanisme algoritma

  • Pada algoritma ini, semua page merupakan senarai melingkar membentuk pola jam. Terdapat penunjuk (pointer) ke page tertua.

Ketika terjadi page fault, page yang ditunjuk diperiksa.

  • Jika bit R bernilai 0, maka page diganti. Page baru ditempatkan di tempat page diganti, dan penunjuk dimajukan satu posisi ke page berikutnya.
  • Jika bit R bernilai 1, maka bit R direset menjadi 0, dan penunjuk dimajukan satu posisi. Seterusnya sampai menemui page dengan bit R bernilai 0.

Kedua algoritma adalah sama, hanya berbeda dalam implementasi, yaitu:

  • Algoritma penggantian page kesempatan kedua menggunakan senarai lurus tidak sirkular.
  • Algoritma penggantian clock page menggunakan senarai sirkular.

9.5.5 Algoritma Optimal

Algoritma ini adalah algoritma yang paling optimal sesuai namanya. Prinsip dari algoritma ini adalah mengganti halaman yang tidak akan terpakai lagi dalam waktu lama, sehingga efisiensi pergantian halaman meningkat (page fault yang terjadi berkurang) dan terbebas dari anomali Belady. Strategi ini akan menghasilkan jumlah page-fault paling sedikit. Algoritma ini memiliki page fault rate paling rendah di antara semua algoritma di semua kasus. Akan tetapi, optimal belum berarti sempurna karena algoritma ini ternyata sangat sulit untuk diterapkan. Sistem tidak dapat mengetahui halaman-halaman mana saja yang akan digunakan berikutnya. Pendekatan ini dapat dilakukan dengan simulasi. Tapi simulasi hanya spesifik untuk suatu program. Bila yang terbaik tak dimungkinkan, maka yang perlu dilakukan adalah berusaha mendekatinya. Algoritma penggantian page diusahakan kinerjanya mendekati optimal. Tiap algoritma penggantian page mengumpulkan dan memakai informasi untuk menentukan page yang diganti sehingga mendekati optimal.

Gambar 9.18. Algoritma Optimal


9.5.5 Algoritma LRU (Least Recently Used)

Dikarenakan algoritma optimal sangat sulit dalam pengimplementasiannya, maka dibuatlah algoritma lain yang performance-nya mendekati algoritma optimal dengan sedikit cost yang lebih besar. Algoritma ini mengganti halaman yang paling lama tidak dibutuhkan. Asumsinya, halaman yang sudah lama tidak digunakan sudah tidak dibutuhkan lagi dan kemungkinan besar, halaman yang baru di-load akan digunakan kembali.

Sama seperti algoritma optimal, algoritma LRU tidak mengalami anomali Belady. Algoritma ini memakai linked list untuk mendata halaman mana yang paling lama tidak terpakai. Linked list inilah yang membuat cost membesar, karena harus meng-update linked list tiap saat ada halaman yang di akses. Halaman yang berada di linked list paling depan adalah halaman yang baru saja digunakan. Semakin lama tidak dipakai, halaman akan berada semakin belakang dan di posisi terakhir adalah halaman yang paling lama tidak digunakan dan siap untuk di-swap.

Gambar 9.19. Algoritma LRU


9.5.6 Implementasi LRU

Ada beberapa cara untuk mengimplementasikan algoritma LRU. Tetapi, yang cukup terkenal ada 2, yaitu counter dan stack. Contoh algoritma di atas menggunakan stack.

Counter . Cara ini dilakukan dengan menggunakan counter atau logical clock. Setiap halaman memiliki nilai yang pada awalnya diinisialisasi dengan 0. Ketika mengakses ke suatu halaman baru, nilai pada clock di halaman tersebut akan bertambah 1. Semakin sering halaman itu diakses, semakin besar pula nilai counter-nya dan sebaliknya. Untuk melakukan hal itu dibutuhkan extra write ke memori. Selain berisi halaman-halaman yang sedang di-load, memori juga berisi tentang counter masing-masing halaman. Halaman yang diganti adalah halaman yang memiliki nilai clock terkecil, yaitu halaman yang paling jarang diakses. Kekurangan dari cara ini adalah memerlukan dukungan tambahan counter pada hardware.

Stack. Cara ini dilakukan dengan menggunakan stack yang menandakan halaman-halaman yang berada di memori. Setiap kali suatu halaman diakses, akan diletakkan di bagian paling atas stack. Apabila ada halaman yang perlu diganti, maka halaman yang berada di bagian paling bawah stack akan diganti sehingga setiap kali halaman baru diakses tidak perlu mencari kembali halaman yang akan diganti. Dibandingkan pengimplementasian dengan counter, cost untuk mengimplementasikan algoritma LRU dengan menggunakan stack akan lebih mahal karena seluruh isi stack harus di-update setiap kali mengakses halaman, sedangkan dengan counter, yang dirubah hanya counter halaman yang sedang diakses, tidak perlu mengubah counter dari semua halaman yang ada.

Gambar 9.20. Algoritma LRU dengan Stack


9.5.7 Algoritma Penggantian Page NRU (Not-Recenly Used)

Mekanisme algoritmanya

Pada algoritma ini, page diberi dua bit mencatat status page, bit R dan M, yaitu:

Bit R   : referenced (menyatakan page sedang diacu)

Bit R = 1 berarti sedang diacu

Bit R = 0 berarti tidak sedang diacu

Bit M  : modified (menyatakan page telah dimodifikasi)

Bit M = 1 berarti dimodifikasi

Bit M = 0 berarti tidak dimodifikasi

Dengan 2 bit, maka page-page dikelompokkan menjadi 4 kelas page, yaitu

Kelas 0 : Tidak sedang diacu, belum dimodifikasi (R=0, M=0)

Kelas 1 : Tidak sedang diacu, telah dimodifikasi (R=0, M=1)

Kelas 2 : Sedang diacu, belum dimodifikasi (R=1, M=0)

Kelas 3 : Sedang diacu, telah dimodifikasi (R=1, M=1)

Memilih mengganti page kelas bernomor terendah (bila terdapat page-page di kelas itu) secara acak.

Bila kelas tersebut kosong maka dipilih page di kelas lebih tinggi, dan seterusnya.

Algoritma ini mengasumsikan kelas-kelas bernomor lebih rendah akan baru akan digunakan kembali dalam waktu relatif lama.

Algoritma ini mudah dipahami dan diimplementasikan. Implementasi algoritma ini sangat efisien karena tak banyak langkah dalam pemilihan page. Algoritma ini memang tidak optimal, tapi dalam kondisi-kondisi normal telah memadai.

9.5.8 Algoritma Lainnya

Sebenarnya masih banyak algoritma ganti halaman yang lain selain 3 algoritma utama yang telah dibahas sebelumnya (utama bukan berarti paling sering dipakai). Berikut ini adalah 2 contoh algoritma lain yang juga cukup popular dan mudah diimplementasikan.

Algoritma yang pertama adalah algoritma second chance. Algoritma second chance berdasarkan pada algoritma FIFO yang disempurnakan. Algoritma ini menggunakan tambahan berupa reference bit yang nilainya 0 atau 1. Jika dalam FIFO menggunakan stack , maka second chance menggunakan circular queue . Halaman yang baru di-load atau baru digunakan akan diberikan nilai 1 pada reference bit-nya. Halaman yang reference bit-nya bernilai 1 tidak akan langsung diganti walaupun dia berada di antrian paling bawah (berbeda dengan FIFO).

Urutan langkah kerja algoritma second chance adalah sebagai berikut:

  • Apabila terjadi page fault dan tidak ada frame yang kosong, maka akan dilakukan razia (pencarian korban) halaman yang reference bit-nya bernilai 0 dimulai dari bawah antrian (seperti FIFO).
  • Setiap halaman yang tidak di- swap (karena reference bit-nya bernilai 1), setiap dilewati saat razia reference bit-nya akan diset menjadi 0.
  • Apabila ditemukan halaman yang reference bit-nya bernilai 0, maka halaman itu yang di-swap.
  • Apabila sampai di ujung antrian tidak ditemukan halaman yang reference bit-nya bernilai 0, maka razia dilakukan lagi dari awal.

Pada gambar di bawah ini, akan diilustrasikan algoritma second chance dan algoritma FIFO sebagai pembanding.

Gambar 9.21. Algoritma Second Chance


Gambar 9.22. Algoritma FIFO

Algoritma kedua adalah algoritma random. Algoritma random adalah algoritma yang cukup sederhana juga selain algoritma FIFO. Dalam algoritma ini, halaman yang dipilih menjadi korban dipilih secara acak.

Meskipun terdengar asal, tetapi algoritma ini relatif low cost, karena tidak memerlukan stack, queue atau counter. Dibandingkan dengan FIFO, rata-rata kasus menunjukkan page fault rate algoritma random lebih rendah daripada algoritma FIFO. Sedangkan dibandingkan dengan LRU, algorima random ini lebih unggul dalam hal memory looping reference , karena algoritma random sama sekali tidak memerlukan looping.

Gambar 9.23. Algoritma Random


Rangkuman

Page fault terjadi apabila terdapat halaman yang ingin diakses tetapi halaman tersebut tidak terdapat di dalam memori utama.

Jika terjadi page fault dan tidak ada frame yang kosong, maka dipilih frame tumbal yang akan di-swap.

Pemilihan halaman dilakukan dengan algoritma ganti halaman. Algoritma dipilih yang paling rendah page fault rate-nya dan tidak sulit untuk diimplementasikan.

Contoh algoritma ganti halaman:

  • Algoritma FIFO
  • Algoritma Optimal
  • Algoritma LRU
  • Algoritma Second Chance
  • Algoritma Random

Rujukan

[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne. 2002. Applied Operating Systems. Sixth Edition. John Wiley & Sons.

[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.

[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall.

[WEBAmirSch2000] YairTheo AmirSchlossnagle. 2000. Operating Systems 00.418: Memory Management – http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ .

[WEBEgui2006] Equi4 Software. 2006. Memory Mapped Files – http://www.equi4.com/mkmmf.html .

[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to Programming Systems: Memory Paging – http://www.cs.princeton.edu/ courses/ archive / spring02/ cs217/ lectures/ paging.pdf .

[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables – http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html .

[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture Notes Part 7 – http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html .

[WEBWiki2006c] From Wikipedia, the free encyclopedia. 2006. Memory Management Unit – http://en.wikipedia.org/ wiki/ Memory_management_unit .

[WEBWiki2006d] From Wikipedia, the free encyclopedia. 2006. Page Fault – http://en.wikipedia.org/ wiki/ Page_fault .

[WEBWiki2006e] From Wikipedia, the free encyclopedia. 2006. Copy on Write – http://en.wikipedia.org/ wiki/ Copy_on_Write .

[WEBWiki2007] Wikipedia. 2007. Page Replacement Algortihm http://en.wikipedia.org/wiki/Page_replacement_algorithm .

Virtual Memory Part 3

9.4 Copy-on-Write

9.4.1 Pendahuluan

Pada pembahasan sebelumnya dijelaskan bahwa memori virtual memungkinkan proses untuk saling berbagi pakai memori. Proses ini adalah proses untuk berbagi pakai halaman (page sharing) memori virtual. Karena setiap proses membutuhkan halaman tersendiri, maka dibutuhkan teknik untuk mengaturnya. Teknik yang digunakan untuk mengoptimasi pembuatan dan penggunaan halaman adalah teknik copy-on-write, atau yang biasa disingkat dengan COW.

Pembuatan proses baru dengan menggunakan sistem call fork() menciptakan proses anak sebagai duplikat dari proses induknya. Setelah berhasil menciptakan proses anak, kemudian proses anak tersebut langsung memanggil sistem call exec(), yang berarti bahwa proses anak juga menduplikasi ruang alamat yang dimiliki proses induknya, beserta halaman yang diaksesnya. Padahal, hasil kopian dari halaman tersebut belum tentu berguna, yaitu jika tidak ada proses modifikasi pada halaman tersebut. Akan tetapi, dengan menggunakan teknik copy-on-write maka proses anak dan induk dapat bersama-sama menggunakan (mengakses) halaman yang sama.

Suatu halaman yang diakses secara bersama-sama (shared) oleh beberapa proses ditandai dengan COW (copy-on-write) jika suatu proses ingin memodifikasi (menulis) suatu halaman. Dan apabila hal tersebut terjadi, maka akan dibuat salinan dari halaman yang di-shared tersebut.

Sebagai contoh, sebuah proses anak akan memodifikasi suatu halaman yang terdiri dari sebagian dari stack. Sistem operasi akan mengenali halaman ini sebagai halaman copy-on-write. Sistem operasi kemudian akan membuat salinan dari halaman ini dan memetakannya kepada ruang alamat yang dimiliki proses anak. Proses anak kemudian memodifikasi halaman salinan yang telah berada di ruang alamat proses anak tersebut. Pada saat teknik copy-on-write ini digunakan, hanya halaman yang bisa dimodifikasi (oleh proses anak atau proses induk) saja yang disalin, sedangkan halaman yang tidak dimodifikasi dapat dibagi (di-share) untuk proses induk dan proses anak. Sebagai catatan, bahwa hanya halaman yang dapat dimodifikasi saja yang ditandai sebagai copy-on-write, sedangkan halaman yang tidak dapat dimodifikasi (misalnya halaman yang terdiri dari kode-kode yang bisa dieksekusi) tidak perlu ditandai karena tidak akan terjadi modifikasi pada halaman tersebut.

Pada banyak sistem operasi, disediakan sebuah pool yang terdiri dari halaman-halaman yang kosong untuk meletakkan halaman hasil duplikasi dengan teknik copy-on-write. Selain untuk meletakkan halaman hasil duplikasi tersebut, pool ini juga digunakan pada saat sebuah proses mengalami penambahan stack atau heap. Teknik yang digunakan sistem operasi untuk menyediakan halaman kosong tersebut dikenal dengan zero-fill-on-demand. Teknik ini dilakukan dengan mengosongkan halaman-halaman sebelum digunakan oleh proses yang baru.

Copy-on-write dapat diilustrasikan pada gambar 4 dan 5.

Gambar 9.11. Sebelum modifikasi pada page C

Gambar 9.12. Setelah modifikasi pada page C


9.4.2 Dasar Penggantian Halaman

Pada pembahasan mengenai masalah page-fault, diasumsikan bahwa setiap halaman minimal mengalami satu kali page fault, yaitu pada saat diakses pertama kali. Akan tetapi, tidak semua halaman tersebut akan digunakan oleh suatu proses. Jika terdapat sebuah proses yang memiliki sepuluh halaman, dan hanya menggunakan setengah di antaranya, yaitu lima halaman, maka demand paging menyimpan kelima proses yang tidak dibutuhkan tersebut agar tidak diakses oleh M/K. Dengan begitu, kita dapat meningkatkan degree of multiprogramming, yaitu dengan menjalankan proses dua kali lebih banyak. Jika kita memiliki empat puluh bingkai, kita dapat menjalankan delapan proses. Bandingkan dengan jika kesepuluh halaman tersebut dipanggil, maka hanya dapat dijalankan maksimum empat proses.

Jika kita meningkatkan degree of multiprogramming, yaitu dengan menjalankan proses lebih banyak, maka dapat terjadi over-allocating memory. Misalnya kita menjalankan enam proses yang masing-masing memiliki sepuluh halaman dan seluruhnya dipanggil (di-load) ke memori, maka akan dibutuhkan 60 bingkai, padahal yang tersedia hanya empat puluh bingkai. Over-allocating memory juga dapat terjadi jika terdapat page fault, yaitu pada saat sistem operasi mendapatkan halaman yang dicari pada disk kemudian membawanya ke memori fisik tetapi tidak terdapat bingkai yang kosong pada memori fisik tersebut.

Sistem operasi memiliki dua cara untuk menangani masalah ini. Yang pertama dengan men-terminasi proses yang sedang mengakses halaman tersebut. Akan tetapi, cara ini tidak dapat dilakukan karena demand paging merupakan usaha sistem operasi untuk meningkatkan utilisasi komputer dan throughput-nya.

Cara yang kedua yaitu dengan penggantian halaman (page replacement). Sistem operasi dapat memindahkan suatu proses dari memori fisik, lalu menghapus semua bingkai yang semula digunakannya, dan mengurangi level of multiprogramming (dengan mengurangi jumlah proses yang berjalan).

Prinsip kerja penggantian halaman adalah sebagai berikut. “Jika tidak ada bingkai yang kosong, maka dicari (dengan suatu algoritma ganti halaman) salah satu bingkai yang sedang tidak digunakan dan kemudian dikosongkar. Suatu bingkai dapat dikosongkan dengan memindahkan isinya ke dalam ruang pemindahan kemudian mengubah semua tabel halaman hingga mengindikasikan bahwa halaman yang dipindah tersebut sudah tidak berada di memori fisik. Lalu bingkai yang telah kosong tersebut dapat digunakan oleh halaman yang akan ditempatkan di memori fisik”.

Dengan memodifikasi urutan penanganan page fault, maka dapat dijabarkan urutan proses page replacement sebagai berikut.

  1. Mencari lokasi dari halaman yang dicari di disk.
  2. Mencari bingkai yang kosong di memori fisik:
    1. Jika ada bingkai yang kosong, maka gunakan bingkai tersebut.
    2. Jika tidak ada bingkai yang kosong, gunakan algoritma ganti halaman untuk memilih bingkai “korban”
    3. Pindahkan bingkai “korban” tersebut ke disk dan sesuaikan tabel halaman.
  3. Masukkan halaman yang berasal dari disk tersebut ke dalam bingkai yang baru dikosongkan tersebut. Sesuaikan tabel halaman.
  4. Lanjutkan proses yang telah diinterupsi.

Dari penjelasan di atas, maka dapat disimpulkan bahwa jika tidak terdapat bingkai yang kosong maka terdapat dua transfer halaman (yang keluar dan masuk memori fisik). Hal ini tentu saja menambah waktu dalam penanganan page fault dan sceara otomatis menambah effective access time.

Gambar 9.13. Membutuhkan Page Replacement

Hal tersebut dapat diselesaikan dengan menggunakan bit modifikasi (modify bit/dirty bit ). Setiap halaman atau bingkai memiliki bit modifikasi yang sesuai pada perangkat keras. Bit modifikasi untuk sebuah halaman diatur oleh perangkat keras pada saat suatu byte atau word dituliskan ke halaman tersebut, yang menunjukan bahwa halaman tersebut telah dimodifikasi. Waktu suatu halaman dipilih untuk dipindahkan dari memori fisik ke disk, diperiksa terlebih dahulu bit modifikasinya di disk. Jika bit modifikasinya ada, maka halaman tersebut harus ditulis ke disk. Namun, apabila bit modifikasinya belum ada di disk, maka halaman tersebut belum dimodifikasi karena halaman tersebut masih berada di memori utama. Oleh karena itu, jika salinan dari halaman tersebut masih terdapat di disk (belum ditimpa oleh halaman lain) maka penulisan halaman dari memori utama ke disk tidak diperlukan. Hal ini juga berlaku pada halaman read-only, yaitu halaman yang tidak dapat dimodifikasi. Sehingga waktu yang diperlukan untuk penanganan page fault dapat berkurang dengan cukup signifikan karena berkurangnya waktu M/K dari dan ke disk.

Gambar 9.14. Page Replacement


Rangkuman

Memori virtual adalah teknik yang memisahkan antara alamat memori logis dengan alamat memori fisik. Hal tersebut berguna agar pengguna (programmer) tidak perlu menentukan alamat fisik dari program yang dijalankan. Memori vitual memungkinkan beberapa proses berjalan dengan alamat memori fisik yang terbatas. Teknik permintaan halaman (demand paging) digunakan untuk mengimplementasikan konsep memori virtual. Jika halaman yang diminta tidak terdapat pada memori utama, maka akan terjadi page fault. Page fault ini dapat ditangani dengan beberapa tahapan. Dengan adanya page fault ini, maka kinerja demand paging dapat dihitung berdasarkan memory access time dan page fault time (waktu yang dibutuhkan dalam penanganan page fault). Kinerja demand paging ini biasa disebut dengan effective access time.

Pada pembuatan suatu proses baru (proses anak), maka baik proses induk maupun proses anak dapat mengakses suatu halaman yang sama tanda perlu membuat salinannya terlebih dahulu, yaitu dengan teknik copy-on-write. Jika proses anak hendak memodifikasi halaman tersebut, maka baru akan dibuatkan salinan dari halaman tersebut untuk kemudian dimodifikasi oleh proses anak. Halaman yang disalin tersebut dinamakan halaman copy-on-write .

Jika ada suatu halaman diminta/dibutuhkan oleh suatu proses dan ternyata halaman tersebut terdapat di disk, maka halaman tersebut akan dipindahkan ke memori utama. Namun, jika di memori utama tidak lagi terdapat bingkai yang kosong (free frame) untuk ditempati oleh halaman tersebut, maka akan terjadi penggantian halaman (page replacement) dengan memilih suatu bingkai pada memori dan menggantikan isinya dengan halaman tersebut. Pada pemilihan suatu bingkai ini, dibutuhkan suatu algoritma penggantian halaman.

Rujukan

Dr. Bambang Hariyanto. 2006. Sistem Operasi. Revisi Keempat. Informatika.

[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.

[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall.

[WEBbebasvlsm2006] Masyarakat Digital Gotong Royong .2006. Pengantar Sistem Operasi Komputer http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-2/index.html .

[WEBwikipedia] Article: Copy-on-write. http://en.wikipedia.org/wiki/Copy-on-write .

[WEBUniversityofToronto] Computer Science. 2007. Virtual Memory Mechanism. http://www.cs.toronto.edu/~demke/369S.07/Lectures/VirtualMemory_full.pdf.

Virtual Memory Part 2

9.3 Demand Paging

9.3.1 Deskripsi Sistem Paging

Sistem Paging mengimplentasikan ruang alamat besar pada memori kecil menggunakan index register, base register, dan segment register, dan lain-lain. Pemakai seolah mempunyai ruang memori sangat besar tanpa mengelola overlay.

Beberapa istilah pada sistem paging adalah virtual address, real address, page, page frame, page fault, MMU.

Virtual Address adalah alamat yang dihasilkan perhitungan menggunakan index register, base register, segment register, dan sebagainya. Ruang alamat yang dibentuk virtual address adalah disebut virtual address space dilambangkan dengan V. Jumlah alamat pada V disimbolkan dengan │V│. Virtual address ini yang diacu pada proses yang running.

Real Address adalah alamat di memori utama fisik. Ruang alamat yang dibentuk real address disebut real address space dilambangkan dengan R. Jumlah alamat pada R disimbolkan dengan │R│. Pada implementasi sistem memori virtual, normalnya │V│>>│R│.

Meski pengacuan proses dilakukan berdasarkan memori virtual, proses sesungguhnya berjalan di memori nyata. Virtual address harus dipetakan menjadi real address saat proses dieksekusi. Pemetaan harus dilakukan dengan sangat cepat atau kinerja komputer akan menurun drastis.

Sistem komputer akan menerjemahkan memori virtual menjadi alamat fisik. Bagian yang bertugas untuk memetakan adalah MMU.

Page adalah unit terkecil virtual address space. Ruang memori virtual proses merupakan kelipatan page yang berukuran sama.

Page frame adalah unit terkecil memori fisik. Memori fisik secara konseptual dibagi menjadi sejumlah unit berukuran tetap disebut page frame. Page frame sering disingkat frame.

Gambar 9.4. Hubungan antara ruang alamat virtual dan alamat fisik

Page fault adalah exception untuk permintaan alokasi page ke memori. Dalam konteks memori maya, page fault sering disingkat fault.

Memory Management Unit (mmu) adalah chip atau kumpulan chip yang memetakan virtual address ke real address.

  • Pada komputer tanpa memori virtual, alamat langsung diletakkan ke bus dan menyebabkan word memori fisik alamat itu dibaca atau ditulis.
  • Pada komputer dengan memori virtual, alamat tidak diletakkan ke bus secara langsung tapi lewat MMU yang kemudian memetakan virtual address ke alamat memori fisik.

Pada pemrores modern, MMU sudah menyatu di pemroses (on-chip).

Gambar 9.5. Posisi dan fungsi MMU

Memori fisik berisi sejumlah page frame yang memuat sebagian page-page proses. Terdapat mekanisme translasi (penerjemahan) alamat (dilakukan MMU) untuk memetakan page virtual ke alamat fisik. Karena masing-masing page dipetakan secara terpisah, frame-frame proses tidak perlu menempati memori fisik berurutan.

Sistem memori virtual mempunyai properti alamat-alamat kontigu (berturutan) pada ruang alamat virtual tidak harus kontigu di memori nyata. Properti ini disebut kontigu semu (artificial contiguity).

Gambar 9.6. Kontigu semu


Pemakai dibebaskan berurusan dengan letak prosedur dan data diposisikan di memori nyata. Pemrograman dapat menulis program seperti biasa, yaitu memperhatikan efisiensi algoritma dan struktur program, mengabaikan rincian struktur perangkat keras. Dengan sistem virtual, memori dapat dipandang sebagai kontigu yang berukuran besar.

Skema Pemetaan

Pada komputer dengan memori virtual, alamat tidak diletakkan ke bus secara langsung tapi dilewatkan ke MMU yang memetakan alamat virtual ke alamat memori fisik. Pemetaan dapat dirumuskan secara formal sebagai berikut:

Misalkan

Ruang alamat maya adalah V = {0,1,…,v-1}

Ruang alamat fisik adalah M = {0,1,…,m-1}

Umumnya ruang alamat virtual lebih besar dibanding alamat fisik (v > m).

MMU melakukan mekanisme translasi alamat mengasosiasikan alamat virtual ke alamat fisik. MMU merealisasikan fungsi f: V → M, yaitu:

f(x) =  {r, jika item x terdapat di memori fisik dengan lokasi di r}

{page fault jika item x tidak terdapat dalam memori fisik}

Gambar 9.7. Relasi antara alamat virtual dan alamat fisik


Misalnya instruksi:

MOV REG, 0×08

  • Alamat maya 8 dikirim ke MMU
  • MU mengetahui alamat 8 di page 0 (page 0 memuat alamat maya 0-4095)
  • Dari tabel, page 0 dipetakan ke frame 7 (page 7 adalah alamat fisik 28672-32768)
  • MMU mentransformasikan alamat 8 sebagai (28672 + 8 = 28680)
  • MMU mengeluarkan alamat 28680 ke bus

Papan memori tidak perlu mengetahui MMU, hanya bertanggung jawab untuk memenuhi permintaan membaca atau menulis alamat 28680.

9.3.2 Pengertian Demand Paging

Demand Paging atau permintaan pemberian halaman adalah salah satu implementasi dari memori virtual yang paling umum digunakan. Sistem Demand Paging pada prinsipnya hampir sama dengan sistem permintaan halaman yang menggunakan swapping, hanya saja pada sistem demand paging, halaman tidak akan dibawa ke dalam memori fisik sampai ia benar-benar diperlukan. Oleh sebab itu dibutuhkan bantuan perangkat keras untuk mengetahui lokasi dari halaman saat ia diperlukan. Daripada melakukan swapping, keseluruhan proses ke dalam memori utama, digunakanlah yang disebut lazy swapper yaitu tidak pernah menukar sebuah halaman ke dalam memori utama kecuali halaman tersebut diperlukan. Keuntungan yang diperoleh dengan menggunakan demand paging sama dengan keuntungan pada memori virtual di atas.

Gambar 9.8. Proses swapping program ke dalam memori

Saat melakukan pengecekan pada halaman yang dibutuhkan oleh suatu proses, terdapat tiga kemungkinan kasus yang dapat terjadi, yaitu:

  • Halaman ada dan sudah langsung berada di memori utama – statusnya adalah valid (“v” atau “1″)
  • Halaman ada tetapi belum berada di memori utama atau dengan kata lain halaman masih berada di disk sekunder – statusnya adalah tidak valid/invalid (“i” atau “0″)
  • Halaman benar – benar tidak ada, baik di memori utama maupun di disk sekunder (invalid reference) – statusnya adalah tidak valid/invalid (“i” atau “0″)

Ketika kasus kedua dan ketiga terjadi, maka proses dinyatakan mengalami kesalahan halaman (page fault). Selanjutnya proses tersebut akan dijebak ke dalam sistem operasi oleh perangkat keras.

9.3.3 Skema Bit Valid – Tidak Valid

Dalam menentukan halaman mana yang ada di dalam memori utama dan halaman mana yang tidak ada di dalam memori utama, diperlukan suatu konsep, yaitu skema bit valid – tidak valid. Kondisi valid berarti bahwa halaman yang dibutuhkan itu legal dan berada di dalam memori utama (kasus pertama). Sementara tidak valid/invalid adalah kondisi dimana halaman tidak ada di memori utama namun ada di disk sekunder (kasus kedua) atau halaman memang benar-benar tidak ada baik di memori utama maupun disk sekunder (kasus ketiga).

Pengaturan bit dilakukan sebagai berikut:

  • Bit = 1 berarti halaman berada di memori utama
  • Bit = 0 berarti halaman tidak berada di memori utama

Apabila ternyata hasil dari mengartikan alamat melalui page table menghasilkan bit halaman yang bernilai 0, maka akan menyebabkan terjadinya page fault .

Page fault adalah interupsi yang terjadi ketika halaman yang diminta/dibutuhkan oleh suatu proses tidak berada di memori utama. Proses yang sedang berjalan akan mengakses page table (tabel halaman) untuk mendapatkan referensi halaman yang diinginkan. Page fault dapat diketahui/dideteksi dari penggunaan skema bit valid-tidak valid ini. Bagian inilah yang menandakan terjadinya suatu permintaan pemberian halaman .

Jika suatu proses mencoba untuk mengakses suatu halaman dengan bit yang di-set tidak valid maka page fault akan terjadi. Proses akan dihentikan sementara halaman yang diminta/dibutuhkan dicari didalam disk.

Gambar 9.9. Tabel Halaman dengan Skema Bit Valid – Tidak valid


9.3.4 Penanganan Page Fault

Prosedur untuk menangani page fault adalah sebagai berikut:

  • CPU mengambil (load) instruksi dari memori untuk dijalankan. Pengambilan instruksi dilakukan dari halaman pada memori dengan mengakses tabel halaman. Ternyata pada tabel halaman bit ter-set tidak valid atau invalid (i).
  • Interupsi page fault terjadi sehingga interupsi tersebut menyebabkan perangkat keras melakukan trap yaitu menjebak proses tersebut ke dalam sistem operasi.
  • Jika referensi alamat yang diberikan ke sistem operasi ilegal atau dengan kata lain halaman yang ingin diakses tidak ada (tidak berada di disk), maka proses akan dihentikan. Namun jika referensi alamatnya adalah legal maka halaman yang diinginkan akan diambil dari disk.
  • Halaman yang diinginkan akan dibawa dari disk ke memori utama (memori fisik).
  • Tabel halaman akan diatur ulang lagi sesuai dengan kondisi yang baru. Jika tidak terdapat ruang kosong (free frame) di memori utama (fisik) untuk menaruh halaman yang baru maka dilakukan penggantian halaman dengan memilih salah satu halaman pada memori utama untuk digantikan dengan halaman yang baru tersebut. Penggantian halaman dilakukan dengan menggunakan algoritma tertentu. Jika halaman yang digantikan tersebut sudah dimodifikasi oleh proses maka halaman tersebut harus ditulis kembali ke disk.
  • Setelah halaman yang diinginkan sudah dibawa ke memori utama (fisik) maka proses dapat diulang kembali. Dengan demikian proses sudah bisa mengakses halaman karena halaman telah diletakkan ke memori utama (fisik).

Perlu diingat bahwa status (register, condition code, counter insruksi) dari proses yang diinterupsi ketika terjadi page fault akan disimpan sehingga proses dapat diulang kembali di tempat dan status yang sama, kecuali jika halaman yang diinginkan sekarang telah berada di memori dan dapat diakses.

Pada berbagai kasus yang terjadi, ada tiga komponen yang akan dihadapi pada saat melayani page fault:

  • Melayani interupsi page fault
  • Membaca halaman
  • Mengulang kembali proses

Gambar 9.10. Langkah-Langkah dalam Menangani Page Fault


9.3.5 Kinerja

Dalam proses demand paging, jika terjadi page fault maka diperlukan waktu yang lebih lambat untuk mengakses memori daripada jika tidak terjadi page fault. Hal ini dikarenakan perlu adanya penanganan page fault itu sendiri. Kinerja demand paging ini dapat dihitung dengan menggunakan effective access time yang dirumuskan sebagai berikut:

effective access time = (1 – p) x ma + p x page fault time

ma adalah memory access time, yang pada umumnya berkisar antara 10 hingga 200 nanosecond. p adalah probabilitas terjadinya page fault, yang berkisar antara 0 hingga 1. Jika p sama dengan 0 yang berarti bahwa tidak pernah terjadi page fault, maka effective access time akan sama dengan memory access time, dan itulah yang diharapkan. Sedangkan jika p sama dengan 1, yang berarti bahwa semua halaman mengalami page fault, maka effective access time-nya akan semaikin meningkat.

Untuk mendapatkan effective access time, kita harus mengetahui waktu yang diperlukan untuk menangani page fault. Komponen-komponen dalam penanganan page fault terdiri dari tiga kelompok besar, yaitu melayani interupsi dari page fault, membaca halaman, dan mengulang kembali proses.

Penggunaan effective access time dapat ditunjukkan dalam contoh berikut.

Contoh 9.1. Contoh penggunaan effective address

Diketahui waktu pengaksesan memori (ma) sebesar 100 ns. Waktu page fault sebesar 20 ms. Maka effective access time = (1 – p) x ma + p x page fault time = (1 – p) x 100 + p x 20000000 = 100 – 100p + 20000000p = 100 + 19.999.900p nanosecond

Pada demand paging, diusahakan agar kemungkinan terjadinya page fault rendah, karena bila effective access time-nya meningkat, maka proses akan berjalan lebih lambat.

9.3.6 EAT Demand Paging

Waktu akses memory = 200 nanosecond

Rata-rata waktu page-fault service time = 8 milliseconds

1 ms=106 ns

EAT = ((1 – p) x 200) + (p x (8 milliseconds))

= ((1 – p)  x 200) + (p x 8,000,000)

= 200 + (p x 7,999,800)

Jika 1 dari 1.000 kali akses terjadi fault, maka EAT = 8.2 microseconds.

EAT bertambah menjadi 40 kali lipat dari waktu akses memory

Jika ingin EAT tidak lebih dari 220ns (waktu akses memori bertambah 10 %) maka :

220 > 200+7.999.800 x p

20 > 7.999.800 x p

p < 0,0000025, artinya p harus lebih kecil dari kejadian page-fault sekali dalam 400.000 kali akses

Tiga komponen waktu utama saat terjadi page fault:

-  service page fault interrupt (1-100 microseconds)

-  baca page/page switch time (8 millisecond)

  • Rata-rata latency: 3 ms, seek: 5 ms, transfer: 0.05 ms

-  restart proses (1-100 microseconds)

Rujukan

Dr. Bambang Hariyanto. 2006. Sistem Operasi. Revisi Keempat. Informatika.

[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley & Sons.

[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design and Implementation. Second Edition. Prentice-Hall.

[WEBbebasvlsm2006] Masyarakat Digital Gotong Royong .2006. Pengantar Sistem Operasi Komputer http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-2/index.html .

[WEBUniversitasMalikulsaleh] Gabungan Kelompok Kerja 21–28 IKI-20230 Semester Genap. 2003. Sistem Operasi. http://ikc.unimal.ac.id/umum/ibam/ibam-os-html/x3883.html .

[WEBUIOCW] Heri Kurniawan. 2006. Sistem Operasi. http://ocw.ui.ac.id/IKI20230_:_Sistem_Operasi_(Lecture_Notes) .

[WEBUniversityofMassachusetts] Emery Beger. 2006. Demand Paging. http://www.cs.umass.edu/~emery/cmpsci377/lectures/cmpsci377-13.ppt .

[WEBUppsalaUniversitet] Léon Mugwaneza. 2008. Demand Paging & Page Replacement. http://www.it.uu.se/edu/course/homepage/os/vt08 .

[WEBStanfordUniversity] John Ousterhout. 2010. Demand Paging & Thrashing. http://www.stanford.edu/class/cs140/cgi-bin/lecture.php?topic=paging .

[WEBEducationGrid] Satish Babu, dkk. 2007. Demand Paged Virtual Memory. http://www.edugrid.ac.in/webfolder/OpSystems/8_VirtualMem/Uni_Washington/Demand%20Paged%20Virtual%20Memory.pdf.

[WEBUCBerkeley] Prof. John Kubiatowicz. 2009. Caching & Demand Paging. http://www.cs.berkeley.edu/~kubitron/courses/cs162-F09/Lectures/lec14-demandpage.ppt .

[WEBUSCUPSTATE] Prof. John Kubiatowicz. 2009. Caching & Demand Paging. http://faculty.uscupstate.edu/fli/spr06/scsc511/Slides/14.ppt .

[WEBUCSECSE] Alex C. Snoeren. 2010. Principle of Operating System:Demand Paging. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.9714&rep=rep1&type=pdf .

Improve the web with Nofollow Reciprocity.

Switch to our mobile site