본문 바로가기
운영체제&네트워크/운영체제

운영체제의 자원 관리와 CPU 스케줄링, 초기화 과정 이해

by GangDev 2024. 5. 31.

운영체제의 자원 관리

운영체제는 컴퓨터 시스템의 자원을 효과적으로 관리하는 핵심적인 역할을 한다. 이 관리는 주로 CPU, 메모리, 주변 장치 및 입출력 장치의 자원을 포함한다. 운영체제는 이러한 자원을 효율적으로 할당하고, 필요에 따라 회수하며, 자원 간의 경쟁을 최소화하는 역할을 한다.

 CPU 관리

  • CPU 스케줄링: 운영체제는 CPU의 자원을 관리하기 위해 스케줄링을 사용한다. 이는 CPU가 어떤 프로세스를 먼저 실행할지 결정하고, 프로세스의 우선 순위를 관리하는 방법이다. 스케줄링은 프로세스의 우선 순위를 결정하고, CPU의 자원을 효율적으로 분배하는 역할을 한다.

메모리 관리

  • 메모리 할당: 프로그램이 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. 운영체제는 프로그램에 메모리를 할당하고, 더 이상 필요하지 않을 때 회수한다.
  • 메모리 보호: 운영체제는 각 프로세스가 자신의 메모리 영역에만 접근할 수 있도록 관리한다. 이는 프로세스 간의 메모리 침범을 방지한다.
  • 페이징: 운영체제는 메모리를 페이지라는 동일한 크기의 작은 단위로 나누어 물리적 메모리와 스왑 영역에 저장한다. 이를 통해 메모리 사용 효율을 높이고, 메모리 부족을 최소화한다.

주변 장치 및 입출력 장치 관리

  • 인터럽트: 운영체제는 인터럽트를 활용하여 주변 장치와 입출력 장치의 요청을 관리한다. 주변 장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청하고, CPU는 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
  • 인터럽트 처리루틴: 운영체제는 인터럽트 처리루틴을 통해 인터럽트를 처리한다. 이는 요청하는 장치와 발생 상황에 따라 다양한 종류의 인터럽트를 처리한느 프로그램 코드를 가지고 있다.

이러한 방법들을 통해 운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하고, 시스템의 성능과 안정성을 보장한다.

운영체제의 CPU 스케줄링 결정

운영체제는 CPU 스케줄링을 결정하기 위해 다양한 알고리즘을 사용한다. 이러한 알고리즘들은 프로세스의 우선순위, 실행 시간, 대기 시간 등을 고려하여 CPU 자원을 효율적으로 할당한다. 주요 스케줄링 알고리즘은 다음과 같다:

  • 우선순위 스케줄링(Priority Scheduling): 프로세스에 우선순위를 부여하고, 가장 높은 우선순위의 프로세스에 CPU를 할당한다. 우선순위는 내부적(프로세스 생성 시 설정) 또는 외부적(사용자 입력)으로 정의될 수 있다. 이 방식은 선점형이거나 비선점형일 수 있으며, 우선순위가 같은 프로세스들은 보통 FCFS(First-Come, First-Served) 순서로 스케줄된다.
  • 라운드 로빈 스케줄링(Round Robin Scheduling): 각 프로세스에 CPU를 일정 시간(타임 슬라이스) 동안 할당하고, 타임 슬라이스가 만료되면 다음 프로세스로 전환한다. 이 방식은 CPU 이용률을 최대화하고, 프로세스 간의 공정성을 유지한다.
  • 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling): 프로세스가 시스템에 진입 시에 특정 우선순위의 큐에 할당되고, CPU를 사용한 후 다른 우선순위의 큐로 이동한다. 이 방식은 프로세스의 우선순위를 동적으로 조정하여 공정성을 유지한다.
  • 실시간 스케줄링(Real-Time Scheduling): 실시간 운영체제에서는 실시간 태스크가 마감시간 내에 완료되도록 보장해야 한다. 이 방식은 프로세스의 중요성에 따라 우선순위를 부여하고, 마감시간과 주기적 프로세스의 실행 빈도를 고려한다.
  • 다중 처리기 스케줄링(Multiple Processor Scheduling): 여러 CPU가 있는 시스템에서는 각 CPU가 독립적으로 스케줄링을 수행한다. 이 방식은 부하 공유를 가능하게 하며, 스케줄링 문제를 복잡하게 한다.

이러한 스케줄링 알고리즘은 시스템의 요구 사항과 성능 목표에 따라 선택된다. 예를 들어, CPU 이용률, 처리량, 총 처리 시간, 대기 시간, 응답 시간 등을 고려하여 최적의 스케줄링을 달성시킨다.

운영체제가 컴퓨터 시스템의 초기화를 담당하는 과정

이 과정은 주로 하드웨어와 소프트웨어를 검사하고, 필요한 서비스를 로드하여 시스템을 사용자에게 준비된 상태로 만든다. 주요 과정은 다음과 같다:

  • BIOS(기본 입력/출력 시스템) 검사: 컴퓨터가 전원을 켤 때, BIOS가 먼저 실행된다. BIOS는 하드웨어의 상태를 검사하고, 부트 순서를 설정한다. 부트 순서는 운영체제가 저장된 위치(예: 하드 드라이브의 특정 부트 섹터)에서 먼저 찾는다.
  • 부트 로더 실행: BIOS에 의해 지정된 부트 로더가 실행된다. 부트 로더는 운영체제의 부트 이미지(예: Windows의 경우는 Windows Boot Manager 또는 GRUB를 포함하는 ISO 파일)를 로드한다.
  • 운영체제 로드: 부트 로더가 로드한 운영체제를 메모리에 로드한다. 운영체제는 메모리에 로드된 후, 커널을 통해 사용자에게 제어를 제공한다.
  • 하드웨어 초기화: 운영체제는 하드웨어를 초기화한다. 이는 하드웨어의 설정을 검사하고, 필요한 드라이버를 로드하는 과정을 포함한다.
  • 네트워크 초기화: 운영체제는 네트워크 카드를 초기화하고, 필요한 네트워크 서비스를 로드한다. 이는 인터넷 연결ㄹ을 설정하고, 네트워크 서비스를 시작하는 과정을 포함한다.
  • 사용자 서비스 로드: 운영체제는 사용자에게 필요한 서비스를 로드한다. 이는 그래픽 사용자 인터페이스, 파일 시스템, 프린터 서비스 등을 포함할 수 있다.

이러한 과정들을 통해 운영체제는 컴퓨터 시스템을 안전하게 시작하고, 사용자가 시스템을 사용할 수 있도록 준비한다. 이러한 초기화 과정은 시스템의 안정성을 보장하고, 사용자에게 원활한 사용 환경을 제공하는 데 중요한 역할을 한다.

운영체제: 커널을 통해서 사용자에게 제어를 제공한다

운영체제는 컴퓨터 시스템의 핵심 부분인 커널을 통해 사용자에게 제어를 제공한다. 커널은 하드웨어와 소트프웨어 사이의 중재자 역할을 수행하며, 시스템의 모든 중요한 관리 작업을 담당한다. 이를 통해 운영체제는 사용자에게 안전하고 효율적인 환경을 제공한다.

커널의 역할

  • 하드웨어 관리: 커널은 시스템의 모든 하드웨어 자원을 관리한다. 이는 CPU, 메모리, 디스크, 네트워크 카드 등에 대한 접근과 제어를 포함한다.
  • 메모리 관리: 커널은 메모리 관리자로서 메모리 할당을 관리한다. 이는 메모리의 할당, 회수 ,보호 등을 담당한다.
  • 프로세스 관리: 커널은 프로세스의 생성, 삭제, 스케줄링 등을 담당한다. 이는 프로세스가 CPU를 효율적으로 사용할 수 있도록 한다.
  • 시스템 콜: 커널은 시스템 콜을 통해 사용자 프로그램이 하드웨어에 대한 접근을 관리한다. 시스템 콜은 운영체제가 제공하는 인터페이스로, 사용자 프로그램이 하드웨어에 대한 복잡한 작업을 요청할 수 있다.

커널 모드와 사용자 모드

커널 모드: 커널 모드에서는 운영체제 커널이 실행된다. 이 모드에서는 하드웨어 자원에 직접 접근이 가능하며, 모든 종류의 명령을 실행할 수 있다.

사용자 모드: 사용자 모드에서는 응용 프로그램이 실행된다. 이 모드에서는 프로그램은 커널과 달리 하드웨어 자원에 직접 접근이 불가능하며, 시스템 콜을 통해 필요한 서비스를 요청한다.

 

이러한 커널과 사용자 모드의 구분은 시스템의 보안과 안정성을 보장한다. 사용자 모드에서는 프로그램의 잘못된 수행을 방지하고, 커널 모드에서는 운영체제의 핵심 기능을 수행하여 시스템의 안정성을 유지한다.

사용자 모드에서 시스템 콜을 호출하는 방법

사용자 모드에서 시스템 콜을 호출하는 방법은 주로 특정된 함수나 인터럽트를 사용하여 운영체제의 커널 모드로 전환하는 과정을 포함한다. 이 과정은 다음과 같은 단계를 거친다:

  • 시스템 콜 요청: 사용자 프로그램이 특정된 시스템 콜 함수를 호출한다. 예를 들어, 파일을 읽거나 쓰기, 네트워크 통신 등을 요청할 수 있다.
  • 컨텍스 스위치: 시스템 콜을 호출하면, 현재 프로세스의 실행 상태를 저장하고 커널 모드로 전환한다. 이 과정은 컨텍스 스위치라고 한다.
  • 커널 모드에서의 처리: 커널 모드에서 시스템 콜이 처리된다. 커널은 요청된 작업을 수행하고, 필요한 결과를 반환한다.
  • 컨텍스 스위치: 작업이 완료되면, 커널 모드에서 사용자 모드로 다시 전환한다. 이때 컨텍스 스위치가 복원화되고, 사용자 프로그램이 중단에서 계속 실행을 한다.

이러한 에로, C 언어에서 write() 함수를 사용할 때, 실제로는 write() 시스템 콜이 호출된다. 이는 파일에 데이터를 쓰기 위한 시스템 콜이다. 이와 같이, 운영체제에서는 다양한 시스템 콜이 사용될 수 있으며, 예를 들어 Windows에서는 CreateFile, ReadFile, WriteFile 등의 함수가 있다.

 

이러한 시스템 콜은 사용자 프로그램이 하드웨어 자원에 직접 접근할 수 없게, 운영체제의 커널을 통해 필요한 작업을 수행하게 한다. 이는 시스템의 안정성과 보안을 유지하는 데 중요한 역할을 한다.