CS/운영체제

[OS] 개념: 프로세스, 스레드, 데드락

용감한 개복치 2024. 10. 30. 01:03

참고자료

https://wikidocs.net/232213

 

07-5 교착상태의 탐지와 회복

[TOC] 교착상태 탐지와 회복은 교착상태를 관리하는 또 다른 중요한 접근 방식입니다. 이 방법은 교착상태를 미리 예방하거나 회피하는 대신, 교착상태가 발생하였을 때 이를 탐지…

wikidocs.net

 

프로세스

  • 독립된 실행 단위 -> 최소 1개의 스레드 가짐
  • 독립된 메모리 공간 -> 코드 데이터 스택 힙
  • 자원 소유 및 관리 -> 서로 다른 프로세스의 자원에 접근 x, 하고싶으면 IPC 사용

멀티프로세스

장점

  • 안정성 높음
  • 프로세스 간 영향 없음

단점

  • 자원 소모가 큼
  • 컨텍스트 스위칭 비용 높음 -> 캐시 메모리 초기화 등 무거운 작업 발생

스레드

출처 : https://hongcoding.tistory.com/138#:~:text=%EC%8A%A4%EB%A0%88%EB%93%9C%EB%9E%80%2C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EB%82%B4%EC%97%90%EC%84%9C,%EC%9D%B4%EC%9A%A9%ED%95%98%EB%8A%94%20%EC%8B%A4%ED%96%89%EC%9D%98%20%EB%8B%A8%EC%9C%84%20%EC%9D%B4%EB%8B%A4.&text=%EC%8A%A4%EB%A0%88%EB%93%9C%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EA%B3%B5%EC%9C%A0,%EC%84%9C%EB%A1%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC%20%EA%B3%B5%EC%9C%A0%ED%95%9C%EB%8B%A4.

  • 프로세스 내 실행 단위
  • 프로세스가 할당받은 자원 공유
  • 독립된 스택만 할당 -> 그림에서 처럼 스택만 각각 할당 받고 나머지는 공유중

멀티스레드

장점

  • 자원 공유로 효율적 -> 프로세스 생성 X, 시스템 콜 감소
  • 컨텍스트 스위칭 비용, 통신 속도 낮음


단점

  • 동기화 이슈 -> 데드락
  • 하나의 스레드 문제가 전체에 영향

 

데드락(Deadlock)

두 개 이상의 프로세스가 서로의 자원을 기다리며 무한 대기하는 상태

 

발생 조건

  • 상호배제: 자원은 한 번에 하나의 프로세스만 사용 -> 하나의 프로세스가 자원을 독점 사용중
  • 점유와 대기: 자원을 보유한 상태에서 다른 자원 대기
  • 비선점: os는 자원을 강제로 빼앗을 수 없음
  • 순환대기: 프로세스간 순환형태의 자원 대기

예방 방법

  • 상호배제 -> 자원의 공유
  • 점유와 대기 ->
    • 프로세스 시작 시 필요한 자원을한 번에 할당 받기
    • 자원이 필요한 경우 보유한 자원 모두 놓고 재요청
  • 비선점: 자원을 강제로 빼앗을 수 없음 -> cpu, memory는 일시적으로 빼앗을 수 있음
  • 순환대기: 프로세스간 순환형태의 자원 대기 -> 프로세스의 priority를 기준으로 낮은 쪽이 자원 우선 놓기

==> Starvation 발생 가능

 

대응 알고리즘

Deadlock Avoidance

 

데드락 발생할 것 같으면 아예 자원을 할당하지 않는 방식

프로세스들이 필요로 하는 각 자원별 최대 사용량을 미리 선언하는 것

  • 자원 할당 그래프 알고리즘
    • 각 자원 유형이 하나의 인스턴스만 가지고 있는 경우
    • 프로세스가 자원을 요청하는 것은 점선, 프로세스에 자원 할당하는 것은 실선으로 나타낸 그래프에서 사이클이 존재하지 않을 때 자원 할당
    • 출처 : https://rebro.kr/177
  • 은행원 알고리즘
    • 인스턴스가 여럿 존재할 때는 위의 방식 사용 x
    • 요청 자원을 모두 할당받았을 땐 일정 시간안에 모두 반납한다는 전제하에 저용
    • 요청 자원수가 남은 자원의 수보다 적은 프로세스만 선택하여 할당

Deadlock Detection & Recovery

  • 자원 선점시에 어떤 프로세스를 종료할 지 정해서 데드락 발생 이전 상태로 롤백
  • 프로세스 재시작
  • 롤백 회수를 지정함으로써 계속해서 동일한 프로세스가 종료되어 starvation 발생하는 것을 막음

Deadlock Ignorance

  • 데드락은 어차피 드물게 일어나니 대처하면서 더 큰 오버헤드가 발생하는 경우를 제거
  • unix, window 대부분이 채택

'CS > 운영체제' 카테고리의 다른 글

[Linux] 시스템 모니터링  (0) 2022.05.13
[Linux]환경변수&bash 스크립트  (0) 2022.05.13
[Linux]nohup  (0) 2022.05.13
[Linux]입출력, 표준 스트림  (0) 2022.02.11
[Linux]패키지&프로세스  (0) 2022.02.10