CS/운영체제

운영체제 2024.7.4

infobox503 2024. 7. 4. 13:57

11. 멀티 쓰레드 환경에서의 주의점

  • 동기화를 주의해야한다
    • 한 프로세스내에서는 쓰레드끼리 공유 자원을 가진다.
    • 서로 다른 쓰레드가 공유 자원에 접근할 경우 값의 오류가 발생할 수 있다.
    • 따라서 쓰레드들은 공유 자원에 대한 동기화가 필요하다

※ 쓰레드 동기화

  • 한 쓰레드가 공유 자원을 쓰고 있으면, 다른 쓰레드가 접근할 수 없게 막는다.
  • 예시
    • 계좌에 1만원이있다.
    • a, b는 동시에 만 원, 만 원을 가져갔다.
    • 계좌는 -1만원이 된다.

동기, 비동기, 블로킹, 논블로킹 차이

https://www.youtube.com/watch?v=oEIoqGd-Sns

https://velog.io/@nittre/블로킹-Vs.-논블로킹-동기-Vs.-비동기

12. 동기, 비동기

  • 동기, 비동기는 결과의 유무를 따진다.
  • 동기(Synchronous)
    • 요청의 결과가 나오면 다음 요청 수행
    • 예시
      • A는 B 작업을 요청한다
      • A는 B의 작업 결과를 가지고 A 작업을 마저 수행한다.
  • 비동기
    • 요청의 완료를 기다리지 않고 다음 요청 수행
    • 예시
      • A는 B에게 작업을 요청한다
      • A는 B 작업의 결과를 신경쓰지 않고 계속 자신의 작업을 한다.

13. 블로킹, 논블로킹

  • 블로킹, 논블로킹은 제어권의 여부를 따진다.
    • 제어권 : 제어권을 가질 경우만 해당 작업이 수행가능
  • 블로킹
    • 제어권을 빼앗기기 가능
    • 예시
      • A는 B에게 작업을 요청한다
      • A는 제어권 삭제(A는 작업을 하지 못하는 상태가 됨)
      • B는 제어권 획득(B는 작업을 할 수 있는 권한을 얻음)
      • B 함수가 완료되면 A에게 제어권을 넘김
      • A는 제어권을 받았으므로 작업을 수행 가능해짐
  • 논블로킹
    • 제어권을 빼앗기지 않음
    • 예시
      • A는 B에게 작업을 요청한다.
      • A는 제어권을 보장받는다. 따라서 B에게 제어권을 주지 않는다.
      • A는 계속 실행가능하다.
      • QnA) B는 어디서 제어권을 받는가?
        • ex) 스케줄러 등에서 받게됨

※동기, 블로킹 개념의 차이

  • 동기, 비동기는 결과의 유무를 따진다.
  • 블로킹, 논블로킹은 제어권의 유무를 따진다.

14. 프로세스의 종류

  • 자식 프로세스
    • 부모 프로세스의 복제품
    • 부모 프로세스에서 fork()함수로 탄생
    • 부모의 데이터, 힙, 스택을 복사 받음
    • PCB는 부모, 자식이 서로 다름(프로세스 식별자(PID)가 서로 다름)
  • 데몬 프로세스
    • 백그라운드에서 실행되는 프로세스
    • 사용자와 상호작용 불가
  • 백그라운드 프로세스
    • 백그라운드에서 실행되는 프로세스
    • 사용자와 상호작용 가능(터미널 사용)
  • 고아 프로세스
    • 부모 프로세스가 먼저 종료되어 고립된 프로세스
    • 설명
      • 부모 프로세스는 자식 프로세스가 종료될 때, 자식 프로세스의 자원을 받는다
        • 자원 : 종료 상태, PID 등
      • 부모가 먼저 종료될 시, 자식 프로세스의 자원을 보낼 곳이 없다
    • 문제점
      • 자식 프로세스가 종료되지 않을 수 있다.
      • 자식 프로세스의 종료 후에, 사용하던 자원이 그대로 남을 수 있다.
  • 좀비 프로세스
    • 부모 프로세스에세 종료 승인을 못받은 자식 프로세스
      • 부모 프로세스는 자식 프로세스가 종료 될 시, 자식의 데이터, PID를 운영체제에 반환
      • 자식이 종료 승인을 받지 못하면 PID만 살아있는 상태가 된다.
      • (좀비 프로세스는 실행 자체는 종료된 상태다.)
      • 남아있는 PID는 다른 프로세스의 실행을 방해할 수 있다.

※백그라운드 : 사용자가 접하기 힘든 작업 공간

ex) 서버 관련 작업

15. Race Condition, Critical Section의 의미. 그리고 경쟁상태를 막기위해서는?

  • Race Condition(경쟁 상태)
    • 여러 개의 프로세스(or 쓰레드)가 공유 자원에 접근 시, 실행 순서에 따라 결과값이 바뀔 수 있는 현상
  • Ciritical Section(임계 영역)
    • Race Condition이 일어날 수 있는 공유 자원 영역을 뜻함.
  • 해결 방법
    • 뮤택스
      • 공유 자원에 1개의 쓰레드 or 프로세스만 접근하게함
      • 공유 자원에 접근할 수 있는 Key를 만든다
        • 예시
          • A쓰레드는 Key를 받아서 공유자원에 접근
          • B쓰레드는 Key가 없어서 공유자원 접근 불가
          • A쓰레드는 작업을 끝낸 후, Key반환
          • B쓰레드는 Key를 얻고 공유자원에 접근
    • 세마포어
      • 공유 자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타낸다
        • 예시
          • A쓰레드는 공유자원에 접근을 시도
          • 공유자원에 접근 가능한 쓰레드의 개수가 남아있음
          • A쓰레드는 공유자원에 접근
          • 공유자원의 접근 가능 스레드 개수가 1개 차감
  • 임계 구역 해결 조건
    • 상호 배제
      • 임계구역에는 1개의 프로세스만 있어야한다
    • 한정 대기
      • 어떤 프로세스도 무한 대기하면 안된다.
    • 진행의 융통성
      • 한 프로세스가 다른 프로세스의 진행을 막으면 안된다
        • 예시)
          • A가 임계구역을 예약으로 잡고 쓰고있지 않다.
          • ⇒ 다른 프로세스는 임계구역을 쓸 수 없는 비효율적인 상황 발생

16. DeadLock이란? 해결 방법은?

  • DeadLock(교착 상태)
    • 여러 프로세스 또는 쓰레드가 서로의 자원을 기다리면서 무한히 대기하는 상태
  • 해결 방법
    • 예방
      • 교착 상태를 유발하는 네 가지 조건을 1개 이상 무력화
    • 회피
      • 교착 상태가 발생하지 않는 정도로 자원 할당
    • 검출과 회복
      • 검출
        • 자원 할당 그래프를 사용하여 교착 상태를 찾음
      • 회복
        • 모든 프로세스 동시 종료
          • 교착상태에 있는 프로세스들 동시에 종료
        • 하나씩 순서대로 종료
          • 우선순위가 낮거나, 작업 시간이 짧은 순서대로 프로세스 종료
  • 교착 상태를 유발하는 4가지 조건(1개만 없애도 교착상태 해결)
    • 상호배재
      • 한 자원에 여러 프로세스가 접근할 수 없다.
    • 비선점
      • 사용중인 자원을 다른 프로세스가 빼앗을 수 없다.
    • 점유와 대기
      • 하나의 자원을 소유한 상태에서 다른 자원을 기다린다.
    • 원형 대기
      • 각 프로세스가 원하는 자원은 원형으로 다음 프로세스가 가지고 있다.

17. 식사하는 철학자 문제가 있다. DeadLock은 언제 발생하는가? 해결 방법은?

  • 식사하는 철학자
    • 조건
      • 스파게티를 먹어야한다.
      • 스파게티를 먹으려면 포크 2개를 들어야한다.
      • 식사를 마치면 포크 2개를 내려놓는다.
      • 서로 소통은 불가하다.
  • DeadLock이 발생하는 시기
    • 5명 모두 오른쪽 포크를 든다.
    • 왼쪽의 포크를 계속 기다린다. ⇒ 교착 상태
  • 해결 방법
    • 세마포어
      • 식탁에 입장 제한 수를 둔다.
        • ex)
          • 최대 4명으로 식탁 인원을 제한한다.
          • 여분의 포크가 1개 남는다.
          • 따라서 교착 상태가 해결된다.

18. 뮤텍스, 세마포어 설명

  • 뮤택스
    • 공유 자원에 1개의 쓰레드 or 프로세스만 접근하게함
    • 공유 자원에 접근할 수 있는 Key를 만든다
      • 예시
        • A쓰레드는 Key를 받아서 공유자원에 접근
        • B쓰레드는 Key가 없어서 공유자원 접근 불가
        • A쓰레드는 작업을 끝낸 후, Key반환
        • B쓰레드는 Key를 얻고 공유자원에 접근
  • 세마포어
    • 공유 자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내게 함
      • 예시
        • A쓰레드는 공유자원에 접근을 시도
        • 공유자원에 접근 가능한 쓰레드의 개수가 남아있음
        • A쓰레드는 공유자원에 접근
        • 공유자원의 접근 가능 스레드 개수가 1개 차감
    • 세마포어 종류
      • 이진 세마포어
        • 0 or 1 값(1개의 프로세스 or 쓰레드만 공유자원에 접근 가능)
      • 카운팅 세마포어
        • 2 이상의 값(여러개의 프로세스 or 쓰레드가 공유자원에 접근 가능)

19. CPU 스케쥴링의 의미와 종류

  • 의미
    • ready queue에 있는 프로세스 중에서 어떤 프로세스에 CPU를 배정할지 정하는 것
  • 종류
    • 선점형
      • 의미 : 프로세스가 CPU를 할당받았을 때, 운영체제가 CPU를 강제로 빼앗을 수 있는 방식
      • 종류
        • Round Robin(RR)
          • 프로세스마다 동일한 시간 할당량 부여
          • 시간 할당량을 다 쓴 프로세스는 ready queue의 맨 뒤로 보냄
        • Shortest Remaining Time First (SRTF)
          • CPU 점유시간이 짧은 프로세스부터 CPU 할당
          • 기아 문제 유발
        • Multilevel Feedback Queue(다중 레벨 피드백 큐)
          • 단계별로 큐를 만듦
          • 할당량을 다 쓴 프로세스는 다음 단계의 큐로 보냄
          • 단계가 클수록 할당량도 커짐
    • 비선점형
      • 의미 : 프로세스가 CPU를 할당받았을 때, 다른 프로세스가 CPU를 빼앗을 수 없는 방식
      • 종류
        • First Come First Served(FCFS)
          • 큐에 도착한 순서대로 CPU 할당
        • Shortest Job First (SJF)
          • CPU 점유시간이 짧은 프로세스부터 CPU 할당
          • 기아 문제 유발
        • Highest Response Ratio Next
          • 프로세스의 우선순위를 (대기시간 / 서비스 받는 시간)으로 부여

ready queue : 메인 메모리에 상주하면서 실행될 준비를 하고 기다리는 프로세스 집합

20. CPU 스케쥴링의 성능 척도에는 무엇이 있는가?

  • 이용률
    • CPU가 놀지 않고 일한 시간
  • 처리량
    • CPU의 단위 시간당 처리량
  • 소요시간, 반환시간
    • 프로세스가 생성되고 종료될때까지 걸린 시간
    • 해당 프로세스의 대기 시간 + cpu 수행 시간 + 입출력 시간
  • 대기시간
    • Ready Queue에서 해당 프로세스가 기다린 총 시간
    • (cpu에서 실행되다가 ready queue로 돌아가서 다시 기다린 시간도 포함)
  • 응답시간
    • Ready Queue에서 해당 프로세스가 처음으로 CPU와 만나기까지 걸린 시간