목록전체 글 (287)
개발자는 기록이 답이다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b2SgIY/btsEoKqbbMM/0zzTWjgxNH5dBZjryORtrK/img.jpg)
1. 교착 상태란 프로세스를 실행하기 위해 자원이 필요한데, 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더 이상 진행할 수 없는 교착상태가 된다. 교착 상태 발생 조건 교착 상태가 발 생할 조건에는 4가지가 있다. 4가지 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착상태가 발생할 가능성이 생긴다. 상호 배제 교착 상태가 발생한 근본적인 원인은 해당 자원을 한 번에 하나의 프로세스만 이용 가능했기 때문이다. 프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때, 상호배제 (mutual exclusion )상황에서 교착 상태가 발생할 수 있다. 점유와 대기 프로세스가 어떠한 자..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bO55ha/btsEoMuL68o/KXVqXFKC5ACJklTC7EkrkK/img.jpg)
1. 동기화란? 프로세스들을 무작정 동시에 실행해도 괜찮을까? 동시다발적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 서로 협력하며 영향을 주고 받는다. 이렇게 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장 해야 하기에 반드시 동기화 synchronization 되어야 한다. 동기화의 의미 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행될 수 있다. 워드 프로세서에는 사용자로부터 입력을 받는 프로세스 입력한 내용의 맞춤법 검사하 는 프로세스 입력한 내용을 화면에 출력해 주는 프로세스 이 프로세스들은 각기 다른 독립적인 프로세스이지만 공동의 목표를 위해 서로 협력하는 존재다. 이렇게 협력적으로 실행되는 프로세스들은 아무렇게나 마구 동시에 실..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bq6nnK/btsEnXXAZ7O/TCNhAFqVjkUIDPciD1dtGk/img.png)
Java AIO Java 1.7부터 NIO2를 지원 AsynchronousChannel을 지원 AsynchronousSocketChannel AsynchronousServerSocketChannel AsynchronousFileChannel 등 callback과 future 지원 내부적으로 Thread pool과 epoll, kqueue 등의 이벤트 알림 system call을 이용해서 IO를 비동기 적으로 처리 I/O가 준비되었을때, Future 혹은 callback으로 비동기적인 로직 처리 가능 read나 write처럼 IO관련된 요청이 들어오면 비동기 채널은 바로 반환한다. Future을 반환하거나 아무것도 반환하지 않고 즉시 제어권은 caller한테 돌려준다. caller는 본인의 일을 하면 되기..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dXSpOO/btsEllkKB0v/fum9zEngRZsNJcFQYQpiJ1/img.png)
1. Java NIO java New Input/Output (non-blocking x) Java 1.4에서 처음 도입 파일과 네트워크에 데이터를 읽고 쓸 수 있는 API 제공 buffer 기반 (객체) non-blocking 지원 논블로킹이 아니게도 할 수 있고, 논블로킹을 쓰지 못하는는 API도 있다. selector, channel 도입으로 높은 성능 보장 2. Java NIO vs Java IO Java NIO Java IO 데이터 흐름 양방향 단방향 종류 Channel InputStream, OutputStream 데이터의 단위 buffer byte 혹은 character blocking 여부 non-blocking지원 (blocking 한 API도 존재) blocking 만 가능 특이사항 S..