본문 바로가기

Today I Learned

운영체제와 정보기술의 원리4 프로그램의 구조와 실행

앞선 장에 나온 내용들을 다시 한 번 되짚어주는 내용이 많았다.


1. 프로그램의 구조와 인터럽트

프로그램의 주소 영역(Virtual memory)은 크게 코드, 데이터, 스택 영역으로 구분된다. 코드 영역은 작성한 코드가 기계어 명령 형태로 변환되어 저장되어 있는 부분이고, 데이터 영역은 전역 변수 등 프로그램잉 사용하는 데이터를 저장하는 부분이다. 스택 영역은 일반적인 프로그램에서 함수가 수행을 마치고 복귀할 주소와 데이터를 임시로 저장하는 곳이다. 시스템 콜이나 인터럽트 때문에 CPU를 빼앗긴 위치는 프로세스 제어블록(PCB)에 저장된다.

2. 컴퓨터 시스템의 작동 개요

프로그램 카운터(Program Counter: PC) : CPU가 수행해야할 메모리 주소를 담고 있는 곳. 다음 명령 주소를 가지고 있다.

3. 프로그램의 실행

커널의 코드가 수행되는 도중에 이루어지는 함수 호출은 커널스택을 사용한다. 커널스택은 일반 사용자 프로그램의 스택과 달리, 현재 수행 중인 프로세스마다 별도의 스택을 두고 있다.

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

  • 사용자 정의 함수
  • 라이브러리 함수
  • 커널 함수 : 운영체제 커널의 코드에 정의된 함수.

5. 인터럽트

원칙적으로 인터럽트 처리 중에 또 다른 인터럽트가 발생하는 것을 허용하지 않는다. 다만, 상대적인 중요도에 따라서 중요도가 더 높은 인터럽트를 먼저 실행한다.

6. 시스템 콜

시스템 콜이란 자신의 주소 공간을 거스르는 영역에 있는 함수는 호출하는 것을 말한다.