프로세스와 스레드

j·2024년 8월 29일
0
  1. 프로세스
    • 컴퓨터에서 실행되고 있는 프로그램
    • CPU 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰임

  2. 스레드
    • 프로세스 내 작업의 흐름을 지칭
  • 프로그램이 메모리에 올라가면 프로세스가 됨 (인스턴스화)
  • 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스 실행
  1. 프로세스와 컴파일 과정

    • 구글 크롬 프로그램과 같은 실행파일을 클릭하면 프로세스가 시작

    1. 전처리 과정 : 소스코드 주석 제거/ 헤더파일 병합

    2. 컴파일러 : 오류처리, 코드 최적화 작업으로 어셈블리어로 변환

    3. 어셈블러 : 어셈블리어는 목적코드로 변환

    4. 링커 : 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합해서 실행파일을 만듦

  2. PCB(Process Control Block)

    • 프로세스에 대한 메타 데이터를 저장한 데이터
    • 프로세스가 생성되면 운영체제는 해당 PCB를 생성
    • 프로그램 실행 -> 프로세스 생성 -> 메모리 할당 -> 해당 프로세스의 메타 데이터가 PCB에 저장되어 관리
    • 중요한 정보여서 커널 스택의 가장 앞부분에서 관리 (일반 사용자가 접근 불가)
  3. 컨텍스트 스위칭

    • PCB를 교환하는 과정

    • 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생

    • 많은 프로그램이 동시에 진행되는 것이 아니라 여러 프로세스의 컨텍스트 스위칭을 통해 실행되는 것

    • 유휴 시간 : 다른 프로세스가 실행 중일 때의 idle time

    • 캐시미스

      • 컨텍스트 스위칭이 일어날 때 프로세스가 갖고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생김.
      • 캐시클리어 과정을 겪게됨
      • 캐시미스가 발생
    • 스레드에서의 컨텍스트 스위칭

      • 스택 영역을 제외한 모든 메모리를 공유
      • 비용이 더 적고 시간이 더 적게 걸림
  4. 멀티 프로세싱

    • 멀티 프로세스를 통해 동시에 두가지 이상의 일을 수행할 수 있게 하는 것
    • 하나 이상의 일을 병렬로 처리 가능
    • 멀티 프로세스는 IPC가 가능 (Inter Process Communication)
      • 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻함
      • 클라이언트와 서버간의 통신을 예로 들 수 있음
  5. 멀티 스레딩

    • 프로세스 내 작업을 멀티스레드로 처리하는 기법
    • 스레드끼리 자원을 공유해서 효율성이 높음
    • 예시 : 웹 요청을 처리할 때 새 프로세스를 생성하는 것이 아니라 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비.




    출처


    『면접을 위한 CS 전공지식 노트』

profile
개발 블로그

0개의 댓글