CS/OS
-
11. Cache&BlockCS/OS 2022. 8. 8. 15:37
서론 Kafka는 모든 Message(data)를 Disk에 Write하여 저장한다. Kafka에서 Producer가 Broker에 Message를 넘겨주고, Broker가 Disk에 저장하기 위해서 아래와 같이 동작. Disk Flush 시에 Disk에 직접 접근하는 것이 아닌 Page cache memory를 사용하여 속도 향상을 일으켰다. 결국 Memory mapped file과 같은 개념과 유사하게 Memory 내에 일부인 캐시 메모리에다가 Data를 저장해두고 저장하는 것으로 보인다. Cache Hardware,Software의 Component로 요청한 결과를 미리 저장해두었다가 빠르게 사용하는 것이다. I/O 과정을 거치지 않고 Cache Memory에 저장한 값을 이용하여 접근한다. 비싸기..
-
10 . File SystemCS/OS 2022. 8. 8. 15:04
File System file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved 1. Space managements File system fragmentation occurs when unused space or single files are not contiguous. As a file system is used, files are created, modified and deleted. When a file is created, the file system allocates spa..
-
9. Virtual Memory advantages and paging algorithmCS/OS 2022. 6. 23. 17:12
Virtual Memory Advantage 1. Shared Memory ( window dll , linux so .. ) Multiple Process 간의 communication의 방법으로 공유 메모리를 사용할 수 있는데, demand-paging 기법을 사용할 경우 다른 프로세스의 각각의 페이지가 같은 프레임을 가리키도록 하면 공유 메모리를 사용할 수 있다. 아래 그림을 보면 Process A의 Page1과 Process B의 Page7은 서로 같은 Memory를 가르키고 있어 공유가 가능하다. dll in window 혹은 so in linux 이 방식으로 Physical Memory Frame을 같이 가리켜, Memory save 2. COW(Copy on Write) Fork System..
-
8. Vitrual MemoryCS/OS 2022. 6. 23. 01:42
Virtual Memory 가상 메모리는 프로세스의 virtual memory(logical memory)와 physical memory를 분리하기 위해 생겨난 것 모든 프로세스는 자신만의 가상 주소 공간을 가지고 있다. 32비트/64비트 프로세스는 각 비트수에 맞게 최대 4GB/16EB의 주소 공간을 가진다. 모든 프로세스들은 자신만의 주소 공간을 가지기 때문에, 특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레드는 프로세스가 소유하고 있는 메모리에 대해서만 접근이 가능하다. OS Memory는 숨겨져 있다. 쓰레드가 OS의 Data에 Access하는 것이 불가능하다. 따라서, A 프로세스가 0x12345678 주소에 무엇인가를 저장하였지만, B 프로세스 역시 0x12345678 주소에 무엇인가를 저..
-
xv6 Test codeCS/OS 2022. 6. 2. 17:12
Github = https://github.com/Kimuksung/Xv6 를 참고하시면 됩니다. Test Code를 돌리기 전에 Kaist Os Lab을 참고하여 작성하였습니다. 해당 OS lab pdf를 먼저 참고오시면 매우 도움이 됩니다. 1. Execute a Program in Xv6 제가 임의로 만든 test.c 와 practice1.c 를 돌려볼 예정입니다. xv6 제공하는 header file이 정해져 있기 때문에 아래와 같은 상황을 주의해야합니다. 따라서 stdio.h 사용할 수 없습니다. 대신에 아래 header file로 생성해야 합니다. 상황에 맞게 가져다가 사용하면 됩니다. “types.h” : header file for variable types “user.h” : header..
-
xv6 (linux Init)CS/OS 2022. 6. 2. 14:22
linux 설치 Orcale VM Virtual Machine -> OS( LTS 18.04 build-essential 시에 20.04는 충돌이 난다) setting sudo apt-get install git wget qemu sudo apt install build-essential git clone https://github.com/mit-pdos/xv6-public.git sudo apt-get install gdb ( if you don't have it.. ) cd xv6-public make qemu-nox CPUS=1 #qemu exit Ctrl+A -> X Run #init.c // init: The initial user-level program #include "types.h" #i..
-
7.Posix thread(Pthread)CS/OS 2022. 5. 25. 20:42
들어가기 전에 Process에 대해서 살펴보고 시작한다. Process / Thread 일반적으로 Unix Process 는 Main() Function으로 부터 실행되는 Single Thread이다. 앞서 말하였듯이 Fork()를 통해 Process가 생성됨으로 Memory 및 File Descriptor를 Copy-on-Write 방식으로 자식에게 복사하여준다. 반면, Thread는 전역 Memory들은 서로 공유하고 있기 때문에 Process보다 속도가 빠르다. Thread = Semi Process = Light weight Process 라고 불린다. Posix Thread 일반적으로 PThread로 불리며, Thread를 지원하기 위한 C 표준 라이브러리 셋을 사용하여 동작시켜야 한다. #Pt..
-
5. Process_SchedulingCS/OS 2022. 5. 19. 17:31
CPU(Processor) 는 하나의 Prcoess 작업이 수행되면, 다음 Process를 작업하여 수행한다. 이 때 다음 Process가 어떤것이 와야 효율적이고 사용자의 입장에서 빠르다고 느낄 수 있을까? 라는 관점에서 나온것이 Process Scheduling 이다. 여러 방법이 있음으로, 상황에 맞게 사용해야 한다. 1. Preemptive vs Non-Preemptive 1-1) Preemptive 다른 Process가 CPU를 점유하고 있을 경우에 I/O , Interrupt , Process exit 이 되지 않음에도 불구하고 다른 Process가 점유한 자리를 뺏을 수 있는 경우이다. 즉, 프로세스가 정상적으로 수행중인 가운데 다른 프로세스가 CPU를 강제로 점유하여 실행할 수 있는 것이다..