Zettelkasten

Process는 프로그램의 인스턴스(실행중)이다.

·수정 2026.04.23·수정 2

요약

  • 핵심 아이디어 한 줄 요약
  • “이 노트는 왜 중요한가?” → 맥락 설명

본문

  • 일반적으로 프로세스는 실행중인 프로그램으로 정의한다.
  • CPU는 가상화를 통해 마치 적은 수의 CPU만으로도 그 보다 더 많은 CPU가 존재하는 것 같은 환상을 만들어낸다. 이러한 기법은 다른 말로 "시분할"이라고 함
  • CPU에서 가상화를 잘 구현하기 위한 방법으로 저수준의 도구와 고차원의 지능을 필요로하는데 저수준 도구를 메커니즘(ex context switch), 고수준의 지능을 정책(ex scheduling policy)이라고 함
  • 프로세스
    • 프로세스의 구성 요소를 이해를 위해 하드웨어에 대한 상태를 이해하는 것이 도움이 된다.
    • 메모리: 명령어와 데이터는 메모리에 저장된다.
    • 레지스터: 명령어들이 레지스터를 직접 읽거나 갱신한다.
      • 프로그램 카운터: 프로그램의 어느 명령어가 실행 중인지를 알려준다.
      • 스택 포인터, 프레임 포인터: 함수의 변수와 리턴 주소를 저장하는 스택을 관리할 때 사용하는 레지스터
    • 영구장치(persistenc storage): 프로세스가 열어 놓은 파일 목록
  • 운영체제에서는 프로세스 조작 API를 다음과 같이 제공한다.
    • 생성
    • 제거
    • 대기
    • 각종 제어
    • 상태
  • 프로그램은 어떻게 프로세스로 변형되는가?
    1. 프로그램 코드와 정적 데이터를 메모리, 프로세스 주소 공간에 탑재
    2. 일정량의 메모리가 프로그램의 실행시간 스택으로 할당되어야함
    3. 운영체제는 프로그램의 힙을 위한 메모리 영역을 할당함
    4. 입출력과 관련된 초기화 작업을 수행함
      • Unix에서는 각 프로세스가 표준 입력, 표준 출력, 표준 에러에 해당하는 파일 디스크립터를 가짐
    5. 프로그램의 시작지점 main에서부터 프로그램을 시작함
  • 프로세스 상태
    • 실행: 프로세스는 프로세서에서 실행
    • 준비: 실행 준비는 되어 있지만 대기
    • 대기: 프로세스가 다른 사건을 기다리는 동안 프로세스 수행을 중단

참고