본문 바로가기
운영체제

[CS스터디 - 운영체제 1주차]

by 근즈리얼 2024. 1. 8.
728x90

인프런을 이용하던 중 모의면접으로 학습하는 cs 스터디에 참여하게 되었습니다.

 

각 주차마다 예상 질문을 알려주시면 일주일동안 학습하고 조원들과 모의 면접을 진행하는 프로세스를 갖고 있습니다.

 

따라서, 각 주차마다 알려주신 예상 질문을 정리하는 글을 남겨보려고 합니다!


<질문 1> 운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요.

 

답변

 

운영체제란 무엇인가?

  • 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 일종의 소프트웨어
  • ex) window, MAC OS, Unix, Linux, Adroid, IOS

운영체제 역할

  • 자원 관리 : 여러 응용 프로그램이 자원을 요청하면 적절한 순서로 배분하고 회수하여 자원을 효율적으로 관리 -> 효율성
  • 자원 보호 : CPU, 메모리 등에 대한 사용자와 응용 프로그램의 직접 접근을 막음 -> 안정성
  • 하드웨어 인터페이스 제공 : 다양한 제조사, 각기 다른 구성으로 되어있는 마우스, 키보드 등을 복잡한 과정없이 사용할 수 있도록 인터페이스를 제공 -> 확장성
  • 소프트웨어 인터페이스 제공 : 사용자가 운영체제를 편리하게 사용하기 위해 제공되는 것으로, 대부분의 작업을 마우스로 수행하거나 스마트폰의 터치스크린 등을 통해 제공되는 기능 -> 편리성

 

<질문 2> 시분할 시스템에 대해서 설명해주세요.

 

답변

 

시분할 시스템이란?

  • 여러개의 프로세스가 사용하는 시스템에서 컴퓨터가 자원을 시각적으로 분할해주어 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 프로세스에게 독립된 컴퓨터를 사용하는 느낌을 주는 것
  • 나만의 언어
    • 10명을 위한 뚝배기 요리를 만들고 있다고 가정
    • 순차적으로 파, 소금, 후추를 뿌린다고 가정
    • 10명 모두 본인의 것에 파를 뿌린 다음 소금을 뿌리고 후추를 뿌린다고 생각할지도... 

사용하는 이유

  • 하나의 CPU는 같은 시점에서 여러 개의 작업을 동시에 할 수 없음 -> CPU의 전체 사용시간을 작은 작업 시간량으로 쪼개어 그 시간량 동안만 번갈아가면서 CPU를 할당하여 각 작업을 처리
  • 각 프로세스의 응답시간을 단축할 수 있음
  • 여러 사용자가 동시에 시스템을 사용할 수 있기 때문에, 컴퓨터 자원을 효율적으로 사용할 수 있음

문제점

  • 작업 스케줄링 및 자원 관리를 위한 복잡한 알고리즘 매커니즘이 필요 -> 시스템 복잡성 증가
  • 동시에 많은 사용자가 접속하면, 시스템 자원이 한계에 도달할 수 있음 -> 응답 시간이 느력지거나 , 서비스 품질이 떨어질 수 있음

 

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

 

답변

 

다중 프로그래밍 시스템이란?

  • 컴퓨터에 여러 프로그램이 동시에 메모리에 적제되어 실행되는 시스템
  • 컴퓨터 자원을 최대한 활용하고, CPU의 유휴 시간을 최소화하기 위해 고안된 방식 중 하나

특징

  • 여러 프로그램이 동시에 메모리에 적재되어 CPU가 이들을 번갈아 가며 수행
  • 입출력이나 다른 이벤트로 인해 대기하는 동안에도 다른 프로그램을 실행하여 시스템의 대기 시간을 최소화

단점

  • 여러 프로그램이 실행되면서 컴퓨터 자원의 경쟁이 심화될 수 있음 -> 프로그램 성능 저하 가능성이 생김
  • 우선 순위 설정의 어려움이 있음 -> 중요한 작업임에도 충분한 자원을 할당 받디 못할 가능성이 생김
  • 데드락 발생할 수 있음
데드락
두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태

 

** 그렇다면 시분할 시스템과 다중 프로그래밍 시스템의 차이점은??**

  • 시분할 시스템 : 각 사용자에게 CPU 시간을 할당하여 독립적인 작업을 수행하도록 함
  • 다중 프로그래밍 시스템 : 여러 프로그램이 메모리에 적재되며 동시에 실행

 

<질문 4> 대화형 시스템(interactive system)에 대해서 설명해주세요.

 

답변

 

대화형 시스템이란?

  • 사용자와의 실시간 상호작용에 중점을 둔 컴퓨터 시스템
  • 시스템은 사용자의 입력에 빠르게 응답, 일반적으로 그래픽 사용자 인터페이스나 명령 줄 인터페이스 등을 통해 사용자와 상호작용
  • 사용자가 직접 시스템에 명령을 내리고 결과를 즉시 확인할 수 있도록 설계

특징

  • 실시간 응답 : 사용자가 어떤 동작을 수행하면 시스템은 즉각적으로 결과를 표시
  • 인터랙티브 인터페이스 : 대화형 시스템은 사용자와의 상호작용을 위해 편리하고 직관적인 인터페이스 제공
  • 실시간 피드백 : 사용자에게 수행한 동작에 대한 피드백을 제공하여 사용자가 시스템의 상태를 이해하고 조작할 수 있또록 함
  • ex) 윈도우 , max

 

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

 

답변

 

다중 처리기 시스템이란?

  • 하나 이상의 중앙 처리 장치가 동시에 시스템을 제어하고, 병렬로 작업을 수행할 수 있는 컴퓨터 시스템
  • 이 시스템에서 각각의 중앙 처리 장치는 독립적으로 작동하면서 메모리 및 입출력 장치를 공유

특징

  • 병렬 처리 : 여러 cpu가 병렬로 작동하므로, 시스템은 여러 작업을 동시에 처리할 수있음 -> 전체 시스템의 성능을 향상
  • 신뢰성 향상 : 여러 cpu가 동시에 작동하므로, 하나의 cpu에 장애가 발생하더라도 다른 cpu가 시스템을 계속해서 운영할 수 있음
  • 고성능 및 확장성 : cpu수를 증가시켜 성능을 확장할 수 있음
  • 자원 공유 : 다중 처리기 시스템에서는 메모리와 입출력 장치를 여러 cpu가 공유할 수 있음 -> 효율적인 자원 활용이 가능

단점

  • 신뢰성과 병행 계산, 최적의 연결 기법 같은 자원을 요구하는 cpu들간의 경쟁을 제어해야 하는 문제
  • cpu가 추가됨에 따라 비용이 상승
  • 여러 cpu가 공유 메모리에 접근 -> 데이터 일관성을 유지하는 것이 중요, 캐시 일관성과 같은 복잡한 문제 관리 필요

<질문 6> 시스템 콜에 대해 설명해주세요.

 

답변

 

시스템 콜이란?

  • 컴퓨터 프로그램이 운영체제의 서비스에 접근하기 위해 사용하는 인터페이스
  • 프로세스가 운영 체제의 커널에게 특정한 작업을 요청하거나 리소스에 접근할 수 있도록 하는 메커니즘
  • 고수준 언어로 작성된 응용 프로그램이 운영 체제와 상호 작용할 수 있도록 중요한 방법 중 하나

시스템 콜 잡업

  • 파일 조작 : 파일 생성, 열기, 쓰기, 닫기 등과 같은 파일 조작과 관련된 작업을 수행
  • 프로세스 제어 : 새로운 프로세스 생성, 종료, 현재 프로세스의 상태 변경 등의 관리 작업 수행
  • 메모리 관리 : 메모리 할당, 해제, 보호 등과 같은 메모리 관리 작업을 수행
  • 프로세스 통신 : 프로세스 간 통신을 위한 메커니즘으로, 메시지 전송, 공유 메모리 등을 지원
  • 장치 관리 : 장치에 대한 입출력을 수행하거나, 장치 드라이버에 대한 조작을 수행
  • 네트워킹 : 네트워크 통신을 위한 작업을 수행
  • 시간 관리 : 현재 시간을 가져오거나 설정하고, 시간 지연을 발생시키는 작업을 수행

프로그램이 시스템 콜 호출 -> 사용자 모드에서 커널 모드로 전환 -> 운영 체제의 커널이 해달 콜을 처리하고 결과 반환

 

<질문 7> 커널에 대해 설명해주세요.

 

답변

 

커널이란?

  • 운영체제의 핵심 부분
  • 운영체제의 기본 기능을 제공하고 시스템 자원을 효율적으로 관리하는 소프트웨어
  • 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하며, 컴퓨터 부팅 시에 메모리에 로드되어 실행
  • 하드웨어와 응용 프로그램의 중재자 역할 및 안정성과 효율성을 유지하는 역할

커널의 기능

  • 프로세스 관리 : 프로세스의 생성, 스케줄링, 종료, 중단 등을 관리하며 각 프로세스 간의 자원 분배와 협력을 조정
  • 메모리 관리 : 메모리 공간의 할당, 해제, 가상 메모리 관리, 페이지 교체 등을 통해 효율적인 메모리 사용을 지원
  • 파일 시스템 관리 : 파일과 디렉토리의 생성, 읽기, 쓰기, 삭제, 보호 등의 파일 시스템의 기본 기능을 제공
  • 입출력 관리 : 입출력 장치와의 효율적인 통신을 위해 드라이버를 관리하고, 입출력 요청을 처리
  • 시스템 콜 지원 : 응용 프로그램이 운영 체제의 기능을 이용하기 위해 제공되는 인터페이스를 구현하며, 시스템 콜을 처리
  • 언터럽트 및 예외 처리 : 하드웨어 인터럽트, 예외, 시스템 호출 등에 대한 처리를 담당
  • 보안 및 권한 관리 : 시스템 자원에 대한 접근 권한을 관리하고, 보안 정책을 시행
  • 네트워킹 지원 : 네트워크 통신을 위한 프로토콜 스택을 관리, 네트워크 자원을 활용할 수 있도록 지원

 

<질문 8> 커널모드에 대해 설명해주세요.

 

답변

 

커널모드란?

  • 컴퓨터 시스템에서 운영 체제의 핵심 부분인 커널이 동작하는 특별한 실행 모드를 나타냄
  • 커널이 다양한 특권 명령을 실행하고, 시스템 자원에 직접적으로 접근할 수 있음

특징과 기능

  • 프로세스 권한 : 커널은 시스템 자원과 특권 명령을 실행하는데 필요한 모든 권한을 가지고 있음
  • 시스템 콜 처리 : 사용자 모드에서 실행 중인 응용 프로그램이 시스템 콜을 호출하면, 커널 모드로 전환되어 해당 시스템 콜을 처리
  • 전용 주소 공간 : 커널 모드에서는 별도의 주소 공간을 사용, 사용자 모드의 응용 프로그램과는 별도로, 커널 모드에서 동작하는 코드와 데이터가 위치하는 주소 공간을 갖음
  • 시스템 리소스 관리 : 주 메모리, 파일 시스템, 장치 드라이버 등과 같은 시스템 리소스를 직접적으로 관리 -> 프로세스 간의 자원 분배와 협력을 조정하고, 효율적인 메모리 관리를 수행
  • 인터럽트 및 예외 처리 : 커널 모드에서는 하드웨어 인터업트, 예외, 시스템 콜과 같은 이벤트를 처리 가능 -> 운영체제는 하드웨어와 상호 작용하며 시스템의 안정성을 유지

<질문 9> 유저모드에 대해 설명해주세요.

 

답변

 

유저모드란?

  • 컴퓨터 시스템에서 사용자 응용 프로그램이 실행되는 모드
  • 유저모드에서는 일반적인 응용 프로그램이 동작하며, 사용자가 작성한 코드가 실행
  • 모든 유저 모드에서는 특정 특권 명령의 실행이 제한되어 있음

유저 모드의 특징과 기능

  • 프로세스 권한 제한 : 유저 모드에서는 응용 프로그램이  실행되므로, 해당 프로그램은 시스템 자원에 직접적인 접근 및 특권 명령의 실행이 제한됨 -> 시스템 전체의 안정성과 보안이 향상
  • 시스템 콜 호출 : 응용 프로그램이 운영 체제의 서비스나 기능을 이용하기 위해 시스템 콜을 호출할 수 있음
  • 프로세스 간 격리 : 응용 프로그램은 각각의 독립된 가상 주소 공간에서 실행 -> 서로의 메모리에 직접적으로 접근할 수 없음 -> 하나의 프로세스가 다른 프로세스에 영향을 주지 않음
  • 인터럽트 처리 제한 : 일반적으로 유저 모드에서는 하드웨어 인터럽트와 같은 저수준 이벤트에 직접적으로 대응할 수 없음

 

<질문 10> 폴링에 대해 설명해주세요.

 

답변

 

폴링이란?

  • 컴퓨터 프로그램이나 하드웨어가 어떤 이벤트가 발생했는지 주기적으로 또는 규칙적으로 확인하는 기술
  • 이벤트가 발생할 때까지 대기하지 않고, 주기적으로 상태를 확인하여 이벤트를 감지하는 방식

폴링의 동작

  • 주기적인 확인 : CPU는 일정한 주기나 규칙에 따라 입출력 장치의 상태를 확인
  • 상태 확인 : CPU가 입출력 장치의 상태를 확인하여 데이터가 도착했는지 또는 보내기 준비가 되었는지를 감지
  • 데이터 처리 : 데이터가 도착했거나 보내기 준비가 되었다면, CPU는 해당 데이터를 가져오거나 내보내는 작업을 수행
  • 대기 또는 다른 작업 : 데이터가 도착하지 않았거나 보내기 준비가 되지 않은 경우, CPU는 계속해서 주기적으로 상태를 확인하거나 다른 작업을 수행

단점

  • 주기적으로 상태를 확인하는 동안 CPU가 계속해서 작업을 수행하므로, 효율성이 떨어지고 에너지 소모가 증가함
  • 입출력 장치의 상태를 확인하는 주기에 따라 데이터 도착을 놓지는 경우가 발생할 수있음

따라서, 요즘은 많이 사용하지 않는 기술이고 인터럽트라는 기술을 많이 사용한다고 함!

 

<질문 11> 인터럽트에 대해 설명해주세요.

 

답변

 

인터럽트란?

  • 컴퓨터 시스템에서 어떤 사건이 발생하거나 특별한 조건이 충족될 때, 현재 진행 중인 작업을 중단하고 그 사건을 처리하기 위해 cpu가 특정한 루틴을 실행하는 메커니즘
  • 하드웨어 장치나 외부 이벤트가 CPU에게 알림을 보내어 처리가 필요한 상황을 알리는데 사용

인터럽트 처리 과정

  • 인터럽트 발생 : 하드웨어나 소프트웨어 이벤트가 발생하면 CPU에게 인터럽트 신호 전송
  • 현재 작업 중단 : CPU는 현재 수행 중인 작업을 일시 중단하고, 현재의 프로그램 상태를 보존
  • 인터럽트 서비스 루틴 실행 : CPU는 인터럽트 벡터 테이블을 참조하여 해당 인터럽트에 대응하는 서비스 루틴을 실행
  • 현재 작업 복구 : 인터럽트 서비스 루틴이 실행을 마치면, CPU는 현재 작업으로 돌아가 원래의 프로그램을 계속 수행

여러 작업이 동시에 실행될 때, 인터럽트는 각 작업에 서비스를 제공하고 전체 시스템의 효율성을 높이는데 도움이 됨

 

<질문 12> DMA에 대해 설명해주세요.

 

답변

 

DMA란?

  • 컴퓨터 시스템에서 주변 장치(하드디스크, 네트워크 카드 등)가 직접 메모리에 데이터를 읽거나 쓸 수 있도록 하는 기술 혹은 메커니즘
  • DMA를 사용하면 CPU가 직접 데이터 전송을 처리하는 것이 아닌, 주변 장치 간의 데이터 전송이 병렬로 이루어져 시스템 성능 향상

특징

  • 중앙 처리 장치의 부하 감소 : CPU가 데이터 전송을 처리하는데 사용되었던 부하를 줄일 수 있음
  • 병렬 전송 : CPU와 독립적으로 여러 주변 장치 간에 데이터 전송이 병렬로 이루어짐 -> 시스템의 대역폭을 향상시키고 데이터 전송 속도를 높임
  • DMA 컨트롤러 :
    • DMA는 일반적으로 DMA 컨트롤러라고 불리는 하드웨어 장치에 의해 제어,
    • DMA컨트롤러는 주변 장치 간의 데이터 전송을 관리하고 제어하는 역할을 함

활용 예시

  • 하드 디스크에서 메모리로 데이터 블록을 읽거나 쓰는 경우
  • 그래픽 카드에서 메모리로 이미지 데이터를 전송하는 경우
  • 네트워크 카드에서 수신한 데이터를 메모리로 복사하는 경우

 

<질문 13> 동기식 I/O에 대해 설명해주세요.

 

답변

 

동기식 I/O란?

  • 프로그램이 입출력 작업을 수행할 때, 해당 작업이 완료될 때까지 대기하는 방식을 나타냄
  • 입출력 작업이 완료되기 전까지는 다른 작업을 수행하지 않고 대기하는 방식

특징

  • 작업의 완료 대기 : 입출력 작업을 시작한 후 해당 작업이 완료될 때까지 프로그램이나 스레드는 대기
  • 블로킹 방식 : 동기식 I/O 입출력 작업이 진행 중일 때 블로킹 되어 다른 작업이 수행하지 못하게 됨 -> 입출력 작업이 완료될 때까지 해당 프로세스나 스레드는 블로킹 상태로 되어 있음
  • 단순한 코드 구조 : 코드의 실행 흐름이 입출력 작업의 완료를 기다리는 동안 정지하므로 코드의 구조가 상대적으로 단순하고 직관적
  • 동기화 필요성 : 여러 입출력 작업을 수행하는 경우 각 작업이 완료될 때까지 기다려야 하므로 작업 간의 동기화가 필요함

동기식 I/O는 간단하고 직관적인 코드를 작성할 수 있어서 구현이 쉽지만, 입출력 작업이 완료될 때까지 기다려야 하므로 시스템 자원을 효율적으로 활용하기 어려움이 있음

 

특히, 입출력 작업이 오래 걸리는 경우 전체 시스템이 블로킹되어 성능이 저하될 수 있음

 

이러한 단점을 극복하기 위해 비동기식 방법을 사용해 볼 수 있음

 

<질문 14> 비동기식 I/O에 대해 설명해주세요.

 

답변

 

비동기식 I/O란?

  • 입력이나 출력을 요청한 후에 바로 다음 작업을 수행하는 방식

장점

  • I/O작업이 오래걸리더라도 다른 작업을 진행할 수 있어 프로그램의 성능과 사용자의 응답성을 유지할 수 있음

단점

  • 구현이 복잡하고 오류 처리가 어려울 수 있음

그렇다면 동기식 I/O와 비동기식 I/O 중 어느것이 더 좋을까?

 

정답은 없지만.. 상황에 맞게 잘 고려해서 사용해야 한다 입니다.

뻔한 이야기이겠지만.. 순차적으로 서비스 로직이 실행되어야 하거나 I/O 작업이 빠르게 진행되어야 한다면 동기식 I/O를 사용하도록 기대할 수 있습니다.

 

반면, 동시에 진행되어도 상관없거나 I/O 작업이 꼭 빠르게 진행될 필요가 없다면 비동기식 I/O를 사용하는 것도 좋은 방법입니다.

 

728x90

'운영체제' 카테고리의 다른 글

[cs 스터디 - 운영체제 4주차]  (1) 2024.02.05
[cs 스터디 - 운영체제 3주차]  (0) 2024.01.21
[cs 스터디 - 운영체제 2주차]  (0) 2024.01.15

댓글