# Spin Lock
[프로세스 동기화] 뮤텍스
피터슨의 해결안은 이론적으로는 프로세스 동기화를 위한 3가지 조건을 만족하지만 연산의 하드웨어 구현상의 문제로 인해서 스레드들이 임계구역으로 접근하기 위한 권한을 얻는 과정에서 경합상황이 발생하게 되었다. 이런 구현상의 한계는 운영체제를 디자인 할 때 부터 "임계구역으로 접근하는 연산"의 경우 원자성을 보장해주도록 하면 된다. 그 중하나가 뮤텍스(mutex)이다. 뮤텍스 우선 뮤텍스의 기본적인 개념은 피터슨의 해결안과 크게 다르지 않다. 뮤텍스 사용 [0] 우선 뮤텍스 변수를 선언한다. 이 변수를 통해서 임계구역으로 접근하는 권한(?)을 얻게 된다. 뮤텍스를 선언했다면 해당 뮤텍스를 [3]과 같이 초기화 해주어야 한다. 이제 임계구역에 있는 s_num 변수에

✨Concurrency (1)
Concurrency: An Introduction process는 자신이 CPU와 memory를 소유하고 있다는 illusion을 가지고 있었고 single point of execution을 가졌다. thread는 single running process에 대한 새로운 abstraction이다. thread는 multiple execution flow를 가진다. multi-threaded program은 하나 이상의 point of execution을 가지며 여러 개의 PC를 가지고 있다. 하지만 address space는 공유한다. Context Switch Between Threads 각 thread는 자신만의 PC와 register set을 가지고 있다. 각 thread의 상태를 나타내기 위해 하나 이상의 thread control block(TCB)가 필요하다. running하고 있는 두 thread 사이의 switch를 할 때에는 한 t

[CS 기초 - 운영체제] 세마포어(Semaphore), 뮤텍스(Mutex), 스핀락(Spin lock)
세마포어, 뮤텍스, 스핀 락에 대해 알기 전에 이것들이 언제 쓰이고 왜 쓰이는 지 먼저 알아야 한다. 멀티 코어 시스템에서는 여러 프로세스가 동시에 실행되어 시스템의 성능 향상을 목표로 한다. 이러한 환경에서 하나의 공유 자원을 한 프로세스가 사용중일 때, 다른 프로세스가 동시에 사용하려고 하면 여러 문제가 발생한다. 서로 같은 값을 변경하려고 하거나 읽는 도중에 값이 바뀌어 오류가 생길 수도 있다. 이러한 문제들을 동기화 문제라고 하며 이렇게 동시에 사용될 수 있는 자원을 임계 영역이라고 한다. 임계 구역에 대해 알아본 후에 세마포어, 뮤텍스, 스핀락에 대해 알아보자.   Critical Section (임계 영역) 임계 영역이란 프로세스 간의 공유 자원을 접근하는 데 있어서 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하도록 다른 프로세스의 접근을 제한하는 영역을 말한다. requirement 상호 배

[CS 기초 - 운영체제] 프로세스와 스레드
프로세스 (Process) 프로세스란 실행중인 프로그램으로, 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소공간, 파일, 메모리 등을 할당받고, 이들을 총칭하여 프로세스라 칭한다. 구체적으로 살펴보면 프로세스는 함수의 매개변수, 복귀주소, 로컬변수와 같은 임시 자료를 갖는 프로세스 스택과 전역변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 프로세스 제어 블록 (Process Control Block, PCB) PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다. 프로세스는 CPU를 할당받아 처리하다가 프로세스 전환이 발행하면 진행하던 작업을 저장하고 CPU를 반환하는데, 이 때 작업의 진행 상황을 모두 PCB에