Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

holy's story

[OS] PCB와 Context Switching 본문

CS

[OS] PCB와 Context Switching

soom22 2024. 5. 26. 14:48
SMALL

Process Management

  • CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
  • 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
  • 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata

PCB란?

  • Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
  • 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
  • 프로세스는 커널이 관리
    • 자원할당, 작업 관리, 협력 등을 맡아 처리
    • 커널이 중간관리자, 프로세스가 실무자
    • 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
  • 왜 pcb를 사용할까?
    • 프로세스 상태관리와 context switching을 위해
    • context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.

 

  1. 프로그램 실행
  2. 프로세스 생성
  3. 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
  4. 이 프로세스의 메타데이터들이 PCB에 저장

 

PCB의 구조

  • Process ID
    • 프로세스 고유 식별번호로, PID(Process Identification Number)라고도 한다.
  • Process State(프로세스 상태)
    • 프로세스의 현재 상태(준비, 실행, 대기 등의 상태)를 저장
  • Program Counter(계수기)
    • 다음에 실행되는 명령어의 주소를 저장
  • Process Priority(스케줄링 정보)
    • 프로세스 우선순위 등과 같은 스케줄링 관련 정보를 저장
  • CPU Registers
    • 프로세스의 레지스터 상태를 저장하는 공간
  • Account(계정 정보)
    • CPU 사용시간, 각종 스케줄러에 필요한 정보 저장
  • 입출력 정보
    • 프로세스 수행 시 필요한 주변 장치, 파일등의 정보를 저장

 

  • CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어짐. (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 running으로 바꿀 때)
  • 이때, 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것입니다.

관리 방식

  • Linked List 방식
  • PCB List Head에 PCB들이 생성될 때마다 붙고 주솟값으로 연결이 이루어져 있는 연결 리스트 형태로, 삽입 삭제가 용이
  • 즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료 시 제거됨
  • 이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것Context Switching

Context Switching이란?

  • 멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스 상태 값을 PCB에 저장하고 CPU가 다음 프로세스를 실행할 수 있도록 다음 PCB를 읽어 교체하는 작업

  1. 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
  2. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
  3. CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
  4. 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
  5. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
  6. CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체

Context Switching이 필요한 이유

  • 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
    • 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
    • 반응속도도 느리며 사용하기 불편
  • 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
  • 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
  • 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임

Context Switching의 비용과 단점

  1. Cache 초기화 비용
  2. Memory Mapping 초기화 비용
  3. 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
  • 단점
    • 해당 시간 동안 CPU는 유휴 상태로 유지되어 어떤한 작업도 수행하지 않는 순간이 존재하게 됨
    • 할 때마다 CPU는 캐시 메모리를 비우고, 레지스터를 저장하고, 새로운 작업의 정보를 불러와 오버헤드를 발생시킴

잦은 Context Switching은 성능저하를 불러 일으키니 유의해야함!

Process Management

  • CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
  • 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
  • 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata

PCB란?

  • Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
  • 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
  • 프로세스는 커널이 관리
    • 자원할당, 작업 관리, 협력 등을 맡아 처리
    • 커널이 중간관리자, 프로세스가 실무자
    • 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
  • 왜 pcb를 사용할까?
    • 프로세스 상태관리와 context switching을 위해
    • context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.
  1. 프로그램 실행
  2. 프로세스 생성
  3. 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
  4. 이 프로세스의 메타데이터들이 PCB에 저장

PCB의 구조

  • Process ID
    • 프로세스 고유 식별번호로, PID(Process Identification Number)라고도 한다.
  • Process State(프로세스 상태)
    • 프로세스의 현재 상태(준비, 실행, 대기 등의 상태)를 저장
  • Program Counter(계수기)
    • 다음에 실행되는 명령어의 주소를 저장
  • Process Priority(스케줄링 정보)
    • 프로세스 우선순위 등과 같은 스케줄링 관련 정보를 저장
  • CPU Registers
    • 프로세스의 레지스터 상태를 저장하는 공간
  • Account(계정 정보)
    • CPU 사용시간, 각종 스케줄러에 필요한 정보 저장
  • 입출력 정보
    • 프로세스 수행 시 필요한 주변 장치, 파일등의 정보를 저장
  • CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어짐. (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 running으로 바꿀 때)
  • 이때, 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것입니다.

관리 방식

  • Linked List 방식
  • PCB List Head에 PCB들이 생성될 때마다 붙고 주솟값으로 연결이 이루어져 있는 연결 리스트 형태로, 삽입 삭제가 용이
  • 즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료 시 제거됨
  • 이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것Context Switching

Context Switching이란?

  • 멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스 상태 값을 PCB에 저장하고 CPU가 다음 프로세스를 실행할 수 있도록 다음 PCB를 읽어 교체하는 작업
  1. 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
  2. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
  3. CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
  4. 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
  5. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
  6. CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체

Context Switching이 필요한 이유

  • 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
    • 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
    • 반응속도도 느리며 사용하기 불편
  • 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
  • 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
  • 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임

Context Switching의 비용과 단점

  1. Cache 초기화 비용
  2. Memory Mapping 초기화 비용
  3. 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
  • 단점
    • 해당 시간 동안 CPU는 유휴 상태로 유지되어 어떤한 작업도 수행하지 않는 순간이 존재하게 됨
    • 할 때마다 CPU는 캐시 메모리를 비우고, 레지스터를 저장하고, 새로운 작업의 정보를 불러와 오버헤드를 발생시킴

잦은 Context Switching은 성능저하를 불러 일으키니 유의해야함!

Process Management

  • CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
  • 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
  • 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata

PCB란?

  • Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
  • 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
  • 프로세스는 커널이 관리
    • 자원할당, 작업 관리, 협력 등을 맡아 처리
    • 커널이 중간관리자, 프로세스가 실무자
    • 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
  • 왜 pcb를 사용할까?
    • 프로세스 상태관리와 context switching을 위해
    • context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.
  1. 프로그램 실행
  2. 프로세스 생성
  3. 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
  4. 이 프로세스의 메타데이터들이 PCB에 저장

PCB의 구조

  • Process ID
    • 프로세스 고유 식별번호로, PID(Process Identification Number)라고도 한다.
  • Process State(프로세스 상태)
    • 프로세스의 현재 상태(준비, 실행, 대기 등의 상태)를 저장
  • Program Counter(계수기)
    • 다음에 실행되는 명령어의 주소를 저장
  • Process Priority(스케줄링 정보)
    • 프로세스 우선순위 등과 같은 스케줄링 관련 정보를 저장
  • CPU Registers
    • 프로세스의 레지스터 상태를 저장하는 공간
  • Account(계정 정보)
    • CPU 사용시간, 각종 스케줄러에 필요한 정보 저장
  • 입출력 정보
    • 프로세스 수행 시 필요한 주변 장치, 파일등의 정보를 저장
  • CPU에서는 프로세스의 상태에 따라 교체 작업이 이루어짐. (인터럽트가 발생해서 할당받은 프로세스가 Block 상태가 되고 다른 프로세스를 running으로 바꿀 때)
  • 이때, 앞으로 다시 수행할 Block 상태의 프로세스의 상태값을 PCB에 저장해두는 것입니다.

관리 방식

  • Linked List 방식
  • PCB List Head에 PCB들이 생성될 때마다 붙고 주솟값으로 연결이 이루어져 있는 연결 리스트 형태로, 삽입 삭제가 용이
  • 즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료 시 제거됨
  • 이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것Context Switching

Context Switching이란?

  • 멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스 상태 값을 PCB에 저장하고 CPU가 다음 프로세스를 실행할 수 있도록 다음 PCB를 읽어 교체하는 작업
  1. 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
  2. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
  3. CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
  4. 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
  5. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
  6. CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체

Context Switching이 필요한 이유

  • 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
    • 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
    • 반응속도도 느리며 사용하기 불편
  • 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
  • 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
  • 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임

Context Switching의 비용과 단점

  1. Cache 초기화 비용
  2. Memory Mapping 초기화 비용
  3. 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
  • 단점
    • 해당 시간 동안 CPU는 유휴 상태로 유지되어 어떤한 작업도 수행하지 않는 순간이 존재하게 됨
    • 할 때마다 CPU는 캐시 메모리를 비우고, 레지스터를 저장하고, 새로운 작업의 정보를 불러와 오버헤드를 발생시킴

잦은 Context Switching은 성능저하를 불러 일으키니 유의해야함!

'CS' 카테고리의 다른 글

[Algorithm] 그리디  (2) 2024.06.09
[OS] 동기화(스핀락, 뮤텍스, 세마포어)  (0) 2024.06.02
[OS] 요구 페이징  (0) 2024.05.19
[Algorithm] 해시  (0) 2024.05.05
[Network] SOP&CORS  (0) 2024.03.03