Skip to content

Latest commit

 

History

History
67 lines (36 loc) · 3.78 KB

TIL220114.md

File metadata and controls

67 lines (36 loc) · 3.78 KB

Daily to do list

스위프트 (x)


HIG (X)


CS (X)


알고리즘 (x)


오늘의 회고

220113

스레드 동기화 문제:

교착상태 - 공유 자원에 대한 요구가 엉켜서 자원 관리를 잘못하여 프로세스나 스레드가 자원의 락을 획득하기 위해 무한 대기 하는 것

교착상태 발생 조건:

상호 배제 - 두 개 이상의 프로세스 혹은 스레드가 동시에 한 공유 자원에 접근할 수 없도록 하여 한 자원에 한 스레드만 접근할 수 있게 하는 것

자원에 대한 배타적 통제권, 즉 해당 자원을 오직 나만 쓰겠다 하는 상황

한 스레드가 자원을 독점적으로 사용하고 있어 다른 스레드가 락을 획득하기 위해 무한 대기할 수 있는 상황 발생

점유 상태로 대기 - 공유 자원에 락을 획득하여 점유하고 있는 상태인데 다른 자원의 락을 획득하기 위해 대기하고 있는 상황

여러 개의 자원을 동시에 써야하는 경우, 락을 획득한 자원에 대한 처리는 끝났는데 남은 자원의 락을 다른 스레드가 갖고 해제하지 않아서 무한정 대기하 있을 수 있는 상황

  • 자신이 점유하고 있는 락도 해제를 해야 다른 스레드가 락을 얻는데 못 얻으니 무한정 대기가 발생

선점 불가 - 다른 프로세스나 스레드가 자원을 선점하고 있어서 자원을 뺏어올 방법이 없는 것,

220114

스레드 이어서..

기아 상태 : 스레드들에게 우선 순위를 부여하여 공유 자원에 접근할 떄 우선순위가 낮은 스레드가 소외되어 아무 일도 하지 못하는 상태

라이브락: 데드락과 비슷한 결과, 스레드들이 동시에 실행되면서 락의 해제와 획득을 반복적으로 하면서 정상적으로 동작하는 것처럼 보이나 사실상 아무것도 못하고 무한 동작 중인 현상

데드락을 피하기 위해 프로세스가 락을 획득하지 못할 경우 대기 상태로 빠지지 않도록 하고 자신이 획득한 락을 해제시켜서 다른 프로세스가 자신이 점유하고 있던 자원에 접근할 수 있도록 처리하고 다시 시작을 한다.

순수 함수 : 외부적 상태에 의존적이지 않고, 어떠한 사이드이펙트도 발생시키지 않는 함수,

언제 얼마나 많이 호출해도 항상 같은 input, output을 반환하는 함수

장점 : 테스트가 용의하고, 재사용성이 올라감, 예측가능성이 높아짐

프로그래밍을 할 때 앱 전체를 순수함수로만 구성하는 것은 어렵지만 그렇게 하면 핵심로직을 더 단단하게 만들고 테스트하기 쉽게 만들 수 있다.

함수형 프로그래밍: 프로그램이 상태의 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 프로그래밍, 함수형 프로그래밍은 함수를 일급 객체로 다룬다.

프로그램 동작 과정에서 상태가 변하지 않으면 함수 호출이 각각 상호 간섭 없이 실행되므로 병렬처리를 할 때 부작용이 거의 없다.

일급 객체 조건 : 전달인자로 전달할 수 있어야 한다, 동적 프로퍼티 할당이 가능해야 한다., 변수나 데이터 구조 안에 담을 수 있어야 한다. 반환 값으로 사용할 수 있어야 한다. 할당할 때 사용된 이름과 관계없이 고유한 객체로 구별가능하다.

함수형 프로그래밍 장점 : 여러가지 연산 처리 작업이 동시에 일어나는 프로그램을 짜기 쉽다.

멀티코어 혹은 여러 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 ㅟㅂ다.

상태변환에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞춰 설계가 가능하다.