• Compiler,  Study

    [Compiler] Compiler Pipeline 구성

    Computer system에서 compiler란 high level languages (C, C++, Python 등)을 hardware에서 이해 할 수 있는 형태로 전환하는 프로그램이다. Compiler와 비슷한 interpreter 또한 존재하는데, 간단한 차이는 다음과 같다. Compiler Interpreter Compiler는 전체 program을 분석한다.…

  • 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…

  • Digital Logic,  Study

    [Digital Logic] Clock Gating 관련 용어

    Clock gating은 현대 digital logic에서 power consumption 절감을 위해서 필수적인 scheme이다. Clock gating을 평가하기 위한 여러가지 지표가 있어서 이를 소개한다. 1. Clock Gating Ratio (CGR) 전체 register 중 clock-gated register의 비율을 나타낸다. 이상적인…

  • 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…

  • Computer Architecture,  Study

    [Computer Arch.] Floating Point Representation

    Computer system에선 대부분 정수가 아닌 수를 표기할 때는 IEEE Standard 754 형식의 floating point 표기 방식으로 표현한다. 이는 1) 기존 binary representation으로 표현할 경우 2의 지수승에 대해서만 정확한 소수가 표현 가능하며, 2) 너무나…