TIL

TIL - 0228

ahlight 2023. 2. 28. 22:39

1. 자바 플레이 그라운드 with TDD, 클린 코드

  • 블랙잭 구현 중
  • Players 일급컬렉션의 지네릭 타입을 Player -> Person(Player, Dealer의 인터페이스)로 변경
  • UI 변경
  • 어느정도 마무리가 되었다. 재구현전에 클래스간 의존관계 및 메소드 내용을 정리해 다이어그램을 그려보자

2. 혼자서 공부하는 컴퓨터 구조 + 운영체제

* 동기화 기법

구분 특징
뮤텍스락 - 하나의 공유자원을 상정한 방식
- 상호배제를 위한 동기화 도구
- 자물쇠 역할의 전역변수 : lock
- 임계구역을 잠그는 역할의 함수 : acquire(임계 구역이 잠겨 있다면 열릴때 까지 반복적으로 확인, 열린 경우엔 잠금 -> lock = true;
- 잠금해제 역할의 함수 : release(lock = false;)
- 임계 구역이 잠겨 있을 경우 계속해서 반복적으로 확인 -> 바쁜 대기
세마포어 - 뮤텍스락과 다르게 여러개의 공유자원을 상정한 방식
- 상호배제 + 실행순서 제어를 위한 도구
모니터 - 사용자가 사용하기에 편리
- 프로세스는 반드시 인터페이스(공유자원으로 접근가능한 통로)를 통해서만 접근 가능
- 모니터안에 항상 하나의 프로세스만 접근가능하게 만듬
- 특정 조건을 바탕으로 프로세스를 실행하고 일시 중단하기 위해 조건변수를 사용 -> 프로세스,스레드의 실행순서 제어

 

* 교착상태

  • 식사하는 철학자 문제 -> 일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상
  • 자원 할당그래프를 통한 교착상태 표현

출처 : https://medium.com/@lyoungh2570/%EA%B5%90%EC%B0%A9-%EC%83%81%ED%83%9C-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-9f2105b02af8

  • 교착상태 발생 조건(4가지가 모두 충족된 경우)
종류 특징
상호배제 어떤 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 경우
점유와 대기 어떤 자원을 할당 받은 상태에서 다른 자원을 할당 받기위해 대기하는 경우
비선점 어떤 프로세스의 작업이 끝날때까지 다른 프로세스는 접근할 수 없는 경우
환형 대기 프로세스들간의 요청 및 할당자원이 원의 형태를 이룬 경우

 

* 추후에 동기화를 위한 도구들의 실제 코드구현을 공부하자.


3. 알고리즘

 

프로그래머스 - 무인도 여행

1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이

ahlight.tistory.com