Basic Number Theory [ Euclidean Algorithm ] : GCD(Greatest Common Divisor; 최대공약수)를 구하는 알고리즘. #include // a > b라고 가정 int gcd(int a, int b) { while(b != 0) { int r = a % b; a = b; b = r; } return a; } [ Modular Arithmetic ] · a ≡ b (mod m) : a와 b가 m에 의해 나누어졌을 때 나머지가 동일. · (a ± b) mod m = (a mod m ± b mod m) mod m · (a * b) mod m = (a mod m * b mod m) mod m · 나눗셈의 경우 Modular Inverse를 이용하여 계산하며, 이를 ..

Scheduling [ Non-preemption & Preemption ] · Non-preemption : Process가 수행 중일 시 Priority가 높은 것이 들어와도 끝날 때 까지 Context Switch를 하지 않는 방식. (System Call) : ~Linux 2.4 버전까지는 이러한 방식으로 Kernel이 구성되었다. · Preemption : Process가 수행 중일 시 Priority가 높은 것이 들어오면 중간에 Context Switch를 하는 방식. (System Call) : Linux 2.6 버전부터 이러한 방식으로 Kernel이 구성되었다. : Real-Time 응용을 위해 도입. [ Dispatcher ] : Schedule..

Thread [ Thread ] : Process 내에서 실행되는 작은 실행 단위. : 공유할 수 있는 메모리와 자원을 공유. → Heap, Data, Code는 공유하며, Stack과 Register는 별도. : 자원을 공유하므로 IPC가 매우 간단해짐. : fork 대신 pthread_create를 이용. → pthread_create(&tid, &attr, argv[i]) : 각 Thread는 Concurrent하게 수행됨. : Process 간 Context Switch에 비해 Context Switch에 대한 Overhead가 매우 적음. : 다른 작업을 처리하는 중에도 작업 실행이 가능하므로 응답성(Responsiveness)이 향상된다. : Multi-Processor Architecture..

Process [ Process Elements ] · Process Address Space : 프로세스는 실행되고 있는 프로그램이므로, Stack과 Heap 등의 공간이 필요. · PCB (Process Control Block) : 프로세스의 Context를 저장하기 위한 자료 구조. · Process State : 프로세스의 상태. Scheduler에 의해 관리됨. - new : 프로세스 초기 생성 상태. - running : 실행 중인 Process. 각 코어에 최대 하나일 수 밖에 없음. - waiting : running state로 갈 수 없는, 모종의 이유로 인해 중단된 상태. ex) I/O, Sleep System Call, Event Wait (Signal) 등 - ready : 실행..

System Structure [ Kernel Mode and System Call ] · Kernel Mode : 운영 체제 커널이 실행되는 모드로, 모든 시스템 리소스와 접근에 대한 권한을 갖게 된다. : Kernel Mode는 Hardware Interrupt와 System Call을 통해 접근할 수 있다. · System Call : OS의 Kernel이 제공하는 서비스에 대해 User Mode에서 Kernel에 접근하기 위한 인터페이스. : 일반적으로 라이브러리로 호출 가능하다. : 보통 POSIX(Portable Operating System Interface) API를 이용한다. → 이는 운영 체제마다 다른 Kernel의 명령어를 일괄되도록 하여 이식성을 향상시킨다. → Table 형태로 되..