기술 면접 질문 모음
2023. 9. 14. 16:29
lecture
운영체제 프로세스 프로세스와 스레드의 차이는 무엇인가요? 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요? 교착상태의 해결법은 무엇인가요? 뮤텍스와 세마포어에 대해서 설명해 보시오. 컨텍스트 스위칭이란 무엇인가요? 경쟁 상태란 무엇인가요? 프로세스 혹은 스레드의 동기화란 무엇인가요? 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요? CPU 스케줄링이란 무엇인가요? CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요? 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요? 메모리 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요. 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오. 페이지와 세그멘테이션에 대해서 설명해 보시오...
애플리케이션에서 여러 개의 스레드를 사용하는 이유?
2023. 8. 17. 01:51
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
1) 여러 개의 스레드를 사용하면 동시에 여러 개의 관련 작업을 실행 할 수 있어서, 애플리케이션의 반응성을 향상시킬수 있기 때문입니다. 또한 여러개의 작업을 동시에 실행하여 더 뛰어난 성능을 달성할 수도 있습니다. 2) 하나의 프로레스에 속한 다수의 스레드는 다음 항목을 공유합니다. 힙 코드 프로세스의 열린 파일 프로세스의 메타 데이터 3) 운영 체제는 어떤 방식으로 스케줄링한 스레드를 설계해야하나? 운영 체제는 각 스레드의 대한 동적 우선 순위를 유지하여 인터렉티브 스레드를 우선시하고 시스템의 특정 스레드가 기아 상태 가 되는것을 방지합니다. 이 코드는 어떤 작업을 수행하나요? Thread thread = new Thread(new Runnable() { @Override public void run..

lecture 2. 멀티 스레드 프로그램 구성
2023. 8. 17. 01:30
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
Runnable 인터페이스로 다른 스레드에서 코드를 실행하는 방법과 진해지는 정도의 수준. 그리고 스레드 클래스의 유용한 기능을 알아보고 IDE를 사용해 스레드를 디버그 하는 법도 해볼게요. 1. 스레드 생성하는 방법 Java 에서는 JDK 가 모든 스레드의 관련 속성과 메서드를 스레드 클래스로 압축합니다. 그래서 새 스레드를 만들려면 새 스레드 객체부터 생성해야하죠!! 스레드 객체 자체는 기본적으로 비어있스빈다. 그러니 runnable 인터페이스를 구현하는 클래스의 객체를 해당 생성자에 전달해야합니다. run 메서드에 어떤 코드를 넣든 운영 체제가 스케줄링하자마자 새 스레드에서 실행될 겁니다. 자바 8부터는 람다로 줄일수 있죠?!?! 스레드 객체에서 start 메서드를 호출해 스레드를 시작해야합니다. ..
lecture 1. 스레딩 기초
2023. 8. 17. 00:38
lecture/Java 멀티스레딩, 병행성 및 성능 최적화
스택(stack) 은 메모리영역으로 지역 변수가 저장되고 기능이 실행되는 영역입니다. 그리고 명령어 포인터는 그냥 포인터 일뿐입니다. 스레드가 실행할 다음 명령어의 주소를 가리키느 역할을 한다. 왜 각각의 스레드가 자체 스택과 명령어 포인트를 가지는지 쉽게 이해하려면 각각의 스레드는 특정 순간에 서로 다른 함수를 이용해 다른 명령을 수행한다는것만 기억하자. 컨텍스 스위치 하나의 스레드 실행을 멈추고 다른 스레드를 스케줄링한 다음 다시 실행하는것이 컨텍스 스위치입니다. 동시에 많은 스레드를 다룰 때는 효율성이 떨어지기 때문입니다. 이것이 병행성을 위한 대가입니다. 우리가 생각을 가다듬고 집중력을 회복하는 시간과 똑같습니다. 집이나 직장에서 여러 일을 동시에 하면 생산성이 떨이지게 됩니다. 주변의 뱅하는 받..

멀티프로세싱과 멀티스레딩, 그리고 IPC
2023. 6. 1. 00:35
lecture
멀티프로세싱은 여러 개의 '프로세스' 즉 동시에 2가지 이상의 일을 수행 할 수 있는것을 말합니다.이를 통해 하나 이상의 일을 병렬로 처리할 수 있으며 특정 프로세스의 메모리, 프로레스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해 처리할 수 있으므로 신뢰성이 높은 강점이 있습니다.멀티스레딩 이란 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높습니다. 예를 들어 웹 요청을 처리할 때 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하여, 한 스레드가 중단(blocked)되어도 다른 스레드는 실행(running)상태일 수 잇기 때문에 중단되지 않은 빠른 처리가 가능합니다. 또한, 동시성에..