Process, Processor, Thread

2024-04-27. 20:19: 글 계승.
2023-11-10-Process-Processor: 🌑 Process, Processor

Q


  • 프로세스, 프로세서, 스레드에 대해 설명해 주세요.
  • 프로세스와 스레드의 차이점은 무엇인가요?
  • 왜 스레드
  • 왜 비동기

Processor | 프로세서


단지 '프로세서' 라는 용어만 사용하였을 때, 일반적으로 CPU.
RAM에 저장된 프로그램-기계 명령어를 해석/처리하는 컴퓨터의 한 부분.
처리기로 불리기도 한다.

GPU, DMA와 같이 제한된 기능만을 수행하는 프로세서도 있다.

Process | 프로세스


  • 버퍼 Buffer

    • 임시 보관 장소
    • ~= Cache 좀 복사가 빠른 곳에 두는 임시 보관 장소
  • 프로세스 및 스레드 관리

  • 프로세스

    • 프로그래밍 언어로 작성된 프로그램이, 목적 코드로 (기계어 코드)로 번역되어 디스크에 저장된 후 운영체제의 도움으로 주기억장치에 적재되어 실행 중인 프로그램
    • 한 마디로 메모리에 적재되어 실행 중에 있는 프로그램
  • 프로세스 속성

    • 고유 번호 PID Process Identification Number
    • 메모리 정보
    • 상태 Status
    • 진행지점 Counter
    • 문맥 Context
    • 우선순위 Priority
    • 자원목록 Process Resource
    • 회계정보 Accounting Information
    • 기타
  • LDA x

  • ADD y

  • STA z

  • → z = x + y;

  • 중간이 타임아웃이 되면 그 시점의 스냅샷을 저장하고

  • 다시 돌아왔을 때 불러와 실행, 연속성

  • 저장하는 CPU의 내용 = 문맥 Context

  • 프로세스 관리 블록 PCB

    • 프로세스는 OS의 관리 대상
      • 프로세스가 하나의 개체로 등록됨
      • 프로세스에 관한 모든 정보가 PCb에 기록되어 관리됨
      • PCB의 총 개수가 곧 관리 가능한 최대 프로세스의 수를 의미함
  • 프로세스 관리 (상태 천이)

    • 운영제체는 프로세스의 처리과정에서 프로세스의 활동에 따라 해당 프로세스를 적절한 상태로 천이 시킨다
    • @ 실행 상태가 아닌 모든 프로세스는 해당 상태의 대기열에 관리된다
  • 프로세스 상태

    • 준비 Ready 상태
    • 실행 Running 상태
    • 대기 Blocked 상태
    • 보류 Suspended 상태
    • 대기-보류 Block-Suspended 상태
    • 종료 Terminated 상태 (Dispatch 배급하다)
  • 스레드 Thread (실)

    • 프로그램이 실행되는 흐름 줄기
    • 보통 프로세스는 하나의 실행 줄기 즉, 하나의 스레드를 가짐 (단일 스레드 프로세스)
    • I.E. C 프로그램의 main() 함수에서부터 시작하는 실행줄기
  • 다중 스레드 프로세스 Multi Thread Process

    • 다중 스레드 프로세스 개념
      • 프로세스는 하나이지만, 여러 개의 실행 줄기(스레드)를 가짐
      • OS는 스레드 별로 독립적인 상태 천이를 관리함
      • 즉, 스레드 별로 ~

~

  • CPU가 반드시 여러 개일 필요는 없음

  • CPU가 여러 개일 경우는 스레드들이 병렬처리됨

  • CPU가 하나일 경우는 스레드들이 병행처리됨

  • LDA | 100

  • 주소 100

  • LDA_S | 100

  • 주소 100 + Stack Pointer

  • 상대주소기법

  • 스레드 생성 및 제거

  • 프로세스 생성 및 제거

    • 프로세스 생성
      • 새로운 프로세스는 이미 실행 중인 다른 프로세스가 OS에 오청함으로써 탄생
      • 이들은 부모 프로세스 Parent Process의 자식 프로세스 Child Process 관계가 됨
      • 단말기 (키보드) 사용자들은 실행하고자 하는 프로그램의 이름을 쉘 (명령어 해석기)에 전달하여 쉘로 하여금 프로그램 생성을 OS에게 요청하도록 함
      • 디스크 프로그래밍 메모리로 적재하여 프로세스를 생성하는 OS부분을 로더 Loader 라함
  • 프로세스 제거

    • 정상적인 프로세스 제거는 해당 프로세스 스스로가 운영체제에게 요청함으로써 이루어짐
  • 프로세스 간 통신 IPC InterProcess Communication

    • 일반적인 프로세스들은 완전히 독립되어 다른 프로세서들과 격리되어 정보를 교환할 수 있음
    • 거대한 프로그램을 작게 분리한 경우, 이를 프로세스 간의 통신 수단이 요구됨
      • 클라이언트 Client → 서버 모델
    • 대표적인 통신 수단을 파이프, 메시지, 큐, 공유 메모리, 세마포, 소켓(인터넷)을 들 수 있음
    • 통신 경로는 운영체제에 의해 제공되기 때문에 각각의 통신 수단마다 고유의 셋업 절차를 따라야 함
  • 프로세스 통제

    • 실행중인 프로세스에 대한 어떤 조치를 취하는일
  • 프로세스 통제수단

    • OS가 제공하는 서비스 (시스템 콜)을 이용
    • 유닉스/리눅스의 경우 kill() 시스템 콜
  • 프로세스 통제 유형

    • 강제 종료 :
      • 실행중인 프로그램이 스스로 종료하기 전에 무조건 강제로 종료하도록 한다
    • 일시 정지 :
      • 완전히 종료하도록 하느 것은 아니고, 임시로 CPU의 할당을 받지 못하여 더 이상의 실행이 이루어지지 않도록 한다
    • 실행 제개 :
      • 일시 중지 상태에 있는 프로세스가 CPU를 할당 받아서 계쏙 수행할 수 있도록 한다.
      • 우선 순위에 따라 다른 프로세스와 공평하게 CPU를 할당받는다
    • 약속 처리 :
      • 프로그램을 작성할 때 약속했던 처리 부분들을 실시간으로 지시한다
    • 우선 순위 변경 :
      • 실행중인 프로그램의 우선순위를 올리거나 내린다.
      • 일반 사용자는 내리기만 가능하고,관리자는 양쪽 모두 가능하다.

Thread | 스레드


스레드는 프로세스 내에서 실행되는 작업의 단위로, CPU 자원을 할당받아 실행됨.

배경

  • Windows 95 이전, Windows OS는 싱글 스레드

  • 프로그램 하나가 무한루프에 빠지면 다른 프로그램도 멈춤

    • 한 프로그램이 무한루프를 돌면 다른 프로그램에도 영향
  • CPU를 나눠 써야 하는데 하나 밖에 없어서 그러지 못함

  • 그래서 CPU 가상화

  • 이제 CPU를 쓰지 말고, 스레드를 CPU처럼 써

    • 프로세스에게 스레드를 나눠주고
    • 그 스레드가 어플리케이션 입장에서는 마치 CPU 처럼 사용
  • 이제 여러 개니까, 한 스레드가 무한루프에 빠져도 다른 스레드는 멈추지 않음
    다른 스레드는 자신에게 주어진 스레드를 사용

답글

답글을 불러오는 중...