-
[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] Process vs. Thread
1. Process Process란 disk에 있는 program이 memory로 올라온 상태의 것을 의미한다. Process별로 code, data, stack, heap memory 영역을 가지며 하나의 CPU를 점유하여 수행하게 된다. Process간 context switching을 하기 위해선 Process Control Block (PCB)를…
-
[OS] Deadlock
OS에서 deadlock이란 용어는 하나 또는 여러 개의 프로세스가 일어날 수 없는 event를 기다리며 영원한 대기하는 상태를 말한다. 실제로 위 그림을 보면, process 1 (P1)은 resource 1 (R1)을 요구하지만, R1은 이미 process 2 (P2)에…
-
[OS] Memory Allocation Strategies
우리가 사용하는 프로그램은 virtual address로 동작하기 때문에 이를 physical memory에 allocation 해주는 것이 중요하다. 특히 memory에 단일 process가 올라오는게 아니라 multi process들이 올라오기 때문에 이들을 관리해주는 것은 중요하다. Memory allocation 방식은 크게 두…
-
[OS] Process / Thread Scheduling
현대 computer system은 multi processing 및 multi-threaded processes 들로 구성되기 때문에, 각각을 scheduling하는 방식에 따라 성능이 달라진다. 현재 ready-to-run process들은 Ready Queue에 담겨져 CPU로부터 수행되기를 기다린다. Scheduling algorithm은 많지만 대표적으로 5가지만 소개한다. FCFS…
-
-
[OS] SIGALRM 동작
Linux signal 종류 중 SIGALRM의 동작에 대해 알아본다. 기본적으로 alarm() 함수를 통해 signal을 줄 수 있으며, 인자로 “초”를 받는다. Signal number는 14번이다. Argument Description unsigned int seconds 알람을 주고자 하는 초0을 넣게 되면…
-
[OS] Signal 동작
Process간 통신을 하기 위해 signal을 사용한다. 우리가 평소에 자주 사용하는 많은 명령어들이 signal로 process에게 전달된다. Ctrl+c Ctrl+z kill 명령어 잘못된 메모리 참조 우리가 인위적으로 signal을 줄 수 있는 것들을 보는 방법은 다음과 같다.…
-
[OS] Process Synchronization
1. Introduction Multi-processing, multi-core, multi-threading과 같이 다수의 주체가 공유하고 있는 자원을 접근 할 때 synchronization을 하지 않으면 우리가 의도하지 않는 동작이 system에서 발생할 수 있다. 1.1 Critical section Critical section은 오직 하나의 process만이…