Minggu, 08 Juli 2012

BAB 10.4 Extrapolating data to cover network lags "Ekstrapolasi data untuk menutupi kelambanan jaringan"


Figure 10.4. Extrapolating data to cover network lags. 

As a result, we can trust this polynomial to accurately represent the future behavior of the position (assuming we don't get too far from T2 in time).
So, every time a new position update arrives, we must discard the oldest update and rebuild the interpolation polynomials. Thus, we will use the interpolator to evaluate the position of the networked player until we receive a new update, and so on. If lag grows, we might perceive a "jump" in position when a new sampling point arrives (because we are moving from a very distant predicted position to a very close one). However, in real-world, moderate-lag scenarios, the preceding technique should help to significantly smooth out a player's trajectories.

Hierarchical Messaging
Imagine a game where lots of network packets are continually being sent between players. Not all players have the same level of connection. Some players are playing on high-speed DSL or cable, whereas others are still using an analog modem. As traffic intensity increases, the modem user will begin feeling an information overload, and his playing experience will degrade. Hierarchical messaging is a technique

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (2 of 6)2/9/2009 5:57:34 PM

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html

designed to ensure that everyone gets the best information on a heterogeneous configuration.
 At the core of the method lies the notion that messages have different importance levels. For example, an enemy position update is more relevant than the configuration of his arms with regard to the animation system. Messages should be classified and assigned relevance levels. Then, as a new player enters the game, a network test should provide us with information on the user's expected bandwidth-how much data he can exchange per second. Then, we will decide which messages are sent to him depending on that bandwidth to ensure he gets the most important messages, but maybe loses some secondary information.
Take, for example, a first-person shooter. Messages could be (in descending order of relevance):
Position updates
*Shooting
*Weapon changes
*Mesh configuration/animation
Each "level" of transmission must be quantified in bytes per second, and then the right set of messages will be determined. Thus, in a first-person-shooter, maybe one player is just seeing positions and ignoring the rest of the information. But because he has the most relevant information, the game is still playable on a low-end machine.

 
Spatial Subdivision
Spatial subdivision is designed specifically for massively multiplayer games. It uses spatial indexing to ensure that only relevant packets are transmitted and, by doing so, it can decrease the overall traffic by orders of magnitude.
Imagine a squad-based game, where a player can join teams of up to four players in a quest-something like Diablo, for example. Obviously, we will need to send the position updates quite frequently, because the game is pretty high-paced. This is not much of a problem, because we are only dealing with four players.
However, try to imagine what goes on inside a game such as Everquest-thousands of players roaming a huge game world, many of them located at days of distance (in gameplay terms) from other gamers. Under these circumstances, does it really make sense to update everyone about our current state? We might be consuming the bandwidth of a gamer at the other end of the game world with useless information.
Now, imagine that players are stored in a spatial index data structure, usually held on the game servers managed by the publisher. Every time we want to broadcast new data regarding a player, we start by querying the spatial index about which players are located within a certain distance from the first one.
Then, we only send the data to those players, saving lots of bandwidth. Let's stop and review an example. Think of an Everquest type of game with 100,000 players in a game world that is 100x100 kilometers cross. The first alternative is to use standard broadcasts, where each packet is sent to everyone. Using very simple math, you will see that this requires sending 100,0002 packets of information if we want to update
all players. Now, imagine that we divide the game world into a grid 100x100 meters. Each grid section contains the players specific to that grid. Assuming that their distribution is homogeneous, we would have 10 players per grid cell. Now, let's assume we only send the update to those players located in the current cell or in
any of the nine neighboring cells. That means an update must be sent to 100 players (10 cells, 10 players per cell). Thus, the grand total of packets required to update everyone is just 10,000,000, which is 1,000

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (3 of 6)2/9/2009 5:57:34 PM

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html

times less than if we did not use spatial subdivision. The only hidden cost is the data structure, but we can definitely afford that for a game server, which usually comes with lots of RAM.


Send State Changes Only
If you are willing to accept some restrictions, you can greatly reduce your game's bandwidth by sending only state change information, not the actual in-game data stream. To understand how this method works and which restrictions we need to apply, think of a game like Diablo or Dungeon Siege, where two peers connected in a network are playing in cooperative multiplayer fashion. They explore the game world and solve quests. There are lots of monsters (each with its own logic routines) onscreen and lots of items to choose.
In a game like this, you can choose between two networked approaches. Using one approach, you can run the game logic engine on only one of the two machines and propagate results to the other machine, which would receive all game logic information through the network and use it to drive the presentation layer. The
second PC would thus only have the graphics engine and not much else, becoming a "game terminal." But the problem is ensuring that the network will be able to pump the data at the right speed, so the other player sees exactly the same game world, and the experience is seamless. This can be achieved on a local area network (LAN), but the Internet is a whole different business. Thus, we need an alternative. Basically, we keep two world simulators working in sync on both PCs. Both simulators must be 100 percent deterministic for this to work, meaning they must not depend on any
outside events or random numbers. Only by ensuring this can we stop sending all game world update messages (monster positions, and so on) and focus on transmitting just player positions. This is a very popular approach, which requires checking for world syncing every now and then to make sure both game worlds don't diverge and end up being two completely different representations of the same level.
If you are following such an approach, we can move one step further, changing the explicit information in our messages by using state change messages. Currently, you are sending a player position update for
every logic tick, which is a waste of bandwidth. If the player is on a deterministic system (obviously, with the chaos inherent to gamer interaction), we can send only state changes and save much of this bandwidth. Instead of saying "the player is here" all the time, you only need to send "the player pressed the advance key" when a state change condition takes place. Do not forget that our player is, at the core, a
finite-state machine. The player will continue performing the same action (such as walking or fighting) for many clock cycles. Sending only the state change lets you forget about all this continuous messaging, making your bandwidth requirements drop sharply. Just remember the restrictions imposed by this method: Both game worlds must be kept in sync. This will
force some changes in your code, like the random number processing, for example. You can still have random numbers as long as both PCs have the same ones. Generating the same sequence in both PCs might seem like a crazy idea, but it's one of the essential tasks to ensure proper synchronization. To keep both random number generators in sync, all you have to do is have a random number table precomputed in
memory (the same one for both machines, obviously) and use it instead of actually computing numbers. This change will have the desirable side effect of a significant performance gain, because random number generators are traditionally very slow, and tabulating them is a classic optimization trick as well.

Working with Server Clusters
No serious MMG can be managed with a single server. As player count increases, we reach a point when we need to move to a cluster, so more users can be accommodated. This opens the door to a whole new area of programming, which deals with how to lay out the players on the servers, how to communicate with
them efficiently, and so on. This is a relatively new science, but some interesting methods have already

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (4 of 6)2/9/2009 5:57:34 PM

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html

arisen. I will now comment on those, explaining the methods behind some popular solutions. To begin with, multiple servers are used to reduce the number of players that each server must handle. This might seem obvious, but most problems come from not understanding this key fact. We need each server to handle less players. So, we need:
* Less players connected directly to the server
*Tests for one player inside one server to be resolved in the same server

The second item in the list is the key fact. Imagine that we have 100 users, and we split them randomly into two groups of 50. Because we split them randomly, chances are that checking the collision of a player will require us to look at other players on his server, and on the other server as well, totally killing performance. We will still need to check with all the players in the game world. The solution, obviously, is to map our spatial subdivision engine to the server level. Each server will handle players located in a continuous part of the game world, thus ensuring that most tests can be solved locally.
For example, we can divide the game world in half. Then, when we need to send a player update to the rest of the players, we test which other players are close to the original player. This is performed by the game server, hopefully on a local basis. All players needing the update will lie on the same machine as the original player. Once we have the list of those players that actually need to know that the original player
has moved, we send the message to them only. Notice how we have improved performance in two ways. At the server level, only half of the gamers were tested. The rest of them lie on another server and did not even notice the player in the example moved. We optimized network bandwidth as well, sending the update only to those players within a certain range of the player. Now, let's generalize this to N servers in a large game world. We can divide the scenario in a gridlike fashion and assign grid quadrants to individual servers, so all players within that region are handled
internally, and CPU and bandwidth are kept to a minimum. If the developer wants to add new regions to the game world, all we need to do is add extra servers to the cluster. Obviously, this approach will mostly have server-user traffic, but server-server communications will be important as well. How do we notify a server that a player has crossed the grid boundaries and must thus be relocated to the neighboring grid
cell? To help visualize this, think in terms of vertical (server-user) and horizontal (server-server) messages. Vertical messages will be most frequent, whereas horizontal messages will carry control information and be less frequent.

Dynamic Servers and the Braveheart Syndrome
Sometimes the clustered approach explained in the preceding section will fail to do its work. Basically, we have divided the game world spatially, assuming that means a homogeneous player division as well. Each cell region has approximately the same number of players. But what happens if a large number of gamers are, at a point in time, located in the same grid cell? Imagine a "hotspot" region to which many players
converge for some game-related reason. Obviously, that server will sustain more workload than the rest. Imagine the "launchpad" area, where most gamers in a MMG appear when they first enter a game. It's an overpopulated area, which will make our servers stall. The first option would be to study these cases carefully and further divide the game world, much like in a quadtree, around these regions. But this implies that these hotspot regions are fixed, which doesn't really have to be the case. Imagine that one day there's an extra quest proposed by the game developers, and that quest increases traffic in a certain portion of the game world. How can we ensure that the gaming experience will not degrade that day? And how can we get things back to normal after the activity is over, and the traffic level is reduced? This is often referred to as the Braveheart syndrome: how to prevent a situation in which lots of gamers move to a small portion of the map and then leave it, much like in a battle
 
http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (5 of 6)2/9/2009 5:57:34 PM

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html


TRANSLETE :

Gambar 10.4. Ekstrapolasi data untuk menutupi kelambanan jaringan.

Akibatnya, kita dapat percaya polinomial ini untuk secara akurat mewakili perilaku masa depan posisi
(Dengan asumsi kita tidak terlalu jauh dari T2 dalam waktu). Jadi, setiap kali update posisi baru tiba, kita harus membuang update tertua dan membangun kembali interpolasi polinomial. Dengan demikian, kita akan menggunakan interpolator untuk mengevaluasi posisi jaringan pemain sampai kita menerima update baru, dan sebagainya. Jika lag tumbuh, kita mungkin melihat sebuah "lompatan" dalam posisi ketika titik pengambilan sampel baru tiba (karena kita bergerak dari posisi diprediksi sangat jauh dengan yang sangat dekat satu). Namun, dalam dunia nyata, sedang-lag skenario, teknik sebelumnya harus membantu secara signifikan kelancaran keluar lintasan pemain.

Hirarkis Pesan
Bayangkan sebuah permainan di mana banyak paket jaringan yang terus-menerus dikirim antara pemain. Tidak semua pemain memiliki tingkat yang sama dari koneksi. Beberapa pemain yang bermain di kecepatan tinggi DSL atau kabel, sedangkan yang lain masih menggunakan modem analog. Seiring dengan peningkatan intensitas lalu lintas, pengguna modem akan mulai merasakan suatu informasi yang berlebihan, dan pengalamannya bermain akan menurunkan. Hirarkis pesan adalah teknik

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (2 dari 6) 2009/02/09 17:57:34
http://www.tar.hu/gamealgorithms/ch10lev1sec9.html

dirancang untuk memastikan bahwa setiap orang mendapatkan informasi terbaik pada konfigurasi heterogen.
Pada inti dari metode ini adalah pandangan bahwa pesan memiliki tingkat kepentingan yang berbeda. Sebagai contoh, sebuah musuh pembaruan posisi lebih relevan daripada konfigurasi lengan berkaitan dengan animasi sistem. Pesan harus diklasifikasikan dan ditugaskan tingkat relevansi. Kemudian, sebagai pemain baru memasuki permainan, tes jaringan harus memberikan kami informasi tentang diharapkan pengguna bandwidth berapa banyak data ia dapat bertukar per detik. Kemudian, kami akan memutuskan mana pesan akan dikirim kepadanya tergantung pada bandwidth untuk memastikan ia mendapatkan pesan yang paling penting, tapi mungkin kehilangan beberapa informasi sekunder. Ambil, misalnya, pertama-orang jujur. Pesan bisa (dalam urutan relevansi):
*Posisi update
* Menembak
*Senjata perubahan
*Mesh konfigurasi / animasi

Setiap "tingkat" dari transmisi harus diukur dalam byte per detik, dan kemudian hak mengatur pesan akan
ditentukan. Jadi, dalam penembak orang pertama, mungkin satu pemain hanya melihat posisi dan mengabaikan
sisa informasi. Tapi karena ia memiliki informasi yang paling relevan, permainan ini masih dimainkan pada
low-end mesin.

Subbagian Tata Ruang
Subdivisi spasial dirancang khusus untuk game massively multiplayer. Menggunakan indeks spasial untuk
memastikan bahwa paket yang relevan hanya ditransmisikan dan, dengan demikian, dapat mengurangi lalu lintas secara keseluruhan dengan lipat. Bayangkan sebuah permainan skuad berbasis, dimana pemain dapat bergabung dengan tim hingga empat pemain dalam pencarian sesuatu- seperti Diablo, misalnya. Jelas, kita perlu mengirim update posisi cukup sering, karena permainan yang cukup tinggi yang serba. Hal ini tidak banyak masalah, karena kita hanya berurusan dengan empat pemain. Namun, cobalah untuk membayangkan apa yang terjadi di dalam permainan seperti EverQuest-ribuan pemain jelajah sebuah dunia permainan besar, banyak dari mereka yang terletak di hari jarak (dalam hal gameplay) dari gamer lainnya. Bawah keadaan ini, apakah itu masuk akal untuk memperbarui semua orang tentang negara kita saat ini? Kita mungkin mengkonsumsi bandwidth gamer di ujung lain dari dunia permainan dengan informasi berguna. Sekarang, bayangkan bahwa pemain disimpan dalam struktur data indeks spasial, biasanya diadakan pada server game
dikelola oleh penerbit. Setiap kali kita ingin menyiarkan data baru tentang pemain, kita mulai dengan
query indeks spasial tentang mana pemain berada dalam jarak tertentu dari yang pertama. Kemudian, kita hanya mengirim data ke para pemain, menghemat banyak bandwidth. Mari kita berhenti dan meninjau contoh. Pikirkan tipe Everquest permainan dengan 100.000 pemain dalam dunia permainan yang 100x100 kilometer di seluruh. Alternatif pertama adalah dengan menggunakan siaran standar, di mana setiap paket dikirim ke semua orang. Menggunakan sangat matematika sederhana, Anda akan melihat bahwa ini membutuhkan mengirim 100,0002 paket informasi jika kita ingin memperbarui semua pemain. Sekarang, bayangkan bahwa kita membagi dunia permainan menjadi 100x100 meter grid. Setiap bagian kotak berisi
khusus untuk grid yang pemain. Dengan asumsi bahwa distribusi mereka adalah homogen, kita akan memiliki 10 pemain per sel grid. Sekarang, mari kita asumsikan kita hanya mengirim update ke para pemain berada dalam sel saat ini atau di salah satu dari sembilan sel tetangga. Itu berarti pembaruan harus dikirim ke 100 pemain (10 sel, 10 pemain per sel). Dengan demikian, grand total paket yang dibutuhkan untuk memperbarui semua orang hanya 10.000.000, yang adalah 1.000

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (3 dari 6) 2009/02/09 17:57:34
http://www.tar.hu/gamealgorithms/ch10lev1sec9.html

kurang dari jika kita tidak menggunakan subdivisi spasial kali. Satu-satunya biaya tersembunyi adalah struktur data, tetapi kita bisa pasti mampu yang untuk server permainan, yang biasanya datang dengan banyak RAM.

Hanya Kirim Perubahan Negara
Jika Anda bersedia untuk menerima beberapa pembatasan, Anda dapat sangat mengurangi bandwidth permainan Anda dengan mengirimkan hanya negara perubahan informasi, bukan yang sebenarnya dalam game aliran data. Untuk memahami bagaimana metode ini bekerja dan yang pembatasan kita perlu menerapkan, memikirkan permainan seperti Diablo atau Dungeon Siege, di mana dua rekan terhubung dalam jaringan bermain dalam mode multiplayer kooperatif. Mereka menjelajahi dunia permainan dan memecahkan quests. Ada banyak monster (masing-masing dengan rutinitas sendiri logika) pada layar dan banyak item untuk pilih. Dalam sebuah permainan seperti ini, Anda dapat memilih antara dua pendekatan jaringan. Menggunakan satu pendekatan, Anda dapat menjalankan logika permainan mesin hanya pada satu dari dua mesin dan menyebarkan hasil ke mesin lain, yang akan menerima semua informasi logika game melalui jaringan dan menggunakannya untuk mendorong lapisan presentasi. Itu PC kedua demikian akan hanya memiliki mesin grafis dan tidak banyak lagi, menjadi "terminal game." Tapi masalahnya adalah memastikan bahwa jaringan akan mampu memompa data pada kecepatan yang tepat, sehingga yang lain pemain melihat persis dunia permainan yang sama, dan pengalaman yang mulus. Hal ini dapat dicapai pada lokal area jaringan (LAN), tetapi Internet adalah bisnis yang berbeda. Jadi, kita perlu alternatif. Pada dasarnya, kami terus simulator dua dunia bekerja di sync di kedua PC. Kedua simulator harus 100 persen deterministik untuk bekerja, yang berarti mereka tidak harus bergantung pada setiap luar peristiwa atau angka acak. Hanya dengan memastikan ini kita bisa menghentikan pengiriman semua pembaruan permainan dunia
pesan (posisi rakasa, dan sebagainya) dan fokus pada transmisi hanya posisi pemain. Ini adalah sangat
pendekatan populer, yang membutuhkan memeriksa dunia sinkronisasi setiap sekarang dan kemudian untuk memastikan kedua permainan dunia dengan tidak menyimpang dan berakhir menjadi dua representasi yang sama sekali berbeda dari tingkat yang sama. Jika Anda mengikuti pendekatan semacam itu, kita bisa bergerak satu langkah lebih jauh, mengubah informasi eksplisit dalam kami pesan dengan menggunakan pesan negara perubahan. Saat ini, Anda mengirim update pemain untuk posisi setiap tick logika, yang merupakan pemborosan bandwidth. Jika pemain berada pada sistem deterministik (jelas, dengan kekacauan yang melekat pada interaksi gamer), kita dapat mengirim hanya perubahan negara dan menyimpan banyak dari ini bandwidth. Daripada mengatakan "pemain ada di sini" sepanjang waktu, Anda hanya perlu mengirim "pemain ditekan kunci muka "ketika kondisi perubahan keadaan berlangsung Jangan. lupa bahwa pemain kita adalah, pada intinya, sebuah terbatas-mesin negara. Pemain akan terus melakukan tindakan yang sama (seperti berjalan atau berjuang) untuk banyak jam siklus. Mengirim hanya perubahan keadaan memungkinkan Anda lupa tentang semua ini pesan terus menerus, membuat kebutuhan bandwidth Anda drop tajam. Hanya ingat pembatasan yang diberlakukan dengan metode ini: Kedua dunia permainan harus disimpan di sync. Ini akan memaksa beberapa perubahan dalam kode Anda, seperti proses nomor acak, misalnya. Anda masih dapat memiliki angka acak sepanjang kedua PC memiliki yang sama. Menghasilkan urutan yang sama di kedua PC mungkin tampak seperti ide gila, tapi itu salah satu tugas penting untuk menjamin sinkronisasi yang tepat. Untuk menjaga kedua nomor acak generator sinkron, yang harus Anda lakukan adalah memiliki tabel nomor acak precomputed di memori (yang sama untuk kedua mesin, jelas) dan menggunakannya bukan angka sebenarnya komputasi. Perubahan ini akan memiliki efek samping yang diinginkan dari keuntungan kinerja yang signifikan, karena nomor acak generator secara tradisional sangat lambat, dan tabulasi mereka adalah trik optimasi klasik juga.

Bekerja dengan Cluster Server
Tidak ada MMG serius dapat dikelola dengan server tunggal. Seiring dengan peningkatan jumlah pemain, kita mencapai suatu titik ketika kita perlu untuk pindah ke cluster, sehingga lebih banyak pengguna dapat diakomodasi. Ini membuka pintu untuk area baru pemrograman, yang berkaitan dengan bagaimana lay out pemain di server, bagaimana berkomunikasi dengan secara efisien, dan sebagainya. Ini adalah ilmu yang relatif baru, tetapi beberapa metode menarik sudah

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (4 dari 6) 2009/02/09 17:57:34
http://www.tar.hu/gamealgorithms/ch10lev1sec9.html
muncul. Sekarang saya akan mengomentari mereka, menjelaskan metode balik beberapa solusi populer.

Untuk mulai dengan, beberapa server digunakan untuk mengurangi jumlah pemain bahwa setiap server harus menangani. Hal ini mungkin tampak jelas, tetapi masalah yang paling berasal dari tidak memahami fakta kunci. Kami saling membutuhkan
server untuk menangani pemain kurang. Jadi, kita perlu:
* Kurang pemain terhubung langsung ke server
* Pengujian untuk satu pemain dalam satu server yang harus diselesaikan di server yang sama

Item kedua dalam daftar adalah fakta kunci. Bayangkan bahwa kita memiliki 100 pengguna, dan kami membaginya secara acak menjadi dua kelompok dari 50. Karena kita membaginya secara acak, kemungkinan bahwa memeriksa tabrakan pemain akan membutuhkan kita untuk melihat pemain lain di server, dan pada server lain juga, benar-benar membunuh kinerja. Kami masih perlu memeriksa dengan semua pemain di dunia game. Solusinya, jelas, adalah untuk memetakan mesin subdivisi spasial kita ke tingkat server. Setiap server akan menangani pemain terletak di bagian kontinu dari permainan dunia, sehingga memastikan bahwa tes yang paling dapat diselesaikan secara lokal. Sebagai contoh, kita dapat membagi dunia permainan dua. Kemudian, ketika kita perlu mengirim pemain update ke yang lain para pemain, kita menguji mana pemain lainnya yang dekat dengan pemain asli. Ini dilakukan oleh permainan
server, mudah-mudahan secara lokal. Semua pemain membutuhkan update akan terletak pada mesin yang sama sebagai asli pemain. Setelah kita memiliki daftar para pemain yang benar-benar perlu tahu bahwa pemain asli telah pindah, kami mengirim pesan ke mereka saja. Perhatikan bagaimana kita harus meningkatkan kinerja dalam dua cara. Di tingkat server, hanya setengah dari gamer diuji. Sisa dari mereka berbaring di server lain dan tidak bahkan melihat pemain dalam contoh dipindahkan. Kami dioptimalkan bandwidth jaringan juga, mengirim pembaruan hanya untuk para pemain dalam kisaran tertentu dari pemain.
Sekarang, mari kita generalisasi ini ke server N dalam dunia permainan besar. Kita dapat membagi skenario dalam gridlike fashion dan menetapkan kuadran grid untuk setiap server, sehingga semua pemain di kawasan yang ditangani internal, dan CPU dan bandwidth dijaga agar tetap minimum. Jika pengembang ingin menambahkan daerah baru untuk dunia permainan, semua yang perlu kita lakukan adalah menambahkan server tambahan untuk cluster. Jelas, pendekatan ini sebagian besar akan memiliki server pengguna lalu lintas, tapi server-server komunikasi akan menjadi penting juga. Bagaimana kita memberitahukan server yang seorang pemain telah melintasi batas-batas grid dan dengan demikian harus direlokasi ke jaringan tetangga
sel? Untuk membantu memvisualisasikan ini, berpikir dalam kerangka vertikal (server-pengguna) dan horizontal (server-server) pesan. Pesan Vertikal akan paling sering, sedangkan pesan horizontal akan membawa informasi kontrol dan menjadi kurang sering.

Dinamis Server dan Sindrom Braveheart

Kadang-kadang pendekatan berkerumun dijelaskan pada bagian sebelumnya akan gagal untuk melakukan tugasnya. Pada dasarnya, kami telah membagi dunia permainan spasial, dengan asumsi bahwa berarti sebuah divisi pemain homogen juga. Setiap wilayah sel memiliki sekitar jumlah yang sama pemain. Tapi apa yang terjadi jika sejumlah besar gamer adalah, pada suatu titik waktu, yang terletak di sel grid yang sama? Bayangkan sebuah "hotspot" Daerah yang banyak pemain bertemu untuk beberapa alasan permainan yang terkait. Jelas, server yang akan mendukung beban kerja lebih dari sisanya. Bayangkan "launchpad" daerah, di mana gamer paling dalam MMG muncul ketika mereka pertama kali masuk permainan. Ini adalah
kelebihan penduduk daerah, yang akan membuat kios server kami. Opsi pertama adalah dengan mempelajari kasus ini dengan seksama dan selanjutnya membagi dunia permainan, seperti dalam Quadtree, sekitar daerah ini. Tapi ini berarti bahwa wilayah hotspot adalah tetap, yang tidak benar-benar harus terjadi. Bayangkan bahwa suatu hari ada suatu pencarian tambahan yang diusulkan oleh para pengembang game, dan pencarian yang meningkatkan lalu lintas di suatu bagian tertentu dari dunia permainan. Bagaimana kita bisa memastikan bahwa game pengalaman tidak akan menurunkan hari itu? Dan bagaimana kita bisa mendapatkan sesuatu kembali normal setelah kegiatan berakhir, dan tingkat lalu lintas berkurang? Hal ini sering disebut sebagai sindrom Braveheart: bagaimana mencegah situasi di mana banyak gamer pindah ke sebagian kecil dari peta dan kemudian meninggalkannya, seperti di banyak pertempuran

http://www.tar.hu/gamealgorithms/ch10lev1sec9.html (5 dari 6) 2009/02/09 17:57:34
http://www.tar.hu/gamealgorithms/ch10lev1sec9.html



"Translete buku Core Algorithm In Game Technology BAB 10.4 " 

Pengamatan pada Game : The Sims

The Sims adalah permainan komputer simulasi strategik yang dibuat oleh desainer permainan Will Wright, dipublikasi oleh Maxis, dan didistribusikan oleh Electronic Arts. Permainan ini adalah simulasi aktivitas sehari-hari dalam rumahtangga. Pada tanggal 4 Februari 2000, permainan ini telah terjual sebanyak 16 juta kopi yang membuatnya sebagai permainan komputer dengan penjualan terbesar dalam sejarah. The Sims berfokus pada kehidupan orang virtual yang disebut sebagai Sims. Pemain dapat mengontrol aktivitas keseharian Sims, seperti menyuruhnya tidur, makan, membaca, atau mandi. Will Wright, desainer game ini, menyebut The Sims sebagai permainan rumah-rumahan digital ("digital dollhouse"). selain itu kita juga dapat membuat orang dengankarakter masing masing. The Sims adalah salah satu game yang paling banyak memiliki pak ekspansi. Hingga saat ini, ada 7 pak ekspansi yang telah diproduksi untuk The Sims (diurutkan berdasarkan tanggal rilis): * The Sims: Livin' Large Tanggal rilis: 31 Agustus 2000 (Amerika Utara) The Sims: Livin' Large (dikenal pula sebagai The Sims: Livin' It Up di Britania Raya, Irlandia and Finlandia) adalah pak ekspansi pertama yang dirilis untuk The Sims. Pak ini memberikan tambahan karakter, karir, barang-barang, dan fitur baru.
*The Sims: House Party Tanggal rilis: 21 April 2001 (Amerika Utara) The Sims: House Party adalah pak ekspansi kedua untuk game The Sims. House Party memberikan tambahan fitur untuk mengadakan pesta, serta tambahan karakter dan barang-barang baru.
*The Sims: Hot Date Tanggal rilis: 12 November 2001 (Amerika Utara) The Sims: Hot Date adalah pak ekspansi ketiga untuk The Sims. Hot Date memberikan sebuah fitur baru yang tidak ada di pak ekspansi sebelumnya, yakni kemampuan untuk meninggalkan rumah dan pergi ke sebuah tempat baru yang disebut "Downtown." Di Downtown, sim dapat mengajak sim lainnya untuk makan atau kencan. Selain itu, Hot Date juga memberikan tambahan barang furniture, karakter, dan pakaian baru.
*The Sims: Vacation Tanggal rilis: 28 Maret 2002 (Amerika Utara) The Sims: Vacation (atau The Sims: On Holiday di Irlandia, Britania Raya, dan Cina) adalah pak ekspansi ke-4 untuk game The Sims. Vacation memberikan tambahan perumahan (neighborhood) baru yang disebut Vacation Island, dimana Sims dapat berlibur bersama keluarga mereka. Vacation Island dibagi menjadi tiga zona, yaitu pantai, hutan, dan gunung salju.
*The Sims: Unleashed Tanggal rilis: 7 November 2002 (Amerika Utara) The Sims: Unleashed adalah pak ekspansi kelima yang dikembangkan oleh Maxis/EA untuk game The Sims. Di Unleashed, terdapat fitur tambahan yang memungkinkan pemain untuk memelihara hewan. Beberapa hewan, yaitu anjing dan kucing, diperlakuakn seperti Sim—mereka butuh makan dan minum. Sementara hewan-hewan lainnya diperlakukan sebagai objek (hiasan). Di Unleashed, lot perumahaan (neighborhood) yang awalnya hanya berjumlah 10, kini dikembangkan menjadi lebih dari 40 buah yang terbagi dalam zona perumahan dan komersial. Di lot komersial, pemain dapat mendirikan toko dan berbagai jenis restoran. Selain itu, ekspansi ini juga memberikan banyak tambahan musik dalam game. *The Sims: Superstar Tanggal rilis: 13 Mei 2003 (Amerika Utara) The Sims: Superstar adalah pak ekspansi ke enam dari game The Sims. Pak ekspansi ini memungkinkan Sims pemain untuk menjadi seorang selebritas.
*The Sims: Makin' Magic Tanggal rilis: 29 Oktober 2003 (Amerika Utara) The Sims: Makin' Magic adalah pak ekspansi terakhir yang dirilis untuk game The Sims. Pak ekspansi ini memberikan fitur baru yang memungkinkan pemain menggunakan sihir dalam game.
Sumber referensi : http://id.wikipedia.org/wiki/The_Sims http://blog.unsri.ac.id/kaskuserr/nais-inpo-gan/sejarah-the-sims/mrdetail/5835/

Senin, 09 April 2012

TENTANG GAME ENGINE, DAN FITUR-FITUR YANG ADA PADA GAME ENGINE SERTA KELEBIHAN & KEKURANGANNYA











• Pengertian Game Engine
Game engine adalah suatu perangkat atau alat yang di gunakan dalam pembuatan game itu sendiri.Game enginemerupakan sebuah sistem perangkat lunak yang dirancang untuk penciptaan dan pengembangan video game. Ada banyak mesin permainan yang dirancang untuk bekerja pada video game konsol dan komputer pribadi. Fungsionalitas inti biasanya disediakan oleh mesin permainan mencakup mesin rendering ("renderer") untuk grafis 2D atau 3D, mesin fisika atau deteksi tabrakan (dan tanggapan tabrakan), suara, script, animasi, kecerdasan buatan, jaringan, streaming, memori manajemen, threading, dukungan lokalisasi, dan grafik adegan. Proses pengembangan game sering dihemat oleh di menggunakan kembali sebagian besar / mengadaptasi mesin permainan yang sama untuk membuat game yang berbeda.

Macam-Macam Game Engine
Beberapa alat yang disebut game engine yang tersedia untuk permainan desainer untuk kode permainan dengan cepat dan mudah tanpa membangun dari bawah ke atas. Berikut ini merupakan pembagian macam-macam game engine :

1. Freeware Engine
Mesin ini tersedia untuk penggunaan bebas, namun tanpa kode sumber yang tersedia di bawah lisensi open source. Produk ini mempunyai edisi gratis yang tersedia untuk mereka.
2. Commercial Engine
a. Aurora Engine : untuk role-playing game
b. BigWorld : server, klien, dan pengembangan alat-alat untuk pengembangan MMOG untuk permainan yang berjalan di Windows, Xbox 360, dan PS3
c. Blender : real-time mesin game grafik 3D untuk komputer, alat-alat simulasi, dan grafik
d. Freescape : mesin game 3D berpemilik yang digunakan dalam Driller dan Konstruksi 3D Kit
e. Gamestudio : game engine 2D dan 3D untuk pemula yang menggunakan game studio pengembangan dan Lite-C programming language
f. Kinetica : sebuah mesin permainan yang dikembangkan oleh Sony untuk PS2
g. MT Framework : game engine yang dibuat oleh Capcom dan digunakan untuk permainan mereka di Xbox 360, PS3, dan PC
Dan masih banyak lagi jenis game engine yang bersifat komersil (commercial engine) yang berbayar atau tidak freeware dan open source.

• Fitur-fitur yang ada pada Game Engine
Game Engine menyediakan fitur-fitur yang acapkali ada pada game namun sulit membuatnya. Bagaimana agar karakter kita tidak menembus tembok sebenarnya adalah hal yang sangat sulit programming-nya. Namun di game engine fitur tersebut automatis terpakai. Untuk game FPS, fitur yang tinggal pakai lain misalnya membuat dunia permainan 3D, menaruh objek-objek ke dalam dunia tersebut, animasi, kecerdasan musuh, dsb. Dengan demikian, waktu pembuatan game bisa dipangkas sangat signifikan. Namun, karena game engine berfungsi sebagai middleware, kekurangannya adalah kustomisasi kita menjadi terbatas

• Kelebihan dan Kekurangan Game Engine
Kelebihan Dan Kekurangan Dari Masing-Masing Game Engine
Freeware Engine (Blender)
Kelebihan : Dapat membuat game tanpa menggunakan program tambahan lainnya karena sudah memiliki "engine game" sendiri dan menggunakan bahasa pemrograman "Phython" yang lebih mudah dibandingkan bahasa pemrograman keluarga C (C, C++, C#). Menggunakan "OpenGL" sebagai render grafiknya yang dapat digunakan pada berbagai macam "OS" seperti Windows, Linux, dan Mac OS.
Kekurangan : Agak sulit dalam memahami GUI yang terdapat pada aplikasi ini.

Commercial Engine (Rage Engine)
Kelebihan : Kemampuan menciptakan dunia open world yang kompleks, penuh detail, dan terintegrasi penuh dengan dukungan seperti A.I script, weather effects, dan lain sebagainya seperti yang terlihat pada GTA IV (Grand Theft Auto IV). Engine ini juga mendukung kemampuan middleware seperti fitur "dynamic-motion" dan "bullet physics".
Kekurangan : Harga lisensinya mahal dan sulit untuk membuat animasi sendiri selain dari template animasi dari swift 3D dan kita tidak dapat memberikan efek pada objek yang ada.


sumber referensi :

http://bulletin-it.blogspot.com/2012/03/pengenalan-game-engine.html

http://www.kikasyafii.com/game-engine/

http://thetoyzareboyz.blogspot.com/2010/03/game-engine.html

Minggu, 11 Maret 2012

Computer Game (Sejarah Perkembangan Game Komputer)











 Definisi Computer Game
Computer game adalah permainan video yang dimainkan pada komputer pribadi, dan bukan pada konsol permainan, maupun mesin ding-dong. Permainan komputer telah berevolusi dari sistem grafis sederhana sampai menjadi kompleks dan mutakhir.


 Sejarah dan Perkembangan Video Game
Video game berawal dari pengembangan tabung sinar katoda yang terdapat dalam sistem peluru pertahanan pada akhir Perang Dunia II. Program-program ini kemudian diadaptasi ke dalam bentuk permainan sederhana.

Pada 1947 Thomas Toliver Goldsmith Jr dan Estle Ray Mann menciptakan permainan simulator rudal Cathode Ray Tube Device Amusement. Permainan ini terinspirasi dari kecanggihan radar Perang Dunia II. Inilah game elektronik pertama yang tercatat dalam sejarah. Meski memiliki unsur permainan, game ini tak popular. Penggunaannya terbatas untuk kepentingan simulasi latihan militer.

Tampilannya juga masih sederhana; belum berwarna dan hanya mengeluarkan suara “tat-tit-tut”. Baru pada 1970-an game elektronik bisa dinikmati di rumah-rumah. Ralph Baer, seorang Jerman berdarah Yahudi, mendesain video game rumahan pertama dengan prototipe bernama Brown Box.

Baer menjual idenya ke perusahaan Magnafox. Prototipe Baer kemudian dirilis ke pasar dengan nama Magnafox Odyssey. Produk ini berisi 16 game built-in yang dapat diganti-ganti dengan menggunakan sebuah switch. Ralph Baer kemudian tercatat sebagai “bapak game dunia”. Popularitas video game kian menanjak ketika pengusaha Nolan Bushnell mendesain mesin game koin (arcade) pertama di dunia bernama computer space atau di Indonesia popular dengan sebutan Ding-Dong. Bushnell kemudian membuat game simulasi ping-pong yang diberi nama Pong. Game ini laku keras di pasaran. Hampir setiap keluarga di Amerika bermimpi bisa membeli game ini. Di berbagai taman hiburan dan kafe, Pong bahkan harus dibongkar setiap 24 jam sekali untuk mengeluarkan koin yang berjejalan. “Selama puluhan tahun, orang Amerika lebih banyak menghabiskan uangnya untuk sistem home video game dan di tempat-tempat permainan Ding-Dong daripada untuk menonton film atau musik –jumlah totalnya mencapai lebih dari sebelas milyar dolar,” tulis Roger Fidler dalam Mediamorfosis.

Belum puas dengan Pong, Bushnell meluncurkan Atari 2600, video game pertama yang berbasis konsol, lalu Atari 7800 yang disebut-sebut sebagai pelopor penggunaan joystick. Tapi semua kejayaan itu tak bertahan lama. Pasar jemu. Angka penjualan merosot. Sebagian perusahaan video game Amerika beralih ke bisnis komputer lain atau bangkrut. Sebagian besar kaum eksekutif dan analis industri melihat hal ini sebagai pertanda bahwa video game hanyalah sebuah keisengan.Pada saat itulah muncul pendatang baru dari Jepang, Nintendo, yang menggebrak pasar video game dunia dengan merilis Famicom. Konsol ini menampilkan gambar dan animasi resolusi tinggi untuk kali pertama. Setelah mendapat sambutan hangat di Jepang, Famicom melakukan ekspansi pasar ke Amerika. “Pada 1989, Nintendo mengendalikan 80 persen pasar video game Amerika. Bahkan pada 1990-an, satu dari setiap lima rumah tangga di Amerika memiliki perangkat permainan Nintendo,” tulis Fidler. Pada tahun-tahun berikutnya, Nintendo berhasil menikmati posisi istimewa di pasar video game. Pesaing-pesaingnya tak mampu membendungnya. Sega sempat memberi perlawanan sengit melalui Sonic The Hedhog. Sayang, perusahaan ini lebih sering kalah cepat dalam pengembangan game ketimbang Nintendo. Penantang serius Nintendo muncul pada 1994. Sony, perusahaan elektronik terkemuka, merilis Sony Playstation (PSX), konsol berbasis CD. PSX terjual hingga ratusan juta unit. Sony bahkan kian merajalela melalui PlayStation 2, yang sudah berbasis DVD.

Nintendo, Sega, dan Microsoft, yang mengeluarkan produk tergres mereka, belum mampu mengalahkannya.Tapi perang belum berakhir. November 2005 Microsoft datang dengan Xbox 360, konsol generasi terkini yang memanfaatkan media HD-DVD. Dengan segudang fitur istimewa, Xbox 360
menarik banyak penggemar game. Tak mau kalah, Nintendo meluncurkan terobosannya, Nintendo Wii. Dengan inovasi pada stik kontrol mereka yang “motion sensitive”, Nintendo kembali mengambil-alih pasar video game. Sony, sekalipun mengeluarkan Playstation 3, sudah terlambat. Tinggallah kini persaingan antara Microsoft dan Nintendo. Tapi pesaing-pesaing baru akan bermunculan. Salah satunya Apple, sebuah perusahaan notebook terkemuka yang sukses dengan iPhone dan iPod. Ada rumor mereka berencana terjun ke industri konsol video game. Pihak Nintendo sudah mewaspadai Apple sebagai musuh masa depan mereka.


 Dalam hal paling tidak terdapat 5 katagori istilah game, yaitu :

Board Games (Permainan Papan) Game pada katagori ini membutuhkan suatu papan yang terbagi dalam sektor-sektor tertentu (dengan garis-garis) dan didalamnya terdapat sejumlah alat main yang dapat digerakkan. Termasuk dalam katagori ini adalah catur.Dua buah pemain akan berhadapan dan saling mengadu strategi sesuai dengan aturan untuk mencapai daerah lawan atau mempertahankan daerahnya sendiri, mengalahkan bidak musuh, mengumpulkan sesuatu. Pemain pada board games ini akan berusaha menganalisis hubungan-hubungan geometri yang ada pada papan dan bidak.

Card Games (Permainan Kartu) Games ini akan memanfaatkan simbol dari 52 kartu yang terbagi dalam dua faktor : suit (4 nilai) dan rank (13 nilai). Permainan akan dilakukan sekitar bagaimana membuat kombinasi dari 52 kartu tersebut. Sejumlah ketentuan dibuat untuk mengatur bagaimana cara-cara untuk membuat kombinasi tersebut. Permainan kartu bridge/truf termasuk kelompok games ini.

Athletic Games (Permainan Atletik) Permainan games jenis ini lebih cenderung pada penggunaan fisik daripada mental. Aturan game dibuat dengan keharusan pemain untuk melakukan sejumlah aksi tertentu. Hal yang terkait dengan kekuatan badan, kecepatan, ketepatan dan kerjasama menjadi bagian utama dari game atletik. Dalam hal ini harus dibedakan antara game dengan kompetisi. Kompetisi tidak mengharuskan adanya kerjasama dan pemain bekerja secara individu. Dua orang yang beradu lari bukanlah termasuk game tetapi kompetisi. Perbedaan utama antara game dan kompetisi adalah dalam hal interaksi diantara peserta. Pada kompetisi tidak terjadi interaksi diantara pemain, kompetisi yang membolehkan adanya interaksi diantara pemainnya termasuk game.

Children Games (Permainan Anak) Aktifitas seperti berlari, sembunyi, melempar dan menangkap adalah menjadi ciri utama game anak-anak. Umumnya game ini menekankan pada aktifitas kelompok sebagai latihan untuk berkehidupan sosial. Walaupun dalam game ini terdapat juga upaya untuk saling mengalahkan secara mental atau fisik namun tujuan utamanya bukanlah untuk meraih kemenangan satu diatas yang lain tetapi sebagai ilustrasi kerjasama dalam kehidupan manusia. Penggunaan sejumlah alat untuk membantu ilustrasi dapat meningkatkan improvisasi game dan meningkatkan keterlibatan yang lebih baik dari pemain.

 Computer Games (Permainan Komputer) Game ini dimainkan lewat bantuan alat komputer. Terdapat 5 alat yang dapat dikategorikan sebagai komputer, yaitu :
• Expensive dedicated machine, mesin yang dioperasikan dengan koin untuk memainkankannya.
• Inexpensive dedicated machine, disebut juga dengan hand held machine. Alat game watch termasuk dalam katagori ini.
• Multiprogram home, mesin seperti Atari,Nintendo termasuk dalam kelompok komputer ini.
• Personal computer
• Mainframe computer

Computer game berbeda dengan jenis game yang lain karena tidak ada pergerakan secara fisik atau interaksi langsung dengan object kecuali lewat perantaraan komputer. Software yang dibuat harus dapat menangkap reaksi yang cepat dari interaksi yang dihasilkan dengan pemain. Karena itu software untuk computer games harus bersifat real time. Kompleksitas game adalah bergantung dari kemampuan merepresentasikan aturan dan lingkungan game dalam program yang dibuat.

Sumber :
http://cgrg.wordpress.com/2008/03/12/definisi-computer-game/

http://wartawarga.gunadarma.ac.id/2011/02/sejarah-dan-perkembangan-video-game/

http://id.wikipedia.org/wiki/Permainan_komputer

Rabu, 28 Desember 2011

VCLASS - SISTEM OPERASI (SISTEM PENYIMPANAN)

----Managemen Disk----

1. Bagaimana cara disk SCSI me-recovery blok yang rusak? Jelaskan selengkap mungkin!

Bad blocks adalah satu/lebih sektor yang rusak pada suatu disk. Pada disk sederhana,bad blocks
diatasi secara manual. Untuk disk yang lebih kompleks seperti disk SCSI, bad blocks diatasi dengan sector sparing atau forwarding, yaitu controller dapat mengganti sektor yang rusak dengan sebuah sektor yang terpisah. Alternatif lainnya adalah mengganti sektor tersebut dengan cara sector slipping. Mengganti blok yang rusak bukan sepenuhnya merupakan proses yang otomatis, karena data-data yang tersimpan sebelum nya akan terhapus

----Penanganan Swap-Space----

1. Bagaimana penanganan swap space pada disk?

Penanganan (management) swap-space (tempat pertukaran; tetapi karena istilah swap-space sudah umum dipakai, maka untuk seterusnya kita tetap memakai istilah swap-space) adalah salah satu dari low-level task pada sebuah sistem operasi. Memori Virtual menggunakan disk space sebagai perpanjangan (atau space tambahan) dari memori utama. Karena kecepatan akses disk lebih lambat daripada kecepatan akses memori, menggunakan swap-space akan mengurangi performa sistem secara signifikan. Tujuan utama dari perancangan dan implementasi swap-space adalah untuk menghasilkan kinerja memori virtual yang optimal.

2. Bagaimana pengelolaan swap space pada disk?

Untuk mengilustrasikan metode-metode yang digunakan untuk mengelola swap-space, kita sekarang akan mengikuti evolusi dari swapping dan paging pada GNU/ Linux. Seperti yang akan dibahas sepenuhnya pada Bab 7, GNU/ Linux memulai dengan implemen tasi swapping yang menyalin seluruh proses antara daerah disk yang contiguous (tidak terputus) dan memori. UNIX berevolusi menjadi kombinasi dari swapping dan paging dengan tersedianya hardware untuk paging.

Dalam 4.3BSD, swap-space dialokasikan untuk proses ketika sebuah proses dimulai. Tempat yang cu kup disediakan untuk menampung program, yang juga dikenal sebagai halaman-halaman teks (text pages) atau segmen teks, dan segmen data dari proses itu. Alokasi dini tempat yang dibutuhkan dengan cara seperti ini umumnya mencegah sebuah proses untuk kehabisan swap-space selagi proses itu dikerjakan. Ketika proses mulai, teks di dalamnya di-page dari file system. Halaman-halaman (pages) ini akan ditaruh di swap bila perlu, dan dibaca kembali dari sana, jadi sistem file akan diakses sekali untuk setiap text page. Halaman-halaman dari segmen data dibaca dari sistem file, atau dibuat (bila belum sebelumnya), dan ditaruh di swap space dan di-page kembali bila perlu. Satu contoh optimisasi (sebagai contoh, ketika dua pengguna menggunakan editor yang sama) adalah proses-proses dengan text page yang identik membagi halaman-halaman (pages) ini, baik di memori mau pun di swap-space.

Dua peta swap untuk setiap proses digunakan oleh kernel untuk melacak penggunaan swap-space. Segmen teks besarnya tetap, maka swap space yang dialokasikan sebesar 512K setiap potong (chunks), kecuali untuk potongan terakhir, yang menyimpan sisa halaman-halaman (pages) tadi, dengan kenaikan (increments) sebesar 1K.

Peta swap dari Segmen data lebih rumit, karena segmen data bisa mem besar setiap saat. Petanya sendiri besarnya tetap, tapi menyimpan a lamat-alamat swap untuk blok-blok yang besarnya bervariasi. Misalkan ada index i, bla-bla-bla, dengan besar maksimun 2 megabytes. Data struktur ini ditunjukkan oleh gambar 13.8. (Besar minimum dan maksi mum blok bervariasi, dan bisa diubah ketika me-reboot sistem.) Keti ka sebuah proses mencoba untuk memperbesar segmen datanya melebihi blok yang dialokasikan di tempat swap, sistem operasi mengalokasikan blok lain lagi, dua kali besarnya yang pertama. Skema ini menyebab kan proses-proses yang kecil menggunakan blok-blok kecil. Ini juga meminimalisir fragmentasi. Blok-blok dari proses yang besar bisa di temukan dengan cepat, dan peta swap tetap kecil.

Pada Solaris 1 (SunOS 4), para pembuatnya membuat perubahan pada me tode standar UNIX untuk meningkatkan efisiensi dan untuk mencermin kan perubahan teknologi. Ketika sebuah proses berjalan, halaman-hala man (pages) dari segmen teks dibawa kembali dari sistem berkas, diak ses di memori utama, dan dibuang bila diputuskan untuk di-pageout. A kan lebih efisien untuk membaca ulang sebuah halaman (page) dari sis tem berkas daripada menaruhnya di swap-space dan membacanya ulang dari sana.

Lebih banyak lagi perubahan pada Solaris 2. Perubahan terbesar ada lah Solaris 2 mengalokasikan swap-space hanya ketika sebuah halaman (page) dipaksa keluar dari memori, daripada ketika halaman (page) da ri memori virtual pertama kali dibuat. Perubahan ini memberikan per forma yang lebih baik pada komputer-komputer modern, yang sudah mem punyai memori lebih banyak daripada komputer-komputer dengan sistem yang sudah lama, dan lebih jarang melakukan paging.

----Reabilitas Disk----

1. Terangkan bagaimana RAID dapat meningkatkan reabilitas dari disk?

Salah satu cara yang digunakan pada RAID adalah dengan mirroring atau shadowing, yaitu dengan membuat duplikasi dari tiap-tiap disk. Pada cara ini, berarti diperlukan media penyimpanan yang dua kali lebih besar daripada ukuran data sebenarnya. Akan tetapi, dengan cara ini pengaksesan disk yang ilakukan untuk membaca dapat ditingkatkan dua kali lipat. Hal ini dikarenakan setengah dari permintaan membaca dapat dikirim ke masing-masing disk. Cara lain yang digunakan pada RAID adalah lock interleaved parity. Pada cara ini, digunakan sebagian kecil dari disk untuk penyimpanan parity block. Sebagai contoh, dimisalkan terdapat 10 disk pada array. Karenanya setiap 9 data block yang disimpan pada array, 1 parity block juga akan disimpan. Bila terjadi kerusakan pada salah satu block pada disk maka dengan adanya informasi pada parity block ini, ditambah dengan data block lainnya, diharapkan kerusakan pada disk tersebut dapat ditanggulangi, sehingga tidak ada data yang hilang. Penggunaan parity block ini juga akan menurunkan kinerja sama seperti halnya pada mirroring. Pada parity block ini, tiap kali subblock data ditulis, akan terjadi perhitungan dan penulisan ulang pada parity block .

2. Adakah batas waktu hidup suatu disk? Jika ada, berapa lama? Jika tidak, kenapa?

----Implementasi Stable-Storage----

1. Sebutkan kemungkinan-kemungkinan dari disk write!

Sebuah disk write menyebabkan satu dari tiga kemungkinan:
- Successful completion
Data disimpan dengan benar di dalam disk.
- Partial failure
Kegagalan terjadi di tengah-tengah transfer, menyebabkan hanya bebe rapa sektor yang diisi dengan data yang baru, dan sektor yang diisi ketika terjadi kegagalan menjadi rusak.
- Total failure
Kegagalan terjadi sebelum disk write dimulai, jadi data yang sebe lumnya ada pada disk masih tetap ada.

2. Bagaimanakah suatu operasi output dieksekusi?

Sebuah operasi output dieksekusi seperti berikut:
- Tulis informasinya ke blok physical yang pertama.
- Ketika penulisan pertama berhasil, tulis informasi yang sama ke blok physical yang kedua.
- Operasi dikatakan berhasil hanya jika penulisan kedua berhasil.

----Tertiary-Storage Structure----

1. Sebutkan kelebihan tertiary storage structure?


2. Apakah kegunaan EOT pada tapes? Jelaskan cara kerjanya?

Kapasitas blok ditentukan pada saat blok ditulis. Apabila terdapat area yang rusak pada saat blok ditulis, maka area yang rusak itu tidak dipakai dan penulisan blok dilanjutkan setelah daerah yang rusak tersebut. Tape drive "append-only" devices, maksudnya adalah apabila kita meng update blok yang ada di tengah berarti kita akan menghapus semua data sebelumnya pada blok tersebut. Oleh karena itu, meng-update blok tidak diperbolehkan. Untuk mencegah hal tadi digunakan tanda EOT (end-of-tape). Tanda EOT ditaruh setelah sebuah blok ditulis. Drive menolak ke lokasi sebelum tanda EOT, tetapi drive tidak menolak ke lokasi tanda EOT kemudian drive mulai menulis data. Setelah selesai menulis data, tanda EOT ditaruh setelah blok yang baru ditulis tadi

3. Jelaskan tugas sistem operasi terhadap tertiary-storage structure?

Tugas terpenting dari sistem operasi adalah mengatur physical devices dan menampilkan abstarksi mesin virtual dari aplikasi (Interface aplikasi).

VCLASS - SISTEM OPERASI (SISTEM I/O)

----Perangkat Keras I/O----

1. Gambarkan diagram dari Interrupt Driven I/O Cycle.



2. Sebutkan langkah-langkah dari transfer DMA!

a. Prosesor menyiapkan DMA transfer dengan menyedia kan data-data dari perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data, dan banyaknya byte yang ditransfer.
b. Pengendali DMA memulai operasi (menyiapkan bus, menyediakan alamat, menulis dan membaca data), sampai seluruh blok sudah di transfer.
c. Pengendali DMA meng-interupsi prosesor, dimana selanjutnya akan ditentukan tindakan berikutnya.
Pada dasarnya, DMA mempunyai dua metode yang berbeda dalam mentransfer data. Metode yang pertama ialah metode yang sangat baku dan sederhana disebut HALT, atau Burst Mode DMA, karena pengendali DMA memegang kontrol dari sistem bus dan mentransfer semua blok data ke atau dari memori pada single burst. Selagi transfer masih
dalam prosres, sistem mikroprosessor diset idle, tidak melakukan instruksi operasi untuk menjaga internal register. Tipe operasi DMA seperti ini ada pada kebanyakan komputer.
Metode yang kedua, mengikutsertakan pengendali DMA untuk memegang kontrol dari sistem bus untuk jangka waktu yang lebih pendek pada periode dimana mikroprosessor sibuk dengan operasi internal dan tidak membutuhkan akses ke sistem bus. Metode DMA ini disebut cycle stealing mode. Cycle stealing DMA lebih kompleks untuk diimplementasikan
dibandingkan HALT DMA, karena pengendali DMA harus mempunyai kepintaran untuk merasakan waktu pada saat sistem bus terbuka

3. Apakah perbedaan dari polling dan interupsi?

- Polling

Busy-waiting/ polling adalah ketika host mengalami looping yaitu membaca status register secara terus-menerus sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.

- interupsi

suatu kejadian yang akan menghentikan sementara jalan program saat itu. Dengan interupsi, suatu alur program dapat dihentikan sementara untuk menjalankan suatu subrutin, dan kemudian melanjutkan aliran program secara normal seperti tidak pernah ada interupsi

4. Apa hubungan arsitektur kernel yang di-thread dengan implemen tasi interupsi?

Kernel Dan Perlindungan Kernel adalah suatu program yang dibedakan oleh fakta bahwa itu selalu berjalan dan kodenya dieksekusi dengan akses perlakuan khusus untuk sesumber fisik pada komputer host- nya. Secara khusus hal itu dapat mengendalikan unit manajemen memori dan menetapkan processor register sehingga tidak ada kode lain yang boleh mengakses sesumber fisik mesin kecuali dengan jalan yang bisa diterima.


Kernel juga menetapkan ruang alamat untuk melindungi dirinya sendiri dan proses lain dari proses yang menyimpang. Suatu ruang alamat adalah suatu koleksi kumpulan range lokasi virtual memori. Suatu proses tidak bisa mengakses memori di luar ruang alamatnya. Ketika suatu proses mengeksekusi kode aplikasi, ia mengeksekusi dalam suatu user-level untuk aplikasi tersebut.

Proses Dan Thread

Suatu proses terdiri dari suatu execution environment bersama-sama dengan satu atau lebih thread. Suatu threads adalah abstraksi sistem operasi dari suatu aktivitas. Suatu execution environment merupakan unit manajemen sesumber. Suatu execution environment terdiri dari:

- suatu ruang alamat;

- thread sinkronization dan communication resource, misalnya semaphore;

- sesumber higher-level, seperti window dan open file.


----Interface Aplikasi I/O----

1. Kenapa dibutuhkan interface pada aplikasi I/O?

Interface aplikasi I/O melibatkan abstraksi, enkapsulasi, dan software layering. Abstraksi dilakukan dengan membagi-bagi detail peralatan-peralatan I/O ke dalam kelas-kelas yang lebih umum. Dengan adanya kelas-kelas yang umum ini, maka akan lebih mudah untuk membuat fungsi-fungsi standar (interface) untuk mengaksesnya.

Lalu kemudian adanya device driver pada masing-masing peralatan I/O, berfungsi untuk enkapsulasi perbedaan-perbedaan yang ada dari masing-masing anggota kelas-kelas yang umum tadi. Device driver mengenkapsulasi tiap -tiap peralatan I/O ke dalam masing-masing 1 kelas yang umum tadi (interface standar). Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel. Karena hal ini, subsistem I/O dapat bersifat independen dari hardware.

2. Apa tujuan adanya device driver? Berikan contoh keuntungan yang kita dapatkan dengan adanya hal ini!

Tujuan dari adanya lapisan device driver ini adalah untuk menyembunyikan perbedaan-perbedaan yang ada pada device controller dari subsistem I/O pada kernel. Karena hal ini, subsistem I/O dapat bersifat independen dari hardware.

----Kernel I/O Subsystem----

1. Apakah yang dimaksud dengan proses pooling? (jelaskan dengan jelas)

Busy-waiting/ polling adalah ketika host mengalami looping yaitu membaca status register secara terus-menerus sampai status busy di-clear. Pada dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.

2. Mengapa diperlukan proses pooling?

untuk mengetahui mana permintaan terbanyak pada suatu system operasi , maka proses tersebut diutamakan, memudahkan dalam perpindahan / share, dapat membantu pekerjaan menjadi cepat.

3. Apakah yang dimaksud dengan buffer?

Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi. Buffering dilakukan untuk tiga buah alasan. Alasan pertama adalah untuk men-cope dengan kesalahan yang terjadi karenaperbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data. Sebagai contoh,sebuah file sedang diterima melalui modem dan ditujukan ke media penyimpanan di hard disk. Kecepatan modem tersebut kira-kira hanyalah 1/1000 daripada hardisk. Jadi buffer dibuat di dalam memori utama untuk mengumpulkan jumlah byte yang diterima dari modem. Ketika keseluruhan data di buffer sudah sampai, buffer tersebut dapat ditulis ke disk dengan operasi tunggal. Karena penulisan disk tidak terjadi dengan instan dan modem masih memerlukan tempat untuk menyimpan data yang berdatangan, maka dipakai 2 buah buffer. Setelah modem memenuhi buffer pertama, akan terjadi request untuk menulis di disk. Modem kemudian mulai memenuhi buffer kedua sementara buffer pertama dipakai untuk penulisan ke disk. Pada saat modem sudah memenuhi buffer kedua, penulisan ke disk dari buffer pertama seharusnya sudah selesai, jadi modem akan berganti kembali memenuhi buffer pertama dan buffer kedua dipakai untuk menulis. Metode double buffering ini membuat pasangan ganda antara produsen dan konsumen sekaligus mengurangi kebutuhan waktu di antara mereka. Alasan kedua dari buffering adalah untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data. Hal ini sangat umum terjadi pada jaringan komputer, dimana buffer dipakai secara luas untuk fragmentasi dan pengaturan kembali pesan-pesan yang diterima. Pada bagian pengirim, sebuah pesan yang besar
akan dipecah ke paket-paket kecil. Paket-paket tersebut dikirim melalui jaringan, dan penerima akan meletakkan mereka di dalam buffer untuk disusun kembali. Alasan ketiga untuk buffering adalah untuk mendukung copy semantics untuk aplikasi I/O. Sebuah contoh akan menjelaskan pa arti dari copy semantics. Jika ada sebuah aplikasi yang mempunyai buffer data yang ingin dituliskan ke disk. Aplikasi tersebut akan memanggil sistem penulisan, menyediakan pointer ke buffer, dan sebuah integer untuk menunjukkan ukuran bytes yang ingin ditulis. Setelah pemanggilan tersebut, apakah yang akan terjadi jika aplikasi tersebut merubah isi dari buffer, dengan copy semantics, keutuhan data yang ingin ditulis sama dengan data waktu aplikasi ini memanggil sistem untuk menulis, tidak tergantung dengan perubahan yang terjadi pada buffer. Sebuah cara sederhana untuk sistem operasi untuk menjamin copy semantics adalah membiarkan sistem penulisan untuk mengkopi data aplikasi ke dalam buffer kernel sebelum mengembalikan kontrol kepada aplikasi. Jadi penulisan ke disk dilakukan pada buffer kernel, sehingga perubahan yang terjadi pada buffer aplikasi tidak akan membawa dampak apa-apa. Mengcopy data antara buffer kernel data aplikasi merupakan sesuatu yang umum pada sistem operasi, kecuali overhead yang terjadi karena operasi ini karena clean semantics. Kita dapat memperoleh efek yang sama yang lebih fisien dengan memanfaatkan virtual-memori mapping dan proteksi copy-on-wire dengan pintar.

4. Jelaskan dengan singkat mengenai I/O Scheduling!

I/O Scheduling

Untuk menjadualkan sebuah set permintaan I/O, kita harus menetukan urutan yang bagus untuk mengeksekusi permintaan tersebut. Scheduling dapat meningkatkan kemampuan sistem secara keseluruhan, dapat membagi device secara rata di antara proses-proses, dan dapat mengurangi waktu tunggu rata-rata untuk menyelesaikan I/O. Ini adalah contoh sederhana untuk menggambarkan definisi di atas. Jika sebuah arm disk terletak di dekat permulaan disk, dan ada tiga aplikasi yang memblokir panggilan untuk membaca untuk disk tersebut. Aplikasi 1 meminta sebuah blok dekat akhir disk, aplikasi 2 meminta blok yang dekat dengan awal, dan aplikasi 3 meminta bagian tengah dari disk. Sistem operasi dapat mengurangi jarak yang harus ditempuh oleh arm disk dengan melayani aplikasi tersebut dengan urutan 2, 3, 1. Pengaturan urutan pekerjaan kembali dengan cara ini merupakan inti dari I/O scheduling. Sistem operasi mengembangkan implementasi scheduling dengan menetapkan antrian permintaan untuk tiap device. Ketika sebuah aplikasi meminta sebuah blocking sistem I/O, permintaan tersebut dimasukkan ke dalam antrian untuk device tersebut. Scheduler I/O mengatur urutan antrian untuk meningkatkan efisiensi dari sistem dan waktu respon rata-rata yang harus dialami oleh aplikasi. Sistem operasi juga mencoba untuk bertindak secara adil, seperti tidak ada aplikasi yang menerima service yang buruk, atau dapat seperti memberi prioritas service untuk permintaan penting yang ditunda. Contohnya, pemintaan dari subsistem mungkin akan mendapatkan prioritas lebih tinggi daripada permintaan dari aplikasi. Beberapa algoritma scheduling untuk disk I/O akan dijelaskan ada bagian Disk Scheduling.

----Penanganan Permintaan I/O----

1. Apakah kegunaan dari Streams pada Sistem V UNIX?

Sebuah stream adalah sebuah koneksi full duplex antara sebuah device driver dan sebuah proses user-level. Stream terdiri atas sebuah stream head yang merupakan antarmuka dengan user process, sebuah driver end yang mengontrol device, dan nol atau lebih stream modules diantara mereka. Modules dapat didorong ke stream untuk menambah fungsionalitas di sebuah layered fashion. Sebagai gambaran sederhana, sebuah proses dapat membuka sebuah alat port serial melalui sebuah stream, dan dapat mendorong ke sebuah modul untuk memegang edit input. Stream dapat digunakan untuk interproses dan komunikasi jaringan. Faktanya, di Sistem V, mekanisme soket diimplementasikan dengan stream.

2. Jelaskan lifecycle dari permintaan pembacaan blok!

• Sebuah proses mengeluarkan sebuah blocking read system call ke sebuah file deskriptor dari berkas yang telah dibuka sebelumnya.
• Kode system-call di kernel mengecek parameter untuk kebenaran. Dalam kasus input, jika data telah siap di buffer cache, data akan dikembalikan ke proses dan permintaan I/O diselesaikan.
• Jika data tidak berada dalam buffer cache, sebuah physical I/O akan bekerja, sehingga proses akan dikeluarkan dari antrian jalan (run queue) dan diletakkan di antrian tunggu (wait queue) untuk alat, dan permintaan I/O pun dijadwalkan. Pada akhirnya, subsistem I/O mengirimkan permintaan ke device driver. Bergantung pada sistem operasi, permintaan dikirimkan melalui call subrutin atau melalui pesan in-kernel.
• Device driver mengalokasikan ruang buffer pada kernel untuk menerima data, dan menjadwalkan I/O. Pada akhirnya, driver mengirim perintah ke device controller dengan menulis ke register device control.
• Device controller mengoperasikan piranti keras device untuk melakukan transfer data.
• Driver dapat menerima status dan data, atau dapat menyiapkan transfer DMA ke memori kernel. Kita mengasumsikan bahwa transfer diatur oleh sebuah DMA controller, yang meggunakan interupsi ketika transfer selesai.
• Interrupt handler yang sesuai menerima interupsi melalui tabel vektor-interupsi, menyimpan sejumlah data yang dibutuhkan, menandai device driver, dan kembali dari interupsi.
• Device driver menerima tanda, menganalisa permintaan I/O mana yang telah diselesaikan, menganalisa status permintaan, dan menandai subsistem I/O kernel yang permintaannya telah terselesaikan.
• Kernel mentransfer data atau mengembalikan kode ke ruang alamat dari proses permintaan, dan memindahkan proses dari antrian tunggu kembali ke antrian siap.
• Proses tidak diblok ketika dipindahkan ke antrian siap. Ketika penjadwal (scheduler) mengembalikan proses ke CPU, proses meneruskan eksekusi pada penyelesaian dari system call.

----Performa I/O----

1. Gambarkan bagan mengenai komunikasi antar komputer



2. Bagaimana cara meningkatkan efisiensi performa I/O

cara meningkatkan efisiensi performa I/O
Menurunkan jumlah alih konteks.
Mengurangi jumlah pengkopian data ke memori ketika sedang dikirimkan antara device dan aplikasi.
Mengurangi frekuensi interupsi, dengan menggunakan ukuran transfer yang besar, smart controller, dan polling.
Meningkatkan concurrency dengan controller atau channel yang mendukung DMA.
Memindahkan kegiatan processing ke perangkat keras, sehingga operasi kepada device controller dapat berlangsung bersamaan dengan CPU.
Menyeimbangkan antara kinerja CPU, memory subsystem, bus, dan I/O.

3. Jelaskan mengenai implementasi dari fungsi I/O

Pada dasarnya kita mengimplementasikan algoritma I/O pada level aplikasi. Hal ini dikarenakan kode aplikasi sangat fleksible, dan bugs aplikasi tidak mudah menyebabkan sebuah sistem crash. Lebih lanjut, dengan mengembangkan kode pada level aplikasi, kita akan menghindari kebutuhan untuk reboot atau reload device driver setiap kali kita mengubah kode. Implementasi pada level aplikasi juga bisa sangat tidak efisien. Tetapi, karena overhead dari alih konteks dan karena aplikasi tidak bisa mengambil keuntungan dari struktur data kernel internal dan fungsionalitas dari kernel (misalnya, efisiensi dari kernel messaging, threading dan locking.
Pada saat algoritma pada level aplikasi telah membuktikan keuntungannya, kita mungkin akan mengimplementasikannya di kernel. Langkah ini bisa meningkatkan kinerja tetapi perkembangannya dari kerja jadi lebih menantang, karena besarnya kernel dari sistem operasi, dan kompleksnya sistem sebuah perangkat lunak. Lebih lanjut , kita harus men-debug keseluruhan dari implementasi in-kernel untuk menghindari korupsi sebuah data dan sistem crash.
Kita mungkin akan mendapatkan kinerja yang optimal dengan menggunakan implementasi yang special pada perangkat keras, selain dari device atau controller. Kerugian dari implementasi perangkat keras termasuk kesukaran dan biaya yang ditanggung dalam membuat kemajuan yang lebih baik dalam mengurangi bugs, perkembangan waktu yang maju dan fleksibilitas yang meningkat. Contohnya, RAID controller pada perangkat keras mungkin tidak akan menyediakan sebuah efek pada kernel untuk mempengaruhi urutan atau lokasi dari individual block reads dan write, meski pun kernel tersebut mempunyai informasi yang spesial mengenai workload yang dapat mengaktifkan kernel untuk meningkatkan kinerja dari I/O.

----Struktur Disk----

1. Sebutkan bagian-bagian dari disk


Disk menyediakan penyimpanan sekunder bagi sistem komputer modern. Magnetic tape sebelumnya digunakan sebagai media penyimpanan sekunder, tetapi waktu aksesnya lebih lambat dari disk. Oleh karena itu, sekarang tape digunakan terutama untuk backup, untuk penyimpanan informasi yang tidak sering, sebagai media untuk mentransfer infromasi dari satu sistem ke sistem yang lain, dan untuk menyimpan sejumlah data yang terlalu besar untuk sistem disk.

Disk drive modern dialamatkan sebagai suatu array satu dimensi yang besar dari blok lojik, dimana blok lojik merupakan unit terkecil dari transfer. Ukuran dari blok lojik biasanya adalah 512 bytes, walau pun sejumlah disk dapat diformat di level rendah (low level formatted) untuk memilih sebuah ukuran blok lojik yang berbeda, misalnya 1024 bytes.
Array satu dimensi dari blok lojik dipetakan ke bagian dari disk secara sekuensial. Sektor 0 adalah sektor pertama dari trek pertama di silinder paling luar (outermost cylinder).

2. Apa keuntungan penggunaan pemetaan pada disk?

Dengan menggunakan pemetaan, kita dapat minimal dalam teori mengubah sebuah nomor blok logikal ke sebuah alamat disk yang bergaya lama (old-style disk address) yang terdiri atas sebuah nomor silinder, sebuah nomor trek di silinder tersebut, dan sebuah nomor sektor di trek tersebut. Dalam prakteknya, adalah sulit untuk melakukan translasi ini, dengan 2 alasan. Pertama, kebanyakan disk memiliki sejumlah sektor yang rusak, tetapi pemetaan menyembunyikan hal ini dengan mensubstitusikan dengan sektor yang dibutuhkan dari mana-mana di dalam disk. Kedua, jumlah dari sektor per trek tidaklah konstan. Semakin jauh sebuah trek dari tengah disk, semakin besar panjangnya, dan juga semakin banyak sektor yang dipunyainya. Oleh karena itu, disk modern diatur menjadi zona-zona silinder.

----Penjadualan Disk----

1. Buatlah dengan pemikiran Anda sendiri, strategi penjadualan disk yang tepat dan efisien menurut Anda

Salah satu tanggung jawab sistem operasi adalah menggunakan hardware dengan efisien. Khusus untuk disk drives, efisiensi yang dimaksudkan di sini adalah dalam hal waktu akses yang cepat dan aspek bandwidth disk. Waktu akses memiliki dua komponen utama yaitu waktu pencarian dan waktu rotasi disk. Waktu pencarian adalah waktu yang dibutuhkan disk arm untuk menggerakkan head ke bagian silinder disk yang mengandung sektor yang diinginkan. Waktu rotasi disk adalah waktu tambahan yang dibutuhkan untuk menunggu rotasi atau perputaran disk, sehingga sektor yang diinginkan dapat dibaca oleh head. Pengertian Bandwidth adalah total jumlah bytes yang ditransfer dibagi dengan total waktu antara permintaan pertama sampai seluruh bytes selesai ditransfer. Untuk meningkatkan kecepatan akses dan bandwidth, kita dapat melakukan penjadwalan pelayanan atas permintaan I/O dengan urutan yang tepat.

Sebagaimana kita ketahui, jika suatu proses membutuhkan pelayanan I/O dari atau menuju disk, maka proses tersebut akan melakukan system call ke sistem operasi. Permintaan tersebut membawa informasi-informasi antara lain:

-Apakah operasi input atau output
-Alamat disk untuk proses tersebut
-Alamat memori untuk proses tersebut

Jumlah bytes yang akan ditransfer
Jika disk drive beserta controller tersedia untuk proses tersebut, maka proses akan dapat dilayani dengan segera. Jika ternyata disk drive dan controller tidak tersedia atau sedang sibuk melayani proses lain, maka semua permintaan yang memerlukan pelayanan disk tersebut akan diletakkan pada suatu antrian penundaan permintaan untuk disk tersebut. Dengan demikian, jika suatu permintaan telah dilayani, maka sistem operasi memilih permintaan tertunda dari antrian yang selanjutnya akan dilayani.

2. Menurut Anda, diantara algoritma-algoritma penjadualan disk diatas manakah yang
paling cepat, manakah yang paling efisien (hemat/tidak mahal), dan manakah yang paling lambat dan tidak efisien? Jelaskan!

Dari algoritma-algoritma diatas, bagaimanakah kita memilih algoritma terbaik yang akan digunakan? SSTF lebih umum dan memiliki prilaku yang lazim kita temui. SCAN dan C-SCAN memperlihatkan kemampuan yang lebih baik bagi sistem yang menempatkan beban pekerjaan yang berat kepada disk, karena algoritma tersebut memiliki masalah starvation yang paling sedikit. Untuk antrian permintaan tertentu, mungkin saja kita dapat mendefinisikan urutan akses dan pengambilan data dari disk yang optimal, tapi proses komputasi membutuhkan penjadwalan optimal yang tidak kita dapatkan pada SSTF atau SCAN.

Dengan algoritma penjadwalan yang manapun, kinerja sistem sangat tergantung pada jumlah dan tipe permintaan. Sebagai contoh, misalnya kita hanya memiliki satu permintaan, maka semua algoritma penjadwalan akan dipaksa bertindak sama, karena algoritma-algoritma tersebut hanya punya satu pilihan dari mana menggerakkan disk head: semuanya berprilaku seperti algoritma penjadwalan FCFS.

Perlu diperhatikan pula bahwa pelayanan permintaan disk dapat dipengaruhi pula oleh metode alokasi file. Sebuah program yang membaca alokasi file secara terus menerus mungkin akan membuat beberapa permintaan yang berdekatan pada disk, menyebabkan pergerakan head menjadi terbatas. File yang memiliki link atau indeks, dilain pihak, mungkin juga memasukkan blok-blok yang tersebar luas pada disk, menyebabkan pergerakan head yang sangat besar.

Lokasi blok-blok indeks dan directory juga tidak kalah penting. Karena file harus dibuka sebelum digunakan, proses pembukaan file membutuhkan pencarian pada struktur directory, dengan demikian directory akan sering diakses. Kita anggap catatan directory berada pada awal silinder, sedangkan data file berada pada silinder terakhir. Pada kasus ini, disk head harus bergerak melewati sepanjang lebar disk. Membuat tempat penyimpanan sementara dari blok-blok indeks dan directory ke dalam memori dapat membantu mengurangi pergerakan disk arm, khususnya untuk permintaan membaca disk.

Karena kerumitan inilah, maka algoritma penjadwalan disk harus ditulis dalam modul terpisah dari sistem operasi, jadi dapat saling mengganti dengan algoritma lain jika diperlukan. Baik SSTF maupun LOOK keduanya merupakan pilihan yang paling masuk akal sebagai algoritma yang paling dasar.

Selasa, 27 Desember 2011

VCLASS - SISTEM OPERASI (sistem file)

SOAL - SOAL SISTEM BERKAS

1.Sebutkan macam-macam atribut pada berkas!

Atribut Berkas
Setiap berkas diberi nama agar mempermudah kita untuk membedakannya. Nama berkas biasanya terdiri dari sederetan karakter. Dalam beberapa sistem, huruf besar dan huruf kecil dari nama berkas tersebut dianggap sama, sedangkan untuk sistem yang lain, hal itu dianggap berbeda. Setelah berkas diberi nama, nama dari berkas tersebut menjadi independen terhadap proses. Maksud dari independen disini adalah bahwa tindakan yang dilakukan user terhadap berkas, misalnya mengedit isinya, menyalin berkas tersebut ke disk, mengirimkannya lewat email dan tindakan-tindakan lainnya tidak akan mengubah nama dari berkas tersebut.
Berkas mempunyai bermacam-macam atribut, yang dapat berbeda-beda antar satu sistem operasi dengan sistem operasi lainnya. Tapi umumnya, sebuah berkas memiliki atribut sebagai berikut:
• Nama. Nama dari berkas yang dituliskan secara simbolik adalah satu-satunya informasi yang disimpan dalam bentuk yang dapat dibaca oleh kita.
• Identifier . Tag unik yang biasanya berupa angka, yang mengidentifikasikan berkas dalam sistem berkas. Identifier ini tidak dapat dibaca oleh manusia.
• Jenis. Informasi yang dibutuhkan sistem yang biasanya medukung bermacam-macam tipe berkas yang berbeda.
• Lokasi. Informasi yang berisi pointer ke device dan lokasi dari berkas dalam device tersebut.
• Ukuran. Ukuran dari berkas saat ini, dan mungkin ukuran maksimum berkas juga dimasukkan dalam atribut ini.
• Waktu, tanggal dan identifikasi pengguna . Informasi yang disimpan untuk pembuatan, modifikasi terakhir dan kapan berkas terakhir digunakan. Data-data ini dapat berguna dalam proteksi, keamanan dan monitoring penggunaan berkas.

2.Operasi apa sajakah yang dapat diterapkan pada sebuah berkas?

create file,write file,read file,reposition dalam file,delete file,truncate file.

3.Sebutkan informasi yang terkait dengan pembukaan berkas!

name, type,address,current length,maximum length,date last accessed,date last updated,owner ID,protection information.

4.Sebutkan dan jelaskan metode alokasi pada sistem berkas!

Alokasi Secara Berdampingan
Metode ini menempatkan setiap berkas pada satu himpunan blok yang berurut di dalam disk. Alamat disk menyatakan sebuah urutan linier. Dengan urutan linier ini maka head disk hanya bergerak jika mengakses dari sektor terakhir suatu silinder ke sektor pertama silinder berikutnya.
Alokasi Secara Berangkai
Metode ini menyelesaikan semua masalah yang terdapat pada contiguous allocation. Dengan metode ini, setiap berkas merupakan linked list dari blok-blok disk, dimana blok-blok disk dapat tersebar di dalam disk. Setiap direktori berisi sebuah penunjuk (pointer) ke awal dan akhir blok sebuah berkas
Alokasi Dengan Indeks
Metode alokasi dengan berangkai dapat menyelesaikan masalah fragmentasi eksternal dan pendeklarasian ukuran dari metode alokasi berdampingan. Bagaimana pun tanpa FAT, metode alokasi berangkai tidak mendukung keefisiensian akses langsung, karena penunjuk ke bloknya berserakan dengan bloknya didalam disk dan perlu didapatkan secara berurutan.

5.Sebutkan dan jelaskan operasi pada direktori?

Membuat direktori
#/$ mkdir namadirektori
#/$ mkdir namadirektori namadirektori …. → membuat direktori langsung banyak

Mengkopi file
#/$ cp namafile /direktori_tujuan
Memindah File
#/$ mv namafile /direktori_tujuan
Rename nama file atau direktori
#/$ mv nama_lama nama_baru
Menghapus direktori
#/$ rmdir namadirektori → menghapus direktori kosong
#/$ rmdir –r namadirektori → menghapus direktori beserta isi

Membuat dan mengedit file
ƒ touch → membuat file tanpa isi
#/$ touch namafile
ƒ cat → membuat file
#/$ cat namafile
………ketik……… Ctrl+d → untuk save
ƒ vi → membuat dan mengedit
#/$ vi namafile
Tekan tombol insert untuk memulai dokumen, tombol esc untuk keluar
Untuk menyimpan, setelah esc ketik “:wq”
ƒ mcedit → membuat dan mengedit
#/$ mcedit namafile Tekan F2 untuk save Tekan F10 untuk keluar

6.Sebutkan dan Jelaskan tentang tipe akses pada berkas?

- Read: Membaca dari berkas
- Write: Menulis berkas
- Execute: Meload berkas kedalam memori untuk dieksekusi.
- Append: Menambahkan informasi kedalam berkas di akhir berkas.
- Delete: Menghapus berkas.
- List: Mendaftar properti dari sebuah berkas.
- Rename: Mengganti nama sebuah berkas.
- Copy: Menduplikasikan sebuah berkas.
- Edit: Mengedit sebuah berkas.

7.Sebutkan dan jelaskan bagaimana cara mengatur free space?

Vektor Bit
Blok yang kosong ditandai dengan angka 1 dan blok yang ada isinya ditandai dengan angka 0. Contoh: 0100100, ini berarti blok yang kosong adalah blok ke 1 dan 4.
Gambar 17.9. Gambar Vektor Bit
Perhitungan nomor blok kosong pada vektor bit ini adalah:
(jumlah bit per word)*(jumlah nilai-0 word)+offset dari bit pertama.
Kelemahan dari cara ini adalah pemetaan bit-nya membutuhkan ruang tambahan (blok tersendiri).
Contohnya: ukuran blok = 2^12 byte, ukuran disk = 2^30 byte (1 gigabyte), ruang untuk vektor bit=2^30/2^12 bit (atau 32Kbyte).
Dengan menggunakan vektor bit bisa terjadi kesalahan dimana bit[i]=1 pada memory dan bit[i]=0 pada disk. Untuk mencegah terjadinya perbedaan ini, maka pada saat pengalokasian suatu ruang kosong untuk suatu berkas dilakukan cara berikut:
• set bit[i]=0 pada disk
• alokasikan blok[i]
• set bit[i]=0 pada memory

8.Bagaimanakah implementasi dari sebuah direktori dalam disk

Virtual File Systems (VFS) merupakan implementasi sistem file yang berorientasi obyek. VFS memungkinkan antarmuka system call (API) yang sama digunakan untuk sistem file yang berbeda. API adalah lebih sebagai antarmuka VFS dan bukan untuk tipe sistem file tertentu.

9.Sebutkan keunggulan dari sistem berkas dalam UNIX dengan sistem berkas pada WINDOWS?

Sistem Berkas Pada Windows
Direktori dan Berkas
Sistem operasi Windows merupakan sistem operasi yang telah dikenal luas. Sistem operasi ini sangat memudahkan para penggunanya dengan membuat struktur direktori yang sangat user-friendly. Para pengguna Windows tidak akan menemui kesulitan dalam menggunakan sistem direktori yang telah dibuat oleh Microsoft. Windows menggunakan sistem drive letter dalam merepresentasikan setiap partisi dari disk. Sistem operasi secara otomatis akan terdapat dalam partisi pertama yang diberi label drive C. Sistem operasi Windows dibagi menjadi dua keluarga besar, yaitu keluarga Windows 9x dan keluarga Windows NT (New Technology).
Direktori yang secara otomatis dibuat dalam instalasi Windows adalah:
1. Direktori C:\WINDOWS
Direktori ini berisikan sistem dari Windows. Dalam direktori ini terdapat pustaka-pustaka yang diperlukan oleh Windows, device driver, registry, dan program-program esensial yang dibutuhkan oleh Windows untuk berjalan dengan baik.
2. Direktori C:\Program Files
Direktori ini berisikan semua program yang diinstal ke dalam sistem operasi. Semua program yang diinstal akan menulis entry ke dalam registry agar program tersebut dapat dijalankan dalam sistem Windows.
3. Direktori C:\My Documents
Direktori ini berisikan semua dokumen yang dimiliki oleh pengguna sistem.
Sistem operasi Windows dapat berjalan diatas beberapa macam sistem berkas. Setiap sistem berkas memiliki keunggulan dan kekurangan masing-masing. Semua keluarga Windows yang berbasis Windows NT dapat mendukung sistem berkas yang digunakan oleh keluarga Windows 9x, namun hal tersebut tidak berlaku sebaliknya.
Sistem Berkas yang terdapat dalam sistem operasi Windows adalah:
1. FAT 16: Sistem berkas ini digunakan dalam sistem operasi DOS dan Windows 3.1
2. FAT 32: Sistem ini digunakan oleh keluarga Windows 9x.
3. NTFS: Merupakan singkatan dari New Technology File System. Sistem berkas ini adalah sistem berkas berbasis journaling dan dapat digunakan hanya pada keluarga Windows NT. Keunggulan dari sistem berkas ini adalah fasilitas recovery yang memungkinkan dilakukannya penyelamatan data saat terjadi kerusakan pada sistem operasi.
Sistem Berkas pada UNIX (dan turunannya)
Ketika kita login ke UNIX, kita akan ditempatkan di direktori root kita. Direktori root kita dikenal sebagai direktori home kita dan dispesifikasi dengan environment variable yang dinamakan HOME. Environment variable ini menentukan karakteristik dari shell kita dan interaksi pengguna dengan shell tersebut. Environment variable yang umum adalah variabel PATH, yang mendefinisikan dimana shell akan mencari ketika perintah dari pengguna. Untuk melihat daftar environment variable, gunakan saja perintah printenv. Sedangkan untuk mengatur environment variable, gunakan setenv.
Ada beberapa direktori yang umum terdapat dalam instalasi UNIX:
1. Direktori “/” (root)
Direktori ini terletak pada level teratas dari struktur direktori UNIX. Biasanya direktori root ini diberi tanda / atau slash. Direktori ini biasanya hanya terdiri dari direktori-direktori lainnya yang terletak pada level dibawah level direktori root. Berkas-berkas dapat disimpan pada direktori root tetapi usahakan tidak menyimpan berkas-berkas biasa sehingga direktori ini tetap terjaga keteraturannya.
Perubahan penamaan direktori-direktori yang ada pada direktori root akan menyebabkan sebagian besar dari sistem menjadi tidak berguna. Karena sebagian besar dari direktori-direktori ini berisi fungsi-fungsi yang sifatnya kritikal yang dimana sistem operasi dan semua aplikasi memerlukan direktori-direktori ini dengan nama yang sudah diberikan pada awal instalasi. Tetapi kita bisa membuat direktori lain pada level ini. Direktorihome juga bisa ditemukan pada level ini hasil pembuatan oleh administrator sistem.
2. Direktori “/bin”
Direktori ini berisi program-program yang esensial agar sistem operasi dapat bekerja dengan benar. Dalam direktori ini dapat ditemukan perintah-perintah navigasi, program-program shell, perintah pencarian dan lain-lainnya. bin adalah singkatan dari kata binary. Di UNIX, sebuah binary adalah berkas yang dapat dieksekusi. Sebagian besar dari perintah dalam UNIX merupakan binary, perintah-perintah tersebut merupakan program-program kecil yang dapat dieksekusi oleh pengguna. Ada beberapa perintah yang disebut perintah built-in dimana fungsi mereka dikendalikan oleh program shell sehingga mereka tidak beroperasi sebagai binary yang terpisah.
Terkadang direktori bin terhubung ke direktori lain yang dinamakan /usr/bin. Direktori /usr/bin biasanya adalah lokasi sebenarnya dari binary-binary pengguna disimpan.Dalam hal ini, /bin adalah gerbang untuk mencapai /usr/bin.
3. Direktori “/dev”
Direktori ini berisi berkas-berkas alat atau alat I/O. Sistem UNIX menganggap semua hal sebagai berkas. Hal-hal seperti monitor, CD-ROM, printer dan lain-lainnya dianggap hanya sebagai berkas saja oleh sistem operasi. Jika UNIX memerlukan perangkat-perangkat tersebut maka UNIX akan mencarinya ke direktori dev.
4. Direktori “/etc”
Direktori yang dibaca et-see ini berisi beberapa konfigurasi berkas pengguna dan sistem, dan berkas yang ditunjuk sistem sebagai operasi normal seperti berkas kata sandi, pesan untuk hari ini, dan lain-lainnya.
5. Direktori “/lib”
Direktori ini berisi pustaka-pustaka (libraries) yang dibagi (shared). Pustaka ini adalah rutin perangkat lunak (software routines) yang digunakan lebih dari satu bagian dari sistem operasi. Ketika kita menginstalasi perangkat lunak yang baru maka ada pustaka-pustaka baru yang ditambahkan ke direktori lib. Jika pada waktu berusaha menjalankan aplikasi terdapat pesan error, hal ini diakibatkan ada pustaka yang hilang dari direktori lib. Aplikasi-aplikasi di UNIX biasanya memeriksa lib ketika menginstalasi untuk memeriksa apakah pustaka-pustaka yang diperlukan oleh aplikasi sudah tersedia atau belum. Jika sudah tersedia, UNIX biasanya tidak menimpa pustaka tersebut.
6. Direktori “/sbin”
Direktori ini berisi binary-binary juga seperti pada direktori bin.Tetapi,bedanya adalah binary-binary pada direktori ini berhubungan dengan fungsi-fungsi sistem administrasi pada sistem operasi UNIX. Binary-binary ini bukan yang biasa digunakan oleh pengguna tetapi digunakan agar komputer dapat beroperasi secara efisien.
7. Direktori “/usr”
Direktori ini terdiri dari banyak direktori seperti pada direktori root. Direktori ini berisi berkas-berkas yang dapat diakses oleh para pengguna biasa. Struktur dari direktori ini mirip dengan struktur direktori “/”. Beberapa direktori yang terdapat dalam direktori ini berhubungan dengan direktori yang ada di direktori /.
8. Direktori “/var”
Direktori ini berisi data yang bermacam-macam (vary). Perubahan data dalam sistem yang aktif sangatlah cepat. Data-data seperti ini ada dalam waktu yang singkat. Karena sifatnya yang selalu berubah tidak memungkinkan disimpan dalam direktori seperti “/etc”. Oleh karena itu, data-data seperti ini disimpan di direktori var.
Perbandingan antara Windows dan UNIX
Sistem berkas UNIX berbeda dengan sistem berkas Windows (DOS) karena sistem berkas UNIX lebih hebat dan mudah diatur daripada Windows (DOS). Penamaan dalam UNIX dan Windows berbeda. Karena sistem Windows ingin memudahkan pengguna maka sistem mereka mengubah nama menjadi nama yang lebih mudah bagi para pengguna. Contohnya adalah nama folder dalam adalah perubahan dari directory yang masih digunakan oleh UNIX. Penggunaan back slash (\) digunakan untuk memisahkan direktori-direktori dalam Windows, tetapi hal ini tidak ada dalam UNIX. Sistem UNIX menggunakan case sensitive, yang artinya nama suatu berkas yang sama jika dibaca, tetapi penulisan namanya berbeda dalam hal ada satu file yang menggunakan huruf kapital dalam penamaan dan satu tidak akan berbeda dalam UNIX. Contohnya ada berkas bernama berkasdaku.txt dan BerkasDaku.txt, jika dibaca nama berkasnya sama tetapi dalam UNIX ini merupakan dua berkas yang jauh berbeda. Jika berkas-berkas ini berada di sistem Windows, mereka menunjuk ke berkas yang sama yang berarti Windows tidak case sensitive.
Hal lain yang membedakan sistem berkas UNIX dengan Windows adalah UNIX tidak menggunakan drive letter seperti C:, D: dalam Windows. Tetapi semua partisi dan drive ekstra di mount didalam sub-direktori di bawah direktori root. Jadi pengguna tidak harus bingung di drive letter mana suatu berkas berada sehingga seluruh sistem seperti satu sistem berkas yang berurutan dari direktori root menurun secara hierarki.
Macam-macam Sistem Berkas di UNIX
Secara garis besar, sistem berkas di sistem UNIX terbagi menjadi dua, yaitu sistem berkas dengan fasilitas journaling dan yang tidak memiliki fasilitas tersebut

10.Bagaimanakah langkah-langkah dalam proses back-up?

Untuk memperbaiki sistem file dilakukan dengan memeriksa konsistensi dengan cara membandingkan data pada struktur direktori dengan blok data pada disk dan mencoba memperbaiki inkonsistensi. Selain itu juga dapat menggunakan program sistem untuk back up data dari disk ke penyimpan lain (floppy disk, magnetic tape). Perbaikan akan Recover menghilangkan file atau disk dengan restoring data dari backup.