QnA 9week
박수빈
1. 멀티 스레싱의 장단점은?
장점
- 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우, 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap을 이용하여 데이터를 주고받을 수 있습니다.
단점
- 멀티 스레딩은 데이터와 힙 영역을 공유하기 때문에 동기화 문제에 신경써야 합니다. 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 엉뚱하게 접근하여 이상한 값을 읽어오거나 수정할 수 있습니다. 그러므로 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤해야 합니다.
2. 멀티 프로세싱과 멀티 프로그래밍의 차이는 무엇인가?
- 멀티 프로세싱은 여러 개의 CPU를 장착하여 동시에 여러 작업을 병렬로 실행하는 방법이고
멀티 프로그래밍은 단일 CPU 상에서 여러 개의 프로그램이 동시에 실행되는 것을 말합니다.
3. 가상메모리란 무엇인가?
- 가상 메모리 기법은 물리적 메모리보다 더 큰 프로그램이 실행될 수 있도록 컴퓨터 시스템에서 사용하는 메모리 관리 기법입니다.
3.1 가상주소를 실제주소로 변환하는 방법은?
- CPU가 메모리 참조를 실행할 때는 MMU(Memory Management Unit)라는 HW 장치를 이용해 해당 가상 주소를 실제 메인 메모리의 물리 주소로 변환하여 메모리 참조를 진행합니다.
4. 선점형 스케줄링과 비선점형 스케줄링의 차이는?
- 선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있고 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말합니다.
5. 소켓이란 무엇입니까?
- 소켓은 두 응용 프로그램을 연결하는 데 사용된다. 연결의 끝점을 소켓이라고 한다.
임시은
1. 메모리 계층에 대해 설명하세요.
- 메모리 계층은 CPU가 메모리에 더 빨리 접근할 수 있도록 메모리를 필요에 따라 여러 가지 종류로 나누어 둔 것입니다.
메모리 계층은 레지스터, 캐시, 메모리와 하드디스크로 구성되어 있으며 접근 위치, 가격, 용량과 속도가 다 다릅니다. 레지스터와 캐시는 CPU 내부에 존재하여 아주 빠르게 접근할 수 있어 속도가 빠릅니다. 메모리는 CPU 외부에 존재하여 비교적 속도가 느리고, 보조기억장치인 하드디스크는 CPU가 직접 접근할 방법이 없어 저장되어 있던 데이터를 메모리에 이동시키고 이 메모리에서 접근하므로 속도가 매우 느립니다.
2. 스와핑(Swapping)에 대해 설명해주세요.
- 스왑이라는 단어는 교환하다라는 의미를 가지고 있습니다. 이처럼 메모리에 있는 데이터를 디스크에 있는 데이터와 바꾸는 작업을 합니다. 스와핑은 CPU에서 실행 중이지 않은 프로세스의 메모리 이미지를 저장 장치에 이동시켜 메모리 사용의 효율성을 증가시킵니다.
3. 페이지 교체 알고리즘에 대해 설명해주세요.
- 페이지 교체 알고리즘은 페이지 부재 발생 시 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느것과 교체할 지를 결정하는 전략입니다.
우선 필요한 페이지가 메모리에 없어 페이지 폴트가 발생하면 요청된 페이지를 디스크에서 메모리로 읽어와야 합니다. 이때 비어있는 프레임이 존재하지 않으면 현재 할당된 페이지 중 하나와 교환을 해야하는데 이때 사용합니다. 이 알고리즘은 페이지 부재율을 최소화하는 것이며, 자주 사용되는 페이지 교체 알고리즘 종류로는 여러 개가 있는데 제일 많이 사용하는 방법은 `LRU(Least-Recently-Used)` 가 있습니다.
> 페이지 폴트: 프로그램이 자신의 주소 공간에는 존재하지만 시스템의 RAM에는 현재 없는 데이터나 코드에 접근 시도하였을 경우 발생하는 현상이다.
> LRU(Least Recently Used): 참조가 가장 오래된 페이지를 바꾼다.
최낙주
1. 프로세스와 스레드의 차이를 설명해주세요.
- 프로세스는 실행 중인 프로그램을 말하며, 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와 공유하지 않는다. 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다.
스레드는 프로세스 내에서 Stack만 따로 할당 받고, 그 이외의 메모리 영역(Code, Data, Heap)영역을 공유하기 때문에 다른 쓰레드의 실행 결과를 즉시 확인할 수 있다. 스레드는 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행된다.
2.콘보이 현상(convoy effect)이란 무엇이고, 콘보이 현상이 발생될 수 있는 CPU 스케줄러 알고리즘은 무엇인지 설명해주세요.
- 콘보이 현상이란 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상을 말한다.
FCFS(First-Come First Served) 스케줄링은 비선점형으로, 순차적으로 먼저 큐에 들어온 작업부터 실행하므로 콘보이 현상이 발생할 수 있다.
3. 동기와 비동기의 차이에 대해 설명해주세요.
- 동기는 순차적, 직렬적으로 태스크를 수행하고, 비동기는 병렬적으로 태스크를 수행한다.
- 예를 들어, 서버에서 데이터를 가져와서 화면에 표시하는 작업을 수행할 때,
동기는 서버에 데이터를 요청하고 데이터가 응답될 때까지 이후 태스크들은 블로킹(Blocking, 작업 중단)된다.
- 비동기는 서버에 데이터를 요청한 이후 서버로부터 데이터가 응답될 때까지 대기하지 않고(Non-Blocking) 즉시 다음 태스크를 계속해 수행한다.
신태우
1. 프로세스와 스레드의 차이점을 설명해주세요
- 프로세스는 실행 중인 프로그램으로 자원을 할당받는 작업단위이다.
- 스레드는 작업이 실행되는 실행 단위이다.
2. 스레드의 구성 요소를 설명해주세요
- 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택
3. 메모리 계층 구조에 대해 설명해주세요
- 레지스터, L1,L2 캐시, 주기억장치, 보조기억장치
4. 병행성과 병렬성에 대해 설명해주세요
- 병행성은 동시성이라고도 하며 번갈아가며 작업을 실행하여 동시에 실행하는 것처럼 보이게한다.
병렬성은 물리적으로 둘 이상의 작업을 동시에 처리하는 것이다.
5. 컴퓨터에서 32bit와 64bit가 무엇을 의미하는지 설명해주세요
- 레지스터가 한 번에 처리할 수 있는 비트수이다.
- 하나의 레지스터가 저장 가능한 공간의 크기를 나타낸다.
이성호
1. 메모리 단편화는 어떨 때 일어나며 그중 내부 단편화와 외부 단편화의 차이점
- 메모리 단편화는 메모리 공간이 작은 조각으로 나누어져 실제적 총량으로는 메모리의 사용이 충분히 가능하지만,
할당이 불가능한 상태를 뜻하며 내부단편화는 프로세스가 필요로한 양보다 더큰 메모리가 할당되어 잉여 메모리가 생기는 것을 뜻하고 외부 단편화는 메모리가 할당되고 해제되는 작업이 반복되며 총 메모리양에는 포함되지만 실제로는 할당이 불가능한 현상을 말합니다.