CS 상식 - 운영체제

[CS 상식 - 운영체제] 운영체제 시작하기 (스터디 1)

beginner-in-coding 2025. 2. 5. 14:39

01. 운영체제를 알아야 하는 이유

  • 운영체제(Operating System)
    • 시스템 자원 (자원): 프로그램 실행에 필요한 요소들을 의미 (CPU, 메모리, 보조기억장치, 입출력 장치 등)
    • 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 역할
    • OS는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 돕는 역할
    • 영역
      • 커널 영역 (Kernel Space): OS가 항상 컴퓨터가 부팅될 때 적재되는 공간
      • 사용자 영역 (User Space): 사용자가 이용하는 응용 프로그램이 적재되는 공간 (커널 영역을 제외한 공간)
        • 응용 프로그램 (Application Software): 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램을 의미
  • 운영체제를 알아야 하는 이유
    • 하드웨어의 상태를 알 수 있고, 코드 실행과 하드웨어에서 문제를 알려줌으로써 문제 해결에 도움이 됨

02. 운영체제의 큰 그림

  • 운영체제는 사용자가 실행하는 프로그램을 위한 프로그램
  • 커널 (Kernel)
    • 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등 운영체제의 핵심 서비스를 담당하는 부분
    • 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스 
      • 사용자 인터페이스(UI: User Interface): 사용자가 컴퓨터와 상호작용할 수 있는 통로
        1. 그래픽 유저 인터페이스(GUI: Graphical User Interface): 그래픽을 기반으로 컴퓨터와 상호작용
        2. 커맨드 라인 인터페이스(CLI: Command Line Interface): 명령어를 기반으로 컴퓨터와 상호작용
  • 이중 모드와 시스템 호출
    • OS는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지, 자원을 보호
    • 이중 모드(Dual Mode): CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식
      1. 사용자 모드(User Mode): 일반적인 응용프로그램
      2. 커널 모드(Kernel Mode): 운영체제 서비스를 제공받을 수 있는 실행 모드
        • 커널 영역에서 실행할 수 있는 모드,
        • 자원에 접근 가능
    • 시스템 호출(System Call): 운영체제 서비스를 제공받기 위한 요청
      • 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받음
      • 일종의 인터럽트(Interrupt)
        • 소프트웨어 인터럽트: 인터럽트를 발생시키는 특정 명령어에 의해 발생
        • 처리 순서
          1. 시스템 호출을 발생시키는 명령어 실행
          2. CPU는 지금까지의 작업을 백업
          3. 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)를 실행
          4. 응용프로그램으로 복귀하여 실행 진행
  • 운영체제의 핵심 서비스
    • 프로세스 관리/자원 접근 및 할당/파일 시스템 관리
    • 프로세스 관리
      • 프로세스 (Process): 실행 중인 프로그램
      • 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행 가능
      • 따라서 여러 프로세스를 조금씩 번갈아가며 실행 (전환 반복)
      • 주요 용어: 프로세스 동기화, 교착 상태
    • 자원 접근 및 할당
      • 프로세스들이 사용할 자원에 접근/조작을 통해 프로세스에게 필요한 자원을 할당
      • CPU
        • CPU 스케줄링: OS가 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스로부터 CPU를 사용할 것인지, 얼마나 오래 사용하게 할 것인지 결정
      • 메모리
        • 같은 프로세스라도 실행할 때마다 적재되는 주소가 달라질 수 있음
        • OS가 프로세스에게 어떻게 메모리를  할당하는지, 메모리가 부족할 경우 이를 어떻게 극복하는지를 다움
      • 입출력장치
        • 인터럽트 서비스 루틴: 운영체제가 제공하는 기능 (커널 영역)
        • 인터럽트를 처리하는 프로그램(인터럽트 서비스 루틴)을 제공함으로써 입출력 작업을 수행
  • 파일 시스템 관리
    • 파일 시스템(File System): 파일들을 디렉터리로 묶어 관리하는 서비스

03. 추가

  • 가상 머신(Virtual Machine): 소프트웨어적으로 만들어낸 가상 컴퓨터
    • 새로운 운영체제와 응용 프로그램을 설치하고 실행할 수 있음
    • 가상 머신 또한 응용 프로그램이므로 사용자 모드로 작동
    • 가상화를 지원하는 CPU는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼바이저 모드를 따로 둠
      • 가상 머신 상에서 작동하는 응용프로그램들은 하이퍼바이저 모드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있음
  • 시스템 호출의 종류
    • 운영체제 서비스를 제공받기 위한 방법
    • 시스템 호출의 종류
      • 프로세스 관리
        1. fork(): 새 자식 프로세스 생성
        2. execve(): 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어 씌움)
        3. exit(): 프로세스 종료
        4. waitpid(): 자식 프로세스가 종료될 때까지 대기
      • 파일 관리
        1. open(): 파일 열기
        2. close(): 파일 닫기
        3. read(): 파일 읽기
        4. write(): 파일 쓰기
        5. stat(): 파일 정보 획득
      • 디렉터리 관리
        1. chdir(): 직업 디렉터리 변경
        2. mkdir(): 디렉터리 생성
        3. rmdir(): 비어 있는 디렉터리 삭제
      • 파일 시스템 관리
        1. mount(): 파일 시스템 마운트
        2. unmount(): 파일 시스템 마운트 해제