본문 바로가기
Computer Science/OS

[OS] 프로그램 실행

by Bhappy 2022. 2. 19.

컴퓨터에서 프로그램이 어떻게 실행되는가?

책) 운영체제와 정보기술의 원리

프로그램은 실행파일 형태로 File System 하드디스크에 저장되어 있다.
사용자가 프로그램을 실행하면 그 실행파일이 가지는 독자적인 메모리 주소공간이 생성된다.
이후 당장 필요한 부분만 물리적 메모리에 올라가고, 당장 필요하지 않은 부분은 디스크의 swap area에 내려놓는다.
프로그램은 user mode, kernel mode를 반복하다가 메인 함수의 중괄호가 닫히는 순간 종료된다.

 

Virtual Memory

  • 파일을 실행하면 그 실행파일이 가지는 독자적인 메모리 주소공간이 생성
  • 주소공간(address space) : 각 프로그램마다 만들어짐
    • code : CPU에서 실행할 기계어 코드
    • data : 프로그램에서 사용하는 자료구조, 변수
    • stack : 데이터를 쌓거나 빼가는 영역
  • 주소공간은 물리적으로 한 곳에서 할당되어 존재하는게 아니라 일부는 물리메모리, 일부는 swap area등 필요한 곳에 부분부분 존재하기 때문에 가상메모리라고 한다.

 

Physical Memory

  • 커널 : 부팅하고나면 항상 물리메모리에 상주
  • 사용자 프로그램은 실행시키면 주소공간이 생겼다가 종료하면 사라짐
  • 메모리 낭비때문에 사용자 프로그램의 주소공간을 통째로 물리공간에 넣어두는게 아니라 당장 필요한 부분만 물리메모리에 올려두고 사용. 나중에 사용 안하면 쫓아냄
  • 당장 필요하지 않은 부분은 디스크의 swap area에 내려놓음

 

File System

비휘발성 용도. 전원이 나가더라도 내용 유지

Swap area

메모리 용량의 한계로 메모리 연장선상에서 사용하는 용도. 전원이 나가면 의미 없는 데이터

 

커널 주소 공간의 내용

책) 운영체제와 정보기술의 원리

운영체제의 커널도 하나의 프로그램이기 때문에 code, data, stack으로 주소공간이 구성됨

  • kernel code (커널 코드)
    • 시스템 콜, 인터럽트 처리 코드
    • 자원 관리를 위한 코드
    • 편리한 서비스 제공을 위한 코드
  • kernel data (운영체제가 사용하는 자료구조들)
    • CPU, memory, disk와 같은 하드웨어를 관리하기 위해 각각의 자료구조를 갖고 있음
    • 프로세스들을 관리하기 위해 각 프로세스마다 자료구조(PCB process control blcok)를 갖고 있음
    • PCB에는 직전에 수행되던 프로그램의 복귀정보가 저장됨
  • kernel stack
    • 일반프로그램의 스택과 다르게 현재 수행중인 프로세스마다 별도의 스택을 두어 관리
    • 커널 내에서 이루어지는 함수호출은 직전에 CPU를 자기고 있던 프로세스의 커널스택을 사용

 

사용자 프로그램이 사용하는 함수

1) 사용자 정의 함수

  • 자신의 프로그램에서 정의한 함수
  • 해당 프로세스의 주소공간 중 code에 휘치

2) 라이브러리 함수

  • 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수
  • 자신의 프로그램의 실행파일에 포함되어 있음
  • 해당 프로세스의 주소공간 중 code에 위치

3) 커널 함수

  • 운영체제의 프로그램 함수
  • 커널 함수 호출 = 시스템 콜
  • Kernel의 주소공간 중 code에 위치

[참고]

KOWC 반효경 교수님 운영체제 강의

운영체제와 정보기술의 원리

'Computer Science > OS' 카테고리의 다른 글

[OS] 컴퓨터 시스템 구조  (0) 2022.02.16
[OS] 운영체제의 분류  (0) 2022.02.13
[OS] 운영체제란  (0) 2022.02.12

댓글