티스토리 뷰

기술면접

4. OS

Howu 2023. 4. 18. 23:36

프로세스와 쓰레드의 차이

  • 프로세스: 실행 중인 프로그램, 메모리 영역을 다른 프로세스와 공유하지 않고 프로세스는 최소 1개의 쓰레드를 가짐
  • 쓰레드: 프로세스 내에서 Stack만 따로 할당받고 그 이외의 메모리 영역은 공유하기 때문에 다른 쓰레드의 실행 결과를 즉시 확인할 수 있음, 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행

멀티 프로세스와 멀티 쓰레드

  • 멀티 프로세스: 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 쓰레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.
  • 멀티 쓰레드: 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만 하나의 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받으며 동기화 문제가 생긴다는 단점이 있다.

멀티 쓰레드의 동시성과 병렬성

  • 동시성: 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행되는 것을 말한다.
  • 병렬성: 멀티 작업을 위해 멀티 코어에서 1개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행하는 것을 말한다.
  • 멀티 쓰레드 환경에서의 주의사항: 다수 쓰레드가 공유 데이터에 동시에 접근하는 경우 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 교착 상태가 발생하지 않도록 주의해야 한다.

데드락(Deadlock)

  • 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황
  • 데드락의 4가지 조건
    • 비선점: 다른 프로세스의 자원을 뺏을 수 없음
    • 순환 대기: 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구조
    • 점유 대기: 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구
    • 상호 배제: 한 번에 한 프로세스만 공유 자원에 접근 가능하며 접근 권한이 제한적일 경우

콘보이 현상(convoy effect)

  • 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상

선점형 스케줄링과 비선점형 스케줄링의 차이

  • 선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 의미하고
  • 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 의미한다.

동기와 비동기

  • 동기: 요청과 그 결과가 동시에 일어난다. 순서에 맞춰 진행된다는 장점이 있지만 여러 가지 요청을 동시에 처리할 수 없다. ex) 커피 주문을 받고 나올 때 까지 기다려야 함
    • 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지는 아무것도 못하고 대기해야 한다.
  • 비동기: 요청과 결과가 동시에 일어나지 않는다. 하나의 요청에 따른 응답을 즉시 처리하지 않아도 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식
    • 동기보다는 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

임계영역

  • 프로세스 간에 공유자원을 접근하는데 있어 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역
  • 문제 해결을 위한 3가지 조건
    • 상호 배제: 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
    • 진행: 임계 영역에 들어 간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈지 결정해주어야 한다.
    • 한정 대기: 다른 프로세스의 기아 방지를 위해 한 번 임계 구역에 들어간 프로세스는 다음 번 임계 영역에 들어갈 때 제한을 두어야 한다.

Context Switching

  • 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업

'기술면접' 카테고리의 다른 글

6. 프로그래밍 공통  (0) 2023.04.19
5. 자료구조  (0) 2023.04.19
3. Spring  (0) 2023.04.18
2. 네트워크  (0) 2023.04.17
1. JAVA  (0) 2023.04.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함