본문 바로가기
IT Basic/Operating System

[OS] 4장 프로그램의 구조와 실행

by HouseDust 2021. 12. 22.
반응형

4장, 프로그램의 구조와 실행

 

프로그램의 주소 영역 

  • 코드(code) : 프로그램 코드가 기계어 명령(machine instruction) 형태로 변환되어 저장되는 부분
  • 데이터(data) : 프로그램이 사용하는 데이터를 저장하는 부분
  • 스택(stack) : 함수의 수행을 마치고 복귀하는 주소 및 데이터를 임시로 저장하기 위해 사용되는 부분

일반적으로 프로그램에서 발생되는 함수호출에 필요한 복귀주소는 각 프로그램의 주소공간-스택영역에 보관하고, 

인터럽트로 CPU를 빼앗긴 위치는 프로세스제어블록(PCB)에 저장된다.

 

CPU는 빠른 속도의 계산 능력은 가지고 있지만, 어떤 작업을 수행할지 결정하는 능력은 없다. 때문에 CPU가 다음으로 수행해야하는 메모리 주소를 담고 있는 레지스터-프로그램 카운터(Program Counter)-를 사용한다.

 

입출력 장치별로 존재하는 작은 CPU와 메모리 - 입출력 컨트롤러, 로컬버퍼

 

  • 커널 모드
    프로그램 카운터가 메모리 주소 중, 운영체제가 존재하는 부분을 가리킴
    일반명령, 특권명령
    커널모드에서의 실행 상태 - 커널의 시스템 콜 함수를 실행하는 것
  • 사용자 모드 
    프로그램 카운터가 메모리 주소 중, 프로그램이 존재하는 부분을 가리킴
    일반명령만 가능
    사용자모드에서의 실행 상태 - 자신의 주소 공간에 정의된 코드를 실행하는 것

※ 프로세스 A의 시스템 콜을 통해 실행되는 것이 커널의 코드라 할지라도, 커널의 실행 상태가 아니라 프로세스 A의 실행상태라고 말한다. 사실상 프로세스 A가 해야할 일을 대행하는 것 뿐이기 때문이다. 다만, 프로세스 A가 커널모드에서 실행중이라고 이야기 한다. 

 

프로그램 실행(Program execution) 

- 디스크에 존재하던 실행파일이 메모리에 적재

- 프로그램이 CPU를 할당받고 명령(instruction)을 수행하고 있는 상태

 

메모리 공간을 효율적으로 사용하기 위해, 당장 CPU의 수행에 필요한 부분은 메모리에 올려놓고 그렇지 않은 부분은 디스크의 메모리 연장공간(스왑영역)으로 내려놓는다. 

 

 

※ 운영체제의 기능 ? 하드웨어 자원의 효율적 관리 / 응용 프로그램 및 사용자에게 편리한 서비스 제공

운영체제의 주소 공간

  • 코드
     CPU, 메모리 등이 자원을 관리하기 위한 부분 & 사용자에게 편리한 인터페이스를 제공하기 위한 부분
  • 데이터 
    각종 자원(하드웨어, 소프트웨어)을 관리하기 위한 자료구조
  • 스택
    수행 중인 프로세스마다 별도의 스택을 두어 복귀 주소 관리

 

함수

  • 사용자 정의함수 : 프로그래머가 작성한 함수
  • 라이브러리 함수 : 프로그래머 본인이 작성한 것은 아니지만, 누군가 작성해놓은 함수를 호출하여 사용
  • 커널 함수 : 운영체제 커널의 코드에 정의된 함수 (ex. 시스템 콜, 인터럽트 처리함수 등)

원칙적으로는 인터럽트 처리 중 인터럽트가 발생하도록 하지 않지만, 예외적으로 더 급한 인터럽트가 발생하면 우선순위가 높은 인터럽트를 먼저 처리한다. 

 

시스템 콜은, 프로그램 자신이 인터럽트 라인에 인터럽트를 세팅하는 명령을 통해 이뤄진다.

 

프로그램이 CPU를 할당받고 명령을 수행하던 중 CPU를 빼앗기는 경우는,

- 타이머에 의해 인터럽트가 발생하는 경우

- 입출력 요청을 위해 시스템 콜을 하는 경우

두 가지다.

 


참고 자료

반효경, 『운영체제와 정보기술의 원리』, 이화여자대학교출판문화원(2020), p95-p112

 

반응형

'IT Basic > Operating System' 카테고리의 다른 글

[OS] 6장 CPU 스케줄링  (0) 2021.12.28
[OS] 5장 프로세스 관리  (0) 2021.12.22
캐시 메모리(Cache Memory)  (0) 2021.12.15
[OS] 3장 컴퓨터 시스템의 동작 원리  (0) 2021.12.15
[OS] 2장 운영체제 개요  (0) 2021.12.15

댓글