목록분류 전체보기 (518)
개발놀이터
이번 시간에는 프로세스 동기화에 대해서 알아보도록 하겠습니다. 프로세스 동기화란 OS에서 같은 메모리 공간을 공유하고 있는 프로세스들을 관리하기위한 방법입니다. 프로세스 동기화를 진행하게 되면 변수를 사용함으로써 데이터의 일관성을 유지하는데 도움이 됩니다. 프로세스 동기화를 하기위해 여러가지 방법이 있는데 이번 시간에 semaphore (이하 세마포어), mutex lock (이하 뮤텍스 락), hardware synchronization (이하 하드웨어 동기화)를 알아봅니다. 프로세스 동기화란? OS는 컴퓨터에서 모든 애플리케이션을 관리하는 소프트웨어이고 기본적으로 우리 컴퓨터에서 부드럽게 동작하는 것을 도와줍니다. 이러한 이유때문에 OS는 많은 일을 수행할 수 밖에 없습니다. 때로는 동시에 일을 수행..
suspend : 일시중단 resume : 다시시작 coincide : 일치(하다) / 동시 circute : 순환 ceiling : 천장
Q. Thread-safe에 대한 정의와 구현방법에 대해서 설명해주세요. A. 두개 이상의 스레드가 같은 객체에 접근해도 연산결과의 정합성이 보장될 수 있게끔 메모리 가시성이 확보된 상태를 말합니다. Thread-safe를 구현하기 위해서는 불변 객체를 사용하거나, java.util.concurrent 클래스를 사용하거나, ThreadLocal을 사용하거나, synchronized 키워드를 사용하거나, final 변수를 사용해야 합니다.
동시성 문제와 Thread-safe를 고민하는 것은 개발자로서 정말 중요한 과제라고 생각됩니다. 서비스가 커지면 커질수록 멀티스레딩이 절실히 필요해질텐데 성능을 위해 멀티스레딩을 강요받았지만 동시성문제로 버그가 생겨버리면 참 골치아플 것 같습니다. 이번 시간에는 동시성문제와 Thread-safe 그리고 자바에선 어떻게하면 동시성문제를 해결할 수 있는지까지 알아봅니다. 동시성문제 동시성문제가 발생하는 코드는 한눈에 봐서는 알아차리기 쉽지 않습니다. 차라리 동시성문제가 발생하는 패턴을 외워두고 있다가 해당 패턴이 나오면 해결하는 것이 더 타당해보일 정도로 정말 알기 쉽지않습니다. 저는 프로젝트를 할 때 동시성문제에 대해 진지하게 고민하고 코드를 짜본 적은 없지만 어떤 상황이 동시성 문제가 발생하는지는 대강 ..
Q. 멀티스레드 프로그래밍에 대해서 설명해주세요. A. 멀티스레딩은 하나의 프로세스에서 여러개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화하는 것을 말합니다. 멀티스레딩의 장점은 멀티프로세싱에 비해 메모리 자원소모가 적고 힙 영역을 통해서 스레드간 통신이 가능해서 프로세스간 통신보다 간단하다는 점이 있고 단점은 힙 영역에 있는 자원을 사용할 때는 동기화를 해야하고 이때 락을 과하게 사용하면 성능이 저하될 수 있다는 점입니다.
Q. 프로세스와 스레드의 차이에 대해서 설명해주세요. A. 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이고 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위입니다. 각각의 프로세스는 고유한 주소와 메모리 공간이 부여되고 독립적입니다. 반면에 스레드는 부모 프로세스에서 자원을 공유하기 때문에 논리적으로 연결되어 있습니다. 즉, 스레드는 프로세스 안에 포함된 개념이며 스레드는 경량화된 프로세스라고 볼 수 있습니다. Q. Context Switching에 대해서 설명해주세요. A. Context Switching은 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말합니다. 보..
fragment : 단편적인 instruction : 설명 / 컴퓨터 프로세서가 이해할 수 있는 일련의 코드들 intensive : 강한 / 격렬한 resume : 다시 시작하다 The Context switching is a technique or method used by the operating system to switch a process from one state to another to execute its function using CPUs in the system. Context Swithcing은 시스템안에서 CPU를 사용하는 기능을 실행하기위한 하나이상의 상태를 스위칭하는데 필요한 OS에 의해 사용된 기술 혹은 방법이다.
프로세스와 스레드의 차이에 대한 면접질문은 신입 개발자에게 단골 질문이라고 알려져 있습니다. 이 둘은 다른 듯 비슷해 보여서 헷갈리기 쉬운데 이번 포스팅에선 이 둘의 차이와 더 나아가 멀티프로세싱, 멀티스레딩과 더불어 이 둘을 언제 사용하면 좋을지까지 포스팅합니다. Process 프로세스는 실행된 프로그램의 인스턴스입니다. 우리가 프로그램을 실행할 때 이 프로그램이 직접적으로 실행되는 것이 아니라 프로그램을 실행하기 위해 필요한 스텝들을 거친 뒤 실행이 됩니다. 이렇게 실행을 위해 필요한 스텝들이 바로 프로세스 즉 과정입니다. 프로세스는 한번에 여러개의 일을 수행하기위해 다른 프로세스를 만들 수 있습니다. 이렇게 만들어진 프로세스들은 클론 프로세스 혹은 자식 프로세스라고 부르죠. 메인 프로세스는 부모 프..
https://coding-review.tistory.com/345 여태까지 공부한 데이터베이스 면접질문 / 답변 https://coding-review.tistory.com/344 여태까지 공부한 Spring 면접질문 / 답변 https://coding-review.tistory.com/343 여태까지 공부한 Java 면접질문 / 답변 4부터 시작하는 것은 넘어가주시길 바랍니다... 따로 정리 coding-review.tistory.com 위의 포스팅과 이어집니다. 58. TCP와 UDP의 차이 TCP는 연결 지향형 프로토콜이고 UDP는 데이터를 데이터그램으로 전송하는 프로토콜입니다. TCP는 연결형 서비스를 지원하고 가상회선 연결을 지원하기 때문에 전송이 양방향으로 이루어질 수 있는 전이중 방식과 각..
https://coding-review.tistory.com/344 여태까지 공부한 Spring 면접질문 / 답변 https://coding-review.tistory.com/343 여태까지 공부한 Java 면접질문 / 답변 4부터 시작하는 것은 넘어가주시길 바랍니다... 따로 정리하면서 공부한거라 Java 면접질문이 아닌 123번을 제외하고 4번부터 수 coding-review.tistory.com 위의 포스팅과 이어집니다. 46. 데이터베이스 인덱스에 대해서 설명해주세요. 데이터베이스 인덱스는 조회 성능을 향상시켜주는 데이터베이스 튜닝 방식 중 하나입니다. 하지만 실질적인 성능 향상을 위해서라면 인덱스가 사용된 컬럼인지 카디널리티나 셀렉티비티같은 구성 요소들이 고려된 인덱스인지 확인해야합니다. 47...