[OS] 프로세스(Process)와 컴퓨터 구조

장유진·2023년 2월 19일
0

Computer Science

목록 보기
4/7

프로세스 구조

모든 프로세스는 운영체제로부터 4GB의 공간을 할당 받습니다.
코드, 데이터, 스택, 힙으로 구성된 사용자 영역이 0GB - 3GB까지의 공간을, OS 커널 영역이 나머지 3GB - 4GB까지의 공간을 차지합니다.

  1. 코드 Code(text)
    프로그램을 실행시키는 실행 파일 명령어. 즉 실제 코드가 자리하는 영역입니다.

  2. 데이터 Data
    전역(global) 변수, 정적(static) 변수, 초기화 데이터가 저장되는 공간입니다.

  3. 스택 Stack
    임시 데이터를 저장하는 공간입니다. 스택 영역은 함수의 호출과 함께 할당 되며, 함수의 호출이 완료되면 소멸합니다.
    해당 함수를 쓰는 지역 변수, 해당 함수를 호출한 위치가 스택 영역에 기록됩니다.

  4. 힙 Heap
    코드에서 동적으로 만들어지는 데이터, 동적 메모리를 위한 공간입니다.
    프로그램이 실행되면서 필요에 따라서 만들어지는 객체나 데이터는 힙 영역에 할당됩니다.

프로세스와 컴퓨터 구조

PC(Program Counter) 레지스터 + SP(Stack Pointer) 레지스터

  • PC(Program Counter) 레지스터 : 다음 실행할 코드 주소를 저장하고 있는 레지스터
  • SP(Stack Pointer) 레지스터 : 스택의 최상단 주소를 저장하고 있는 레지스터

프로세스가 실행되며 PC와 SP의 주소가 변하며 할당된 메모리 주소를 가리키게 됩니다.
이를 이용해 어디까지 함수가 실행 됐는지, 다음에 어느 코드를 실행해야 하는지 알 수 있습니다.

컨텍스트 스위칭(Context Switching)과 PCB(Process Control Block)

  • Context Switching : 컨텍스트 스위칭, 또는 문맥 교환
    • CPU에 실행할 프로세스를 교체하는 기술
    • 프로세스 ID (PID), 레지스터 (PC, SP) 메모리 주소를 이용해 프로세스 저장 상태를 기반으로 실행할 수 있습니다.
  • PCB(Process Control Block) - 프로세스가 실행중인 상태를 캡쳐 / 구조화해서 저장
    • Process State
    • Program Counter
    • CPU registers
    • CPU scheduling info
    • Memory-management info
    • Accountign info
    • I/O statues info

프로세스간 커뮤니케이션(InterProcess Communication, IPC)

  1. File
  2. Message Queue
  3. Shared Memory
  4. Pipe
  5. Signal
  6. Semaphore
  7. Socket

빠른 성능을 얻기 위해 반드시 고려해야 할 항목으로 멀티 프로세스와 멀티 스레드가 있습니다.
이 두 가지를 실행하기 위해서는 프로세스와 프로세스 간 상태 확인 및 데이터 송수신이 필요합니다.
스레드는 코드 레벨에서 서로 접근할 수 있지만, 프로세스와 프로세스는 완전히 별도의 공간에 할당되기 때문에 다른 프로세스에는 접근할 수 없습니다. 이를 위해 프로세스 사이에 통신이 가능하게 하는 기법 IPC가 고안되었고 대부분의 IPC 기법은 프로세스 안에 존재하는 커널 공간을 사용합니다.



Reference

① [OS] 프로세스 구조와 레지스터 알아보기 https://eunjinii.tistory.com/m/40
② 프로세스란? https://jong-seok-ap.tistory.com/76
③ 프로그램, 바이너리, 프로세스, 스레드의 개념 https://losskatsu.github.io/os-kernel/process-thread/#3-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4process

0개의 댓글