os computer_science cs 운영체제 OS 시스템콜 프로세스 스레드 자원할당

[CS/Computer Science][운영체제 / OS] 운영체제의 큰 그림

Kwangjin Park

May 10, 2025 · 3 min read

Follow

운영체제는 매우 많은 종류와 다양한 기능이 있는 특별한 프로그램입니다. 운영체제에는 Windows, MacOS, Linux, Android, iOS 등 다양한 종류가 있지만, 종류에 관계없이 운영체제가 제공하는 핵심 기능은 비슷합니다.

이번 포스트에서는 운영체제의 큰 틀에 대해서만 간략히 살펴보도록 하겠습니다.

1. 운영체제 개요

  • 운영체제의 핵심 기능을 담당하는 부분: 커널(kernel) image1
  • 운영체제의 두 가지 핵심 기능
    • 프로세스 및 스레드 관리
    • 자원 할당 및 관리

2. 운영체제의 핵심 기능: 프로세스 및 스레드 관리

  • 프로세스 및 스레드
    • 프로세스(Process): ‘실행 중인 프로그램’을 단순 통칭
    • 스레드(Thread): 프로세스를 이루는 실행의 단위
  • 운영체제의 프로세스/스레드 관리
    • 동시다발적인 프로세스 및 스레드를 올바르게 처리하도록 실행 순서 제어
    • 프로세스 및 스레드가 요구하는 자원을 적절히 분배 image2
    • 순서
      • 메모리에는 여러 프로세스가 적재됨
      • 운영체제는 각 프로세스에 필요한 자원을 할당
      • 스레드는 프로세스가 할당받은 자원을 이용해 프로세스의 작업 수행
        • 스레드가 둘 이상이면 동일한 작업을 동시에 실행할 수 있음
  • 프로세스의 계층 구조
    • 많은 운영체제에서 프로세스들은 계층적으로 관리됨
    • 프로세스는 시스템 콜(아래서 설명)을 통해 또 다른 프로세스 형성
      • 새 프로세스를 생성한 프로세스: 부모 프로세스(parent process)
      • 부모 프로세스에 의해 생성된 프로세스: 자식 프로세스(child process) image3

3. 운영체제의 핵심 기능: 자원 할당 및 관리

  • (시스템)자원: 프로그램 실행에 마땅히 필요한 요소
    • 소프트웨어도 자원: 실행에 필요한 '데이터'
    • 하드웨어도 자원: 실행에 필요한 '부품'
  • 운영체제의 자원 할당 및 관리
    • 사용자가 실행하는 응용 프로그램을 대신하여 컴퓨터 부품(CPU, 메모리, 보조기억장치 등)에 접근
    • 각 부품들이 효율적으로 사용될 수 있도록 관리
    • 응용 프로그램을 문제없이 실행될 수 있도록 컴퓨터 부품을 효율적으로 할당

CPU 관리: CPU 스케줄링

  • 실행 중인 모든 프로그램에 대한 CPU의 할당 순서 및 사용 시간을 결정해줌.
  • CPU는 한정된 자원 → 이를 할당받아 사용하기 위해서는 다른 프로그램의 CPU 사용이 끝날 때까지 기다려야 함 → CPU 스케줄링을 통해 결정

메모리 관리: 가상 메모리

  • 운영체제는 동시에 낭비되는 메모리 용량이 없도록 효율적으로 관리함
    • 새롭게 실행하는 프로그램은 메모리에 적재
    • 종료된 프로그램은 메모리에서 삭제
  • 오늘날의 운영체제는 이를 위해 대부분 가상 메모리 기술을 활용
    • 실제 물리적인 메모리 크기보다 더 큰 메모리를 이용할 수 있도록 해줌

파일/디렉터리 관리: 파일 시스템

  • 메모리보다 훨씬 큰 용량을 지닌 보조기억장치 → 더욱 체계적으로 정리 →파일 시스템 활용
  • 파일 시스템: 보조기억장치 내 정보를 파일/폴더 단위로 접근 및 관리할 수 있도록 만들어줌

4. 시스템 콜과 이중 모드

  • 운영체제도 당연히 프로그램 실행을 위해서는 메모리에 적재됨
  • 하지만 운영체제는 반드시 커널 영역(kernel space)이라는 공간에 따로 적재되어 실행
    • 사용자 응용프로그램이 적재되는 공간은 사용자 영역(user space) image4
  • 사용자 모드와 커널 모드
    • 사용자 모드: 사용자 영역에 적재된 코드를 실행할 때의 실행 모드
      • 운영체제 서비스를 제공받을 수 없는 실행 모드
      • 컴퓨터 자원에 접근하는 명렁어를 만나도 실행하지 않음
    • 커널 모드: 커널 영역에 적재된 코드를 실행할 때의 실행 모드
      • 운영체제 서비스를 제공받을 수 있는 실행 모드
      • 컴퓨터 자원에 접근하는 명령어를 비롯한 모든 명령어 실행 가능
    • 이중모드(dual mode): 위와 같은 2개의 모드로 구분하여 실행하는 것

  • 운영체제의 기능을 제공받기 위해서는 → 커널영역에 적재된 운영체제 코드를 실행해야 함
    1. 응용프로그램은 컴퓨터 자원을 할당받기 위해 운영체제의 코드를 실행 → 시스템 콜 호출
    2. 운영체제는 시스템 콜을 받아 원하는 기능을 제공해줌
      • 응용프로그램은 자기 스스로 컴퓨터 자원에 직접 접근할 수 없음
      • 시스템 콜: 운영체제의 서비스를 제공받기 위한 수단 / 호출 가능한 함수의 형태
        • 운영체제 별로 제공하는 시스템 콜의 종류 및 개수는 다양image5
  • 시스템 콜의 진행과정
    • 시스템 콜이 호출되면, 아래와 같은 순서로 작업이 수행됨
      1. 소프트웨어 인터럽트 - 시스템 콜이 소프트웨어 인터럽트의 일종
      • 사용자 영역을 실행하던 중 시스템 콜이 호출되면 소프트웨어 인터럽트 발동 2. CPU의 커널모드 전환
      • CPU는 현재 수행중인 작업을 백업하고 3. 운영체제 코드 실행
      • 커널 영역 내의 ‘인터럽트를 처리하기 위한 코드’ 실행 4. 사용자 모드 재전환
      • 사용자 영역의 코드 실행 재개
  • 응용프로그램은 실행 과정에서 시스템 콜을 매우 빈번하게 호출

  • 유닉스 계열의 OS에서 사용하는 시스템 콜의 종류
    1. 프로세스 관리
      • fork(): 새로운 자식 프로세스 생성
      • execve(): 프로세스 실행(메모리 공간을 새 프로그램 내용으로 덮어씌움)
      • exit(): 프로세스 종료
      • waitpid(): 자식 프로세스가 종료될 때까지 대기
    2. 파일 관리
      • open(): 파일 열기
      • close(): 파일 닫기
      • read(): 파일 읽기
      • write(): 파일 쓰기
      • stat(): 파일 정보 획득
    3. 디렉토리 관리
      • chdir(): 작업 디렉토리 변경
      • mkdir(): 디렉터리 생성
      • rmdir(): 비어 있는 디렉터리 삭제
    4. 파일 시스템 관리
      • mount(): 파일 시스템 마운트
      • umount(): 파일 시스템 마운트 해제

다음 포스트에서는 프로세스와 스레드부터 자세히 알아보겠습니다.

chat_bubble 0

chat_bubble 댓글남기기

댓글남기기