• OS,  Study

    [OS] Memory Layout of C Program

    C program이 compile되고 난 뒤 memory에 load 될 때 layout은 다음과 같다. 크게 총 다섯 가지 영역으로 나눌 수 있다. Text (Code) Data (Initialized) BSS (Uninitialized) Heap Stack 1. Text (Code) Segment Read…

  • OS,  Study

    [OS] Process vs. Thread

    1. Process Process란 disk에 있는 program이 memory로 올라온 상태의 것을 의미한다. Process별로 code, data, stack, heap memory 영역을 가지며 하나의 CPU를 점유하여 수행하게 된다. Process간 context switching을 하기 위해선 Process Control Block (PCB)를…

  • OS,  Study

    [OS] Deadlock

    OS에서 deadlock이란 용어는 하나 또는 여러 개의 프로세스가 일어날 수 없는 event를 기다리며 영원한 대기하는 상태를 말한다. 실제로 위 그림을 보면, process 1 (P1)은 resource 1 (R1)을 요구하지만, R1은 이미 process 2 (P2)에…

  • OS,  Study

    [OS] Memory Allocation Strategies

    우리가 사용하는 프로그램은 virtual address로 동작하기 때문에 이를 physical memory에 allocation 해주는 것이 중요하다. 특히 memory에 단일 process가 올라오는게 아니라 multi process들이 올라오기 때문에 이들을 관리해주는 것은 중요하다. Memory allocation 방식은 크게 두…

  • OS,  Study

    [OS] Process / Thread Scheduling

    현대 computer system은 multi processing 및 multi-threaded processes 들로 구성되기 때문에, 각각을 scheduling하는 방식에 따라 성능이 달라진다. 현재 ready-to-run process들은 Ready Queue에 담겨져 CPU로부터 수행되기를 기다린다. Scheduling algorithm은 많지만 대표적으로 5가지만 소개한다. FCFS…

  • OS,  Study

    [OS] Message Queue

    IPC를 위한 방법은 크게 6가지가 있다. Pipe FIFO Message Queue Shared Memory Semaphore Socket Pipe나 FIFO는 file descriptor를 이용해서 통신하기 때문에 virtual file system에 속한다. Message queue, shared memory, semaphore는 key값을 통해서 통신한다.…

  • OS,  Study

    [OS] Pipe

    Inter Process Communication (IPC) 방법 중 하나로, OS에서 process의 standard 출력을 다른 process의 standard input에 연결하는 방식이다. Process간 단방향 통신의 한 방법이며 동기화를 기본적으로 제공한다. Signal은 1~31번까지 번호만 전달할 수 있지만, pipe는 data를…

  • OS,  Study

    [OS] SIGALRM 동작

    Linux signal 종류 중 SIGALRM의 동작에 대해 알아본다. 기본적으로 alarm() 함수를 통해 signal을 줄 수 있으며, 인자로 “초”를 받는다. Signal number는 14번이다. Argument Description unsigned int seconds 알람을 주고자 하는 초0을 넣게 되면…

  • OS,  Study

    [OS] Signal 동작

    Process간 통신을 하기 위해 signal을 사용한다. 우리가 평소에 자주 사용하는 많은 명령어들이 signal로 process에게 전달된다. Ctrl+c Ctrl+z kill 명령어 잘못된 메모리 참조 우리가 인위적으로 signal을 줄 수 있는 것들을 보는 방법은 다음과 같다.…

  • OS,  Study

    [OS] Process Synchronization

    1. Introduction Multi-processing, multi-core, multi-threading과 같이 다수의 주체가 공유하고 있는 자원을 접근 할 때 synchronization을 하지 않으면 우리가 의도하지 않는 동작이 system에서 발생할 수 있다. 1.1 Critical section Critical section은 오직 하나의 process만이…