CS/운영체제

운영체제 1주차 과제

미네구스 2024. 8. 14. 00:32
운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요.

 

운영체제는 커널 영역에 위치해 실행하려는 프로그램을 사용자 영역 메모리에 효율적으로 적재하고, 불필요한 프로그램을 메모리에서 삭제하며 메모리 자원을 효율적으로 관리합니다. 

그 뿐만 아니라, 사용자에게 컴퓨터 시스템을 편리하게 활용할 수 있는 환경을 제공합니다.

 

시분할 시스템에 대해서 설명해주세요.

 

여러 작업을 실행할 때, 컴퓨터 처리 능력(CPU)를 일정한 시간 단위로 분할하여 사용하는 것을 말합니다. 시분할 시스템을 도입함으로써 인해 우리가 컴퓨터에게 요청을 보낼 시 응답이 즉각적으로 옵니다. (interactive)

 

다중 프로그래밍 시스템(multi-programming system)에 대해서 설명해주세요.

 

메모리에 여러 프로그램이 동시에 올라가 있는 방식을 다중 프로그래밍 시스템이라고 합니다. 

대화형 시스템(interactive system)에 대해서 설명해주세요.

 

사용자의 입력에 즉각적으로 반응하여 결과를 보여주는 것을 뜻합니다. 시분할 시스템의 특징 중 하나입니다.

 

다중 처리기 시스템(multi-processor system)에 대해서 설명해주세요.

 

하나의 컴퓨터에 여러개의 CPU가 붙어있는 것을 의미합니다.

시스템 콜에 대해 설명해주세요.

 

사용자 모드로 운영체제의 코드를 직접 수행하는 것이 불가능하기 때문에 커널 함수를 호출하여 운영 체제의 서비스를 받기 위해 동작하는 것이 시스템 콜 입니다.

 

실행중일 때, 커널모드로 전환하고 싶다면 운영 체제에 요청을 보내서 전환을 해야 합니다. 이 때, 시스템 콜을 통해서 사용자 모드에서 커널 모드로 전환할 수 있습니다. 

 

+ 시스템콜을 호출했을때 과정을 설명해주세요

 

처음에 사용자 프로그램이 I/O를 하기 위해 OS에게 시스템 콜을 요청합니다. 그러면 OS는, Disk레벨에게 I/O 수행을 명령하게 되고 수행이 끝나게 되면, CPU에게 알려주기 위해 하드웨어 인터럽트가 걸립니다.

 

** I/O 요청을 처음 하는 것은 소프트웨어 인터럽트 입니다.

커널에 대해 설명해주세요.

 

운영체제의 핵심 서비스를 담당하며, 컴퓨터 자원들을 관리하고 안전하게 실행하게 하는 기능을 담당하고 있습니다. 

컴퓨터 자원만 담당하고 있기 때문에 사용자와의 상호작용은 불가능합니다.

 

+ mode bit과 전환하는 과정에 대해 설명해주세요

 

사용자 프로그램의 잘못된 수행으로 다른 운영체제가 피해가 갈 수 있으므로 mode bit이란 시스템이 존재

1. 유저모드(사용자 모드)

0. 커널모드(모니터 모드)

인터럽트나 Exception 발생 시 하드웨어가 mode bit을 0으로 바꿔 커널모드로 변경합니다.

사용자 프로그램에게 CPU를 넘기기전에 mode bit을 1로 변경합니다.

 

커널모드에 대해 설명해주세요.

 

커널 영역의 코드에 접근할 수 있는 실행 모드이고. 하드웨어 자원에 접근해서 관리할 수 있습니다.

유저모드에 대해 설명해주세요.

 

커널 영역의 코드를 실행할 수 없는 모드이고, 유저 모드로 실행중일 때 CPU는 하드웨어 자원에 접근하는 명령어를 실행할 수 없습니다.

 

폴링에 대해 설명해주세요.

 

이벤트 발생과 관계 없이 일정 주기로 I/O에서 내용을 받아오는 방식입니다. 동일 작업을 주기적으로 수행하기 때문에 CPU에 부하가 인터럽트에 비해 큽니다. 

 

데이터 송수신이 많이 필요한 작업에 사용되기도 합니다.

인터럽트에 대해 설명해주세요.

 

인터럽트가 발생할 때, CPU가 운영체제에 넘어갑니다. 평소에는 사용자 프로그램에 CPU가 위치합니다.

 

인터럽트는 크게 두 종류로 나눌 수 있는데, 

하드웨어 인터럽트

  • 일반적으로 생각하는 인터럽트 입니다. 말 그대로 하드웨어가 발생시킨 인터럽트 입니다.

소프트웨어 인터럽트(trap):

  • Exception: 프로그램이 오류를 발생시킨 경우
  • System Call: 프로그램이 커널 함수를 호출하는 경우 

+ 인터럽트와 시스템콜의 차이란?

 

DMA에 대해 설명해주세요.

Direct Memory Access

I/O 장치에서 인터럽트가 많이 발생하면 CPU의 효율이 떨어지게 됩니다.

기존에 메모리에 접근할 수 있는 것은 CPU밖에 없는데, DMA도 메모리에 접근하게끔 하여 I/O 장치에서 발생한 내용을 메모리에 복사해줍니다. 이는 CPU가 할 내용을 대신 하게 되어 잦은 인터럽트로부터 효율적으로 CPU를 동작시킬 수 있습니다.

 

동기식 I/O에 대해 설명해주세요.

 

I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어가는 것을 뜻합니다.

 

비동기식 I/O에 대해 설명해주세요.

 

I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어가는 것을 뜻합니다.

 

 

 

두 I/O 모두 작업이 완료되었다는 것은 인터럽트를 통해 알려줍니다. 

 

피드백

  • 커널모드와 유저 모드를 비교해서 학습해보시면 좋을 것 같습니다!
  • 인터럽트와 시스템 콜을 연관지어서 학습해보시면 좋을 것 같습니다!
  • 각 시스템의 목적에 대해 고민해보시면 좋을 것 같습니다!
  • 다중 처리기 시스템의 장단점에 대해 확인해보시면 좋을 것 같습니다!
    • 시분할 시스템이랑 비교해서 (다중 처리기 시스템 이후에 나온게 시분할)
  • 폴링과 인터럽트를 비교해서 잘 설명해주셨습니다!
  • 추가적으로 이어지는 질문에 대해 자연스럽게 잘 대답해주십니다.
  • 동기식 or 비동기식이 적용하는 상황은 각각 어떤 것이 있을까요?

 

튜터 질문

N+1 문제를 경험해본 적이 있는지

PatchJoin이 ToMany 관계에서 발생이 안되는데 그 이유를 알고있는지?

데이터 1000만건을 넣어서 성능 테스트를 해보기

동시에 쓴다고 할 때 동시성 이슈에 대한 문제

  • 수강신청할 때나 그런것들?..

조회는 쿼리 튜닝을 해서 개선 등등

시나리오를 딱 정하고 문제가 발생하는 지점을 찾자