CS/운영체제

운영체제 기본 개념

말감공 2024. 7. 30. 16:17
728x90

📌 1주차 : 운영체제 기본 개념

  • 운영체제란?
  • 인터럽트
  • 커널, 커널모드, 유저모드
  • 동기 I/O, 비동기 I/O

커널

  • 운영체제 핵심 서비스 담당

이중모드

  • CPU가 명령어를 실행하는 모드
    • 사용자 모드: 커널 영역의 코드를 실행할 수 없는 모드, 응용 프로그램은 기본적으로 여기서 실행됨, 사용자 모드는 하드웨어 자원에 접근하는 명령어를 실행할 수 없음
    • 커널 모드: 커널 영역의 코드를 실행할 수 있는 모드, 자원 접근 명령어 실행 가능
  • 시스템 호출: 사용자 모드로 실행되는 프로그램이 자원 접근하려면 운영체제에게 요청을 보내서 커널 모드로 변환하는 것
    • 소프트웨어 인터럽트: 특정 명령어에 의해 발생

프로세스 관리

  • 프로세스: 실행 중인 프로그램
  • 여러 프로세스가 동시에 실행되는 환경인 프로세스 동기화는 필수적
    • 프로세스가 꼼짝도 못하고 실행되지 않는 교착상태 해결해야함

커널 서비스: 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리

자원 접근 및 할당

  • 일반적으로 CPU는 한번에 하나의 프로세스만 실행 가능 그래서 여러 프로세스를 공정하게 할당하기 위해서는 CPU 스케줄링 필요

인터럽트

  • 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것
  • 종류
    • 비동기적 인터럽트 / 하드웨어 인터럽트
      • 전원 이상, 기계 착오, 외부 신호, 입출력 등 프로세스 외부에서 발생하는 인터럽트
    • 동기적 인터럽트 / 소프트웨어 인터럽트
      • 프로세스 내부에서 잘못된 명령어, 데이터로 exception이 발생하는 것이며 trap이라고 불림
  • 인터럽트 서비스 루틴(ISR)
    • 주 프로그램 작업 수행 중 인터럽트 발생 -> 주 프로그램 상태 레지스터와 PC 등을 스택에 잠시 저장 -> 인터럽트 서비스 루틴으로 점프, 처리 -> 다시 주 프로그램 작업 복귀

동기 I/O, 비동기 I/O

  • 입출력 동기화의 종류
  • 동기 I/O
    • 스레드가 행동에 들어가면 I/O 요청이 완료될 때까지 기다리기
    • 프로그램이 I/O 요청을 했을 때 해당 I/O작업이 완료되어야 다음 작업을 할 수 있는 방식
    • I/O 상태이면 해당 프로세스는 blocked state → 완료되면 wait 상태
    • 완료되면 인터럽트를 통해 완료 알림
    • 특징: 수행 속도는 빠르지만 입출력 연산은 느림, 기다리는 과정에서 자원 낭비 초래
  • 비동기식 입출력
    • cpu 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 부여
    • I/O 결과와 관련 없는 연산이 있을 경우 주로 사용 → 그래서 처리 가능한 작업부터 처리
    • 완료되면 인터럽트를 통해 알림

질문 예비 준비

  • 커널이 무엇인가요?
    • 운영체제의 핵심부분
    • 컴퓨터의 메모리, 프로세스 관리
    • 컴퓨터의 자원을 관리
  • 시스템 콜은 무엇이고 종류는 무엇이 있을까요?
    • 사용자 모드에서 실행하는 응용 프로그램이 컴퓨터 자원을 요청할 때 사용
    • 사용자 모드에서 커널 모드로 변경됨
    • 종류는 리눅스 프로세스 정지 명령어, 파일 오픈, 클로즈
  • 동기와 비동기 차이점에 대해 설명하세요.
    • 동기는 요청과 결과가 동시에 일어난다는 약속, 결과가 나올때까지 대기해야함
    • 비동기는 요청과 결과가 동시에 일어나지 않는 것이라는 약속, 결과가 나올까지 기다리지 않고 그 시간동안 다른 작업이 가능해서 자원을 효율적으로 사용 가능
  • 운영체제의 dual mode(이중모드)에 대해 설명해 주세요
    • 사용자 모드는 커널 영역 코드를 실행할 수 없는 모드, 응용 프로그램이 여기에서 실행되고, 하드웨어 자원에 접근하는 명령어를 사용할 수 없음
    • 커널 모드는 자원 접근 명령어 실행 가능
  • 인터럽트(Interrupt)가 무엇인가요?
    • 프로그램 실행 중 예기치 못한 상황이 발생할 때 발생한 상황을 처리한 후 실행중인 작업으로 돌아오는 것
  • 인터럽트의 종류를 말씀해주세요
    • 하드웨어 인터럽트
      • 하드웨어 장치에서 발생하는 인터럽트
    • 소프트웨어 인터럽트: 주로 시스템 콜을 수행하기 위해 사용
      • 잘못된 명령어로 인해 CPU 내부에서 발생하는 인터럽트
      • 트랩
      • 예외 처리: 권한이 없는 작업을 할때 이에 대한 처리를 위해 발생
  • 내부 인터럽트가 발생하는 예시 상황
    • 내부 인터럽트는 예외와 같은 상황에서 발생, 소프트웨어 인터럽트는 시스템 콜
    • divide-by-zero, 잘못된 명령어 실행
  • 운영체제란 무엇인가요?
    • 시스템 소프트웨어
    • 시스템 자원을 관리하고 사용자에게 편리하고 효고적으로 사용할 수 있는 환경 제공
  • 인터럽트 처리 중 또 다른 인터럽트가 발생하는 경우는 어떻게 처리해야 하나요?
    • 원칙적으로 다른 인터럽트 발생 허용 안함 → 데이터 일관성 문제
    • 경우에 따라 예외 존재 필요성
      • 현재 인터럽트 수행 지점 저장 → 우선 순위 높은 인터럽트 처리 → 원래 인터럽트 저장된 주소로 복귀 → 남은 코드 수행
  • 운영체제와 응용소프트웨어의 차이점이 무엇인가요?
    • 운영체제: 자원을 관리, 사용자 관리
    • 응용소프트웨어: 소프트웨어를 만든 특정 목적만 수행
  • 사용자 공간과 커널 공간의 차이점과 따로 나눈 이유를 설명해주세요!
    • 사용자 공간: 응용 프로그램이 적재되고 변수가 저장되는 공간
    • 커널 공간: 커널 코드, 커널 데이터, 스택 공간, 디바이스 드라이버 등이 탑재되는 공간
    • 분리한 이유는 응용프로그램으로 부터 커널 코드와 데이터를 지키기 위해서
  • 인터럽트 처리 과정
    • 입출력 장치 → CPU 인터럽트 요청 신호
    • CPU 실행 사이클 끝날때 항상 인터럽트 여부 확인
    • CPU 인터럽트 요청 확인, 인터럽트 플래그를 통해 현재 인터럽트 받아들일지 여부 확인
    • 인터럽트를 받아들일 수 있다면 CPU 작업 백업
    • CPU 인터럽트 벡터 참조하여 인터럽트 서비스 루틴 실행
    • 원래 작업 실행

예상 문제

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

사용자 모드로 실행되는 프로그램이 자원 접근하려면 운영체제에게 요청을 보내서 커널 모드로 변환되는 것입니다.

 

2. 운영체제의 Dual Mode 에 대해 설명해 주세요

  • 사용자 모드: 커널 영역의 코드를 실행할 수 없는 모드, 응용 프로그램은 기본적으로 여기서 실행됨, 사용자 모드는 하드웨어 자원에 접근하는 명령어를 실행할 수 없음
  • 커널 모드: 커널 영역의 코드를 실행할 수 있는 모드, 자원 접근 명령어 실행 가능

3. 운영체제의 역할에 대해 2가지 말씀해 주세요.

  • 사용자를 위한 역할로 사용자에게 컴퓨 시스템을 편리하게 사용할 수 있는 인터페이스 제공(GUI, CLI)
  • 하드웨어를 위한 역할로 컴퓨터 시스템 내의 자원을 효율적으로 관리하는 역할

4. 인터럽트(Interrupt)가 무엇인가요?

프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것

 

 

문제 출처

https://github.com/devSquad-study/2023-CS-Study/blob/main/Interview/os_expected_question.md

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

프로세스 메모리 배치  (0) 2025.10.20
스레드 동기화  (5) 2024.08.28
CPU 스케줄링  (1) 2024.08.07
프로세스와 쓰레드  (3) 2024.07.30