면접에서 운영체제 질문을 받으면?

Gaegul·2020년 4월 29일
0

매일 진행하는 스터디의 2주차 주제는 운영체제 였는데 운영체제 내부의 다양한 기술적인 이야기는 스터디원들이 이야기 해줄 것 같아서 면접에서 물어볼 만한 os 질문들을 모아 봤다.

발표자료는 https://www.slideshare.net/ssuser4913c5/os-question-232351266 위의 링크에서 볼 수 있다.

설명에 사용된 용어의 간단한 뜻을 괄호 안에 배치해 둘 예정이다.

1. 프로세스와 스레드의 차이에 대해 설명해보자

프로세스: 실행되고 있는 프로그램(어떤 작업을 위해 실행 할 수 있는 파일들), 메모리에 올라와 실행되고 있는 인스턴스(프로그램의 실체)

스레드: 프로세스 내의 실행되는 흐름의 단위

2. 왜 멀티 프로세스 대신 멀티 스레드를 사용하는가?

간단한 예시로 설명하자면 멀티프로세스는 문서작업을 할 때 여러개의 문서 프로그램을 켜두는 것이고, 멀티 스레드는 문서 프로그램내에서 새로운 문서창을 띄우는 것으로 이해 할 수 있다. 따라서 운영체제가 받는 부담이 확 줄어들게 된다.

이유를 크게 두가지로 설명하자면

자원의 효율

여러 프로세스를 생성하고 할당하는등의 시스템 콜(커널영역의 기능을 사용자 영역에서 사용가능 하게 하는 작업)이 줄어든다.

스레드는 프로세스내의 메모리를 공유하므로 스레드간 데이터 공유가 쉽다는 장점이있다.

처리비용, 응답시간 감소

스레드 간 통신은 stack 제외 모든 메모리를 공유하기 때문에 프로세스 간 통신보다, 스레드 간의 통신이 비용이 적게 소모된다.

프로세스간의 전환보다 스레드간의 전환이 더 빠르게 일어난다.

3. 교착상태(데드락)이란? 그리고 조건은?

교착상태: 모든 작업이 각 작업의 락(공유자원을 잡고 있는 상황)이 풀리길 기다리는 상황

상호배제

공유자원의 사용은 한번에 한 프로세스만 사용가능하다. 여러 프로세스가 접근 할 수 없다.

점유대기

공유자원에 접근중이 한 프로세스가 접근해제를 하지 않고 다른 자원에 접근하려고 기다린다.

비선점

한 프로세스가 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.

순환대기

각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

네가지의 조건 중 하나라도 만족하지 않는다면 교착상태는 일어나지 않는다.

4. 동기와 비동기에 대해 설명해보자

동기(synchronous : 동시에 일어나는)

동기는 요청을 보낸 후 응답을 받아야지만 다음 동작을 실행한다.

예시를 들자면 세탁기를 사용할 때 10개의 세탁기가 있다고 가정해보면 한 세탁기에

  1. 옷 넣고
  2. 세제넣고
  3. 돌리고

의 작업이 끝나야 다음 세탁기를 시작할 수 있다.

비동기(Asynchronous : 동시에 일어나지 않는)

비동기는 요청을 보낸 후 응답에 상관없이 다음 동작을 실행할 수 있다.

세탁기 사용을 할 때 굳이 한 세탁기의 작업이 끝나고 실행 하는 것이 아니라

  1. 옷 넣고
    다른 세탁기 옷 넣고
    다른 세탁기 옷 넣고
  2. 세제넣고
    다른 세탁기 세제 넣고
    다른 세탁기 세제 넣고
  3. 돌리고
    다른 세탁기 돌리고
    다른 세탁기 돌리고

가 가능하기 때문에 조금 더 빠르게 일을 처리할 수 있다.

5.뮤텍스와 세마포어의 차이는?

뮤텍스: 공유된 자원을 여러 스레드가 접근 하려고 하는 것을 막는다.
세마포어: 공유된 자원을 여러 프로세스가 접근 하려고 하는 것을 막는다.

위의 자료들은 중요할 법한 질문들을 주기적으로 업데이트 할 예정이다. 정리용으로 생성 해 둔 블로그 글이고 어긋난 정보가 있다면 댓글 달아주시면 감사하겠습니다.

profile
재밌는거 합니다🍀

0개의 댓글