CS 정리본 - 프로세스 동기화/스레드 안전/교착상태/메모리 관리

기술면접 대비 (프로세스 동기화/스레드 안전/교착상태/메모리 관리) 정리
오니's avatar
Jun 15, 2024
CS 정리본 - 프로세스 동기화/스레드 안전/교착상태/메모리 관리

프로세스 동기화

멀티 프로세스 환경에서 공유 자원의 읠관성을 보장하기 하는 방법

임계구역

  • 공유 자원 접근 순서에 따라 결과가 달라질 수 있는 코드

프로세스 동기화를 위한 기법 3가지

  1. 상호배제
      • 실행 중일 때는 다른 진입 막기
  1. 진행
      • 임계구역이 비어있다면 진입
  1. 한정된 대기
      • 임계구역을 기다릴 땐 한정된 시간만 대기

상호배제 기법

뮤택스

  • 락킹 알고리즘
  • 임계구역에 들어간 프로세스가 반드시 풀고 나와야 함
  • 스핀락 오버헤드가 큼
    • 스핀락: 반복문을 돌면서 임계구역 진입이 가능한지 계속 확인하는 작업

세마포어

  • 시그널링 알고리즘

스레드 안전

  • 하나의 자원 또는 객체에 여러 스레드가 접근해도 프로그램 실행하는데 문제가 없는 것을 의미
  • 반대되는 단어는 Race condition

교착상태

서로 다른 프로세스가 공유 자원 하나 씩을 갖고 서로의 자원을 기다라고 있는 상태

교착상태 발생조건 4가지

  1. 상호배제
      • 하나의 공유자원에 하나의 접근
  1. 점유와 대기
      • 하나의 공유자원 갖고 있는 상태에서 다른 공유자원을 기다림
  1. 비선점
      • OS가 공유자원에 대한 제어권이 없어서 강제로 못하는 상태
  1. 환형대기
      • 공유자원을 받을 때 까지 자원을 기다림

메모리 관리 전략

메모리 용어 정리

논리 / 가상

  • 프로세스 실행 관점에서 보는 상태
ex) 논리 메모리, 논리 주소, 가상 메모리

물리

  • 하드웨어 관점에서 보는 상태
ex) 물리 메모리, 물리 주소

단편화

  • 외부 단편화
    • 들어가야할 메모리 크기에 비해 비어있는 메모리 크기가 적은 경우
  • 내부 단편화
    • 들어가야할 메모리 크기가 비어 있는 메모리 크기에 비해 작아서 사용 못하는 메모리 크기가 커지는 경우
notion image

연속 메모리

고정 메모리

가변 메모리

  1. 최척 적합
      • 원하는 메모리 크기를 첫 발견하는 곳에 메모리 load
  1. 최초 적합
      • 원하는 메모리와 빈 메모리 크기가 가장 비슷한 곳에 load
      • 외부 단편화 가능성
  1. 최악 적합
      • 비어 있는 가장 큰 메모리에 load 한다.
      • 내부 단편화 가능성

비연속 메모리

  1. 페이징
      • 필요한 메모리를 page 단위로 나누고 물리메모리를 frame 단위로 나눠서 page와 frame을 1:1 대응으로 만들어서 메모리에 나눠서 올리는 기법
      • page-frame 연결해주는 테이블을 페이지 테이블이라 하며 PCB에 저장되어 관리
      • 마지막 Page에 내부 단편화 가능성
  1. 세그멘테이션
      • 프로세스 메모리 영역을 Segment 단위로 분할
        • Segment: 논리적 단위
      • 세그먼테이션 테이블을 사용해 매핑한다.
      • Segment당 물리 메모리 주소(base)와 메모리 크기(limit)을 테이블에 저장
      • 외부 단편화 가능성

가상 메모리

프로세스 메모리 일부만 load하는 방식

요구 페이징

프로세스에 필요한 페이지만 메모리에 load하는 방식

페이지 폴트

요구되는 페이지가 메모리에 없는 상황
  • 트랩이 발생하며 메모리-디스크 간의 스와핑 발생 → 오버헤드 발생

스레싱

  • 일정 수 이상 프로그램이 실행되면 CPU 이용률이 떨어지는 현상
    • → 페이지 폴트가 자주 일어나서 CPU 유휴시간(Idle)이 증가
  • 해결책: Working Set
    • 지역성 기반, 자주 사용되는 페이지는 교체하지 않는다.
Share article

오니의 개발 블로그