holy's story
[OS] PCB와 Context Switching 본문
SMALL
Process Management
- CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
- 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
- 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata
PCB란?
- Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
- 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
- 프로세스는 커널이 관리
- 자원할당, 작업 관리, 협력 등을 맡아 처리
- 커널이 중간관리자, 프로세스가 실무자
- 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
- 왜 pcb를 사용할까?
- 프로세스 상태관리와 context switching을 위해
- context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.
- 프로그램 실행
- 프로세스 생성
- 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
- 이 프로세스의 메타데이터들이 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를 읽어 교체하는 작업
- 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
- 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체
Context Switching이 필요한 이유
- 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
- 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
- 반응속도도 느리며 사용하기 불편
- 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
- 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
- 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임
Context Switching의 비용과 단점
- Cache 초기화 비용
- Memory Mapping 초기화 비용
- 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
- 단점
- 해당 시간 동안 CPU는 유휴 상태로 유지되어 어떤한 작업도 수행하지 않는 순간이 존재하게 됨
- 할 때마다 CPU는 캐시 메모리를 비우고, 레지스터를 저장하고, 새로운 작업의 정보를 불러와 오버헤드를 발생시킴
잦은 Context Switching은 성능저하를 불러 일으키니 유의해야함!
Process Management
- CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
- 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
- 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata
PCB란?
- Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
- 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
- 프로세스는 커널이 관리
- 자원할당, 작업 관리, 협력 등을 맡아 처리
- 커널이 중간관리자, 프로세스가 실무자
- 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
- 왜 pcb를 사용할까?
- 프로세스 상태관리와 context switching을 위해
- context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.
- 프로그램 실행
- 프로세스 생성
- 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
- 이 프로세스의 메타데이터들이 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를 읽어 교체하는 작업
- 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
- 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체
Context Switching이 필요한 이유
- 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
- 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
- 반응속도도 느리며 사용하기 불편
- 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
- 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
- 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임
Context Switching의 비용과 단점
- Cache 초기화 비용
- Memory Mapping 초기화 비용
- 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
- 단점
- 해당 시간 동안 CPU는 유휴 상태로 유지되어 어떤한 작업도 수행하지 않는 순간이 존재하게 됨
- 할 때마다 CPU는 캐시 메모리를 비우고, 레지스터를 저장하고, 새로운 작업의 정보를 불러와 오버헤드를 발생시킴
잦은 Context Switching은 성능저하를 불러 일으키니 유의해야함!
Process Management
- CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것
- 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능합니다.
- 이러한 프로세스들의 특징을 갖고 있는 것이 바로 Process Metadata
PCB란?
- Process Controll Block으로, 프로세스 메타데이터를 저장해두는 공간
- 하나의 PCB안에는 하나의 프로세스에 대한 정보만 담겨있다.
- 프로세스는 커널이 관리
- 자원할당, 작업 관리, 협력 등을 맡아 처리
- 커널이 중간관리자, 프로세스가 실무자
- 커널은 pcb의 정보를 보고 프로세스를 관리하게 됨
- 왜 pcb를 사용할까?
- 프로세스 상태관리와 context switching을 위해
- context switching 이후 다시 돌아와 작업할 때 작업 내용이 날라가있으면 새로 시작해야함. 이러면 자원 낭비가 되기 때문에 pcb에 저장해두고 하던 작업을 이어서 할 수 있도록 함.
- 프로그램 실행
- 프로세스 생성
- 프로세스 주소 공간에 (코드, 데이터, 스택) 생성
- 이 프로세스의 메타데이터들이 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를 읽어 교체하는 작업
- 현재 CPU는 process P0을 수행하고 있다가 인터럽트(interrupt)가 걸리게되면 현재 수행하고 있는 것을 먼저 PCB0에 저장을 한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체
- 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
- Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
- CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체
Context Switching이 필요한 이유
- 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
- 다음 작업을 처리하려면 현재 작업이 끝날때까지 쭉 기다려야함.
- 반응속도도 느리며 사용하기 불편
- 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서!!
- 컴퓨터 멀티태스킹으로 급한 작업의 경우 먼저 처리가 가능
- 빠르게 작업을 바꿔가며 실행하여 사람 입장에서는 실시간 처리가 되는것처럼 보임
Context Switching의 비용과 단점
- Cache 초기화 비용
- Memory Mapping 초기화 비용
- 메모리의 접근을 위해서 커널이 항상 실행되어야 함.
- 단점
- 해당 시간 동안 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 |