programing/OS
-
[Linux] processprograming/OS 2018. 7. 10. 10:38
안녕하세요, Einere입니다.process와 thread에 대해 배우신 분들이 많을것 같습니다.오늘은 그 중에서, process에 대해 포스팅 하려고 합니다. process concept process : an instance of running program.프로세스는 실행중인 프로그램의 한 인스턴스입니다.우리가 자주 사용하는 인터넷 익스플로러, 크롬, 워드, 한글, 롤 등등 모두, 실행을 하게 된다면 프로세스가 생성됩니다.또한 프로세스는 각자 고유한 id를 가집니다. process in memory 컴퓨터에서 프로그램을 실행시킨다면 disk에서 memory로 해당하는 data가 load됩니다.그리고 해당 process는 program counter, stack, data, text 등등의 data를..
-
[Linux] File System Implementationprograming/OS 2018. 6. 23. 21:10
안녕하세요, Einere입니다. 이번 포스팅은 과제로 수행했던 File System Implementation입니다. 가상의 Disk를 생성 후, Block단위로 읽고 쓰고 지우는 등의 동작이 가능합니다. 기본적은 file system 구성입니다. 아래는 실제로 구현한 기능들입니다.FileSysInit - file system initialize SetInodeBitMap - set specific index's value to 1 at inode bitmapResetInodeBitMap - set specific index's value to 0 at inode bitmapGetInode - get specific inode at inode listPutInode - set specific inode ..
-
[Linux] Disk Allocation Methodprograming/OS 2018. 6. 16. 18:56
안녕하세요, Einere입니다.오늘은 Disk allocation method에 대해 알아보겠습니다. 첫번째로, Contiguous Allocation입니다.이 방식은 disk상에 연속적으로 file block을 할당하는 방식입니다.만약 특정 file을 append할 때 여유공간이 없다면 충분한 공간이 있는 위치로 이동시킨 뒤 확장합니다.그리고 원래 자리의 block은 지웁니다.이렇게 block들을 옮기고 지우는 방식은 copy & paste를 하게 되는데, 그러면 필연적으로 disk access횟수가 늘어나게 되므로 매우 느립니다. 단점으로는, 읽기와 쓰기를 반복하다 보면 곳곳에 조각난 공간이 많이 발생하게 되는데, 이를 external fraction이라고 합니다.또한 file의 크기는 가변적이므로 ..
-
[Linux] Disk Schedulingprograming/OS 2018. 6. 16. 18:15
안녕하세요, Einere입니다. 오늘은 Disk scheduling에 대해 알아보겠습니다. FCFS(first come first service)입니다.process scheduling에서 사용하는 FIFO와 같습니다.IO request Q에 들어온 순서대로 처리하는 방식입니다.아주 간단한 방식이지만, 간단한 만큼 제일 안좋은 방식입니다. SSTF(shortest seek time fist)입니다. seek time이 최소인 request를 우선적으로 처리하는 방식입니다.효율적이기는 하나, seek time이 최대인 request에 대해서 starvation이 발생할 수 있습니다.(starvation : 기아, 기근. Q에 일찍 들어왔으나, 처리순서가 밀려서 실제로 scheduling되기까지 오랜 시간이..
-
[Linux] Process & forkprograming/OS 2017. 9. 21. 01:19
안녕하세요, Einere입니다.오늘은 process와 fork함수에 대해 알아보도록 하겠습니다. 위의 코드는 하나의 parent process에 대해 n개의 child process를 만드는 코드입니다. 우선 인덱스를 위한 i, 반복 횟수를 위한 n, 그리고 status를 받기 위한 c_status변수를 선언합니다.만들 child process의 개수를 입력 받아 n에 저장합니다.fork의 반환값을 저장할 pid_t형 array인 pid[n]을 선언합니다. for문을 이용해 fork를 n번 실행하도록 합니다. 이때, child process를 exit시켜 프로세스가 2^n개가 되지 않도록 합니다.child process에 대해 exit를 하므로 parent process는 하나이며 child proces..