[OS 면접 준비]

James·2024년 1월 8일
1

운영체제

목록 보기
13/13
post-thumbnail

[OS 1-4 종합 자료]

1. 운영체제란 무엇인가?

소프트웨어와 하드웨어 사이에서 사용자가 상호작용할 수 있도록 도와주는 시스템 소프트 웨어입니다.

Q) 운영체제는 어떤 일들을 하죠?

파일 관리, 메모리 관리, 프로세스 할당, CPU 스케쥴링 등 다양한 작업들을 합니다.

2. 인터럽트란 무엇인가 ? 어떻게 동작하는가?

  • 인터럽트란 특정 행동을 방해하는 것을 말합니다. OS에서 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 구분됩니다.
  • 프로세스의 경우 운영체제의 시스템콜에 의해서 하나의 프로세스의 작업을 중단 시키고 프로세서를 할당하기 전에 PCB에 중단된 프로세스의 정보를 기록하고 다음 프로세스에게 프로세서를 할당하는 방식으로 동작합니다.

    Q) 하드웨어 인터럽트랑 소프트웨어 인터럽트 종류 말해보세요

    하드웨어 인터럽트는 마우스나 키보드등의 입력과 출력이 발생할때 하드웨어 인터럽트라 하고, 소프트웨어 인터럽트는 시스템콜, 프로세스의 context switching등 의 상황에서 발생합니다.

3. 사용해본 운영체제가 무엇인가?

macOS, window

4. 커널이 무엇인가?

운영체제의 심장으로 불리는 부분으로, 운영체제 시스템의 주요부분을 제어합니다. 예를 들면 프로세스 관리, 파일 시스템 관리 , 자원 접근과 할당을 합니다.

5. 커널모드과 사용자 모드 차이가 무엇인가?

커널 모드는 일반적으로 운영체제의 자원에 대한 접근 권한을 갖고 있습니다. 사용자 모드의 경우에는 운영체제의 접근 권한을 제한적으로 갖고 있습니다.

6. 시스템 콜이란 무엇인가?

사용자 모드에서 커널 모드로 전환이 필요할때 사용하는 인터페이스 입니다. 주로 운영체제의

7. 프로세스와 스레드 차이는 무엇인가?

프로세스는 프로그램이 실행중인 상태를 말하고 스레드는 프로세스 내에서 실행되는 단위입니다.

  • 프로세스는 각 프로세스 별로 별도의 독립공간을 갖고 있으며, 운영체제로 부터 각 자원을 할당받습니다.
  • 스레드의 경우에는 프로세스로 부터 자원을 할당 받고 하나의 프로세스 내에서 코드/데이터/힙영역을 공유하기 때문에 좀더 효율적으로 자원을 사용할 수 있습니다.

8. 멀티프로세스, 멀티 스레드 장단점과 어떤 상황에 활용하면 적절한가 (뭐가 더 효율적인가)?

상황에 따라 다르겠지만, 일반적으로 멀티 스레드가 좀 더 효율적일 것 같습니다. 프로세스는 메모리공간을 하나의 프로세스 별로 독립적으로 갖고있고, 독립공간이기 때문에 IPC등이 통신할때 필요합니다. 컨텍스트 스위칭에서 발생하는 오버헤드역시 큽니다. 따라서 스택을 제외한 나머지 영역을 공유하면서 스위칭시 비교적 적은 비용의 오버헤드가 발생합니다. 하지만, 무조건 적으로 좋은 것은 아닙니다. 스레드 역시 자원공유의 문제로 인해 동기화가 잘 이뤄져야하고 하나의 영역이 문제가 발생하면 나머지 스레드에게 영향이 간다는 단점이 있기 때문에 앞서 말씀드린것처럼 상황에 맞춰서 효율적인게 다를 것 같습니다.

멀티 프로세스의 예시는 크롬 탭 각각이 프로세스다.

9. 멀티 프로그래밍,멀티 태스킹, 멀티 스레드, 멀티 프로세서 각각 설명해주세요

멀티 프로그래밍은 동시에 실행중인 프로그램이 여러개인 것입니다.
멀티 태스킹은 여러개의 프로그램이 마치 동시에 실행중인 것처럼 느끼게하는 기술입니다.
멀티 스레드의 경우 하나의 프로그램에 스레드가 여러개인 것을 말합니다.
멀트 프로세서의 경우에는 프로세서 즉, CPU가 여러개인 것을 의미합니다.

10. 프로세스란 무엇인가?

프로세스는 실행중인 프로그램을 말합니다.

11. PCB란 무엇인가 ?

프로세스마다 PID,Process Status 등 중요한 정보를 저장하는 Process Control Block입니다. 이는 프로세스 생성시 만들어지고, 실행이 끝나면 폐기됩니다.

12. IPC란 무엇인가 ?

Inter Process Communication의 약자로 프로세스간 통신을 담당하는 것입니다. 프로세스는 독립적인 공간에서 실행되기 때문에 프로세스 간에 통신이 필요한데 이를 통해서 통신을 할 수 있습니다.

Q)어떤 영역에서 실행되나요?

커널 영역입니다.

13. 캐시가 무엇이고, 지역성의 원리는 무엇인가?

캐시는 빠른 데이터 접근을 위해 사용되는 메모리 유형입니다. 주로 자주 사용되거나 최근에 사용된 데이터를 저장합니다.

Q) 캐시 히트, 캐시 미스 설명해봐라

캐시에 찾고자하는 데이터가 있을때 있다면, 히트이고 없다면 캐시 미스입니다.

지역성원리는 특정 부분의 메모리 영역을 다른 부분보다 더 자주 접근될 가능성이 높다는 것입니다. 지역성은 시간적 지역성공간적 지역성으로 구분됩니다.

Q) 시간적 지역성공간적 지역성 설명해봐라

  • 시간적 지역성은 한 번 접근된 데이터나 리소스는 가까운 미래에 다시 접근할 가능성이 높습니다.
  • 공간적 지역성은 메모리상 물리적으로 가까운 위치에 있는 데이터들은 연속적으로 접근될 가능성이 높습니다.

Q) 시간적 지역성공간적 지역성 뭐가 더 효율적인가?

컴퓨터 프로그램이 대량의 데이터를 순차적으로 처리하는 경우, 공간 지역성이 캐시 성능에 더 큰 영향을 미칠 수 있습니다. 이는 순차적 접근이 메모리의 연속된 영역을 효율적으로 활용하기 때문입니다.
반복적인 계산이나 루프 내에서 같은 데이터에 대한 빈번한 접근이 있는 경우, 시간 지역성이 더 큰 영향을 미칠 수 있습니다. 이는 데이터가 캐시에 남아 있게 되어 빠른 재접근이 가능하기 때문입니다.

14. 프로세스 메모리 영역은 어떻게 나눠져 있고 어떤 내용을 포함하고 있는가?

프로세스 메모리 영역은 코드, 데이터, 힙, 스택 영역으로 나눠져있습니다.
코드 데이터의 경우 정적할당 영역으로 크기가 고정되어 있고, 힙과 스택은 동적할당 영역입니다.
1. 코드 영역은 실행할 수 있는 코드고, 읽기 전용 공간입니다.
2. 데이터 영역은 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간입니다.(ex global variable)
3. 힙 영역은 사용자가 직접 할당할 수 있는 영역이고
4. 스택 영역은 데이터를 일시적으로 저장하는 공간입니다.

15. 스택을 스레드마다 독립적으로 할당하는 이유가 무엇인가?

스택은 실행 컨텍스트 정보를 저장합니다. 각 스레드가 서로의 실행에 영향을 미치지 않으면서 독립적인 함수 호출 및 실행을 유지할 수 있습니다.

16. context Switching 이 무엇인가?

처리해야할 여러 프로세스가 있을때 하나의 프로세스 작업이 완전히 끝날때 까지 기다리는 것이 아니라 여러 작업들을 동시에 처리할 수 있도록 하는 방법입니다.

Q) 예시를 들어서 설명해 봐라

프로세스를 예로 들어 설명드리겠습니다. 두개의 프로세스가 있다고 가정할때 A의 프로세스가 실행중일때 B의 프로세스가 프로세서(CPU)를 필요로하는 상황에서 자원은 한정적이기 때문에 interrupt가 발생하고 A의 프로세스의 이전 기록들을 PCB에 저장하고 B의 프로세스로 프로세서를 할당하는 것을 말합니다.

17. context Switching 이 성능에 어떤 영향을 미치는 설명하세요

잦은 context Switching은 오버헤드가 발생해서 성능이 떨어지게 됩니다. 프로세스의 내역을 저장하고 스위칭하기 때문에 시간과 리소스를 낭비하고 시스템의 전체적인 처리량을 감소시킬 수 있습니다. 또한, 새로운 프로세스로 전환할때 CPU캐시에 저장된 데이터가 이전 프로세스와 관련된 것이라 캐시 미싱이 발생할 수 있습니다.

18. context Switching 의 오버헤드의 주 원인은 무엇인가?

context Switching이 일어날때 PCB에 인터럽트된 프로세스의 내역을 저장하고 스위칭이 일어나는데 그때까지 Idle한 상태가 되는데, 이 상황에서 CPU시간을 소모하게됩니다. 두번째는 CPU는 이전의 캐시를 이전 프로세스에 대한 캐시를 저장하고 있기때문에 캐시미싱이 발생하는 원인등이 있습니다.

19. Real-Time이란 무엇인가?

OS에서 Real-Time은 정확히 몇시 몇분 몇초에 하나의 오차없이 작업을 완료하는 것을 말합니다.

[OS 7-9 종합 자료]

1. 동기(sync)와 비동기(async)의 개념과 차이 설명

동기는 하나의 작업이 끝나고 난후에 다음 작업이 실행되고, 비동기는 하나의 작업이 완료되기를 기다리지 않고 병렬적으로 처리하는 것을 말합니다.

2. 선점(blocking)스케쥴링과 비선점(non-blocking)스케쥴링의 개념과 차이

선점형 스케쥴링: 선점형 스케쥴링은 프로세스가 자원을 사용하고 있는 중에도 운영체제(OS)가 자원을 중간에 빼앗아 다른 프로세스에게 할당할 수 있는 것을 의미하고,
비선점형 스케쥴링: 비선점형 스케쥴링은 하나의 프로세스가 끝나기 전까지는 다른 어떤 프로세스도 자원을 빼앗을 수 없다.

Q) 각각의 장단점이 있는가?

선점형의 경우 우선순위에 따른 스케쥴링을 할 수 있고, 하나의 작업이 CPU를 독점해서 발생하는 기아현상, 호위효과 등을 막을 수 있습니다. 반면에, 프로세스의 자원을 선점할 수 있기 때문에 CPU maximization을 할 수 있지만, 지나친 contextSwitching이 발생하게 된다면 발생할 수 있는 오버헤드가 클 것 같습니다.

Q) 그렇다면 선점 (혹은 비선점) 스케줄링에는 무엇이 있는가?

비선점형 스케쥴링으로는

  • FCFS 스케줄링(First Come First Served Scheduling)
  • SJF 스케줄링(Shortest Job First Scheduling)
  • HRRN 스케줄링(Highest Response Ratio Next Scheduling)
    등이 있고

선점형 스케쥴링 으로는

  • RR 스케줄링(Round Robin Scheduling)
  • SRTF 스케줄링(Shortest Remaining-Time First Scheduling)
  • 다단계 큐 스케줄링(Multilevel Queue Scheduling)
  • 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling)
    이 있습니다.

3. 스케쥴러 개념?

  • CPU스케쥴링은 한정적인 메모리 자원을 여러 프로세스가 효율적으로 사용할 수 있도록 하기 위해서 프로세스에게 자원을 할당하는 작업입니다.

    Q) CPU 스케쥴링 왜 하나요?

    CPU를 Maximization하기 위해서 합니다. CPU는 일처리는 똑부러지지만 스스로 스케쥴링은 못합니다 

4. 동시성 병렬성에 대해서 설명해주세요

동시성단일코어 프로세서에서 여러개의 작업들을 context switching을 통해서 번갈아가며 작업을 중단하고 다른작업을 실행시켜서 여러개 작업이 동시에 수행되는것 처럼 느끼게 하는 것입니다. 병렬성멀티코어 프로세서에서 독립적으로 다른 프로세스를 처리하는 것을 의미합니다.

5. 스케쥴링 과정 설명해주세요 (스케쥴링 큐를 넣어서 과정을 설명하시오)

1) 하드디스크에 있는 프로그램이 실행요청이 들어오면 Job Queue에 등록됩니다. 2) Job Queue에서 실행할 준비가 된 프로그램을 선택하여 롱텀 스케쥴러가 MainMemory공간으로 올리게 됩니다. 3)메인 메모리에 올라간 프로그램은 실행 준비상태로 대기하며 우선순위에 따라 Ready Queue에 올라갑니다. 4) ReadyQueue에 있는 프로세스중 우선순위가 높은 프로세스를 숏텀 스케쥴러가 CPU에게 할당하게 됩니다. OS가 정한 스케쥴링 방식 그리고 우선순위에 따라 Que에 넣기도 하고 빼기도하는 과정을 거치게 됩니다.

Q) Job Queue, Ready Queue에 대해서 설명해주세요

  • Job Queue는 현재 시스템 내에 있는 모든 프로세스들이 담긴 공간이고, Ready Queue는 현재 메인메모리에 있으면서 CPU를 할당 받고자 기다리는 프로세스들이 담긴 공간입니다.

Q) 프로세스, 스레드 동작 시키는거 결정하는 것이 각각 무엇인지 알고 계신가요?

  • 실제로 프로세스를 동작시키는 것은 short-term Scheduler(CPU 스케쥴러)가하고
    스레드를 동작시키는 것의 결정은 LWP(light weight Process)가 결정합니다.

6. 기아 현상(Starvation)에 대해서 설명하시오

기아 현상은 특정 프로세스의 우선순위가 낮은 상태가 지속적으로 유지돼서 원하는 자원을 할당 받지 못하는 상태를 말합니다.

Q) 기아상태를 설명하는 “식사하는 철학자 문제”에 대해서 설명해보세요

식사하는 철학자 문제는 한정적인 자원에 접근하려고 할때, 발생하는 교착상태입니다.

7. Race Condition과 임계구역(Critical Section)이 뭔지 설명해주세요

Race Condition는 두개 이상의 프로세스가 공통 자원을 병렬적으로 읽거나 쓰려고 할때 서로 경쟁하려는 상황을 말합니다.
임계 구역은 동시에 실행하면 문제가 발생하는 자원에 접근하는 영역을 말합니다.

Q) 경쟁상태(Race Condition)을 막기위한 방법은 어떤거죠?

뮤텍스(Mutex)와 세마포어(Semaphore) 등의 방법이 있습니다.

Q) 임계 구역을 해결하기 위한 세 가지 원칙

  1. 상호배제, 진행, 유한대기 방법이 있습니다.
    상호 배제는 이미 Critical Section에 작업중이면 다른 프로세스는 Critical Section에 진입하면 안되는 것이고, 진행 진행은 Critical Section에 작업중인 프로세스가 없고, Critical Section에 진입하려는 프로세스가 존재하는 경우 진입할 수 있어야 하는 원칙입니다. 마지막, 유한대기는 대기하고 있는 프로세스가 있다면 해당 프로세스는 언젠가는 Critical Section에 들어가야한다는 원칙입니다.

8 .교착상태(DeadLock)에 대한 설명

교착상태는 서로 다른 둘이상의 프로세스가 한정적인 자원에 접근하려고 할때 서로 다른 프로세스가 필요한 자원이 상대에게 존재해서 아무것도 하지 못하는 상태를 교착상태라고 합니다.

Q) 데드락 발생 조건에 대해서 설명해주세요. (4가지)

  1. 상호배제
  2. 점유와 대기
  3. 비선점
  4. 환형 대기

Q) 교착상태 해결 방안

예방이 있습니다. 사전에 위에 상호배제, 점유와 대기, 비선점, 환형대기에 대한 부정을 하게되면 됩니다.
회피가 있습니다. 교착상태가 발생하게되면 적절히 피해나가는 방법입니다. 이에 대한 예시로 은행원알고리즘이 있습니다. 그외에 탐지, 복구 방법이 있습니다.

9. 동기화란 무엇인가?

동기화란 데이터, 자원에 대한 일관성과 순서를 유지하기 위한 기법입니다.

Q) 동기화의 예시?

프로세스들이 한정적인 자원에 접근하려고 할때 다른 프로세스가 하나의 자원을 사용중이라면 또 다른 프로세스의 입장에서 해당 자원은 사용중인 상태가 일관되는 예가 있을 것 같습니다.

Q) 동기화 문제 해결 기법에는 무엇이 있는가?

뮤텍스(Mutexes)와 세마포어

10.뮤텍스, 세마포어에 대한 설명

  • 뮤텍스는 특정 자원에 대한 접근을 한 스레드만이 할 수 있도록 제한합니다. 한 스레드가 뮤텍스를 잠그면, 다른 스레드는 그 뮤텍스가 해제될 때까지 대기해야 합니다.
  • 세마포어는 뮤텍스와 유사하지만, 동시에 여러 스레드가 자원에 접근할 수 있는 '카운트'를 가집니다. 이 카운트는 동시에 자원에 접근할 수 있는 스레드의 최대 수를 결정합니다.

11. CPU 스케쥴링이 무엇인가요?

CPU 스케쥴링은 CPU를 maximization하기 위해서 운영체제가 자원을 효율적으로 사용할 수 있도록 관리하는 과정입니다.

Q) CPU 스케쥴링 종류 말해주세요

FCFS(First Come First Served) / SJF(Shortest-Job-First) / SRTF(Shortest-remaining-time-first) / (Priority Scheduling) / (RR) Round Robin / 다단계 큐 스케줄링(Multilevel Queue Scheduling)/ 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling) 등이 있습니다.

12. 연속메모리할당이란 뭔가요?

연속 메모리할당은 말그대로 A는 A의 메모리만큼 할당되고 그 후 B는 B의 메모리 만큼 연속적으로 할당되는 것을 말합니다.

Q) 연속 메모리할당을 하는게 효율적인가요?

연속 메모리 할당을 하는 것에 있어서 무조건 효율적이다.라고 할 수 없습니다. 메모리 할당할때 연속적이지만, 외부단편화가 발생하게됩니다. 때문에 할당 해제의 복잡성을 갖고 있고, 외부 단편화에 문제를 해결하고자 메모리를 재할당 하게되면 메모리 재배치와 압축에 대한 추가적인 오버헤드가 발생하는 문제가 있습니다. 때문에 무조건 효율적이다고 볼 수 없습니다.

13. 스와핑(swapping)이 뭔가요

메모리공간에서 사용하는 프로세스와 사용하지 않는 프로세스, 오랫동안 사용안된 프로세스들을 메인메모리(RAM)으로 부터 스왑영역으로 보내므로써 메모리를 좀더 효율적으로 쓸 수 있게하는 방법입니다.

Q) 스와핑 장단점 설명 가능한가요?

스와핑의 장점부터 말씀드리겠습니다. 우선 스와핑은 한정적인 메모리공간을 효율적으로 사용할 수 있게끔 도와줍니다. 하지만 스와핑의 단점으로는 가상메모리의 일부분을 보조기억장치에 할당하여 메모리에 관리하는 것이기 때문에 속도측면에서 RAM보다 느리기 때문에 속도 저하를 불러올 수 있습니다.

14. 단편화에 대해서 설명해주세요 (외부,내부)

외부단편화는 전체적인 메모리공간은 사용할 수 있지만 해당 프로세스가 할당 될때 할당되는 공간이 보다 다 작은 공간일때 발생하는 것을 말하고 내부 단편화는 프로세스가 할당되고 남은 메모리 공간을 말합니다.

15. 단편화를 줄이기 위해서 어떻게 해야하는가?

단편화 해결방법으로는 페이징과 세그멘테이션방법이 있습니다.

16. 페이징과 세그멘테이션이 뭔가요?

페이징은 각 프로세스를 일정크기로 자르고, 이를 메모리에 불연속적으로 할당해서 외부단편화 문제를 해결한 것입니다. 세그멘테이션은 서로다른 논리적인 블록단위인 세그먼트로 쪼개서 메모리에 할당한 것입니다.


Reference & Additional Resources

profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글