일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- Public
- 이펙티브 자바
- 메모리
- java
- 운영체제
- 컴퓨터과학
- 스터디
- 신입
- 개발
- 우리카드
- 세마포어
- 프로그래밍
- 공채
- IT
- CS
- 스프링
- 뮤텍스
- 정보처리기사
- 디지털
- 깃
- OS
- 자바
- github
- 컴퓨터공학
- Effective Java
- spring
- 신입사원
- 깃허브
- package-private
- Today
- Total
목록뮤텍스 (3)
주니어 개발자 성장기
교착상태(Deadlock) 일련의 프로세스들이 서로가 가진 자원(SW || HW)을 기다리며 block된 상태 자원이란? 하드웨어, 소프트웨어 등을 포함하는 개념 EX) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차 요청(Request), 획득(Allocate), 사용(Use), 반납(Release) 발생 조건 Mutual exclusion(상호 배제) 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 No preemption(비선점) 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 Hold and wait(점유 대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음 Circula..
개요 '식사하는 철학자 문제'라고 하며 철학자는 1. 밥먹기 2. 생각하기 2가지 일을 할 수 있다. 반면 젓가락의 갯수(공유자원)는 제한되어 있다. 이 문제의 해결법을 코드로 살펴보자. Solution A Initialization /* 최초 값은 모두 1이다. */ semaphore chopstick[5]; 철학자는 5명으로 가정하고 젓가락은 5개가 있다고 가정하자. Philosopher i(i번째 철학자) do { //왼쪽, 오른쪽 젓가락을 잡는 연산 P(chopstick[i]); P(chopstick[(i + 1) % 5]); //식사 eat(); //왼쪽, 오른쪽 젓가락 놓는 연산 V(chopstick[i]); V(chopstick[(i + 1) % 5]); think(); } while(1);..
문제 상황 주로 데이터베이스에서 발생하는 문제이다. 한 프로세스가 DB에 Write 중일 때 다른 프로세스가 접근하면 안된다. Read는 동시에 여럿이 해도 된다. 해결법 Writer가 DB에 접근 허가를 아직 얻지 못한 상태에서는 모든 대기중인 Reader들을 다 DB에 접근하게 해준다. Writer는 대기 중인 Reader가 하나도 없을 때 DB 접근이 허용된다. 일단 Writer가 DB에 접근 중이라면 Reader들은 접근이 금지된다. Writer가 DB에서 빠져나가야만 Reader의 접근이 허용된다. 여기서 Shared Data는? DB 자체 readcount - 현재 DB에 접근 중인 Reader의 수 두 가지 동기화 변수(세마포어) Mutex 공유 변수 readcount를 접근하는 코드(cri..