Soal pemrograman bahasa C

download Soal pemrograman bahasa C

of 8

description

contoh Soal pemrograman bahasa C

Transcript of Soal pemrograman bahasa C

1. fragmentasiPenyimpanan di komputer, fragmentasi adalah sebuah fenomena di ruang penyimpanan yang digunakan secara tidak efisien, mengurangi kapasitas penyimpanan. Istilah ini juga digunakan untuk menunjukkan tempat yang gersang itu sendiri.Ada tiga bentuk yang terkait dengan fragmentasi: fragmentasi eksternal, internal fragmentasi, dan data fragmentasi. Berbagai skema alokasi penyimpanan pameran satu atau beberapa kelemahan. Fragmentasi dapat diterima di kembali untuk peningkatan kecepatan atau kesederhanaan. Fragmentasi internalFragmentasi internal terjadi saat penyimpanan dialokasikan tanpa pernah ingin menggunakannya. [1] Ini adalah ruang-siakan. Sementara ini tampaknya bodoh, sering diterima dalam kembali untuk meningkatkan efisiensi atau kesederhanaan. Istilah internal merujuk pada kenyataan bahwa unusable penyimpanan yang dialokasikan di dalam wilayah namun tidak sedang digunakan.Misalnya, dalam banyak sistem file, setiap file selalu dimulai pada awal sebuah cluster, karena ini simplifies organisasi dan memudahkan tumbuh file. Setiap ruang kiri atas antara terakhir byte dari file yang pertama dan byte berikutnya dari cluster adalah bentuk internal disebut fragmentasi file atau kendur kendur ruang. [2] [3]Demikian pula, sebuah program yang mengalokasikan satu byte data seringkali banyak yang dialokasikan untuk tambahan byte metadata dan berpihak. Spasi ini juga fragmentasi internal.Contoh lainnya: Inggris teks sering disimpan dengan satu karakter di masing-masing 8-bit byte meskipun standar ASCII encoding yang paling signifikan sedikit setiap byte selalu nol. Bit yang digunakan adalah bentuk fragmentasi internal.Serupa dengan meninggalkan masalah daya cipta unused muncul di banyak daerah lain. Misalnya, alamat IP hanya dapat dimiliki dalam ukuran blok tertentu, sehingga banyak IP yang dilindungi undang-undang, tetapi tidak sedang digunakan. Ini adalah kontribusi terhadap kekurangan alamat IPv4.Tidak seperti jenis fragmentasi, fragmentasi internal yang sulit untuk kembali, biasanya cara terbaik untuk melepaskannya adalah dengan perubahan desain. Misalnya, dalam alokasi memori dinamis, memori internal renang secara drastis memotong fragmentasi oleh menyebarkan overhead ruang yang lebih besar atas jumlah benda. Fragmentasi eksternalFragmentasi eksternal adalah fenomena yang gratis menjadi dibagi menjadi beberapa bagian kecil dari waktu ke waktu. [1] Ini adalah kelemahan dari beberapa algoritma alokasi penyimpanan, terjadi ketika aplikasi dan mengalokasikan deallocates ( frees) dari daerah penyimpanan berbagai ukuran, dan alokasi oleh algoritma merespon meninggalkan dialokasikan dan deallocated daerah interspersed. Hasilnya adalah bahwa, walaupun gratis tersedia, maka secara efektif unusable karena dibagi menjadi potongan-potongan yang terlalu kecil untuk memenuhi kebutuhan dari aplikasi. Istilah eksternal merujuk pada kenyataan bahwa unusable penyimpanan yang dialokasikan di luar daerah.Misalnya, dalam alokasi memori dinamis, blok 1000 byte mungkin diminta, tetapi yang terbesar adalah berdekatan blok ruang kosong yang hanya 300 byte. Bahkan jika terdapat sepuluh blok 300 byte dari ruang kosong, yang dipisahkan oleh daerah dialokasikan, satu masih tidak dapat mengalokasikan yang diminta blok 1000 byte, dan alokasi permintaan akan gagal.Fragmentasi eksternal juga terjadi di banyak file sebagai sistem file yang berbeda ukuran dibuat, mengubah ukuran, dan akan dihapus. Efek lebih buruk lagi adalah jika sebuah file yang dibagi menjadi beberapa bagian kecil akan dihapus, karena ini mirip daun kecil daerah bebas spasi. Fragmentasi dataData fragmentasi terjadi ketika sebuah bagian dari data dalam memori rusak ke dalam banyak potongan-potongan yang tidak saling berdekatan. Hal ini biasanya hasil dari mencoba untuk memasukkan benda yang besar ke dalam penyimpanan yang telah menderita fragmentasi eksternal.Misalnya, file dalam file sistem biasanya diatur dalam unit yang disebut blok atau kelompok. Ketika sebuah file sistem yang dibuat, ada ruang untuk menyimpan file blok bersama contiguously. Hal ini memungkinkan untuk cepat berurut membaca dan menulis file. Namun, seperti file ditambahkan, dihapus, dan berubah dalam ukuran, ruang bagi menjadi eksternal, hanya meninggalkan lubang kecil di tempat yang tepat untuk data baru. Bila file yang baru ditulis, atau jika file yang sudah ada diperpanjang, maka data baru blok pasti tersebar, karena perlambatan akses untuk mencari waktu dan pemutaran penundaan dari membaca / menulis head, dan overhead incurring tambahan untuk mengelola tambahan lokasi. Hal ini disebut fragmentasi file system.Sebagai contoh lain, jika node yang terhubung daftar dialokasikan turut dalam memori, ini akan meningkatkan lokalitas dari referensi dan data cache meningkatkan kinerja selama traversal dari daftar. Jika memori renang gratis bagi ruang adalah, baru node akan tersebar di seluruh memori, meningkatkan jumlah cache misses.Seperti compaction dapat menghilangkan fragmentasi eksternal, data fragmentasi dapat dihapuskan oleh rearranging data terkait agar buah yang saling berdekatan. Misalnya, pekerjaan utama dari defragmentation alat ini untuk mengatur ulang blok pada disk, sehingga setiap file blok yang berdekatan. Paling defragmenting utilitas juga berusaha untuk mengurangi atau menghilangkan fragmentasi ruang kosong. Beberapa pindah pengumpul sampah terkait juga akan memindahkan objek dekat bersama (disebut Memadatkan) untuk meningkatkan kinerja cache.2. SegmentasiKonsep segmentasi adalah user atau programmer tidak memikirkan sejumlah rutin program yang dipetakan ke main memori sebagai array linier dalam byte tetapi memori dilihat sebagai kumpulan segmen dengan ukuran berbeda-beda, tidak perlu berurutan diantara segment tersebut.Segmentasi adalah skema manajemen memori yang memungkinkan user untuk melihat memori tersebut. Ruang alamat logika adalah kumpulan segmen. Setiap segmen mempunyai nama dan panjang. Spesifikasi alamat berupa nama segmen dan offset. Segment diberi nomor dan disebut dengan nomor segmen (bukan nama segmen) atau segment number. Segmen dibentuk secara otomatis oleh compiler.Sebuah program adalah kumpulan segmen. Suatu segmen adalah unit logika seperti program utama, prosedur, fungsi, metode, obyek, variabel lokal, variabel global, blok umum, stack, tabel simbol, array dan lain-lain. Pandangan user terhadap sistem segmentasi dapat dilihat pada Gambar Arsitektur SegmentasiAlamat logika terdiri dari dua bagian yaitu nomor segmen (s) dan offset (d) yang dituliskan dengan (nomor segmen, offset) Pemetaan alamat logika ke alamat fisik menggunakan tabel segmen (segment table), terdiri dari Segmen basis (base) berisi alamat fisik awal Segmen limit merupakan panjang segmenSeperti tabel page, tabel segmen dapat berupa register atau memori berkecepatan tinggi. Pada program yang berisi sejumlah segmen yang besar, maka harus menyimpan tabel page di memori. Segment-table base register (STBR) digunakan untuk menyimpan alamat yang menunjuk ke segment table. Segment-table length register (STLR) digunakan untuk menyimpan nilai jumlah segmen yang digunakan program. Untuk alamat logika (s, d), pertama diperiksa apakah segment number s legal (s < STLR), kemudian tambahkan segment number ke STBR, alamat hasil (STBR + s) ke memori dari segment table. Perangkat keras yang digunakan pada sistem segmentasi dapat dilihat pada Gambar 7-21. Pemetaan dari alamat logika ke alamat fisik membutuhkan 2 acuan memori untuk setiap alamat logika. Hal ini akan menurunkan kecepatan sistem dengan faktor 2. Solusi standard yang digunakan adalah dengan cache (atau associative register) untuk menyimpan entri tabel segmen yang sering digunakan. Pemetaan alamat logika ke alamat fisik dengan menggunakan tabel segmen dapat dilihat pada Gambar 7-22. Misalnya alamat logika dengan nomor segment 0 offset 88 akan dipetakan ke alamat fisik 1400 + 88 = 1488 karena offset < limit (88 < 1000). Alamat logika dengan nomor segment 1 offset 412 akan terjadi error karena offset > limit (412 > 400). Alamat logika dengan nomor segment 2 offset 320 akan dipetakan ke alamat fisik 4300 + 320 =4620 karena offset < limit (320 < 400).

Dimulai dengan model 80386, microprocessor Intel menampilkan translasi alamat dengan 2 cara berbeda, yang disebut real mode dan protected mode. Real mode untuk memelihara kompatibilitas prosesor dengan model yang lebih lama dan untuk OS agar dapat melakukan bootstrap. Segmentation RegistersLogical address terdiri atas dua bagian : segment identifier dan sebuah offset yang menunjukkan alamat yang bersangkutan pada segment. Segment identifier adalah sebuah 16-bit field yang disebut segment selector. Untuk mempermudah memperoleh segment selectors dengan cepat, prosesor menyediakan segmentation register yang tujuannya hanya untuk memegang segment selectors. Ada enam segmentation register : cs, ss, ds, es, fs, dan gs. Segment DescriptorSetiap segment direpresentasikan dengan 8-byte segment descriptor yang menggambarkan karakteristik segment. Segment descriptor disimpan pada Global Descriptor Table(GDT) atau pada Local Descriptor Table(LDT). Segment SelectorsUntuk mempercepat pengubahan dari logical address ke linear address, Intel menyediakan nonprogrammable register tambahan untuk setiap dari 6 programmable segmentation register. Setiap segment selector di-load pada sebuah segmentation register, segment descriptor yang bersangkutan di-load dari memori ke nonprogrammable CPU register yang bersesuaian. Jadi, pengubahan dari logical address ke linear address dilakukan tanpa mengakses GDT atau LDT yang berada pada memori utama. Akses ke GDT atau LDT hanya diperlukan bila isi dari segmentation register berubah. Setiap segment selector mengandung hal-hal berikut :- Sebuah index 13-bit yang menunjukkan masukan segment descriptor yang berhubungan yang terdapat pada GDT atau LDT.- Sebuah TI (tabe indicator) flag yang menunjukkan apakah segment descriptor terdapat pada GDt (Ti = 0) atau pada LDT (TI = 1).- Sebuah RPl (requestor privilege level) 2-bit field, yang membuat current privilege level cPu tepat saat segment selector yang berhubungan di-load ke register cs. Segmentation UnitSegmentatipn Unit melakukan operasi-operasi berikut :- Memeriksa TI dari segment selector, untuk memutuskan apakah descriptor table berada pada segment descriptor.- Menghitung alamat dari segment descriptor dari index filed segment selector.- Menambahkan ke Base field dari segment descriptor, offset dari logical address, sehingga diperoleh linear address