본문 바로가기
IT

운영체제 #3

by 내일은교양왕 2025. 8. 16.

프로세스 개념

  • 프로세스(Process): 실행 중인 프로그램을 의미하며, 현재 활동 상태는 프로그램 카운터(PC)다른 CPU 레지스터 값으로 표현된다.
  • 메모리 레이아웃: 프로세스는 메모리에서 일반적으로 다음 4가지 영역으로 구성된다.
    1. 텍스트(Text): 실행 코드(명령어) 저장
    2. 데이터(Data): 전역 변수, static 변수 저장
    3. 힙(Heap): 동적 메모리 할당 영역
    4. 스택(Stack): 함수 호출 정보, 지역 변수 저장

프로그램 카운터

 

정의 CPU가 다음에 실행할 명령어의 메모리 주소를 저장하는 레지스터
역할 - 프로세스 실행 중 다음 명령어를 어디서 읽어야 할지 CPU에게 알려줌
- 문맥 교환 시, 현재 실행 중인 명령어의 위치를 저장해 두었다가, 나중에 이어서 실행할 수 있도록 함
예시 어떤 프로세스가 1000번지 명령을 실행하고 있었다면, PC 값은 1000 또는 다음 명령의 주소 1004 같은 값이 저장됨

 

CPU 레지스터 값

정의 CPU 내부의 매우 빠른 임시 저장소. 연산 중간 결과나 메모리 주소 등을 저장
종류 예시 일반 목적 레지스터 (AX, BX, CX< DX 등 / x86 기준)
> 변수 값, 계산 결과 등 저장

스택 포인터
> 현재 스택의 최상단 주소

프레임 포인터 (Frame Pointer, BP)
> 현재 함수 호출 프레임의 기준 주소

인덱스 레지스터
> 배열 접근, 메모리 오프셋 계산

플레그 레지스터
> 연산 결과 강태 (0인지, 음수인지, 오버플로우인지 등)

 

프로세스 상태

  • 실행 중 프로세스는 상태가 변화한다.
    • 준비(Ready): CPU 할당을 기다림
    • 실행(Running): CPU에서 명령어 실행 중
    • 대기(Waiting/Blocked): I/O 작업 등 이벤트 대기
    • 종료(Terminated): 실행 완료 후 자원 해제

프로세스 관리 구조

  • PCB(Process Control Block): 커널이 프로세스를 관리하기 위한 자료구조
    • 포함 정보: 프로세스 상태, 프로그램 카운터, 레지스터 값, 메모리 관리 정보, 파일 핸들 등
    • 프로세스 실행을 중단했다가 나중에 재개하려면
      • 어디서 부터 다시 실행할 지 알아야 함하기에 프로그램 카운터가 필요
      • 중간 계산 결과, 변수 값, 메모리 주소 등을 그대로 복원해야 함 > CPU 레지스터 값 필요
  • 프로세스 스케줄러: 실행 가능한 프로세스 중 CPU에 할당할 프로세스를 선택
  • 문맥 교환(Context Switch): 실행 중인 프로세스를 다른 프로세스로 전환할 때 CPU 상태(레지스터, PC 등)를 저장하고 복원하는 작업

 

프로세스 생성

fork() CreateProcess() API  시스템 콜로 프로세스 복제 및 생성

 

프로세스 간 통신(IPC)

공유 메모리(Shared Memory)

개념 두 개 이상의 프로세스가 하나의 물리적 메모리 영역을 함께 접근할 수 있도록 운영체제가 허용하는 방식
특징 데이터를 메모리에 직접 읽고/쓰기 때문에, 커널을 거쳐 메시지를 전달하는 방식보다 빠름
메모리를 공유하지만, 각 프로세스의 주소 공간에 동일한 물리 메모리 페이지가 매핑되는 구조
단순히 '같은 메모리'를 쓰는 것만 제공하고, 동기화는 운영체제가 자동으로 해주지 않아 개발자가 직접 구현해야함
동작 원리 1. 공유 메모리 생성: 한 프로세스 (혹은 둘 다) 가 운영체제에 공유 메모리 시그먼트를 만들도록 요청 shm_open()
2. 매핑: 생성된 공유 메모리 세그먼트를 각 프로세스의 가상 주소 공간에 매핑. 이때 각 프로세스는 해당 주소를 통해 같은 물리 메모리를 바라봄
3. 데이터 읽기 / 쓰기
4. 제거 / 해제
장점 속도: 커널을 거치지 않고 메모리에 바로 접근하여 메시지 큐, 파이프보다 빠름
대용량 데이터 전송에 효율적
양방향 통신 가능
단점 동기화 필요. 동시에 같은 메모리를 쓰면 데이터 경합(Race Condition) 발생
보안 문제: 권한 제어 하지 않으면 다른 포로세스가 임의 접근 가능
메모리 관리 복잡성: 사용 후 해제하지 않으면 메모리 누수 발생
실무 활용 예 밀티프로세스 웹서버 캐시: 여러 워커 프로세스가 동일 캐시 데이터 접근

 

메시지 전달(Message Passing)

  • 프로세스 간에 메시지를 교환
  • Mach OS는 기본 IPC 방식으로 메시지 전달 사용

 파이프(Pipe)

  • 일반 파이프(Anonymous Pipe): 부모-자식 관계에서만 사용, 단방향
  • 지명 파이프(Named Pipe/FIFO): 파일 시스템에 이름을 갖고, 관계 없는 프로세스 간도 통신 가능
  • pipe() 시스템 콜로 일반 파이프 생성

클라이언트-서버 통신

  • 소켓(Socket): 네트워크를 통한 프로세스 간 통신
  • 원격 프로시저 호출(RPC): 다른 컴퓨터의 함수를 로컬 함수처럼 호출

'IT' 카테고리의 다른 글

운영체제 #5  (1) 2025.08.18
운영체제 #4  (4) 2025.08.17
운영체제 #2  (4) 2025.08.15
운영체제 #1  (3) 2025.08.14
admob 정책 위반 예방 5가지  (0) 2025.04.28