[운영체제] 프로세스(1)

covy·2024년 1월 20일

CS) 운영체제

목록 보기
4/7

프로그램이란?

컴퓨터에서 어떤 작업을 위해 실행할 수 있는 정적인 상태의 파일

  • 컴퓨터 프로그램에서 내부 구조는 함수들로 구성되어있다. 이 때 명령을 담은 프로그램 주소 영역은 크게 code, data, stack 영역으로 구분됨

프로그램이 컴퓨터 메모리상에 올라간 상태가 되면 프로세스가 된다

프로세스 문맥 (context)

프로세스가 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보

  • 시분할 시스템에서 타이머 인터럽트에 의해 짧은 시간동안 CPU를 빼앗긴 후 다시 획득을 할 때 어느 명령까지 실행했는지 알 수 있는 정보를 뜻함
  • 프로세스 문맥을 크게 세 가지로 분류하면 하드웨어 문맥, 프로세스의 주소 공간, 커널상의 문맥으로 나눌 수 있음
    • 하드웨어 문맥: CPU의 수행상태를 나타낸다. 프로그램 카운터값과 각종 레지스터에 저장하고 있는 값을 의미
    • 프로세스의 주소 공간: 코드, 데이터, 스택, 힙으로 구성되는 자기 자신의 공간을 가지고 있음
    • 커널상의 문맥: PCB와 커널스택을 의미한다

문맥 교환 (context switing)

하나의 사용자 프로세스로부터 다른 사용자의 프로세스로 CPU 제어권이 이양되는 과정

  • 예시
    1. 타이머 인터럽트가 발생하면서 CPU가 운영체제로 넘어감 
     2. 운영체제는 타이머 인터럽트 처리루틴으로 가서 직전까지 수행 중이던 프로세스의 문맥을 저장하고 새롭게 실행시킬 프로세스에게 CPU를 이양
     3. 원래 수행 중이던 프로세스는 준비 상태로 바뀜 새롭게 CPU를 할당받은 프로세스는 실행 상태가 된다.
     4. 원래 CPU를 보유하고 있던 프로세스는 프로그램 카운터값 등 프로세스의 문맥을 PCB로부터 실제 하드웨어로 복원시키는 과정을 거침
  • 문맥교환은 타이머 인터럽트외에 입출력 요청이나 다른 조건을 충족하지 못해 CPU를 회수당하고 봉쇄 상태가 되는 경우에도 발생할 수 있다.
  • 시스템 콜이나 인터럽트 등 사용자모드에서 커널모드로의 변경은 문맥교환에 해당되지 않는다.
    • 다른 프로세스로의 변경되는 과정이 아니기 때문
  • 문맥교환은 시스템입장에서 오버헤드이다. 따라서 CPU 시간을 적절하게 설정하여 시분할 시스템 장점과 문맥교환의 비용을 적절히 고려해야한다.

프로세스 메모리 공간

code, data, heap, stack 영역으로 이루어져 있다.

  • code 영역: 실행할 프로그램의 코드가 저장된다. CPU는 이 영역에서 명령어를 하나씩 가져와 처리하게 된다.
  • data 영역: 정적 변수, 배열, 구조체 등이 저장되는 공간 프로세스가 종료되면 같이 소멸된다. (초기화 되지 않은 변수는 BSS(Blocked State Symbol)에 저장된다.)
    • 프로그램(디스크에 있는) 크기를 최적화 하기 위함
  • heap 영역: 필요에 의해 동적으로 메모리를 할당 하고자 할 때 위치하는 메모리 영역으로 동적 데이터 영역이라고 부른다. 메모리 주소 값에 의해서만 참조되고 사용되는 영역이다.
  • stack 영역: 지연변수, 매개변수, 함수 리턴값 등 잠시 사용되었다가 사라지는 데이터를 저장하는 영역이다. 함수 호출 시 할당되고 함수 반환 시 소멸됩니다. 로드 시(컴파일 타임) 크기가 결정된다.

stack을 제외하고 컴파일 타임에 크기가 결정된다.

PCB

운영체제가 시스템 내의 프로세스를 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조

다음과 같은 내용을 담고 있다.

  • 프로세스 상태, 프로그램 카운터 값, CPU 레지스터 값, CPU 스케줄링 정보, 메모리 관리 정보, 자원 사용 정보, 입출력 상태 정보

0개의 댓글