운영체제

추가적인 내용

ggomjiu 2025. 1. 19. 13:44

PCB (Process Control Block)

: 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳

-> 프로세스의 상태 정보를 저장하는 구조체

- 프로세스 상태 관리와 문맥 교환(Context Switching)을 위해 필요함

- PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지됨

- 하나의 프로세스가 시스템에 존재할 때의 모습

- 운영체제가 프로세스를 관리한다는 것은 PCB의 생성, 수정, 리스트 연결, 지우는 등의 행위

PCB 구조

 

1) PCB에 포함되는 정보들

  • Process ID : 프로세스를 구분하는 ID
  • Process state : 각 state들의 상태를 저장
  • Program Counter : 다음 Instruction의 주소를 저장, CPU는 이 값을 참조해서 Process의 Instruction을 수행
  • Register : Accumulator, CPU Register, General Register 등을 포함
  • CPU Scheduling Information : 우선 순위, 최종 실행 시간, CPU 점유 시간 등이 포함
  • Memory Information : 해당 프로세스 주소 공간(lower bound ~ upper bound) 정보를 저장
  • Process Information : 페이지 테이블, 스케줄링 큐 포인터, 소유자 부모 등
  • Device I/O Status : 프로세스에 할당된 입출력 장치 목록, 열린 목록 등
  • Pointer : 부모 / 자식 프로세스에 대한 포인터, 자원에 대한 포인터 등
  • Open File List : 프로세스를 위해 열려있는 파일의 리스트

2) Context Switching에서의 PCB 역할

- Context Switching 

: 수행 중인 프로세스를 변경할 때 레지스터에 프로세스의 정보가 바뀌는 것

- CPU가 이전의 프로세스 상태를 PCB에 보관 -> 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정

- PCB는 저장소가 아닌 저장 단위 -> 데이터를 잠시 보관하는 것

 

프로세스(Process)

: 디스크에서 메모리에 올라오는 단위 (자원의 소유자)

- 정적 프로그램이 운영체제의 PCB를 받아, 메인 메모리에 적재된 동적인 상태

프로그램 vs 프로세스 vs 프로세서
▶ 프로그램(Program)
: 소프트웨어의 한 가지로써 어떤 문제를 해결하기 위해서 그 처리 방법과 순서를 기술하여 컴퓨터에 주어지는 일련의 명령문 집합체
-> 사용자의 명령에 반응하는 소프트웨어
- 디스크에 이진 파일로 존재하다가 사용자가 실행시키면 메모리로 쌓여서 실행됨
- 컴파일한 코드와 여러 변수들이 모인 정적인 개체

▶ 프로세스(Process)
: 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
-> 메모리에 적재되어 있는 프로그램
- 메모리 구조를 이루고 PC나 레지스터처럼 현재 어떤 자원을 사용하는 동적인 개체

▶ 프로세서(Processer)
: 프로그램들이 실행될 수 있도록 해주는 하드웨어
-> 컴퓨터의 CPU

- 프로세스는 수행 중인 프로그램

  • execution : 프로그램과 실행에 필요한 값들이 표현되어 커널에 등록되어 있음
  • 프로그램과 데이터를 기본으로 정상적인 실행을 위해 필요한 환경을 시스템으로부터 부여받은 능동적인 존재

 

프로세스의 상태 변화

- 프로세스가 만들어져 시스템에 존재하는 동안 여러 사건들에 의해 일련의 상태 변화를 거침

Active State vs Suspended State
▶ Active : 메모리 공간의 일정량을 부여받은 상태
▶ Suspended : 메모리가 회수된 상태
- Active ↔ Suspended : Swapping
- A -> S : Swap out
- S -> A : Swap in
- Swapping도 결국은 입출력이기 때무에 발생하는 횟수가 적으면 좋음

1. Created (생성)

- 사용자가 요청한 작업이 커널에 등록되고 PCB가 만들어져 프로세스가 만들어진 상태

  • Created -> Ready : 메모리 공간을 검사하여 충분한 공간이 있으면 메모리를 할당하고 준비 상태로 바꿈
  • Created -> Suspended Ready : 공간이 없으면 메모리를 할당하지 않고 보류 준비로 바꿈

2. Ready (준비)

- CPU를 할당받기 위해 기다리고 있는 상태 -> CPU만 주어지면 바로 실행할 준비가 된 상태

  • Ready -> Running (Dispatch) : CPU를 할당 받으면 실행 상태로 바뀌고 실행됨
  • Ready -> Suspended Ready : 준비 상태였다가 메모리를 뺏긴 상태

3. Running (실행)

- CPU를 할당바다 실행 중인 상태

  • Running -> Ready (Timeout) : CPU를 받아 실행하다가 시간 할당량을 소진하여 뺏긴 상태
  • Running -> Blocked : 실행 상태의 프로세스가 입출력이 필요하게 되어 시스템 호출을 하고, 입출력 처리의 종료를 기다리는 상태 -> 이때 CPU는 바로 준비 상태의 프로세스 하나를 선택해 실행

4. Blocked (대기)

- 프로세스가 실행되다가 입출력 처리를 요청하거나, 바로 확보될 수 없는 자원을 요청하면 CPU를 양도하고 요청한 일이 완료되기를 기다림

  • Blocked -> Ready : 입출력이 완료되어 CPU 할당을 기다리는 상태
  • Blocked -> Suspended Blocked : 메모리의 여유 공간 확보를 위해 대기 상태에서 메모리를 뺏겨 보류 대기 상태로 바뀜

5. Terminated (종료)

- 프로세스가 종료될 때 아주 잠시 거치는 상태

- 모든 자원이 회수되고 PCB를 삭제함

 

6. Suspended Ready

- 생성된 프로세스가 바로 메모리를 받지 못할 때, 준비 또는 실행 상태에서 메모리를 잃게 될 때

- 충분한 메모리 공간의 확보를 위해 준비 상태의 프로세스를 보류시키는 경우

  • Running -> Suspended Ready : 높은 우선 순위의 보류 대기 상태 프로세스가 준비 상태가 되어, 실행 상태의 프로세스로부터 CPU를 뺏는 경우
  • Suspended Blocked -> Suspended Ready : 보류 대기 상태에 있던 프로세스가 기다리던 입출력이 완료된 경우
  •  Suspended Ready -> Ready : 다시 메모리를 받은 경우

7. Suspended Blokcked

- 대기 상태일 때 메모리 공간을 잃은 상태

  • Blocked -> Suspended Blocked : 메모리 공간 확보를 위해 메모리를 잃은 상태, 준비 상태인 플세스가 아예 없는 경우 발생하기도 함
  • Suspended Blocked -> Blocked : 메모리가 확보되어 대기가 된 경우
  • Suspended Blocked -> Suspended Ready : 입출력이나 기다리던 사건이 종료된 경우

 

DMA (Direct Memory Access)

: CPU 개입 없이 메모리에 접근하는 기법

- CPU의 개입없이 주변 장치(입출력 장치)와 주기억장치와의 데이터 전송이 이루어지는 방법을 통칭

- CPU와 주기억장치만이 시스템 버스에 접근할 수 있고 입출력장치는 DMA와 같은 입출력 제어기에 의해 시스템 버스에 접근할 수 있음

  • 프로그램 수행 중 입출력을 위한 인터럽트의 발생 횟수를 최소화하여 컴퓨터 시스템의 효율을 높임
  • CPU는 DMA와 상태 정보 및 제어 정보만을 주고 받음
  • 속도가 빠른 디스크, 테이프 등에 사용됨
  • DMA는 기억 장치 접근을 위해 CPU의 시스템 버스 사용권을 일시적으로 뺏는 사이클 스틸링(Cycle Stealing)을 수행하기 때문 -> 시스템 버스에 대해 CPU보다 DMA의 우선 순위가 높음

- 실제  CPU가 Control하는 건 DMAC(DMA Control)을 Control 해주는 과정을 의미

제어 방식 CPU 관련 여부 특징
Programmed에 의한 I/O O 가장 원시적인 방법
Interrupt에 의한 I/O O  
DMA에 의한 I/O X 소형 컴퓨터에서 이용
Channel에 의한 I/O X 대형 컴퓨터에서 이용

 

- 빠른 순위 : Channel > DMA > Interrupt > Programmed

 

1. 프로그램에 의한 I/O

  • CPU상에서 실행되는 프로그램에 의해 입출력이 직접 제어
  • CPU는 입출력 장치에 명령을 보낸 후 동작이 완료될 때까지 대기
  • CPU는 주기적으로 주변 장치의 상태를 반복적으로 검사 -> 폴링 방식
  • CPU는 자원 낭비 발생

2. 인터럽트 처리에 의함 I/O

  • 입출력 인터페이스가 주변 장치의 상태를 검사하여 준비 상태가 되면 인터럽트 신호를 발생하여 입출력 처리를 요구하는 방식
  • CPU는 그 전에 수행되던 프로그램의 상태를 스택에 저장한 후 Context Switching 과정을 통해 인터럽트 서비스 프로그램 수행
  • 주변 장치에 명령을 보낸 후 주변 장치로부터 결과가 올 때까지 CPU는 다른 작업을 수행할 수 있으므로 효율성 증가
  • 프로그램에 의한 I/O 문제점 개선

3. 메모리 직접 접근에 의한 I/O

  • 인터럽트 방식이 프로그램에 의함 입출력 방식보다는 효율적이지만 입출력을 위한 상태 정보, 제어 정보, 데이터 전송을 위해서는 여전히 CPU의 능동적인 개입이 요구된
  • CPU는 상태 정보, 제어 정보만을 교환하게 하고 데이터 전송은 주변 장치와 주기억장치 간에 직접적으로 교환하게 하는 방식이 더 효율적
  • DMA를 사용하기 위해서는 시스템 버스 상에 모듈이 하나씩 추가
  • DMA 모듈은 CPU를 통하지 않고 한 번에 한 단어씩 직접 기억장치로부터 모든 데이터 블록을 전송
  • 전송이 완료되면 DMA모듈은 CPU에게 인터럽트 신호를 보내고 CPU는 전송의 시작과 끝 부분에만 관여

4. 채널에 의한 I/O

  • DMA 개념을 확장하여 구현한 입출력만을 위한 전용 처리 장치
  • CPU처럼 독자적으로 주기억장치에 저장된 명령어를 처리할 수 있는 능력
  • 입출력 채널은 CPU의 개입없이 입출력 처리를 수행
  • 2가지 종류의 채널

 

Context Switching

: CPU / 코어에서 실행 중이던 프로세스 / 스레드가 다른 프로세스 / 스레드로 교체되는 것

- Context : 프로세스 / 스레드의 상태

- 커널(Kernel)에 의해서 수행됨

- 커널 : 각종 리소스를 관리 / 감독하는 역할을 하는 존재

- 필요한 이유

  • 여러 프로세스와 스레드들을 동시에 실행시키기 위해 -> 그렇게 보이기 위해
  • 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 갖기 위해
  • 높은 우선 순위의 작업이 빠르게 처리될 수 있게

- 발생하는 시점

  • 주어진 Time Slice(Time Quantum)를 다 사용함
  • I/O 작업을 해야 함
  • 다른 리소스를 기다려야 함
  • Interrupt

- 미치는 영향

  • 캐시 오염 발생 : 사용할 것이라고 예상을 하고 캐시에 데이터나 값을 저장한 캐시 데이터가 의미가 없어짐
  • 오버헤드 발생

 

 

 

 

 

 

 

 

 

 

Reference

https://naeunbi698.tistory.com/195

 

DMA(Direct Memory Access) 개념

[운영체제] DMA(Direct Memory Access) & 입출력 처리 방식 CPU 개입없이 메모리 접근하는 기법 CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치를 지칭 CPU의 개입 없이 주변장치(입출력

naeunbi698.tistory.com

https://velog.io/@mingadinga_1234/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%9E%80-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98-%EC%83%81%ED%83%9C

 

프로세스란? 프로세스의 상태

이 포스팅에서 다루는 내용 : 프로세스, PCB, 프로세스의 상태와 변화, 활성 vs 보류 상태, 생성, 준비, 실행, 대기, 종료, 보류 준비, 보류 대기

velog.io

https://dev-mystory.tistory.com/119

 

운영체제 - PCB(Process Control Block)란?

PCB란?운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다.프로세스 상태 관리와 문맥교환(Context Switching)을 위해 필요하다.PCB는 프

dev-mystory.tistory.com

 

'운영체제' 카테고리의 다른 글

7. Context Switching(문맥 교환)  (0) 2025.01.23
6. 시스템 콜(System Call)  (0) 2025.01.23
5. 인터럽트(Interrupt)  (0) 2025.01.16
4. CPU 스케줄링 알고리즘  (0) 2025.01.16
3. 프로세스와 스레드  (0) 2025.01.16