[OS] 프로그램 실행 작업 순서와 컴퓨터 시스템 구조

2025. 2. 24. 16:40·CS/OS

프로그램 실행

프로그램이 실행되는 과정을 알아보기 전에, 먼저 컴퓨터 시스템의 기본적인 구조를 살펴보자.

컴퓨터 시스템은 대표적으로 CPU, 메모리(RAM), 그리고 I/O 장치로 구성된다.

 

그렇다면 실제로 우리가 프로그램을 실행시킨다면 어떻게 작업이 이뤄지는지 한번 알아보자.

 

프로그램 실행 작업 순서

https://ppurify.tistory.com/

 

  1. OS가 실행시킬 프로그램을 메모리에 로드 시킵니다.
  2. CPU는 작업을 하기 위해 메모리에서 데이터를 불러온다.
    • Program Counter(PC)라는 레지스터 현재 실행해야할 메모리 주소를 가리킵니다.
    • CPU가 그 주소에 있는 명령어를 실행시킵니다.
    • 실행이 완료되면 PC의 값을 증가시켜 다음 명령어를 실행시킵니다.
  3. 반복 수행
    • 위 과정이 계속 반복되면서 프로그램이 실행된다.
    • 프로그램이 종료되면 OS가 해당 프로세스를 제거하고, 메모리를 정리한다.

그렇다면 이제 각각의 구성요소를 알아보자.

 

컴퓨터 시스템 구조

TIMER

만약 우리가 어떤 프로그램을 무한 반복하도록 실행시킨다고 상상해봅시다.

이 프로그램이 CPU를 독점하면서 계속 돌면, 다른 프로그램은 실행될 기회조차 얻지 못할 겁니다. 이렇게 한 프로세스가 CPU를 놓지 않고 계속 점유하는 상황을 막기 위해 등장한 개념이 바로 타이머(Timer)입니다.


타이머는 이름 그대로 시간을 체크하는 역할을 합니다. 하드웨어 장치(예: CPU에 내장된 클럭)와 운영체제의 협력으로 작동하는데요. 특정 시간이 지나면 타이머는 *인터럽트(Interrupt)라는 신호를 발생시킵니다. 그러면 운영체제(OS)가 즉시 개입해서 현재 실행 중인 프로세스를 잠시 중단시키고, 제어권을 가져옵니다.


이 과정에서 운영체제는 컨텍스트 스위칭(Context Switching)이라는 기술을 사용합니다. 쉽게 말해, 지금 실행 중인 프로세스의 상태(레지스터 값, 메모리 정보 등)를 저장해두고, 다른 프로세스가 CPU를 사용할 수 있도록 자리를 양보하는 거죠. 이렇게 중단된 프로세스는 나중에 다시 순서가 돌아오면 저장된 상태를 불러와 이어서 실행됩니다.


결국 타이머 덕분에 CPU는 공정하게 여러 프로세스 사이에서 분배되고, 한 프로그램이 시스템을 독점하는 불상사를 막을 수 있는 겁니다.

Local Buffer / Device Controller

Device Controller란 IO장치를 관리하는 작은 CPU로 생각하면 됩니다. 각각의 IO DEVICE마다 존재하며 장치의 동작을 제어하며 읽기/쓰기 작업을 관리합니다.

Local Buffer란 작은 메모리 공간을 가지고 있어, 데이터를 임시로 저장했다가 CPU나 메인 메모리로 전달합니다. 예를 들어, 디스크에서 데이터를 읽을 때 CPU가 직접 매번 관여하지 않도록 버퍼에 데이터를 모아두고 한 번에 전달하는 식입니다.

 

Driver

운영체제에서 Device Controller와 소통하며, 이 하드웨어를 논리적으로 제어하는 소프트웨어입니다

 

DMA CONTROLLER

DMA Controller, 즉 Direct Memory Access Controller는 이름 그대로 메모리에 직접 접근할 수 있는 권한을 가진 특별한 하드웨어 장치입니다. 보통 메모리 접근은 CPU의 전용 영역이라고 생각하기 쉽죠. 그렇다면 왜 이런 장치가 생겨났고, 왜 우리에게 필요할까요?


원래라면 CPU가 모든 일을 도맡아 합니다. 예를 들어, 디스크에서 메모리로 데이터를 옮기려면 CPU가 데이터를 하나하나 읽어서 메모리에 기록해야 해요. 하지만 이런 방식은 문제가 있습니다. CPU가 데이터 옮기는 일에만 매달리다 보면, 정작 프로그램을 실행하거나 다른 중요한 작업을 처리할 여유가 없어지거든요. 이건 마치 똑똑한 요리사가 요리를 시작하기도 전에 재료 나르는 데만 시간을 다 쓰는 꼴이에요.


이 문제를 해결하기 위해 등장한 게 바로 DMA Controller입니다. 이 장치는 CPU의 "대리인" 역할을 맡아줍니다. CPU가 "디스크에서 메모리로 데이터 좀 옮겨놔"라고 지시만 내리면, DMA Controller가 알아서 그 작업을 척척 해내는 거죠. 작업이 끝나면 인터럽트(Interrupt) 신호를 보내 "다 됐습니다!"라고 CPU에게 보고합니다. 덕분에 CPU는 데이터 전송이라는 "잡일"에서 해방돼 더 중요한 일에 집중할 수 있게 됩니다.

 

Memory Controller

메모리 컨트롤러는 메모리와 CPU 사이에서 데이터를 효율적으로 전송할 수 있도록 관리하는 하드웨어 장치입니다. CPU와 메모리 간의 데이터 접근을 중재하고, 메모리의 효율적인 사용을 위해 다양한 정책을 적용합니다.

메모리 컨트롤러가 중요한 이유는 CPU가 직접 메모리의 세부 규칙(저장방식, 타이밍등)을 관리하는 대신, 이를 담당하는 메모리 컨트롤러가 중재자 역할을 함으로써 CPU의 처리 효율을 높여준다는 점입니다. 만약 CPU가 메모리 내부의 규칙을 전부 신경 쓴다면, CPU의 연산 처리 속도가 저하될 수 있습니다. 따라서 메모리 컨트롤러는 메모리 접근을 관리하고 최적화하여 CPU가 본연의 연산 처리에 집중할 수 있게 돕습니다.

 

ModeBit

CPU가 현재 어떤 권한 수준에서 동작하는지를 나타내는 플래그입니다. 이를 통해 프로세스가 실행되는 모드를 결정하며, 주로 두 가지 상태를 구분합니다:
 
  • 0 : CPU가 운영체제의 핵심 부분인 커널로 동작하며, 하드웨어에 직접 접근할 수 있는 완전한 권한을 가집니다.
  • 1 : 사용자 모드로 일반 응용 프로그램이 실행되며, 하드웨어에 직접 접근할 수 없습니다.

Interrupt

CPU가 현재 하고 있는 일을 잠시 멈추고 다른 급한 일을 처리하도록 요청하는 신호를 말합니다. 그렇다고 바로 interrupt의 신호를 처리하지는 않습니다. 스케줄러에 의해 실행하던 작업을 처리할지 interrupt를 처리할지 결정합니다.
그리고 두가지 종류의 Interrupt가 존재합니다.
  • Interrupt(하드웨어) : 하드웨어에서 발생시킨 신호
  • Trap : 소프트웨어에서 발생시킨 신호
인터럽트 핸들러
발생한 신호를 처리하 커널 함수

인터럽트 벡터
해당 인터럽트의 처리 루틴 주소를 알고 있습니다.

 

Register

CPU 안에 있는 아주 작은 고속 메모리입니다. 컴퓨터가 작업을 할 때 데이터를 잠깐 저장하거나 빠르게 꺼내 쓰는 데 사용하는 공간이라고 생각하면 됩니다. 간단한 연산인 3+5를 하기 위해서는 3과 5를 어딘가에 기록시켜 연산을 해야하는데 메모리에 기록시키기엔 거리가 너무멀어 효율이 안나오니 초고속 저장소인 레지스터에 기록시켜 연산하는겁니다.

'CS > OS' 카테고리의 다른 글

[OS] 멀티 레벨 피드백 큐  (0) 2025.03.07
[OS] CPU 스케줄링  (0) 2025.03.06
[OS] 프로세스 생성과 종료  (0) 2025.02.24
[OS] Process 와 Thread  (0) 2025.02.23
[운영체제] 운영체제란?  (0) 2024.11.11
'CS/OS' 카테고리의 다른 글
  • [OS] CPU 스케줄링
  • [OS] 프로세스 생성과 종료
  • [OS] Process 와 Thread
  • [운영체제] 운영체제란?
절박한개발자
절박한개발자
깃허브 주소 : https://github.com/Kzerojun
  • 절박한개발자
    절박한개발
    절박한개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Server (5)
      • 프로젝트 (7)
      • Spring (7)
      • AI (1)
      • JPA (6)
      • JAVA (7)
      • Backend (3)
      • WEB (3)
      • 알고리즘-이론 (6)
      • 알고리즘-문제 (28)
      • CS (24)
        • 데이터베이스 (8)
        • Network (5)
        • OS (10)
        • LINUX (1)
      • 개발면접준비 (1)
      • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CPU
    2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
절박한개발자
[OS] 프로그램 실행 작업 순서와 컴퓨터 시스템 구조
상단으로

티스토리툴바