I/O DEVICE
=====
Berdasarkan fungsinya i/o device dibagi jadi 4
1.storage : perangkat penyimpanan. Contohnya adalah disk, tape
2.transmission : perangkat transmisi. Contohnya adalah network card, modem.
3.user-interface : contoh keyboard mouse.
4.specialized device : contoh joystick
berdasarkan transfer datanya
1. block device. Perangkat pada kategori ini menyimpan informasi dalam fixed-block array. Setiap blok memiliki alamat sendiri. Pada perangkat kategori ini, proses baca/tulis blok dapat dilakukan secara independen, artinya satu blok tidak bergantung kepada blok yang lain. Perintah yang dapat diberikan adalah read, write, dan search.
2. character device. Perangkat pada kategori ini mengirimkan dan menerima informasi dalam bentuk character stream. Perintah yang dapat diberikan adalah read dan write. Contoh perangkat pada kategori ini adalah semua perangkat non-disk, antara lain printer, network interface, mouse, dsb.
di dalam i/o device ada yg namanya device controller sebagai penghubung dari cpu ke i/o device. tugasnya adalah mengkonvert dari stream ke block2. trus setelah jadi block, data2 tersebut dichecksum pake EEC. di cek, ada byte yg rusak ato g.
klo ada yg error, ntar di eec (Error-correcting code) (dianggap byte 0 ato sbgnya)
tergantung eec-nya.
memory mapped
> dlm memory setiap control register diisi (di-assign) dengan nomor port I/O, yang berupa integer 8 atau 16 bit. Pada cara yang pertama ini, alamat memori dan nomor port I/O dibedakan tempatnya
dma
> gunanya bwt mempermudah kerja cpu. kerja cpu dalam proses I/O dilakukan oleh dma, jadi tidak perlu ada lagi banyak2 interup oleh cpu (gambar 5-4 hal 277). klo g pake dma, bisa pake busy waiting atau interupt.
didalam dma controller ada register address count dan control. setiap cpu ngasih kerjaan buat baca drive, cpu ngasih jumlahnya juga berapa byte yg akan disimpan. disimpan ke register count. lalu dma menyuruh disk controller untuk mulai baca & langsung disimpan ke main memory. setiap disk controller mentransfer datanya ke main memory. disk controller juga ngasih tau DMA controller, biar register countnya terus berkurang.
cycle stealing : nyuri2 bus untuk transfer data dari device ke memory kalo ga salah, ngeblok CPU dari bus untuk waktu yang singkat
cycle stealing itu dikit2 tapi sering, burst mode itu jarang tapi langsung banyak
word at a time, sama per blok itu, adalah mode operasi transfer data pada bus
cara CPU berkomunikasi sama si controller
> setiap CPU mo ngebaca entah dari memory ato IO port,, pertama taro address yg dibutuhkan di line address (punya bus). panggil READ di control-line (punya bus jg). panggil READ di control-line (punya bus jg). klo pd memory mapped, kan cuma ada 1 memori space (alias digabung,, hlmn 273). jadi tiap memory module & IO device ituh MEMBANDINGKAN address line dgn range address yg dia punya.. klo data tsb berada dlm range yg dia punya, maka dialah yg ngerespon.
Layer I/O
1. Interrupt handlers : berada di level paling bawah, plg dkt dgn hardware. fungsinya buat menangani interrupt.
2. device drivers : handle secara detail apa yg running di devices tsb dan providing uniform interfaces to the rest of the OS (gbr hlm 290)
3. device-independent I/O software : melakukan buffering, error reporting,dll
4. user-space io SW : terdiri dari library procedures sama spooling system
Spooling system : spooling hampir sama kyk buffer. daemon mengatur spooling
spool : menyimpan dalam buffer, mengijinkan program meneruskan operasi seperti biasa
FILE SYSTEMS
=====
File System Layout (gambar 6-11 hal 400)
fungsi2 bagian2nya:
MBR : sbg sektor 0 disk->untuk boot komputer dan mencari partisi yang aktif, di luar partisi
boot block : me-load operating system pada partisi
Super Block : mengandung semua parameter kunci dari file system dan membacanya ke dalam memori
free space mngmt,i-node
Implementing Files
> cara penyimpanan file pada komputer
1. contiguous
2. linked list
beda kalo operasinya dilakukan di memori
> file block itu disimpen dalem storage berupa disk block
> physical block: blok di hd
> file block: urutan blok di file
> jadi dalam disk block ada file block satu file terdiri dari beberapa file block
Linked List with TAble In Memory (FAT)
> merupakan perbaikan cara storage linked list. kan kekurangannya lama kalo operasinya pake disk. data mengenai linked list tadi dipindah dulu di memory supaya operasinya lebih cepat. jadi tiap disk blok menyimpan alamat dari file blok selanjutnya.
- memori yang harus dialokasi sangat besar
Linked LIst allocation dengan pointer
+ ga ada fragmentation
- pembacaan jadi lambat
- yg disimpan di blok jadi bukan 2 lagi seperti di alokasi kontigu(alokasi kontigu-->alamat blok pertama dan jumlah blok) karena yang disimpan adalah pointer next, alamat blok pertama dan ukurannya.
misal ada 20GB disk, trus block size 1KB, maka tabel membutuhkan 20juta entri, untukmasing2 blok.
Implementing directori
> Direktori merupakan list linear dari nama file dengan pointer ke blok
> Direktori menyimpan : list dari fixed size entry,yg terdiri dari file name, structure dari file atribut,disk address
Isu penting yang ada di direktori:
>panjang nama file (gambar 6-17)
cara nge-handlenya:
gambar yg kiri in-line, Tiap entry berisi File entry length,atribut, ama karakter2 nama filenya.
cara ke-2 : in a heap (yg kanan), atribut file yang laen dengan nama filenya dipisahkan. informasi yg berkaitan dengan nama file ditaro di heap (plg bawah)
cara mengenalinya: entri file 1 dihubungkan dengan pointer dengan data panjang filenya
Kekurangan yang Kiri: kalo ada penghapusan file akan ada gap. fragmented gitu kayak yg contigous allocation. cara yang in heap digunakan biar gak fragmented
Shared Files
>sebuah file dapat diakses oleh beberapa user. file systemnya membentuk DAG (Directed Acyclic Graph)
cara melakukan shared file: dgn symbolic linking (soft linking) atau hard linking
hard linking : dengan memberikan pointer pada file yang ditunjuk
misal itu file ownernya C, trus dishare sama B. maka B menunjuk pada file kepunyaan C tadi.
Kekurangan hard linking : kalau C tiba2 menghapus file tersebut, akibatnya B akan menunjuk pada NULL. bila si NULL ini somehow dialokasi oleh sesuatu yang lain,sehingga B mengakses suatu file yang harusnya tidak boleh diakses oleh user B itu.
soft linking : caranya, si user B menyimpan informasi (path) mengenai file kepunyaan C. Jika ingin mengakses file punya C ,user B memanggil informasi path nya misalnya /root/C/C/C/. jadi kalo misalnya C menghapus filenya, maka tidak terjadi hal2 yg tidak diinginkan.
Disk Space Management
Pengertiannya : manajemen ruang kosong, untuk memanage disk space file system mengiris-iris file ke dalam fixed size blok
rumus menentukan block size(hal 411)
kalau mau mengejar disk space utilization yang baik dan data rate yang baik, block size tuh ditetapkan sebesar sekitar 4 kb
performansi berbanding terbalik ama speed ama efisiensi
kalo pengen data rate tinggi, maka uukuran blok nya yg besar (garis gak putus2)
kalo pengen disk utilizationnya tinggi, maka uukuran blok nya yg kecil (garis putus2)
biar dua2ny trpenuhi,ukuran block nya antara 4K ampe 8K
Keeping Track Of Free Block
> Mencari Block Yang Free
bisa 2 cara:
1. Disimpen free block di linked list, atau bitmap. yang bitmap tuh blok isi 1 blok kosong 0. yang linked list hubung2in aja blok kosongnya
disk quota
fungsinya mencegah seorang user menggunakan space terlalu banyak. ada soft limit ada hard limit. Soft limit ini dapat dilampaui, tapi hard limit engga bisa. jika kita sampai pada soft limit, akan diberi warning.
File System Reliability
> seperti mengetes robustness dari FS. berkaitan dengan backup(416) sama konsistensi (421)
cara melakukan backup
Backup bisa berupa full dump dan incremental dump. full- backup semua data, incremental- backup yang berubah saja(modified). tapi sebenarnya cara melakukan incremental dump itu : dengan melakukan full dump secara berkala juga. full dump dilakukan sebelum incremental dump.
incremental: setiap ada yg modified
full dump: terjadwal sebulan sekali misalnya
strategi melakukan dump dari disk ke tape
> physical dump : menulis semua block ke tape secara berurut mulai dari blok 0. keuntungan: simple dan cepat. kekurangan : nge-dump blok kosong, tidak bisa merestore individual file berdasarkan request, nge-dump bad block
> logical dump : dimulai bukan dari blok 0, tapi dari direktori yg diinginkan,lalu secara rekursif melakukan dump file dan direktori di anak2nya
(gambar 6-24 sama 6-25)
6-25 (a)
(a)dump 'semua direktori' dan semua file yang modified
caranya :
- mark 'semua direktori' dan semua file yang modified
- lakukan unmark terhadap direktori yang mana tidak ada anaknya punya file yg modified. contoh efeknya: 10, 11 jadi di unmark, karena 12 13 gak modified
- dump semua direktori yang dimark
- dump semua file yang dimark
File System Consistency
Kalo misalnya xp crash, terus di-reset kan suka ada pengecekan konsistensi. hal itu perlu dilakukan karena ada kemungkinan sebuah blok sedang dibaca,dimmodify, terus lagi ditulis pas kita crash.
intinya: mark- unmark yg gak akan di dump- dump direktori-dump file.
consistency checker ni diperlukan karena ketika crash itu file sedang dalam proses read/modify/write tapi belum selesai. nanggung-> akibatnya file system berada pada keadaan inkonsisten
gambar 6-26
(a) sistem 'sudah konsisten'. kalo block in use nya 1 artinya block terpakai. kalo block in use nya 0 artinya block tidak terpakai. kalo free block use nya 1 artinya block bebas. dan sebaliknya.
kalau mau konsisten : if blok in use nya =1 then free block nya harus 0
(b) ada keanahan
di blok nomer 2. block in use nya 0 free block nya juga 0. ini bisa terjadi gara2 crash gitu. ada missing block.
agar konsisten, mengubah free block di block 2 itu menjadi 1. hal ini menimbulkan kerugian pada sisi user yaitu user gak bisa menemukan file yg dicari misalnya. tp buat file system sih gpp, yang penting sistem tetap konsisten
(c)di block 4 -> free block nya ada 2. solusinya me-rebuild free list itu sehingga angka yang ada cuman 1 sama 0.
(d) block in use nya yang ada angka 2 nya. solusinya dengan mengkopi konten block 5 ke sebuah free block lain. lalu kontent itu diisikan pada salah satu file. problemnya : salah satu file akan missing. tp yang penting sistem tetap konsisten.
SECURITY
=====
Otentikasi User
> proses yg dilakukan OS untuk mengetahui siapa user-nya. Pada umumnya, menuliskan id dan password. Pada windows password akan ditulis dengan karakter asterix. Pada unix, password tidak memperlihatkan apa2.
gambar 9-4 hal 593
a-> login yg sukses
b -> skemanya tidak baik, soalnya feedbacknya terlalu jelas kalo IDnya itu salah
c-> lebih baik, C yg g ngasi feedback, letak kesalahnya itu di login name, password, ato kombinasinya gt2
cara crackers break in ke dalam sistem
cara paling sederhana -> brute force. coba kombinasi login dan password sampai berhasil
cara berikutnya -> war dialer, mencoba dial random order no telp dan try to detect it. war dialer bs pake dial-up, pake fax, pake telegraf atau lainnya yg brhubungan dgn telephone line.
cara war dialler berikutnya pake IP. ping (buat tes nyala internet) dan telnet (mekanisme membuka suatu port utk trhubung ke komputer yg kita ping).
UNIX password security
> file pasangan login-password disimpen di disk. klo UNIX itu pasangan login-password udah di enkripsi. jadi yang diperiksa bukannya password doank, tp password yg udah dikenai fungsi yg dicek. encrypted password itu yang disimpen di disk. jadi yg bisa liat filenya pun g tau password sebenernya apa.
ada lagi cara yg lebih secure : skema morris thompson dimana pake n-bit angka random atau disebut salt, yg dienkripsi itu angka random di belakang password. gambar 9-6 hal 598
+ klo biasa crackers kan nebaknya login name, pass dan fungsi enkripsi. klo skrg dia lebih susye, soale harus nebak juga dari angka 1-2^n
improving password security
4 poin di hal 598
one time password
> konsep awalnya password itu skali pake buang. tp klo passwordnya banyak kan repot ngapalinnya tuh. digunakan skema leslie lamport (hal 599). pake fungsi y = f(x).
y = f(x) dimana bila diketahui x gampang nyari y, tp g sebaliknya
Contoh :
passwordnya itu s
n = 4
password pertamanya itu berarti s yg dkenai f 4 kali
berikutnya P2 dikenai 3 kali
P3 2 kali
P4 1kali
walaupun p1 diketahui p2 susah dicari
p1 = f(p2)
rufio_2507: tp klo tau p2 gampang tau p1
cara kerja skemanya, contoh :
server itu punya password P0
P0 kan = f(p1) ni
nah trus ada integer juga yg dipake buat counter
jadi pertamanya password=p0 dan i=1
maksudnya i=1 itu password berikutnya itu p1
pada saat user login
dia nulis nama login ama password
server trus tau nih, "wah ini si A ni, i-nya dia 1"
misalnya passwordnya si A "okok"
jadi server langsung compute P1=f(f(f(f(okok))))
nah server tinggal nyamain deh ama P0 awal
kan udah diinisialisasi tuh
cek apakah P0=f(P1)
P1 dengan s-nya okok
klo sama brarti login diperbolehkan
trus server ganti lagi, yang P0 inisialisasi paling awal itu skrg diganti ama P1
serangan dibagi 5
1. trojan horse versi inside = yaitu attacker ngikut ke program yg gak brbahaya
2. login spoofing = attacker membuat suatu layar login palsu yg sbnarnya adlh shell script, lalu stlh user masukin pass, baru layar login sbenarnya ditampilin
3. logic bombs = attacker membuat suatu algoritma tertentu yg akan aktif pada kondisi waktu tertentu
4. trap doors = attacker membuat suatu jalan pintas pada sistem dengan cara memodifikasi kode dan menambahkan kode baru yg akan memudahkan memsauki sistem
5. buffer overflow = attacker memenuhi memori dengan datastream secara terus menerus sehingga buffer gak bs nampung, jdny buffer tumpah dan membuat buffer lainnya jd rusak.
kerugian kerusakan buffer buffer itu kan bwat nampung datastream memori jd klo buffernya tumpah, data yg ada di buffer di bs ilang. data jd corrupted gak bs dipake
attack from outside the system
1. information
2. infection
Tipe infeksi
1. virus = program standalone yg bs mnggandakan diri sndiri klo dieksekusi dan memiliki kode2 berbahaya utk sistem.
1.1. companion : virus yg ngikut aktif klo suatu program lain dieksekusi (ngikut2).
1.2. executable = virus yg aktif klo dieksekusi (standar lah..)
1.3. memory resident = virus yg aktif di memory dan bisa mengatur jalannya system call
1.4 boot sector = virus yg nongkrong di boot sector en aktif klo komputer di boot
1.5. device driver = virus yg nyamar jd suatu driver sistem jd klo pas boot bs aktif krn dianggap modul driver yg pnting
1.6. macro = virus tipe kecil yg embedded ke file. biasanya embedded ke tipe file office (word, ppt, xls)
1.7 source code = virus yg msh brbentuk source mentah. jd sbuah program pengeksekusinya cm tinggal include itu source en tinggal jalanin di programnya
2. worm : definisinya sama kek virus, cm worm gak prlu dieksekusi. ktika memnuhi kondisi trtentu, worm bkl otomatis aktif utk mginfeksi sistem.
3. Trojan Horse versi outside : tipe ini bukan bwat pnginfeksi, tp cm jd tmpt nampung virus/worm yg bkl mnginfeksi. istilahnya pnipu2nya.
4. Rootkit/Exploit = tipe ini spesifik cm nyerang kernel sistem. biasanya gak brbahaya, cm annoying aja, en susah bwat diberantas, soalnya antivirus pun gak mampu utk mncapai level kernel
5. Mobile Code = suatu program yg dijalankan utk membantu program yg sedang dieksekusi. contohnya web applet. klo kita mo buka suatu aplikasi java di web, mo gak mau kita hrs jalanin java applet. mobile code jd brbahaya klo java applet udah disisipin ama virus
utk mncegah hal mobile code menginfeksi system, ada 3 metode penanganannya
1. sandboxing = membagi virtual address yg dipakai applet mnjadi dua bagian
2. interpretation = applet dijalankan memakai interpreter bwat ngjagain applet biar gak mlakukan hal yg aneh2
3. code signing = applet di-mark oleh web jika itu applet beneran mmpunyai sertifikat autentikasi yg valid dr vendornya. jd klo ada applet, web ngliat dulu itu dah di-mark valid apa blm. klo dah dimark, lngsng dijalanin, klo gak dimark, lakukan metode 1 atau 2
Tipe informasi
1. keylogger = program yg brtujuan utk mncatat sgala aktivitas keyboard yg ditekan
2. browser hijacker = program yg mnginfeksi web browser dan mngarahkan browser ke suatu situs jahat ato dagang
3. spyware = program yg tujuannya bwat mencatat sgala aktivitas yg dilakukan user pada OS-nya
4. dialer = program yg tujuannya mngirim informasi yg didapat keylogger/spyware ke attacker dgn cara memakai dial-up/phone-line sjenisnya
5. backdoor = program yg tujuannya mncari klemahan sistem dgn cara mencari celah2/bug2 pd sistem
cara krja antivirus
1. scanning = goat file method, fuzzy search, database-minded, heuristic
2. integrity checking, anitivirus mngecek suatu properti unik dr file yaitu checksum, bila file tlah trinfeksi maka checksum brubah (629 632 633)
3. behavioral checking = antivirus memantau tiap aktivitas yg dilakukan OS, jika OS mlakukan hal yg aneh2, lngsng diperiksa
cara virus mnyebar
1. download = attacker mnaro virus di internet, lalu ada org yg mndownloadnya dan mngeksekusinya
2. removable media = komputer yg trkena virus mnginfeksi media yg masuk, lalu media di-plug ke komputer lain, jdny komputer lain itu jg kna
3. e-mail attachment = user mmbuka dan mngeksekusi attachment dr e-mail (malware)
Cara pencegahan terinfeksi
1. pilih OS yg high-security, strong boundary user-kernel mode, dan separate user-login administration
2. hanya install sofwer dr vendor yg reliable
3. pakai antivirus dgn baik (update)
4. hati2 dalam mngeksekusi suatu file/attachment
5. tambah pngalaman (baca buku, googling, dll)
cara pnanggulangan jika dah trlanjur kna
1. jika trhubung LAN, sgera cabut kabel utk mncegah malware mnginfeksi jaringan
2. boot dari write-protected drive (misal CD), trus hapus file suspect virus (utk expert)
3. boot dr CD trus scan pake antivirus
4. boot dr CD, back-up data, lalu recover
5. install ulang ato ganti OS yg lain
jenis mekanisme proteksi
1. access control list (ACL) = sistem mekanisme yg mncatat hak akses tiap user
2. capability list
klo ACL gak diproteksi en disimpen di kernel space
klo C-list, bs disimpen di kernel space atopun user space
cara nyimpen di kernel space dibaig dua, disimpen di word bytes. satu lg disimpen biasa kyk ACL