-
운영체제 관련 질문긴급 면접 준비 2023. 9. 20. 17:01
운영체제의 구조 : 크게 보면 인터페이스와 커널로 나뉜다.
커널: 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차가 운영체제라고 한다면 커널은 엔진에 해당한다.
인터페이스: 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.
시스템 호출: 커널이 사용자나 응용 프로그램으로부터 자신을 보호하기 위해 만든 인터페이스로 커널의 직접적인 접근을 막는 역할을 한다. 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려 할때는 시스템 호출을 사용해야 한다.
드라이버: 커널과 하드웨어 사이의 인터페이스이다. 시스템 호출과의 차이점은 커널에 접근하기 위해서는 시스템 호출을 반드시 거쳐야 하지만 드라이버 같은 경우에는 커널이 제공하는 드라이버도 있고 하드웨어 제작사가 제공하는 드라이버도 있다는 의미이다.
단일형 구조 커널 - 통신 비용 낮음, 의존성이 높아 한 곳의 문제가 전체에 영향
계층형 구조 커널 - 계층의 문제만 해결하면 된다.
운영체제란 무엇인가요?
- 컴퓨터 사용자와 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해주는 역할을 합니다. (하드웨어 및 컴퓨터 자원을 관리하는 역할)
운영체제의 주요 목적은?
- 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고 조율하여 효율적이고 안정적인 컴퓨터 시스템 동작을 지원하는 것입니다. 예를 들어, 자원 관리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 보안과 권한 관리, 등.
커널이란 무엇인가?
- 커널은 메모리에 상주하는 운영체제의 일부분으로 운영체제의 핵심적인 부분을 의미합니다.
운영체제처럼 규모가 큰 프로그램이 전원이 켜질 때마다 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것입니다. 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 load해서 사용합니다.커널 수준 스레드와 사용자 수준 스레드는 무엇이고 각각의 장단점은?
- 커널 수준 스레드는 운영체제 시스템 내에서 생성되어 동작하는 스레드로, 커널이 직접 관리하고 사용자 수준 스레드는 커널 레벨 밖에 있는 스레드로, 스레드를 관리하는 라이브러리로 인해 사용자 단에서 생성 및 관리되는 스레드입니다.
프로세스와 스레드의 차이에 대해서 설명해주세요
- 프로세스는 실행 중인 프로그램을 말하며(실행 파일이 메모리에 적재될 때), 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와 공유하지 않습니다. 프로세스는 최소 1개의 쓰레드를 가지고 있습니다. 스레드는 프로세스 내에서 실제로 작업을 수행하는 주체를 의미하고 stack만 할당받고 나머지 메모리 영역은 공유합니다.
스레드의 장점은 무엇인가요?
- 프로세스보다 생성할 때 오버헤드도 적고 공유된 자원에 대해서도 오버헤드가 적다는 장점이 있습니다.
멀티 프로세스와 멀티 쓰레드의 특징에 대해 설명해주세요(메모리 공간, cpu 시간, 다른 곳에 영향)
- 멀티 프로세스의 경우 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 쓰레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있습니다. 멀티 쓰레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만 하나의 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받으며 동기화 문제도 있다는 단점이 있습니다.
멀티쓰레드의 동시성과 병렬성에 대해서 설명해주세요(동시성 == 멀티 프로그래밍)
- 동시성은 멀티 작업을 위해 싱글 코어(cpu의 핵심 부분)에서 여러 개의 쓰레드가 번갈아 실행하는 것을 말하고 병렬성은 멀티 작업을 위해 멀티 코어에서 여러 개의 쓰레드가 실제로 동시에 실행되는 것을 의미합니다.
멀티 프로세싱과 멀티 프로그래밍의 차이는?
- 멀티 프로세싱은 여러 개의 cpu 코어를 이용하여 병렬로 동시에 프로세스를 실행시키는 방법이고 멀티 프로그래밍은 하나의 cpu 코어로 여러 프로세스를 번갈아가며 빠르고 효율적으로 실행하는 방법입니다.
데드락(교착상태)이 무엇이고 해결하는 방법에 대해서 설명해주세요
- 멀티스레드 또는 멀티프로세스 환경에서 발생하는 동기화 문제 중 하나로, 두 개 이상의 스레드 또는 프로세스가 서로의 자원을 기다리며 무한 대기 상태에 빠지는 상황을 의미합니다. 이에 대한 해결책 중에 하나로 필요한 자원을 얻지 못한 프로세스나 스레드는 현재 확보한 자원을 반납하고 다시 시작할 수 있도록 설정하면 데드락 문제를 해결할 수 있습니다.
Banker's algorithm은 무엇인가요?
- 교착 상태를 피하기 위한 알고리즘으로 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 이후에도 안정상태가 되는지를 체크하여 교착상태를 사전에 예방하는 방법입니다.
콘보이 현상이란 무엇이고, 콘보이 현상이 발생될 수 있는 CPU 스케줄러 알고리즘은 무엇인지 설명해주세요
- 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦춰져 효율성을 떨어뜨리는 현상을 말합니다. FCFS (First-Come, First-Served)스케줄링은 비선점형으로, 순차적으로 먼저 큐에 들어온 작업부터 실행하므로 콘보이 현상이 발생할 수 있습니다.
선점형 스케줄링과 비선점형 스케줄링의 차이를 설명해주세요
- 선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있음을 말하고, 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음을 말합니다. 예를 들어, 선점형 스케줄링 같은 경우는 CPU가 현재 실행 중인 프로세스나 스레드를 중단하고 다른 프로세스나 스레드로 전환할 수 있는 스케줄링 방식으로 우선순위, 시간 할당량, 인터럽트 등에 의해 트리거됩니다.
동기와 비동기에 대해서 설명해주세요
- 비동기 작업은 작업이 다른 작업과 독립적으로 실행되며, 작업의 완료를 기다리지 않고 다음 작업을 계속할 수 있음을 의미합니다. 이에 따라 순차적인 작업을 보장하지 않습니다.
Critical Section(임계영역)에 대해 설명해주세요.
임계 영역이란 프로세스간에 공유자원을 접근하는데 있어 문제가 발생하지 않도록 한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역을 말합니다.
임계 영역 문제를 해결하기 위해서는 아래의 3가지 조건을 충족해야 합니다.- 상호 배제(Mutual exclution) - 하나의 프로세스가 임계 영역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
- 진행(Progress) - 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 어느 것이 들어갈지 결정 해주어야 한다.
- 한정 대기(Bounded waiting) - 다른 프로세스의 기아를 방지하기 위해, 한 번 임계 구역에 들어간 프로세스는 다음 번 임계 영역에 들어갈 때 제한을 두어야 한다.
cpu 스케줄링 알고리즘이란 무엇이고 어떠한 알고리즘이 있나요?
- 다중 프로세스 또는 스레드 중에서 어떤 프로세스가 cpu를 사용할 것인지를 결정하는 방법을 의미합니다.
- FCFS(First-Come, First-Served): 먼저 도착한 프로세스가 먼저 cpu를 할당받는 스케줄링 알고리즘으로 비선점형 스케줄링입니다.
- SJF(Shortest Job First): 실행 시간이 가장 짧은 프로세스에 cpu를 할당하는 알고리즘으로 비선점형, 선점형으로 사용됩니다.
- Priority Scheduling: 각 프로세스에 우선순위를 할당하고, 우선순위가 높은 프로세스에 CPU를 할당하는 알고리즘입니다. 선점형, 비선점형으로 사용될 수 있고 우선 순위 역시 정적, 동적으로 구현될 수 있습니다. 우선순위가 높은 프로세스가 항상 CPU를 선점할 수 있으므로 주의해야 합니다.
- Round Robin:
- 각 프로세스에 시간 할당량(타임 슬라이스)을 부여하고, 시간이 다 되면 다른 프로세스로 전환하는 알고리즘입니다.
- 선점형 스케줄링으로, 시분할 시스템에서 사용됩니다.
- 모든 프로세스가 공정하게 CPU를 사용하도록 합니다.
- Multilevel Queue Scheduling:
- 프로세스를 여러 개의 큐에 그룹화하고 각 큐에 다른 스케줄링 알고리즘을 적용하는 방식입니다.
- 예를 들어, 시스템 큐, 대화형 큐, 배치 처리 큐 등으로 나눌 수 있습니다.
- 다양한 우선순위와 스케줄링 정책을 혼합하여 사용할 수 있습니다.
- Multilevel Feedback Queue Scheduling:
- Multilevel Queue Scheduling과 유사하지만, 프로세스가 큐 간 이동할 수 있도록 하는 스케줄링 알고리즘입니다.
- 프로세스의 동작에 따라 큐 간 이동하면서 우선순위가 조절됩니다.
- Lottery Scheduling:
- 각 프로세스에 "로또 티켓"을 부여하고, CPU를 얻을 확률을 로또 추첨과 같이 결정하는 알고리즘입니다.
- 공정성을 제공하며, 운이 나쁜 프로세스도 어느 정도 기회를 갖게 합니다.
컨텍스트 스위칭(Context Switching)이 무엇인지 설명해주세요.
멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 교체하는 작업을 말합니다.
※ 컨텍스트? CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들.
메모리 단편화란 무엇인가요?
- 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 사용이 불가능한 상태를 의미합니다.
페이징이란 무엇이고 왜 사용하는 건가요?
- 운영체제의 메모리 관리 기법
- 논리적 메모리와 물리 메모리를 각각 일정한 크기인 페이지(프레임) 분할하여 매핑하기 때문에 실제 물리 메모리에 연속적으로 배치하지 않아도 되어 메모리 외부 단편화 문제를 해결할 수 있습니다.
가상 메모리란 무엇이고 왜 필요한 것인가요?
- 물리적인 ram 외에 보조 기억 장치를 메모리 확장으로 사용하는 메모리 관리 기술로 물리 메모리 부족 문제를 해결하고 메모리 공간을 효율적으로 활요할 수 있습니다.
동기화 문제란 무엇인가요?
- 멀티 프로세스나 멀티 스레드 환경에서 공유 자원에 접근하고 조작할 때 발생할 수 있는 문제를 의미합니다. 동기화 문제가 발생할 수 있는 조건으로는 경쟁 조건(어떤 프로세스나 스레드가 먼저 접근하여 데이터를 변경하는지 예측할 수 없는 상황), 교착 상태(서로가 점유한 자원을 대기하고 있는 상황) 등이 있습니다.
힙 영역과 스택영역의 차이점에 대해서 설명해주세요
- 힙 영역은 사용자가 직접 관리할 수 있는 메모리 영역으로 메모리 공간이 동적으로 할당되고 해제됩니다.
- 스택 영역은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역입니다. 함수의 호출이 종료되면 해제됩니다.
RAID란 무엇인가요?
- Redundant Array of Independent Disks의 약자로 전체 성능을 향상시키기 위해 동일한 데이터를 중복 저장하는데 사용됩니다.
뮤텍스와 세마포어는 무엇이고 이 둘의 차이점은 무엇인가요?
- 이들은 모두 공유된 자원을 여러 스레드/프로세스가 동시에 접근하는 것을 막는 역할을 하는 동기화 도구입니다. 차이점으로는 뮤텍스의 경우 동기화 대상이 하나인 경우이며 세마포어의 경우 동기화 대상이 하나 이상인 경우를 의미합니다.
예를 들어, 화장실이 한 개이면서 들어갈 수 있는 키도 한 개인 경우는 뮤텍스에 해당하고 세마포어의 경우 화장실이 여러 개이면서 화장실 앞에 비어있는 칸의 개수가 적혀져 있는 상황이라고 볼 수 있습니다.
운영 체제에서 기아란 무엇인가요?
- 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태를 말합니다.
운영 체제에서 에이징이란 무엇인가요?
- 기아를 방지하기 위해 기다린 시간에 비례하여 우선순위를 높여주는 방식을 말합니다.
cpu scheduling 이란?
- 여러 프로세스들에 대해 한정된 자원인 cpu를 어떻게 할당할 것인지를 정하는 정책이나 방법을 의미합니다.
레이스컨디션(경쟁조건)이란?
- 두 개 이상의 프로세스가 공통 자원을 병행적으로 읽거나 쓸 때, 공용 데이터에 대한 접근이 어떤 순서로 이뤄졌는지에 따라 그 실행 결과가 달라지는 상황을 말하고 임계구역이나 락 기법(뮤텍스, 세마포어)으로 해결할 수 있다.
프로세스의 상태들과 데몬 프로세스
참고 자료
https://dev-coco.tistory.com/162
신입 개발자 기술면접 질문 정리 - 운영체제
💡 프로세스와 쓰레드의 차이에 대해 설명해주세요. 프로세스는 실행 중인 프로그램을 말하며, 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와 공유하지 않습니
dev-coco.tistory.com
https://velog.io/@jeewoo1025/OS-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84
[OS] 면접 준비
CS 면접을 준비하면서 정리했던 내용들입니다. 개인적으로 프로세스, 스레드, CPU 스케줄링(선점/비선점), 메모리 관리(virtual memory, paging) 부분은 정말 중요한 부분인 것 같습니다. 면접에서 꼬리
velog.io
https://math-coding.tistory.com/80
[Operating System] 운영체제의 구조
이 글은 '쉽게 배우는 운영체제' 책을 토대로 작성하였습니다 커널과 인터페이스 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차
math-coding.tistory.com
[운영체제(OS)] 면접 예상 질문과 답변
1) 운영 체제 란 무엇입니까? 운영 체제는 컴퓨터 하드웨어가 컴퓨터 소프트웨어와 통신하고 작동하도록하는 소프트웨어 프로그램이다. 2) 운영 체제의 주요 목적은 무엇입니까? 운영 체제에는
hyonee.tistory.com
운영체제 이해를 위해 참고할 블로그
https://jhnyang.tistory.com/264
[운영체제 OS] Fragmentation 메모리 단편화란 무엇인가? External fragmentation(외부 단편화)이란? 초 쉬운
안녕하세요 주인장 양햄찌입니당. 운영체제가 의외로 조회수는 작은데, 특정 계층에 인기(?)가 있나봐요! (뿌듯) 요청이 있어서 또 이렇게 열심히 들고왔습니다. 사실 이번편은 그림을 좀 다 그
jhnyang.tistory.com
이 블로그도 마지막에 참고해서 연습해보기
https://hoons-dev.tistory.com/95
[면접총정리] 신입 개발자 인터뷰 대비 총정리 자료 - ⑤ 운영체제
🧑🏻💻 글을 시작하기에 앞서.. - 신입 개발자 인터뷰에서 자주 나오는 질문을 모아 한 번에 정리한 포스트입니다. - 신입 개발자 기술면접을 준비하는 사람으로, 정확하지 않은 정보가 포함
hoons-dev.tistory.com
'긴급 면접 준비' 카테고리의 다른 글
리눅스 관련 질문 (0) 2023.09.23 자료구조 및 알고리즘 관련 질문 (0) 2023.09.23 네트워크 관련 질문 (2) 2023.09.21 자바와 객체지향 관련 질문 (0) 2023.09.20 백엔드 종합 (0) 2023.09.18