본문 바로가기

CS/운영체제

(1) 운영체제에 관해서_

메모리에 대해서 설명해주세요

메모리 구조는 4가지 영역으로 나뉘어 집니다.

코드영역은 실행할 프로그램의 코드가 저장되는 영역입니다. 사용자가 프로그램을 실행하면, OS가 실행 코드를 메모리로 로드하고, CPU는 코드영역에 저장된 명령을 하나씩 처리하게 됩니다.
데이터 영역은 프로그램의 전역 변수, 정적 변수가 저장되는 영역이며, 프로그램의 시작과 함께 할당되며, 종료되면 소멸됩니다.
힙 영역은 코드에서 생성된 객체가 저장됩니다. 또한, 메모리를 동적으로 할당하며, 힙 영역은 스택 영역과 달리 낮은 주소에서 높은 주소로 메모리가 할당됩니다.
스택 영역은 함수의 호출과 함께 할당되며 지역 변수와 매개 변수가 저장되는 영역입니다. 스택 영역은 함수의 호출이 완료되면 소멸하고, 스택 영역은 높은 주소에서 낮은 주소로 메모리가 할당됩니다.


캐시 메모리(Cache Memory)에 대해서 설명해주세요.

데이터를 복사해두는 임시 저장 공간을 의미합니다. 메인 메모리와 CPU간의 데이터 속도 향상을 위한 중간 버퍼 역할을 하는 CPU내 또는 외에 존재하는 메모리이며, 전체 시스템 성능의 개선을 시킬 수 있는 메모리입니다.

Cache Memory를 왜 사용하나요?

원본 데이터에 접근하는 시간보다, 캐시 메모리 내의 데이터에 접근하는 시간이 월등하게 빠르기 때문에 캐시 메모리를 사용합니다. CPU의 성능이 아무리 좋아도 RAM 또는 HDD에서 데이터를 가져오는 시간이 오래 걸리면 CPU를 효율적이게 사용하지 못하기 때문입니다.

지역성(Locality)에 대해서 설명해주세요.

프로세스들이 기억장치 내의 정보를 균일하게 접근하는 것이 아닌 어느 순간 특정 부분을 집중적으로 참조하는 것을 의미합니다. 

지역성(Locality)의 종류에 대해서 설명해주세요.

시간 지역성입니다. CPU가 한 번 참조한 데이터는 다시 참조할 가능성이 높습니다.
공간 지역성입니다. CPU가 참조한 데이터와 인접한 데이터 역시 참조될 가능성이 높습니다.
순차적 지역성입니다. 분기가 발생하지 않는 한 명령어는 메모리에 저장된 순서대로 인출/실행됩니다.


가상메모리~


Process란 무엇인가요? 또 Process의 특징에 대해서 말씀해주세요

CPU를 할당 받아 프로그램이 실행중인 상태입니다. Process는 Code,Data,Stack,Heap 구조로 되어있는 독립된 메모리 영역을 갖고 있고, 자원을 공유하지 않습니다. 다른 프로세스 자원에 접근하기 위해서 IPC를 사용해야합니다.

IPC에 대해서 설명해주세요

Thread란 무엇인가요? 또 Thread의 특징에 대해서 말씀해주세요

프로세스 내에서 실행되는 여러 흐름의 단위이며, 일련의 과정을 여러 개 동시에 실행시킬 수 있는 것을 의미합니다. 또한, Thread는 Stack영역만 따로 할당 받고, Code,Data,Heap영역을 공유하고 있습니다. 이에 따라 Thread는 다른 Thread메모리에 접근할 수 있습니다. 이에 따른 동기화에 유의해야 합니다.


동기화에 대해서 설명해주세요

여러 Process/Thread가 동시에 실행돼도, 공유 데이터의 일관성을 유지하는 것을 의미합니다.

임계 영역과 임계영역을 유지하는 방법에 대해서 설명해주세요

임계 영역은 공유 데이터의 일관성을 보장하기 위해 하나의 Process/Thread만 진입해서 실행이 가능한 영역을 의미합니다.

첫째, 상호배제입니다. 한번에 하나의 Process/Thread만이 실행 가능합니다.
둘째, 진행입니다. 비어있는 상태에 프로세스나 스레드가 들어가길 원하면 그 중 하나는 진행해야 합니다.
셋짜, 한정된 대기 입니다. 무한정 프로세스 스레드가 대기해서는 안됩니다.

동기화 전략(Semaphore, mutex, locking)에 대해서 설명해주세요


Context Switcing에 대해서 설명해주세요

Context Switching이란, CPU에서 실행중이던 Process/Thread가 다른 Process/Thread와 교체되는 것을 의미합니다. 여러 Process와 Thread를 동시에 실행시키기 위해 필요하며, 주어진 시간을 전부 사용하거나 I/O 작업을 하거나 자원을 기다릴 때 또는 인터럽트 상황일 때 발생합니다.

Process와 Thread의 문맥교환중 Thread가 빠른 이유를 설명해주세요

같은 프로세스 속에 속하는 스레드 끼리의 문맥교환은 메모리 공간을 공유하며, 이 때문에 메모리 주소 관련 처리를 하지 않습니다.

프로세스는 독립적인 메모리 영역을 갖고 있기 때문에 메모리에 관련된 처리를 해야합니다. MMU(Memory Management Unit)와 TLB(Translation Lookaside Buffer)를 사용합니다.

이러한 이유 때문에 메모리 주소 관련 처리 때문에 Thread의 문맥교환이 더욱 빠르게 진행됩니다.

DeadLock과 DeadLock의 발생 조건 4가지에 대해서 간략하게 설명해주세요.


교착상태란 자원을 획득하지 못하고 무한정 대기하고 있는 상황을 뜻합니다.

첫째, 상호배제입니다. 리소스를 공유해서 사용하지 못하게 하며, 한번에 하나의 프로세스만 가능합니다.
둘째, 점유와 대기입니다. 프로세스가 이미 하나 이상의 리소스를 취득한 상태에서 다른 프로세스가 사용하는 리소스를 기다리고 있는 상태입니다.
셋째, 비선점입니다. 리소스 반환은 오직 리소스를 획득한 프로세스만이 가능합니다.
넷째, 환형 대기입니다. 프로세스들이 순환 형태로 서로의 리소스를 기다립니다.

기아상태(Starvation)에 대해서 설명해주세요.

특정 프로세스의 우선순위가 낮아, 원하는 자원을 계속 할당 받지 못해 사용할 수 없는 자원을 무한정 기다리는 상태를 의미합니다.

식사하는 철학자에 대해서 설명해주세요.

모든 철학자가 왼쪽 포크를 집고 오른쪽 포크를 집으려하고 있는 상태를 기아상태라고 의미합니다. 즉, 동시에 양쪽 포크를 잡지 못해 식사를 하지 못하는 상태를 뜻합니다.

기아상태 해결방법에 대해서 설명해주세요.

각 프로세스가 기다린 시간을 조사 및 추적해 오래 기다린 프로세스의 우선순위를 높여주는 aging기법 또는 요청 순서대로 처리하는 FIFO 요청 큐를 사용합니다.

교착상태(DeadLock)과 기아상태(Starvation)에 대한 차이점을 설명해주세요.

교착상태는 여러 프로세스가 동일 자원 점유를 요청하는 중 자원을 얻지 못해 다음 처리를 못하는 상태를 의미합니다. 또한 프로세스가 다른 자원을 기다리는 상태일 때 발생해 수행될 가능성이 전혀 없는 상황입니다.
기아상태는 프로세스의 우선순위가 낮아, 원하는 자원을 계속 할당 받지 못해 사용할 수 없는 자원을 무한정 기다리는 상태를 의미합니다. 또한, 프로세스가 CPU를 기다리는 Ready 상태일 때 발생해 수행될 가능성이 있습니다.


선점(Preemptive) / 비선점(No Preemptive) 스케줄링에 대해서 설명해주세요.

선점형은 실행중인 프로세스나 스레드를 강제로 중단시키고, 다른 프로세스를 실행시키는 것입니다. 하지만 잦은 문맥교환으로 오버헤드가 많습니다.

비선점은 프로세스, 스레드를 강제로 중단시킬 수 없습니다. 또한 비선점은 문맥교환이 적어 오버헤드가 적다는 장점이 있지만, 간단한 작업에서 오래 기다릴 수 있는 문제가 발생합니다.

CPU Scheduling에 대해서 설명해주세요.

컴퓨터 자원을 효율적으로 관리하기 위해, 프로세스가 작업을 수행할 때 언제 어떤 프로세스에 CPU를 할당할지 결정하는 작업을 뜻합니다.

여러가지 스케줄링에 대해서~


단편화(Fragmentation)이란 무엇인가요?

메모리의 공간이 작은 조각으로 나뉘어져 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 말합니다. 작은 조각으로 나뉘어진 이유는 프로세스들이 메모리에 적재, 제거되는 일이 반복되면서 프로세스들이 차지하는 메모리 틈 사이에 사용하지 못한 만큼 공간이 늘어나기 때문입니다.

내부 단편화와 외부 단편화에 대해서 설명해주세요

내부 단편화는 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 프로세스에서 사용하는 메모리 공간이 낭비되는 상황이며, 일정한 크기를 할당해서 생기는 문제입니다.

외부단편화는 메모리가 할당되고 해제되는 작업이 반복되며 작은 메모리가 중간 중간에 존재하게 됩니다. 이때 생긴 공간이 많이 존재하게 되어 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황을 뜻합니다.


페이징 장점과 단점에 대해서 설명해주세요

장점은, 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없습니다. 또한, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부단편화가 발생하지 않습니다.
단점은, 내부 단편화에 문제가 발생할 수 있습니다. 페이지 단위를 작게 하면 해결할 수 있지만 페이지 매핑 과정이 복잡해 오히려 비효율적입니다.

세그멘테이션의 장점과 단점에 대해서 설명해주세요

장점은, 프로세스가 필요한 메모리만큼 할당해주기 때문에 내부 단편화는 일어나지 않습니다.
단점은, 외부 단편화는 여전히 존재하게 됩니다.


가상 메모리(Virtual Memory)란 무엇인가요?

물리 메모리 크기의 한계를 극복하기 위해 나온 기술입니다. 프로세스 실행시, 실행에 필요한 부분만 메모리에 적재하기 때문에 메모리의 크기를 극복할 수 있습니다.

가상 메모리(Virtual Memory)가 어떻게 실행되나요?

가상 메모리는, 애플리캐이션을 실행하는데 얼마나 많은 메모리가 필요한지 집중하지 않고, 최소한 얼마만큼의 메모리가 필요한가에 집중해 문제를 해결합니다.(이게 무슨뜻이였지...)


요구 페이징(Demand Paging)에 대해서 설명해주세요

CPU가 해당 페이지를 요구할 때까지 그 페이지를 메모리에 올리지 않는 방식입니다. 즉, 처음부터 모든 데이터를 메모리에 적재하지 않는 것입니다.

페이지 폴트(Page Fault)란?

가상 메모리 공간에 존재하지만 RAM에는 현재 존재하지 않는 데이터 코드에 접근을 시도할 때 발생하는 현상을 의미합니다.