[운영체제] 질문 모음

함민혁·2023년 9월 12일
0

cs면접준비

목록 보기
42/43

운영체제란 무엇인가요

운영체제는 응용 프로그램과 하드웨어 간의 인터페이스로써 응용프로그램들이 잘 작업할 수 있도록 도와주는 환경을 제공해줍니다.예를 들어 윈도우, 리눅스 등이 있습니다.

운영체제의 역할을 말해주세요

운영체제는 응용프로그램과 하드웨어 간의 인터페이스 역할을 합니다. 하드웨어, 프로세스, 저장장치, 사용자를 관리합니다.

프로세스의 구조에 대해서 말해주세요

프로세스는 코드,데이터,스택, 힙 영역으로 구성되어있습니다. 앞 두개는 정적 영역이고, 스택과 힙은 동적 영역입니다. 프로세스는 각각 별도의 주소공간을 독맂벅으로 가지고 있습니다.

프로세스의 한계에 대해서 말해주세요

과거에는 파일을 다운받으면 실행 시작할때부터 끝까지 프로세스를 하나만 사용했습니다. 그리하여 시간이 굉장히 오래걸렸습니다. 그리하여 동일한 프로그램을 여러 개의 프로세스로 만들게 되면 또 그만큼 메모리를 차지하고, CPU에 할당받는 자원이 중복되게 됩니다. 이러한 이유들 때문에 스레드가 등장하였습니다.

스레드에 대해서 설명해주세요

스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위입니다. 하나의 프로세스 안에서 여러가지 작업들의 흐름, 즉 스레드가 동시에 진행된다고 보시면 됩니다.
프로세스의 4가지 영역중 스레드는 스택만 할당받아 복사하고 나머지 영역은 다른 스레드들과 공유하여 사용합니다.

프로세스 컨택스트 스위칭에 대해서 설명해주세요

프로세스 컨택스트 스위칭은 CPU가 한 프로세스에서 다른 프로세스로 전환할때 발생하는 과정들을 말합니다.
CPU는 한번에 하나의 프로세스만 실행할 수 있으므로, 여러개의 프로세스들을 번갈아가며 실행하며 CPU활용률을 높입니다.

스레드 컨택스트 스위칭에 대해서 설명해주세요

멀티 스레딩 환경에서 스레드 간의 실행을 전환하는 기술을 말합니다. 하나의 프로세스 내의 스레드들의 교환을 말합니다.

컨텍스트 스위칭은 언제 일어날까?

하드웨어나 소프트웨어 인터럽트가 발생하는 경우 컨텍스트 스위칭이 일어납니다. 멀티코어 프로세스에서 여러 스레드가 병렬로 실행되는 경우, 스레드 스케줄러가 각 코어에 스레드를 할당할 때 발생하기도 합니다.

PCB가 존재하는 이유가 무엇일까요?

PCB는 프로세스 제어 블록입니다. 프로세스의 상태정보를 담고잇는 자료구조입니다. 이는 컨텍스트 스위칭이 일어날때 중단된 프로세스의 대기 직전의 실행 정보를 다시 시작하기 위해 저장해놓는 역할을 합니다.

프로세스와 스레드의 차이에 대해서 설명해주세요

프로세스는메모리에 적재되어 CPU를 할당받아 실행중인 프로그램을 말하고, 스레드는 프로세스 내에서 실행되는 작업들의 흐름 단위를 말합니다. 프로세스는 네가지 영역 코드,데이터,스택,힙으로 구성되있고, 스레드는 이중 스택영역만 복사하고 나머지는 다른 스레드들과 공유하여 작업을 실행합니다.

프로그램과 프로세스의 차이에 대해서 설명해주세요

프로그램은 파일이 저장 장치에 있지만 메모리에는 올라가있지는 않은 상태이고, 프로세스는 메모리에 적재되고 CPU자원을 할당받아 프로그램이 실행되고 있는 상태를 말합니다.

멀티 프로세스와 멀티 스레드의 차이에 대해서 설명해주세요

자원을 공유할때 IPC를 사용하는 멀티 프로세스와 달리 멀티 스레드는 공유된 자원을 사용합니다. 이로 인해 멀티 스레드는 자원 낭비를 줄이고, 컨택스트 스위칭의 비용이 감소하고 처리속도도 빠릅니다. 멀티 스레드는 스택 영역만 처리하고 나머지는 공유하기떄문입니다.

멀티 프로세싱과 멀티프로그래밍의 차이는 무엇인가요?

멀티 프로그래밍은 멀티 태스킹과 비슷한 개념입니다. 하나의 cpu가 여러 개의 응용프로그램들을 번갈아가며 실행하는 것이고, 멀티 프로세싱은 여러개의 cpu를 병렬적으로 사용하여 하나의 작업을 빠르게 처리하는 것임.
-???이해가 안됨 질문하기

힙 영역과 스택영역의 차이점에 대해서 설명해주세요

스택 영역은 지역변수와 매개변수가 저장되는 영역으로 컴파일 이후에는 고정된 크기를 가집니다. 하지만 힙영역은 사용자에 의해 메모리 공간에 동적으로 할당되고 해제됩니다.

IPC란 무엇인가요?

인터 프로세스 커뮤니케이션의 약자로 운영체제 상에서 실행 중인 프로세스 간에 정보를 주고받는 방식을 말합니다. 종류로는 커널이 제공하는 API를 이용하는 메시지 전달 방식, 프로세스끼리 특정 공통의 메모리 영역을 공유하는 메모리 공유 방식, 소켓 방식 등등이 있습니다.

커널이란 무엇인가요?

운영체제 자체도 소프트웨어여서 메모리에 올라가야 사용이 가능합니다. 하지만 메모리 공간의 제약으로 운영체제 중 필요한 부분만 메모리에 올려서 사용하는데, 이 때 메모리에 상주하는 운영체제 부분을 커널이라고 합니다.

IPC의 종류에 대해서 말해주세요

커널이 제공하는 API를 이용하는 메시지 전달 방식, 프로세스끼리 특정 공통의 메모리영역을 공유하여 통신하는 메모리 공유방식, 하나의 프로세스는 데이터를 쓰기만하고, 하나는 읽기만 하는 익명 파이프 방식등등이 있습니다.

세마포어와 뮤텍스가 무엇이고, 필요한 이유가 뭘까요?

세마포어와 뮤텍스는 둘다 임계영역, 크리티컬 섹션 문제를 해결하기 위해 데이터를 보호하고 동기화하기 위해 쓰이는 대표적인 도구입니다. 먼저 뮤텍스는 공유된 자원의 임계 영역에 하나의 프로세스, 하나의 스레드가 접근하는 것을 막아줍니다. key를 가진 프로세스,스레드만 접근이 가능하게 하여 상호배제를 이루게 해줍니다. 세마포어는 뮤텍스와 하는 역할은 같지만 동기화 대상이 하나가 아닙니다. 임계 영역에 여러 프로세스, 스레드가 접근하는 것을 막아줍니다.

CPU 스케쥴링이란 무엇일까요?

말그대로 CPU를 잘 사용하기 위해서 프로세스를 스케쥴링해 잘 배정하는 작업을 말합니다.
즉, CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행하는데, 이때 다음 프로세스를 어떤거로 결정할지 선택하는 게 cpu 스케쥴링입니다.

선점 스케쥴링, 비선점 스케줄링에 대해 설명해보세요

선점 스케쥴링은 프로세스가 CPU를 점유하고 있는 동안 I/O나 인터럽트가 발생한것도 아니고, 모든 작업을 끝내지도 않았는데, 다른 프로세스가 해당 CPU를 강제로 점유하는게 가능한 스케쥴링입니다.
비선점 스케쥴링은 반대로 한번 프로세스가 CPU를 점유하면 프로세스 상태가 대기상태로 변하거나 종료되기 전까지 다른 프로세스가 CPU를 점유하지 못하는 스케쥴링입니다.

스케쥴링 척도로는 뭐가 있을까요?

효율을 분석하는 기준들인데, 대표적으로는 CPU이용률, CPU 단위시간당 처리량, 프로세스의 시작시간부터 작업 종료까지 걸린시간, 대기시간, 응답시간 등이 있습니다.

CPU 스케쥴링 알고리즘에 대해서 아는대로 설명해보세요

CPU 스케쥴링은 크게 선점 비선점으로 나뉩니다. 하나의 프로세스가 자원을 점유했을때 다른 프로세스가 강제로 점유가 가능한 스케쥴링을 선점 방식, 불가능한 스케쥴링을 비선점 방식이라고 합니다. 대표적인 비선점 방식으로는 먼저 들어온 프로세스를 먼저 처리하는 FCFS알고리즘, 짧게 수행되는 프로세스를 먼저 실행하는 SJF 알고리즘, 그리고 이 SJF 단점을 보완한 HRN 알고리즘이 있습니다. 선점 알고리즘은 대표적으로 프리오리티 스케쥴링, 우선순위가 높은 프로세스를 먼저실행하는 알고리즘, 그리고 타임 퀀텀을 정해놓고 모든 프로세스를 돌면서 수행과 대기를 반복하는 라운드 로빈 알고리즘이 있습니다.

데드락이 나오는 상황에 대해서 말해주세요

데드락은 다수의 프로세스나 스레드가 서로 자원을 점유하고, 다른 프로세스나 스레드가 점유한 자원을 기다리는 상황에서 발생하는 교착상태를 말합니다. 여러 개의 스레드들이 서로 대기하면서 무한정 자원을 기다리는 상황입니다. 스레드1은 자원A를 가지고 있고 자원B를 필요로하는 상황이고, 스레드2는 자원B를 가지고있고 자원A를 필요로하는 상황인데, 서로 자신의 자원은 놓을 수는 없어서 서로를 무한으로 기다리는 상황을 예로 들을 수 있습니다.

데드락과 기아현상의 차이점이 무엇인가요?

데드락은 프로세스들의 서로 자원을 점유하고 다음 자원을 서로 기다리고 있어서 서로의 작업이 끝나기를 기다리는 상황을 말합니다. 반면 기아현상은 자원이 그냥 할당되지 못하여 계속 대기를 하고 있는 상황을 말합니다.

현대 OS에서도 데드락을 처리하나요?

시스템이 복잡해짐에 따라 데드락을 완전히 방지하지 못할 분더러, 자주 발생하는 이벤트가 아니기 때문에 미연에 방지하려고 작업들을 하게 되면 더 많은 오버헤드가 발생하여 비효율적이라 판단하여 요즘에는 잘 처리하지 않습니다.

데드락의 발생 조건 4가지에 대해 말해보세요

데드락이 발생하려면 상호배제, 보유대기, 비선점, 순환 대기 이 네가지 조건을 만족해야합니다.
상호배제는 한번에 한 프로세스만 자원을 사용할수있음을 말하고, 보유대기는 자원을 가진 프로세스가 다른 자원을 기다릴땐, 보유하고 있는 자원을 놓치 않음을 말하고, 비선점은 프로세스는 os에 의해 강제로 자원을 빼앗기면 안됨을 말합니다. 그리고 마지막으로 순환대기는 자원을 기다른 프로세스들은 순환 형태로 이루어져있어야함을 말합니다.

그럼 이 데드락을 해결하려면 어떻게 해야할까요?

데드락을 해결하는 방법은 크게 세가지입니다. 발생하지 않도록 사전에 예방을 하거나, 발생 가능성을 인정하고 적절하게 회피하기, 그리고 발생을 허용하지만 그 교착상태를 탐지하고,회복하는 방식이 있습니다.

데드락 회피 알고리즘에 대해서 아는대로 설명해보세요

두 개의 회피 알고리즘에 대해 간략히 말씀드리겠습니다. 자원 할당 그래프 알고리즘, 은행원 알고리즘이 있습니다. 자원 할당 그래프 알고리즘은 자원과 프로세스에 대해 요청 간선과 할당 간선을 적용하여 교착 상태를 회피하는 알고리즘입니다. 사이클 생성을 확인하며 교착 상태를 피한다고 생각하면 되겠습니다. 그리고 은행원 알고리즘은 다중 프로세스 환경에서 데드락을 방지할때 사용합니다. 각 프로세스가 필요로 하는 자원의 최댓값을 확인하고, 그리고 프로세스가 자원을 요구했을때, 그걸 할당해도 그 프로세스가 안정한 상태로 남아있는지 사전에 확인하여 교착 상태를 피합니다.

Race condition에 대해 설명해보세요

레이스 컨디션은 여러 스레드들이 공유된 자원을 동시에 접근하고 처리를 할대 실행 순서에 따라 결과값이 달라지거나 예기치 않은 결과가 발생하는 문제입니다.

임계 영역에 대해 설명해주세요. 임계 영역이 만족해야 하는 조건이 있나요?

임계 영역은 둘 이상의 프로세스가 접근하면 안되는 코드 영역을 말합니다. 임계 영역이 만족해야하는 조건으로는 상호 배제, 진행, 한정 대기가 있습니다. 진행은 임계영역에서 작업중인 프로세스가 없다면 임계영역에 진입하고자 하는 프로세스가 존재하면 진입할 수 있어야함을 말하고, 한정대기는 프로세스가 임계영역에 들어가기 위해 요청을 한 뒤라면 그 요청이 허용될 때까지 다른 프로세스들이 임계영역에 들어가는 것에 대한 제한이 있어야함을 말합니다.

인터럽트에 대해 설명해보세요

CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 같은 장치에 예외상황이 발생하여 어떤 처리가 필요한 경우에 CPU에게 알려서 처리를 할 수 있도록 도와주는 것을 말합니다. 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉩니다.

인터럽트가 필요한 이유가 뭘까요?

여러 작업들이 동시에 처리되고, 중요한 이벤트들이 즉시 처리됨으로써 시스템이 더 효율적으로 동작할 수 있습니다.

뮤텍스와 이진 세마포어의 차이에 대해서 설명해보세요

뮤택스는 lock을 한 스레드만이 해제할 수 있고, 이진 세마포어는 어떤 스레드든지 세마포어를 해제할 수 있다는게 둘의 핵심적인 차이입니다. 이러한 특성 때문에 뮤텍스는 주로 상호 배제를 위해 사용되고, 이진 세마포어는 주로 리소스의 접근을 제어하는 데 사용됩니다.

메모리의 종류에 대해 설명하고, 종류가 여러가지인 이유에 대해 설명하세요

CPU에 가까운 순서대로 레지스터, 캐시, 메인 메모리, 그리고 보조기억장치가 있습니다. 이렇게 종류가 여러 개인 이유는 접근 속도에 차이를 두기 때문입니다.

메인 메모리란 무엇인가요?

메인 메모리는 cpu가 직접 접근할 수 있는 기억장치를 말합니다.
프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해두어야합니다.

가상 메모리란 무엇인가요?

가상 메모리는 메모리가 실제 메모리보다 많아 보이게하는 기술로, 어떤 프로세스가 실행될 때 전체가 메모리에 올라가지 않더라도 실행이 가능하다는 점을 착안하여 고안한 기술입니다.
메인 메모리와 디스크의 페이징 스페이스를 묶어 하나의 메모리처럼 동작하게 하여 구현합니다.

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

메모리 관리를 하게되면 연속 메모리 관리를 하거나 불연속 메모리 관리를 하는데, 연속 메모리 관리를 하게 되면 내부 단편화와 외부 단편화 문제가 발생할 수 있습니다. 내부 단편화는 연속메모리관리에서 고정 분할 기법을 사용할때 발생하는데 프로세스가 요청한 양보다 더 많은 양의 메모리가 할당될때 발생합니다. 외부 단편화는 동적 분할 기법을 사용할 때 발생하는 문제점으로, 메모리 할당, 해제 반복으로 작은 메모리가 중간중간 존재하게 되어서 그 메모리들을 합하면 총 메모리 공간은 충분한데 실제로는 할당하지 못하는 상황을 말합니다.

페이지와 프레임의 차이에 대해 설명해주세요.

페이지는 고정 사이즈의 가상 메모리 내의 프로세스 조각을 말하고, 프레임은 페이지와 크기가 같은 주기억장치의 메모리 조각을 말합니다.

페이지에서 실제 주소를 어떻게 가져올 수 있는지 설명해주세요.

모든 프로세스는 하나의 페이징 테이블을 가지고 있고 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있습니다. 가상 주소는 페이지 번호와 페이지 오프셋으로 되어있는데 페이지 번호를 통해 페이지 테이블에서 프레임의 베이스 주소를 알아냅니다.

TLB란 무엇인가요?

가상 메모리 주소를 물리적 주소로 변환하는 속도를 높이기 위해 사용하는 캐시입니다. CPU가 가상 주소로 메모리 접근하려할 때, 일단 TLB에 먼저 접근 후 없으면 테이블에서 찾습니다.

Page Falut가 발생했을 때, 어떻게 처리하는지 설명해보세요.

프로세스가 실제 물리 메모리에 올라와 있지 않은 페이지에 접근하려고 할 때 발생하는 상황을 페이지 폴트라고 합니다. 페이지 폹트가 발생하면 메모리에 비어있는 프레임이 있다면 해당 페이지에 메모리를 적재하고 만약 비어있는 프레임이 없다면 희생 프레임을 골라 스왑아웃하고 메모리에 적재합니다.

페이징의 장단점에 대해서 설명해보세요

장점은 외부 단편화가 생기지 않는다는 점이고, 단점은 내부 단편화가 발생할 수 있다는 점입니다.
논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부 단편화가 생기지 않습니다.

profile
Born to be FE developer 🧑🏻‍💻

0개의 댓글