공부/CS 전공

운영체제 (🙋🏻‍♀️ Q&A)

이채림 2024. 11. 16. 23:52

운영체제

🙋🏻‍♀️ 시스템 콜을 설명해 보세요.

시스템 콜은 커널 모드와 사용자 모드 간에 필요한 정보를 주고받기 위해 호출하는 함수입니다. OS는 사용자가 하드웨어의 주요 자원에 쉽게 접근할 수 없게 커널 모드와 사용자 모드로 구분합니다. 그래서 프로세스에서 자원에 접근해 작업을 처리해야 할 때는 시스템 콜로 필요한 요처을 하고 그에 대한 결과 값을 돌려 받게 됩니다.

🙋🏻‍♀️ 프로세스의 메모리 구조를 설명해 보세요.

프로세스의 메모리 영역은 스택, 힙, 데이터, 코드로 나눌 수 있습니다. 스택은 지역 변수와 함수의 매개변수가 저장되는 영역이고, 힙은 동적 메모리 할당이 일어나는 영역입니다. 데이터 영역에는 전역 변수, 정적 변수, 배열, 구조체 등이 저장됩니다. 데이터 영역은 다시 BSS 영역과 데이터 영역으로 나눌 수 있습니다. 마지막으로 코드 영역은 기계어가 저장되는 곳입니다.

🙋🏻‍♀️ 프로세스와 스레드의 차이점을 설명해 보세요.

프로세스는 실행 중인 하나의 프로그램을 의미하며 실행의 단위라고 할 수 있습니다. 반면에 스레드는 프로세스 내에서 실행되는 흐름의 단위를 의미합니다. 그래서 프로세스는 독립적인 메모리 영역을 갖지만, 스레드는 스택 영역만 독립적이고, 그 외 영역은 다른 스레드와 공유합니다.

🙋🏻‍♀️ 스택 오버플로와 힙 오버플로에 관해 설명해 보세요.

스택 오버플로는 메모리에서 스택 영역이 힙 영역을 침범할 때 발생합니다. 그 예로 과도한 재귀 호출이 있습니다. 힙 오버플로는 스택 영역이 침범하는 경우입니다. 예로는 과도한 메모리 동적 할당이 있습니다.

🙋🏻‍♀️ PCB가 무엇인지 설명해 보세요.

PCB는 Process Control Block의 약자로, 프로세스에 대한 정보를 저장하는 구조체입니다. 저장되는 정보로는 프로세스의 고유 아이디인 PID, 프로세스가 다음으로 실행해야 하는 명령어의 주소 값인 PC, CPU의 레지스터에 저장되는 정보 등이 있습니다.

🙋🏻‍♀️ 멀티 프로세스와 멀티 스레드의 차이점을 설명해 보세요.

멀티 프로세스는 응용 프로그램 하나를 프로세스 여러 개로 구성하는 것입니다. 반면에 멀티 스레드는 한 프로세스 안에서 여러 스레드로 작업을 처리하는 것입니다. 프로세스는 독립적인 메모리 영역을 갖기 때문에 자원 공유와 통신을 하려면 IPC를 활용해야 합니다. 스레드는 자원 공간을 공유하므로 스레드 간 통신과 자원 공유가 간단하고 프로세스 대비 콘텍스트 스위칭 비용이 적게 들지만, 동기화가 필요 합니다.

* IPC : 프로세스 간에 데이터를 교환하거나 협력 작업을 수행할 수 있도록 해주는 통신 방식


🙋🏻‍♀️ 동시성과 병렬성을 비교해 설명해보세요.

동시성은 하나의 코어에서 작업을 번갈아 가면서 실행해 여러 작업을 처리하는 것을 의미합니다. 이 방식은 CPU에서 처리 중인 작업을 변경하기 위해 콘텍스트 스위칭이 일어나 오버헤드가 발생합니다. 반면에 병렬성은 여러 코어에서 여러 작업을 처리하는 것을 의미합니다. 즉, 물리적인 시간 관정에서 여러 작업이 동시에 처리되는 방식입니다.

🙋🏻‍♀️ 콘텍스트 스위칭이 무엇인지 설명해 보세요.

콘텍스트 스위칭은 CPU가 처리 중인 프로세스를 변경하는 것을 의미한다. CPU는 하나의 프로세스만 처리할 수 있어서 멀티 프로세스 환경에서는 콘텍스트 스위칭이 발생한다. CPU 스케줄러에 의해 인터럽트가 발생하면 실행 상태의 프로세스가 준비 또는 대기 상태로 전환되고, 다음에 실행할 프로세스가 실행 상태로 전환됩니다. 이때 레지스터에 저장된 프로세스 정보가 바뀌면서 오버헤드가 발생하게 됩니다.

🙋🏻‍♀️ 멀티 프로세스에서 콘텍스트 스위칭과 멀티 스레드에서 콘텍스트 스위칭의 차이점을 설명해 보세요.

가장 큰 차이점은 멀티 스레드에서 콘텍스트 스위칭할 때 멀티 프로세스보다 오버헤드가 적게 발생한다는 점입니다. 멀티 프로세스는 프로세스별로 고유한 메모리 영역을 갖는 반면, 멀티 스레드는 스택 영역을 제외한 메모리 영역을 공유합니다. 그래서 레지스터에 로드해야 하는 데이터 양이 적어서 오버헤드가 적게 발생합니다.

🙋🏻‍♀️ 프로세스 동기화에 대해 설명해 보세요.

프로세스 동기화는 여러 프로세스 또는 스레드가 하나의 공유 자원에 접근해도 일관성을 유지하는 것을 의미합니다. 공유 자원에 접근하는 코드를 임계 영역이라고 하며, 임계 영역에 대한 상호배제 기법이 잘 이뤄져야 프로세스 동기화를 할 수 있습니다. 상호배제 기법으로는 뮤텍스와 세마포어가 있습니다.

🙋🏻‍♀️ 뮤텍스와 세마포어의 차이점을 설명해 보세요.

뮤텍스와 세마포어는 프로세스 동기화를 위한 상호배제 기법입니다. 이 중 뮤텍스는 락을 가진 하나의 프로세스만 임계 영역에 접근할 수 있게 하는 동기화 방식입니다.  이 방식을 사용하면 임계 영역에 접근하려는 프로세스는 반복문을 돌며 임계 영역에 접근 가능한지 확인하게 되는데, 이러한 현상을 스핀락이라고 합니다. 반면에 세마포어는 임계 영역에 특정 개수의 프로세스가 접근할 수 있게 제어하는 방식입니다. 임계 영역에 접근이 불가능하면 해당 프로세스는 대기 상태로 들어가고, 이후 임계 영역을 처리 중이던 프로세스가 임계 영역을 나가면서 대기 상태인 프로세스를 깨우게 됩니다.

🙋🏻‍♀️ 비선점형 스케줄링 알고리즘과 선점형 스케줄링 알고리즘을 설명해 보세요.

비선점형 스케줄링은 하나의 프로세스가 실행 중이면 해당 프로세스가 종료될 때까지 다른 프로세스가 실행될 수 없습니다. FCFS 스케줄링과 SJF 스케줄링이 대표적인 예입니다. 선점형 스케줄은 하나의 프로세스가 실행 중 일때 스케줄러가 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있습니다. 대표적인 예로 RR 스케줄링과 SRTF 스케줄링이 있습니다.

🙋🏻‍♀️ OS의 메모리 관리 전략 중 페이징과 세그먼테이션을 비교해서 설명해 보세요.

페이징과 세그먼테이션은 비연속 메모리 할당 방식으로, 프로세스가 메모리에 연속적으로 할당될 때 발생할 수 있는 문제를 보완하는 기법입니다. 페이징은 논리 메모리 영역과 물리 영역을 같은 크기로 나누고 각각의 영역을 페이지와 프레임이라고 일컫습니다. 이 기법은 메모리 할당 문제를 해결할 수 있지만, 내부 단편화가 발생할 수 있습니다. 반면에 세그먼테이션은 프로세스를 논리적 단위로 분할합니다. 프로세스의 메모리 영역을 분할했기 때문에 메모리 보호가 쉽지만, 외부 단편화 문제가 발생할 수 있습니다.

🙋🏻‍♀️ 가상 메모리가 무엇인지와 가상 메모리가 필요한 이유를 설명해 보세요.

가상 메모리는 프로세스 전체가 아닌 일부만 메모리 영역으로 옮기고 나머지는 보조 기억장치인 디스크에 옮겨 실제 메모리 영역보다 더 큰 영역을 사용하는 것처럼 보이게 하는 방식입니다. 가상 메모리는 한정된 메모리의 영향을 덜 받고 많은 프로세스를 실행하기 위해 필요합니다. 가상 메모리를 구현하는 방법으로는 요구 페이징이 있습니다.

🙋🏻‍♀️ 스레싱이 무엇인가요?

스레싱이란 가상 메모리 환경에서 다중 프로그래밍 정도가 높아지면서 페이지 폴트가 빈번히 발생해 CPU 이용률이 오히려 낮아지는 증상을 의미합니다. 즉, 실제 시스템이 작동되는 시간보다 페이지 교체가 빈번히 일어나 발생하는 문제입니다. 이러한 문제를 예방하기 위해 워킹 세트를 설정할 수 있습니다. 워킹 세트는 지역성을 기반으로 자주 사용하는 페이지를 정해 두는 것을 의미합니다.

🙋🏻‍♀️ 캐시 메모리에 대해 설명해 보세요.

캐시 메모리는 CPU와 메모리 간 속도 차이를 좁히려고 사용하는데, CPU에서 자주 사용하는 데이터를 접근 속도가 빠른 캐시 메모리에 저장합니다. 이때 적중률을 높이기 위해 자주 사용하는 데이터를 저장하는 지역성 원리를 사용합니다.

'공부 > CS 전공' 카테고리의 다른 글

자료구조  (0) 2024.11.23
데이터베이스 (🙋🏻‍♀️ Q&A)  (2) 2024.11.18
컴퓨터 네트워크 (🙋🏻‍♀️ Q&A)  (4) 2024.11.17