카테고리 없음

[혼공컴운 5주차] Chapter 12 ~ 13

Ejxnzn 2024. 2. 1. 18:38

 

 

동기화

  • 동기화 : 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나 프로세스를 올바른 순서대로 실행하게 하는 것
  • 프로세스 동기화 : 프로세스들 사이의 수행 시기를 맞추는 것
    • 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기
    • 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기
  • 공유 자원 : 공동으로 사용하는 자원 ex) 전역 변수, 파일, 입출력장치, 보조기억장치
  • 임계 구역 : 공유 자원에 접근하는 코드 중 동시에 실행하면 문제가 발생하는 코드 영역 -> 임계 구역에 진입한 프로세스가 있다면 다른 프로세스는 임계 구역 밖에서 기다려야 함
  • 상호 배제 : 한 프로세스가 임계 구역에서 작업 중이면 다른 프로세스가 임계 구역에 들어갈 수 없도록 제어하는 것
  • 진행 : 임계 구역에 어떤 프로세스도 진입하지 않았다면 임계 구역에 진입하고자 하는 프로세스는 들어갈 수 있어야함
  • 유한 대기 : 한 프로세스가 임계 구역에 진입하고 싶다면 그 프로세스는 언젠가 임계 구역

 

 

 

동기화 기법

  • 뮤텍스 락 : 임계 구역을 잠금으로써 프로세스 간의 상호 배제를 이룸
    • 자물쇠 역할 : 프로세스들이 공유하는 전역 변수 lock
    • 임계 구역을 잠그는 역할 : acquire 함수
    • 임계 구역의 잠금을 해제하는 역할 : release 함수
    • 바쁜 대기 : lock이 false가 될때까지 반복적으로 확인
  • 세마포 : 공유 자원이 여러 개 있는 임계 구역 
    • 임계 구역에 진입할 수 있는 프로세스의 개수를 나타내는 전역변수 S
    • 임계 구역에 들어가도 좋은지 기다려야 할지를 알려주는 wait 함수
    • 임계 구역 앞에서 기다리는 프로세스에 이제 가도 좋다고 신호를 주는 signal 함수
  • 모니터 : 세마포에 비해 사용자가 사용하기 편리학 동기화 도구로 조건 변수를 사용

 

 

 

교착 상태

  • 교착 상태 : 일어나지 않을 사건을 기다리며 무한히 대기하는 현상
  • 식사하는 철학자 문제 : 교착 상태의 발생을 보여 주는 예시
    • 한 두명 식사 할 때는 상관없음 하지만 모든 철학자가 동시에 식사를 하려면 아무도 식사를 할 수 없게 됨
  • 자원 할당 그래프 : 교착 상태 표현할 수 있음
    1. 프로세스는 원으로, 자원의 종류는 사각형으로 표현
    2. 사용할 수 있는 자원의 개수는 자원 사격형 내에 점으로 표현
    3. 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
    4. 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
  • 교착 상태 발생 조건 : 네가지 조건 중 하나라도 만족하지 않으면 교착상태가 발생하지 않음 
    1. 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용 불가
    2. 점유와 대기 : 자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다림
    3. 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못함
    4. 원형 대기 : 프로세스들이 원의 형태로 자원을 대기

 

 

 

교착 상태 예방

  • 교착 상태 예방 : 교착상태가 발생하지 않도록 교착상태발생조건 중 하나를 없앰
    1. 자원의 상호 배제를 없애면? : 모든 자원 공유 가능하게 만든다 -> 현실적인 방법은 아님
    2. 점유와 대기를 없애면? : 특정 프로세스에 자원을 모두 할당 또는 아예 할당하지 않음 -> 자원 활용률을 낮출 수 있음
    3. 비선점 조건을 없애면? : 선점이 가능한 자원에 한해 효과적 -> 모든 자원이 선점 가능한 것은 아님
    4. 원형 대기 조건을 없애면? : 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않음
  • 교착 상태 회피 : 안전 상태를 유지할 수 있는 경우에만 자원을 할당하는 방법
    1. 안전 순서열 : 교착상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
    2. 안전 상태 : 교착상태 없이 모든 프로세스가 자원을 할당받고 종료 될 수 있는 상태
    3. 불안전 상태 : 교착상태가 발생할 수도 있는 상태
  • 교착 상태 검출 후 회복 : 교착 상태 발생 여부를 주기적으로 검사하고, 교착 상태가 발생하면 그때그때 회복하는 방식
    1. 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
    2. 프로세스 강제 종료를 통한 회복 : 가장 단순하면서 확실한 방식, 운영체제는 교착 상태에 놓인 프로세스를 모두 강제 종료할 수 있고, 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료할 수 있음

 

 

기본미션 p.363 1번

 

정답 : 4번

 

항상 바쁜 대기를 하는 것은 아님 대기 상태로 될 수도 있음

 

선택 미션 임계 구역, 상호 배제 개념을 정리하기

 

  • 임계 구역 : 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
  • 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기