프로세스와 스레드의 차이
프로세스는 실행중인 프로그램을 뜻합니다. 스택, 힙, 데이터, 코드로 이루어져있고 각 프로세스들은 이 자원을 공유하지 않는다. 최소 1개의 스레드(메인 스레드)를 가지고 있습니다.
그리고 스레드는 프로세스의 실행의 단위입니다. 프로세스 내에서 스택만 할당받고, 그 이외의 메모리 영역을 다른 스레드와 공유하기 때문에 다른 스레드의 실행 결과를 즉시 확인할 수 있습니다.
멀티 프로세스와 멀티 스레드의 특징
멀티 프로세스는 프로세스들 간의 자원을 공유하지 않습니다. 그렇기 때문에 차지하는 메모리가 멀티 스레드에 비해 크지만, 한 프로세스에서 문제가 발생해도 다른 프로세스에 영향을 미치지 않는다는 특징이 있습니다.
멀티 스레드는 스택 외에 다른 자원들을 다른 스레드와 공유합니다. 그렇기 때문에 멀티 프로세스보다 차지하는 메모리양이 적지만, 한 스레드에 문제가 발생하면 전체 스레드에 영향을 받으며 동기화 문제가 있다는 단점이 있습니다.
멀티 스레드의 동시성과 병렬성에 대해
동시성: 동시에 실행하는것처럼 보이기 위해 싱글 코어에서 여러개의 스레드가 빠르게 작업을 전환하며 실행하는 방식을 말합니다.
병렬성: 멀티 작업을 위해 멀티 코어에서 한개 이상의 스레드를 포함하는 각 코어들을 동시에 실행하는것을 말합니다.
멀티 스레드 환경에서의 주의사항
다수의 스레드가 공유 데이터에 동시에 접근하는 경우에 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착상태가 발생하지 않도록 주의해야 합니다.
데드락
교착상태를 말합니다. 교착상태란, 한 자원을 차지하는 있는 각 프로세스들이 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 대기상태에 이른것을 말합니다.
데드락의 4가지 조건
1. 상호배제: 한번에 한 프로세스만 공유자원에 접근 가능하며, 접근 권한이 제한적인 경우
2. 순환대기: 두 개 이상의 프로세스가 자원접근을 기다릴때, 관계가 순환적 구조를 이룬다.(원 구조)
3. 점유대기: 공유 자원에 대한 접근 권한을 가진채로 다른 자원에 대한 접근 권한을 요구
4. 비선점: 자원을 빼앗아 올 수 없음
콘보이 현상은 무엇이고, 콘보이 현상이 발생될 수 있는 CPU 스케쥴러 알고리즘은?
cpu작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상을 말합니다.
콘보이 현상이 발생될 수 있는 cpu 스케쥴러 알고리즘은 비선점형 스케쥴링 알고리즘 입니다. 순차적으로 먼저 큐에 들어온 작업부터 실행합니다.
선점형, 비선점형 스케쥴링은 무엇인가요
선점형: 우선순위가 더 높은 프로세스가 cpu 작업을 우선적으로 할 수 있음
비선점형: 한 프로세스가 이미 cpu 작업중이라면, 다른 프로세스가 빼앗아 올 수 없음
동기와 비동기
동기: 한 작업이 끝나야 다음 작업이 이루어짐
비동기: 작업의 완결유무와 관계없이 다음 작업이 실행 가능함. 하지만 실행결과에 대한 순서를 보장할 수 없다.
임계영역
공유자원에 접근 할때, 한 프로세스가 공유 자원을 사용하고 있다면 다른 프로세스는 접근하지 않도록 보장 해주어야 하는 영역을 의미함
임계역역 문제를 해결하기 위해서는 3가지 조건을 충족해야함
1. 상호배제: 하나의 프로세스가 임계영역에 들어가있다면, 다른 프로세스는 임계영역에 접근 불가능
2. 진행: 임계영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러개라면 어느것부터 들어갈 것인지 결정해야한다.
3. 무한정 대기: 다른 프로세스의 기아를 방지하기 위해, 한번 임계구역에 들어간 프로세스는 다음 번 임계영역에 들어갈때 제한이 있어야 한다.
기아현상
특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태
뮤텍스와 세마포어의 차이
뮤텍스는 lock을 사용해 하나의 프로세스나 스레드를 단독으로 실행하게 합니다.
세마포어는 공유자원에 세마포어의 변수만큼의 프로세스가 접근할 수 있습니다.
현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있습니다.
하지만 뮤텍스는 락을 획득한 프로세스가 반드시 그 락을 해제해야 합니다.
페이지 교체 알고리즘
페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을때 어떤 페이지 프레임을 선택해 교체할 것인지 결정하는방법을 페이지 교체 알고리즘이라고 합니다.
1. FIFO: 가장간단한 알고리즘, 메모리에 올라온지 가장 오래된 페이지를 교체합니다.
2. 최적 페이지 교체: 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘, 구현하기 어렵다.
3. LRU: 가장 오래 사용되지 않은 페이지를 교체하는 알고리즘. 최적 페이지 교체 알고리즘과 비슷한 방식이며 비슷한 효과를 낼 수 있다.
컨텍스트 스위칭
프로세스간 문맥 교환을 뜻한다.
어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할때 기존의 프로세스 상태 또는 레지스터 값을 저장하고 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업을 의미합니다.
이전에 이 글을 읽었을때는 잘 이해가 안되어 무조건 외우는식으로만 공부했는데, 혼자 공부하는 운영체제 책을 읽고나니 어느정도 정리가 된다는 느낌이 든다!
참고블로그
'기술면접' 카테고리의 다른 글
동기와 비동기 / Deadlock (0) | 2024.04.22 |
---|---|
Promise, asyc/await, Hoisting (0) | 2024.04.17 |
Array & LinkedList / Stack & Queue (0) | 2024.04.15 |
[JS] 선택정렬 / 버블정렬 (0) | 2024.04.09 |
객체지향 프로그래밍 / 클래스형, 함수형의 차이 (0) | 2024.04.05 |