본문 바로가기
카테고리 없음

프로세스의 개요

by winter_sunshine 2023. 7. 7.

안녕하세여~ 저번 시간에 이어서 이번 시간에는 크게 보았을 때,  '프로세스'가 무엇인 지, 프로세스 테이블, PCB가 무엇인 지, 프로세스 주소공간에 대해 알아보는 시간을 가져보겠습니다~!!

이번 시간에 다룰 내용이 많아서 집중해서 들어주셔야 해요..!! 그럼 시작하겠습니다~ ㅎㅎ

1.  프로그램  vs  프로세스

  1. 프로그램(Program)
    • 보조저장장치에 저장된 실행 가능한 파일
    • 수동적 존재
  2. 프로세스(Process)
    • 메모리에 적재되어 CPU에 의해 실행중인 프로그램
      • 실행 중에 필요한 자원을 할당 받음
      • CPU를 할당 받기 위해 대기하거나 I/O 처리가 끝나기를 대기하는 경우 포함
    • PC(Program Counter)와 관계되는 자원들의 집합을 갖는 능동적 실체
      • 생성, 실행, 일시 중단, 재개

 

프로그램과 프로세스

 

2.  프로세스  vs  시스템

  • 프로세스(Process)
    • 실행중인 프로그램
    • 오늘날 시분할 시스템에서 작업의 단위
  • 시스템(System)
    • 프로세스들의 집합체
    • OS에 의해 CPU는 프로세스들 간에 다중화(Multiplex)하여 시스템 효율성을 높임

 

3.  프로세스의 특징

  • OS는 실행되는 프로그램을 메모리에 적재
    • 실행에 필요한 메모리 할당  =>  코드, 데이터, 힙, 스택 ...
  • 각 프로세스들은 독립적인 메모리 공간을 가짐
    • 기본적으로 다른 프로세스의 영역에는 접근 불가
  • 커널은 각 프로세스의 정보를 관리

 

4.  커널의 프로세스 관리

  • 프로세스는 OS가 프로그램의 실행을 위해 생성한 것
    • 커널은 각 프로세스의 정보 관리
      • PCB(Process Control Block)
      • 커널 영역에 '프로세스 테이블'을 통해 프로세스의 목록 관리
      • OS는 '프로세스 테이블'을 사용하여 각 프로세스의 PCB를 유지 및 관리
  • '프로세스 테이블'의 관리 내용
    • 현재 각종 상태 정보 관리
      • 프로세스 ID 할당
      • 사용자 공간에 할당된 메모리 위치와 크기
    • 프로세스 간 통신, 동기화
    • 스케줄링컨텍스트 스위칭

 

5.  프로세스 테이블  및   PCB

  • PCB(Process Control Block)
    • OS가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳
    • 프로세스의 상태 정보를 저장하는 자료구조
  • PCB의 특징
    • 프로세스가 생성될 때마다 고유의 PCB가 생성됨
    • 프로세스가 완료되면 PCB도 함께 제거
    • PCB는 프로세스 상태 관리컨텍스트 스위칭을 위해서 반드시 필요

프로세스 테이블 및 PCB

 

6.  프로그램의 다중 인스턴스

  • 한 프로그램이 여러 번 실행된 경우, OS는 독립적인 프로세스를 생성
    • 기본적으로 각 프로세스에게 독립된 메모리 공간 할당
    • OS는 다중 인스턴스 프로세스들을 별개로 취급

프로그램의 다중 인스턴스

 

7.  CPU 주소공간 (CPU address space)

  • CPU가 접근할 수 있는 전체 메모리 공간
    • 최대크기 : 주소 버스의 크기에 의해 결정
      • 32비트 CPU  =>  32개의 주소선  =>  2^32 byte == 4GB
      • 주소 공간은 0번지부터 시작
      • 하나의 주소가 가리키는 공간은 1바이트 영역 (주소는 1byte 단위)
    • CPU 주소공간보다 큰 메모리가 장착되어 있어도 접근 불가
    • 작은 메모리가 장착되어 있는 경우엔 접근 가능
      • 단, CPU가 설치된 메모리의 주소 영역을 넘어 접근하면 시스템 오류 발생

 

8.  프로세스의 메모리 구성

  • 프로세스는 프로그램과 달리 주기억장치에 주소공간을을 가지며, 현재의 활동 요소를 갖는 능동적인 개체임.
    • 프로세서(Processor)의 레지스터에 의해 표현됨

프로세스의 메모리 구성

 

9.  프로세스 주소공간

  • 프로세스가 실행 중에 접근할 수 있도록 허용된 주소의 최대 범위
    • 가상적인 논리 공간
      • 0번지부터 시작해서 연속적
      • 사용자 공간 + 커널 공간
    • CPU 주소공간과 같음
    • 프로세스 주소공간의 크기
      • CPU가 접근할 수 있는 최대 크기 : 32비트 CPU  =>  2^32byte == 4GB
      • 단, 프로세스의 '현재 크기'와는 다름
      • ※ 프로세스의 현재 크기 :
        • 코드/데이터 영역 크기 + '현재 할당된' 힙/스택 영역의 크기
        • 실행 중에 계속 변함 
    • 프로세스 주소공간의 예 : 32비트 CPU, Linux
     

32비트 CPU, Linux) 프로세스 주소공간

 

10.  프로세스 주소공간의 구성

  1. 사용자 공간
    • '코드' + '데이터' + '힙' + '스택'이 할당된 공간
      • 코드와 데이터 영역의 크기는 프로세스 시작 시 결정됨
      • 힙과 스택 영역의 크기는 정해져 있지 않음
        • 힙은 아래로, 스택은 위로 자람
    • 각 프로세스 마다 고유하게 가짐
  2.  커널 공간
    • '커널 코드' + '커널 데이터' + '커널 스택'(커널 코드 실행 시 생성됨)이 할당된 공간
      • 프로세스가 '시스템 호출'을 통해 이용하는 커널 공간
    • 커널 공간은 모든 사용자 프로세스에 의해 공유

 

11.  '커널 공간'의 의미

  • 프로세스가 사용자 코드에서 '시스템 호출'을 통해 커널 코드를 실행할 때 사용되는 공간
    • 사용자 프로세스커널 모드에서 실행되고 있다고 하는 것이 특징
      • 커널 코드를 실행하는 것은 '사용자 프로세스'
    • 사용자 영역과 커널 영역을 하나의 가상주소 영역으로 다룸
      • 커널 코드가 적재된 물리 메모리 위치 역시 사용자 프로세스가 소유한 '매핑 테이블'을 사용

 

12.  가상 주소공간의 물리 메모리로의 매핑

  • 사용자는 연속적인 공간(가상 주소공간)으로 생각
    • 그러나 가상 주소의 데이터가 물리 메모리에 분산되어 있어, 어느 물리 번지에 있을 지 알 수 없음

가상 주소공간의 물리 메모리로의 매핑

 

 

13.  프로세스 주소공간의 특징

  • 프로세스 주소공간각 프로세스 별로 할당된 가상 공간
    • 사용자나 개발자가 보는 관점
      • 자신이 작성한 프로그램이 0번지부터 시작하여 연속적인 메모리 공간에 형성된다고 상상
      • CPU가 접근할 수 있는 최대 크기의 메모리가 설치되어 있다고 상상
    • 실제 상황
      • 설치된 물리 메모리의 크기는 프로세스 주소공간보다 작을 수 있음
      • 코드, 데이터, 힙, 스택은 물리 메모리에 흩어져 저장됨  =>  연속 할당이 아님
    • 가상 주소공간과 물리 메모리
     

가상 주소공간과 물리 메모리

 

 

 

 

지금까지 프로그램과 프로세스의 차이점, 프로세스의 특징, 커널의 프로세스 관리, 프로세스 테이블 및 PCB, CPU 주소공간, 프로세스 주소공간, 커널 공간의 의미, 가상 주소공간의 물리 메모리 매핑 등에 대해 알아봤습니다.

이렇게 나열하니까 진짜 많이 했네여..ㅋㅋㅋ

다음 시간에는 커널의 프로세스 관리프로세스 계층 구조에 대해 자세히 알아보는 시간을 가질 예정입니다.

여기까지 따라와주셔서 정말 감사드립니다. 앞으로 지금보다 많이 어려운 개념들이 등장할텐데, 제가 최대한 이해하기 쉽게 설명하도록 노력하겠습니다!!  감사합니다 ㅎㅎ 좋은 하루되세여!!