본문 바로가기

Backend/CS

2. 운영체제 (힙과 컨텍스트스위칭 이해)

반응형
SMALL

힙(Heap)

힙은 프로그래밍에서 중요한 메모리 관리 영역으로, 주로 동적 메모리 할당에 사용됩니다.

  • 동적 메모리 할당: 프로그램이 실행되는 동안 필요에 따라 메모리를 할당하고 해제할 수 있는 영역입니다. 예를 들어, C언어에서 **malloc**과 free, 자바에서는 **new**와 가비지 컬렉터를 통한 자동 해제가 이에 해당합니다.
  • Java의 가비지 컬렉션(GC): 자바에서는 개발자가 직접 메모리를 관리하지 않아도 됩니다. 대신, JVM(Java Virtual Machine)의 가비지 컬렉터가 더 이상 사용되지 않는 객체를 자동으로 감지하여 메모리에서 제거합니다. 이는 메모리 누수를 방지하고 프로그램의 안정성을 높이는 데 도움이 됩니다.

컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭은 멀티태스킹 환경에서 중요한 개념으로, CPU가 여러 프로세스를 빠르게 전환하면서 실행하는 방식입니다.

  • 프로세스의 상태 저장: 실행 중인 프로세스가 중단될 때, 그 상태는 PCB(Process Control Block)에 저장됩니다. PCB는 프로세스 ID, 프로그램 카운터(PC), 레지스터 값, 메모리 정보 등을 포함합니다.
  • PCB의 역할: PCB는 프로세스가 중단된 지점부터 다시 시작할 수 있도록 하는 데 필요한 모든 정보를 저장합니다. 이 정보를 바탕으로 CPU는 실행 중이던 프로세스로 돌아갈 수 있습니다.

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

프로세스 간 통신은 서로 다른 프로세스가 정보를 교환하거나 조정하기 위해 필요합니다.

  • IPC의 필요성: 각 프로세스는 독립된 메모리 공간을 가지고 있기 때문에, 한 프로세스에서 다른 프로세스의 메모리에 직접 접근하는 것은 허용되지 않습니다. 이를 위해 특별한 통신 메커니즘이 필요합니다.
  • IPC 방법:
    • 파일 사용: 데이터를 파일에 쓰고 다른 프로세스가 이 파일을 읽음으로써 통신합니다.
    • 메시지 큐: 프로세스 간 메시지를 전송하여 통신합니다. 이는 비동기적으로 데이터를 교환할 수 있는 방법입니다.
    • 공유 메모리: 두 개 이상의 프로세스가 메모리의 동일한 부분을 공유하여 데이터를 교환합니다.
    • 파이프: 일반적으로 한 프로세스의 출력을 다른 프로세스의 입력으로 연결하는 데 사용됩니다.
    • 시그널: 프로세스 간 또는 운영체제로부터 프로세스로 신호를 보내는 방법입니다.
    • 세마포어: 공유 자원에 대한 접근을 조정하기 위해 사용됩니다.
    • 소켓: 네트워크를 통해 다른 시스템의 프로세스와 통신할 수 있게 합니다.
반응형
LIST