본문 바로가기

반응형

면접질문[CS]/알고리즘 & OS

(18)
운영체제 그리고 커널. [ 운영제체(OS) 면접질문 0 ] WHY 본격적인 운영체제 면접 질문으로 들어가기 전에 넘어가야 할 질문이다. 가장 기초적인 질문이어서 면접에서 물어보지 않을 수 있다. 갑자기 질문받으면 "이거다"싶은 대답이 떠오르지 않을 수도 있다. 간단하면 간단하게, 복잡하면 복잡하게 답변이 될 수 있는 질문. 이후의 살펴볼 OS와 관련된 질문들로 넘어가기 전에 운영체제의 정의와 목적을 이해한다면 이후의 지식들이 오래 기억될 것이다. 프로그램이 돌아가는 과정을 추상화하면 위의 그림과 같아진다. 사용자는 원하는 프로그램을 실행시키고, 프로그램은 자신이 사용해야 할 자원들에 대해서 운영체제에 사용 요청(시스템 호출)을 보낸다. 운영체제는 해당 시스템 호출을 확인하고 필요한 하드웨어에 접근해서 작업을 처리하고 응답한다. 운영체제는 사용자에게는 사용의 "편..
동기 비동기 블로킹과 논블로킹 2x2 매트릭스 [ 운영체제(OS) 면접질문8 ] WHY 운영체제에서 헷갈리는 질문 중 Top 5 중 하나가 아닐까 한다. 함수의 호출과 관련해서 프로세스의 자원(CPU)의 제어 관점과 함수의 "결과"의 관점으로 프로세스를 운영하는 정책과 관련된 질문이다. 자원 사용의 측면(블로킹, 논블로킹)과 함수 결과 관점(동기 비동기)으로 4가지의 매트릭스가 생성될 수 있다. 이번 내용을 정리하기 전에 비동기가 Non-blocking 아닌가?라고 생각했다. 해당 질문이 들어왔으면 고대로 면접관의 체크리스트에서 -점수가 기록되었을 답변으로 이어졌을 것 같다. Blocking을 프로세스의 "대기"상태와 관련지어서 이해하자. 컴퓨터 아키텍처를 살펴보면 CPU의 시간과 IO의 시간이 서로 다르게 흘러간다는 것을 알 수 있다. CPU의 시간은 IO시간보다 더 빠르고 바쁘게..
교착상태란 무엇인가. [ 운영체제(OS) 면접질문 7] WHY 이전에는 프로세스와 스레드. 멀티 프로세싱과 멀티 스레딩. CPU 스케줄링 기법들. 임계 영역과 상호 배제를 살펴보았다. 이번 질문은 위의 모든 과정을 이해해야 답변하기가 수월한 질문이다. 교착상태가 일어나기 위한 4가지 조건의 배경이 되기 때문! 해당 질문만으로 OS의 CPU 자원을 다루는 배경을 파악할 수 있어서 효율성이 높은 질문이다. 교착 상태의 원인, 조건, 해결방법 등을 살펴보면서 해당 질문에 깔끔한 답변을 할 수 있도록 준비해보자! 교착상태 (DeadLock) 프로세스는 자원을 사용하기 전에 "요청"을 하고 자원을 사용할 수 있는 경우에 자원을 "사용"한다. 해당 자원을 사용 완료했다면 다른 프로세스가 사용할 수 있도록 "방출"해야 한다. 요청, 사용, 방출의 단계를 통해 자원 경쟁을..
임계구역을 보호하기 위한 기법 3가지[뮤텍스, 세마포어, 모니터] [ 운영체제(OS) 면접질문 6] WHY 면접 질문 5에서 경쟁 조건, 임계 구역, 임계 구역을 보호하기 위한 조건 3가지를 살펴보았다. 그중에서 가장 중요한 조건은 "상호 배제"로 임계 구역을 보호하기 위한 조건이었음을 알 수 있었다. 이번 질문에서는 상호배제를 위한 기법 3가지 뮤텍스, 세마포어, 모니터를 알고 있는지 물어보는 것이다. 세 가지 모두 동기화를 목적으로 한다는 공통점이 있으나 자원을 다루는 관점이 다르다. 각각의 특징들의 핵심을 잘 정리해서 답변하면 깔끔한 답변을 하도록 하자! 뮤텍스(Mutex) : "MUT"ual "EX"clusion [Object]. lock을 활용. 임계 영역(자원)에 하나의 작업 스레드만 허용하는 것이다. 이를 조율하기 위해서 임계 영역에 들어갈 수 있는 작업 스레드는 "lock"을 소유해야 해..
동기화, 경쟁 조건(Race Condition), 임계 구역(Critical Section) [ 운영체제(OS) 면접질문 5] WHY 동기화 이슈는 상당히 중요한 주제이다. 병행성과 관련해서 공유되는 자원에 대한 이해와 공유자원 사용과 관련해서 생길 수 있는 문제 상황을 이해하는지 물어보기 좋은 질문! 병행성과 병렬성에 대한 이해가 있고 공유 자원에 대한 동시 접근으로 인해서 생길 수 있는 문제를 이해했는지 답변을 잘했다면 이슈를 해결하기 위한 방법들(락, 뮤텍스, 세마포어, 교착상태 등등)의 질문으로 나아갈 수 있다고 생각한다. 해당 글에서는 동기화가 필요한 배경(병행성 & 병렬성), 동기화란 무엇이고 이와 관련된 핵심 개념은 무엇인지 살펴본다. 멀티 프로세서 환경, 시분할 스케줄링. => 병행성 + 병렬성 현대의 운영체제는 병행성(시분할 스케줄링(OS))와 병렬성(다중 코어)을 제공해주고 있다. 이 덕에 컴퓨터 사용자들은 많..
CPU 스케줄링 알고리즘 [ 운영체제(OS) 면접 질문 4] WHY 면접 질문 3에서 프로세스의 상태와 CPU 스케줄러의 역할을 살펴보았다. 이번 질문은 CPU 스케줄링의 알고리즘을 물어보면서 선점형, 비선점형, 우선순위의 관점에서 스케줄링 기법을 이해하는지 물어보는 것이다. 어떤 기준으로 CPU 스케줄링을 선택해야 하는지 사용자와 시스템 관점에서 어떤 기준을 선호하게 되는지 선점형 방식과 비선점형 방식의 기존 스케줄링의 단점과 보완점 우선순위 스케줄링 방식을 통해 프로세스의 운영방식을 이해했는지를 살펴볼 수 있는 좋은 질문이라고 생각한다. 따로 해당 질문을 받은 경험이 없다. 스케줄링 알고리즘의 평가 기준들 CPU 사용률(Utilization) 전체 시스템 시간 중에서 CPU가 작업을 처리하는 시간의 비율이다. 유휴 시간이 적을수록 CPU 사용률이 높다. CPU..
CPU 스케줄링 & 선점형, 비선점형 스케줄링 [ 운영체제(OS) 면접 질문 3] 스케줄(Schedule) 우리는 시간에 따라 세운 계획을 표현할 때 "일정, 계획, 시간표, 스케줄" 등등의 단어를 사용한다. CPU 스케줄링은 위의 정의를 그대로 사용한다. "시간"이라는 자원 아래에서 CPU가 처리할 작업들의 일정과 계획을 세우는 것이다. 어떤 프로세스를 실행시켜야 하는지는 CPU 스케줄러에 달려있다. 어떤 목적과 어떤 정책을 중점으로 CPU 스케줄러를 운영해야 하는지를 살펴본다. CPU 스케줄링 작업(스레드)의 형편성과 효율성을 결정하는 중요한 일을 한다. 어떤 작업에 CPU를 배정할지 결정하는 것이다. CPU 스케줄러는 프로세스의 "생성"부터 "종료"까지 모든 상태 변화를 "조정"한다. CPU 스케줄링의 목적 1. 공평성 - 모든 프로세스가 자원을 공평하게 배정받아야 한다. 자원 ..
멀티프로세싱(multiprocessing)과 멀티스레딩(multithreading)의 차이점 [ 운영체제(OS) 면접질문 2] why OS 관련 단골 질문 중 하나이다. 프로세스와 스레드의 차이점을 물어본 후에 깊게 들어올 수 있는 질문이라고 생각한다. 둘 다 컴퓨팅의 효율성을 위한 기법[병렬 처리]이다. 멀티 프로세싱은 OS의 관점에서 프로세스를 여러개 운영하는 방법이고 멀티 스레딩은 하나의 프로세스에서 내부 기능을 동시에 실행시키는 방법이다. 현대의 하드웨어는 다중 CPU, 다중 코어를 지원하기에 병렬 처리와 관련된 지식은 상당히 중요하다. 배경 면접질문1에서는 스레드와 프로세스의 차이점을 살펴보았다. 스레드는 프로세스에 속하는 단위로 프로세스는 하나이상의 스레드를 소유한다. 그리고 CPU는 스레드 단위로 작업을 처리한다. 현대의 프로그램은 많은 기능들을 제공해줘야 한다. 네트워크를 사용하고, 하드디스크에서 파일을 읽어오고,..

반응형