Tampilkan postingan dengan label orkom. Tampilkan semua postingan
Tampilkan postingan dengan label orkom. Tampilkan semua postingan

Senin, 19 Juni 2017

NILAI TUGAS MANDIRI (PRAKTIKUM 13)


NILAI KELOMPOK B (praktikum 13)

1. Dimas Adi Pratama - 064001600003
2. Muhamad Ichsan G. - 064001600023

Orkom & S.O.
1. Nilai Praktikum dan laporan 1 - 12 = 96,6
2. Nilai TM 1 orkom = 95
3. Nilai TM 2 orkom = 90

Nilai rata-rata = (96,6 + 95 + 90)/3 = 93,8

Jarkom
1. Nilai Praktikum dan laporan 1-12 = 94,6
2. Nilai TM jarkom = 75

Nilai rata-rata = (94,6+75)/2= 84,8

Scanning Kartu Praktikum

Kartu milik Dimas Adi P.



Kartu milik M. Ichsan G.









Sabtu, 17 Juni 2017

TUGAS MANDIRI 2 ORKOM PROGRAM THREAD






LAPORAN TUGAS MANDIRI
ORGANISASI KOMPUTER DAN SISTEM OPERASI
PROGRAM THREAD

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNTXhFj2NfpdkQzsGA6_vqYtcCBZdJx9zJHuYHzBH0PjdBJpoXnHoHveuHdm_pttfLqiFpjSHoN0LMWp6lM4Ce0yK4UitO55S90y93J0qiGRSDbAEXya7Jz4k4jU_pZmlpMvoCR6OOXgk/s1600/logo+trisakti.jpg





Disusun Oleh Kelompok B :

MUHAMAD ICHSAN G (064001600023)
 DIMAS ADI PRATAMA (064001600003)


Teknik Informatika
Fakultas Teknologi Industri
Universitas Trisakti
Jakarta – Indonesia
2017


Tujuan

Laporan ini dibuat untuk menyelesaikan praktikum sebelas matakuliah Organisasi computer dan Sistem Operasi. Selain itu, hal ini juga beguna sebagai panduan umum penggunaan fungsi thread terminal pada operasi sistem linux.


Teori Percobaan

Ketika pertama kali dikembangkan, Linux tidak didukung dengan threading di dalam kernelnya, tetapi dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan melalui clone() system calls. Sekarang Linux mendukung penduplikasian proses menggunakan system call clone() dan fork(). Clone() mempunyai sifat mirip dengan fork(), kecuali dalam hal pembuatan copy dari proses yang dipanggil dimana ia membuat sebuah proses yang terpisah yang berbagi address space dengan proses yang dipanggil. Pembagian address space dari parent processmemungkinkan cloned task bersifat mirip dengan thread yang terpisah. Pembagianaddress space ini dimungkinkan karena proses direpresentasikan di dalam Kernel Linux. Di dalam Kernel Linux setiap proses direpresentasikan sebagai sebuah struktur data yang unik. Jadi, daripada menciptakan yang baru maka struktur data yang baru mengandung pointer yang menunjuk ke tempat dimana data berada. Jadi ketika fork() dipanggil, proses yang baru akan tercipta beserta duplikasi dari segala isi di struktur data di parent process, namun ketika clone() dipanggil, ia tidak menduplikasi parent processnya tetapi menciptakan pointer ke struktur data padaparent process yang memungkinkan child process untuk berbagi memori dan sumber daya dari parent processnya. Project LinuxThread menggunakan system call ini untuk mensimulasi thread di user space. Sayangnya, pendekatan ini mempunyai beberapa kekurangan, khusunya di area signal handling, scheduling, dan interprocess synchronization primitive.
Untuk meningkatkan kemampuan Thread Linux, dukungan kernel dan penulisan ulang pustaka thread sangat diperlukan. Dua project yang saling bersaing menjawab tantangan ini. Sebuah tim yang terdiri dari pengembang dari IBM membuat NGPT (Next Generation POSIX Threads). Sementara pengembang dariRed Hat membuat NPTL (Native POSIX Thread Library).Sebenarnya Linux tidak membedakan antara proses dan thread. Dalam kenyataannya, Linux lebih menggunakan istilah task dibandingkan proses dan thread ketika merujuk kepada pengaturan alur pengontrolan di dalam program.

CARA PERCOBAAN

  1. Buka terminal pada Linux


  1. Buka file yang sudah dibuat dengan cara tulis nano threadtm2.c


  1. Tulis sourcodenya seperti gambar berikut

#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

/*  
Struktur dibawah ini mengandung informasi yang dibutuhkan untuk mengakses fungsi dotprod untuk mengakses data yang diinputnya dan menaruh outputnya kedalam struktur.
Struktur ini tidak berubah dari bentuk sekuensial. Program ini adalah program thread yang mengeluarkan output dari variabel mutexnya
*/

typedef struct
{
  double      *a;
  double      *b;
  double     sum;
  int     veclen;
} DOTDATA;

/* Mendefinisikan variabel yang bisa diakses secara global atau member variabel dan jg mutex*/

#define NUMTHRDS 10
#define VECLEN 1000
  DOTDATA dotstr;
  pthread_t callThd[NUMTHRDS];
  pthread_mutex_t mutexsum;

/*
Fungsi dotprod diaktifkan ketika thread itu telah dibuat.
Seperti sebelumnya, semuainput untuk rutin ini diperoleh dari struktur dengan tipe DOTDATA dan semua output dari fungsi ini ditulis kedalam struktur ini. Keuntungan dari keluaran ini adalah bagi program multithread: ketika thread dibuat kita melewati satu argumen untuk fungsi yg diaktifkan biasanya argumen ini adalah angka thread. Semua informasi lainnya yang dibutuhkan oleh fungsi diakses dari struktur global.
*/

void *dotprod(void *arg)
{

/* Mendefinisikan dan menggunakan local variabel demi kemudahan*/

  int i, start, end, len ;
  long offset;
  double mysum, *x, *y;
  offset = (long)arg;
    
  len = dotstr.veclen;
  start = offset*len;
  end   = start + len;
  x = dotstr.a;
  y = dotstr.b;

/*
Perform the dot product and assign result
to the appropriate variable in the structure.
*/
  mysum = 0;
  for (i=start; i<end ; i++)
   {
     mysum += (x[i] * y[i]);
   }

/*
Lock a mutex prior to updating the value in the shared
structure, and unlock it upon updating.
*/
  pthread_mutex_lock (&mutexsum);
  dotstr.sum += mysum;
  printf("Thread bagian %ld melakukan %d untuk %d=\nJumlah=%f\nTotal=%f\n\n",offset,start,end,mysum,dotstr.sum);
  pthread_mutex_unlock (&mutexsum);

  pthread_exit((void*) 0);
}

/*
The main program creates threads which do all the work and then
print out result upon completion. Before creating the threads,
The input data is created. Since all threads update a shared structure, we
need a mutex for mutual exclusion. The main thread needs to wait for
all threads to complete, it waits for each one of the threads. We specify
a thread attribute value that allow the main thread to join with the
threads it creates. Note also that we free up handles  when they are
no longer needed.
*/

int main (int argc, char *argv[])
{
long i;
double *a, *b;
void *status;
pthread_attr_t attr;

/* Assign storage and initialize values */

a = (double*) malloc (NUMTHRDS*VECLEN*sizeof(double));
b = (double*) malloc (NUMTHRDS*VECLEN*sizeof(double));
for (i=0; i<VECLEN*NUMTHRDS; i++) {
 a[i]=1;
 b[i]=a[i];
 }

dotstr.veclen = VECLEN;
dotstr.a = a;
dotstr.b = b;
dotstr.sum=0;

pthread_mutex_init(&mutexsum, NULL);
        
/* Buat thread untuk melakukan dotprodak */
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

for(i=0;i<NUMTHRDS;i++)
 {
 /* Setiap thread bekerja dalam himpunan data yang berbedaEach thread works on a different set of data.
  * Offsetnya dispesifikasikan oleh 'i'. Ukuran datanya tiap thread diindikasikan oleh VECLEN
  */
  pthread_create(&callThd[i], &attr, dotprod, (void *)i);
  }

pthread_attr_destroy(&attr);
/* Tunggu thread lainnya*/

for(i=0;i<NUMTHRDS;i++) {
 pthread_join(callThd[i], &status);
 }
/* Setelah bergabung, print output hasilnya dan bersihkan.*/

printf ("Sum =  %f \n", dotstr.sum);
free (a);
free (b);
pthread_mutex_destroy(&mutexsum);
pthread_exit(NULL);
}

  1. Keluar dari editor dan save
  2. Compile file threadtm2.c


  1. Jalankan thrdcreat1.c












  1. lihat outputnya


  1. Selesai



Data – Data


KESIMPULAN
          
Thread merupakan sebuah alur kontrol proses yang dapat dijadwalkan pengeksekusiannya oleh sistem operasi. Selanjutnya, bayangkan sebuah program main mempunyai berbagai prosedur (fungsi) dan fungsi-fungsi tersebut dapat dijalankan secara serentak dan atau bebas dijalankan oleh sistem operasi. Dan itulah yang disebut sebagai multithread.

Kamis, 15 Juni 2017

LAPORAN TUGAS MANDIRI 1 ORKOM



LAPORAN TUGAS MANDIRI
ORGANISASI KOMPUTER DAN SISTEM OPERASI
BAHASA RAKITAN

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNTXhFj2NfpdkQzsGA6_vqYtcCBZdJx9zJHuYHzBH0PjdBJpoXnHoHveuHdm_pttfLqiFpjSHoN0LMWp6lM4Ce0yK4UitO55S90y93J0qiGRSDbAEXya7Jz4k4jU_pZmlpMvoCR6OOXgk/s1600/logo+trisakti.jpg





Disusun Oleh Kelompok B :

MUHAMAD ICHSAN G (064001600023)
DIMAS ADI PRATAMA (064001600003) 


Teknik Informatika
Fakultas Teknologi Industri
Universitas Trisakti
Jakarta – Indonesia
2017


Tujuan

Laporan ini dibuat untuk menyelesaikan tugas mandiri pertama matakuliah Organisasi computer dan Sistem Operasi. Selain itu, hal ini juga beguna sebagai panduan umum penggunaan bahasa rakitan dengan menggunakan turbo assembly


Teori Percobaan


Bahasa rakitan atau lebih umum dikenal sebagai Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali mikro, dan perangkat lainnya yang dapat diprogram. Bahasa rakitan mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu. Dengan demikian, portabilitas bahasa rakitan tidak dapat menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi. Namun, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.

Pada bahasa rakitan, programmer umumnya menggunakan sebuah program utilitas yang disebut sebagai perakit (bahasa Inggris: assembler) yang digunakan untuk menerjemahkan kode dalam bahasa rakitan tersebut ke dalam kode mesin untuk perangkat keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya akan diterjemahkan menjadi sebuah instruksi mnemonic dalam kode mesin, berbeda halnya dengan kompiler pada bahasa pemrograman tingkat tinggi yang menerjemahkan sebuah perintah menjadi sejumlah instruksi dalam kode mesin.

Beberapa perangkat lunak bahasa rakitan terkenal biasanya menyediakan tambahan fitur untuk memfasilitasi proses pengembangan program, mengontrol proses perakitan, dan alat bantu pengawakutuan (debugging).


CARA PERCOBAAN

  1. Karena tasm hanya bisa digunakan OS 32 bit maka kita install aplikasi tambahan yaitu DOS box.

  1. Extrak file tasm ke directory C:/















  1. Sourcode
  1. Buka Dos box


  1. Lakukan perintah “mount c: c:\”


  1. Lakukan perintah “ C:”


  1. Lakukan perintah “cd tasm\bin” untuk masuk ke folder bin


  1. Lakukan perintah “tasm namafile.asm” untuk mengcomplie



  1. Lakukan perintah “tlink namafile.obj”


  1. Lakukan perintah “dir namafile.*



  1. Lakukan perintah “namafile” untuk menjalankan program dan lihat hasilnya



  1. selesai


Data – Data


KESIMPULAN
          

Dengan menggunakan sourcode tersebut maka kita bisa menampilkan warna yang sudah disusun. Maka dari itu tugas ini juga dapat menyelesaikan tugas mandiri organisasi komputer dalam menyusun suatu program berdasarkan bahasa Assembly dengan minimal 125 baris. Hal tersebut dapat menambah pengalaman dan kemampuan kita dalam memprogram dengan bahasa rakitan tersebut.