16. 스레드 장단점 정리>

스레드 장점 : 사용자에 대한 응답성 향상
자원 공유 효율(번거로운 작업 필요없)
프로세스 안에 있어서 프로세스의 데이터를 모두 접근 가능
작업이 분리되어 코드 간결(사용자 나름)
성능 개선 가능. 자원 공유 효율(ipc필요없)
단점: 하나 다운되면 다 다운;
스레드 많이 생성하면 성능 저하(콘텍스팅 스위치 많이 일어나) -무조건은 아님!

★동기화 이슈로 비정상적으로 동작 가능(동기화 코드를 적절히 추가해야되)

스레드vs프로세스
프로세스 독립적/스레드는 프로세스의 서브셋
프로세스는 각각 독립자원 /스레드는 프로세스 자원 공유
프로세스는 자신만의 주소 영역/스레드는 주소 영역 공유
프로세스간에는 ipc기법 통신해야함 / 스레드는 그럴 필요없


17. 스레드 동기화 이슈 이해>

동기화: 작업들 사이에 실행 시기를 맞추는 것
여러 스레드가 동일한 자원(데이터) 접근시 동기화 이슈 발생.
동일 자원을 여러 스레드가 동시 수정시, 각 스레드 결과에 영향 줌

깊은 이해가 필요한데 지금 너무 어렵다 ㅠㅠ


  1. 컴퓨터 공학 지식 기반 동기화 원인 이해>

19. 동기화 이슈 해결 코드 작성 방법 이해>

해결방안 mutual exclusion(상호 배제)
스레드는 프로세스 모든 데이터를 접근 할수 있으니까
여러 스레드가 변경하는 공유 변수에 대해 exclusive access필요
어느한 스레드가 공유 변수를 갱신하는 동안 다른 스레드가 동시 접근 못하게 막기.

mutual exclusion(상호 배제) : 임계자원(critical resource) / 임계영역(critical section)

스레드는 자주 일부 기능에 한해 사용
스레드 구현시 동기화 코드 까먹는 경우 있음(코드 복잡; 어디서 동기화 일어날지 놓치는 경우) 그러나 비정상동작시, 동기화 이슈를 인지! 관련 코드 찾아서 상호배제 코드를 넣을 수 있어야 함!

mutex와 세마포어
critical section임계구역 접근 막을려고 Locking 메커니즘 필요.

  • Mutex(binary semaphore) 임계구역에 하나의 스레드만 들어가기 가능

  • Semaphore 임계구역에 여러 스레드 들어가기 가능.
    counter를 두어서 동시에 리소스에 접근 할 수 있는 허요 가능한 스레드 수 제어.

각 언어, 프레임워크 별 동기화 라이브러리/함수 제공


20. 데드락과 스타베이션 개념 이해>

교착상태(deadlock)란? 무한 대기 상태. 두개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있어서 다음 단계로 진행 못하는 상태

배치 처리 시스템에선 교착 상태 없음.
프로스세, 스레드는 교착 상태 일어날 수 있음

휴대폰에 특정 앱 실행중 동작 안될때; 데드락일수 있음.
이를 디버깅 하기 위해 데드락이 무엇인지 이해가 필요
운영체제가 해당 앱이 특정 기간동안 반응 없으면 강제종료 시킴;

기아상태(starvation)
특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태

교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
기아상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할때
특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미.

profile
개발자_프론트엔드_꼬리에 꼬리를 무는 호기심

0개의 댓글