Apple is Apple
article thumbnail
Published 2024. 6. 21. 16:41
[OS] 3 - 프로세스 CS/OS

프로세스

프로세스란?

  • 실행중인 프로그램을 뜻한다.
  • 다음과 같은 것들을 갖고 있다
    • 코드 영역 (Text Section)
    • 프로그램 카운터(PC)
    • 스택 영역
    • 힙 영역
    • 데이터 영역
  • 프로세스는 2가지의 종류로 나타내어진다
    • I/O Bound Process - I/O 작업을 하는데 더 많은 시간을 쓰는 프로세스
    • CPU Bound Process - 계산 작업을 하는데 더 많은 시간을 쓰는 프로세스

프로세스 상태

프로세스의 시작으로부터 끝날 때까지 고유의 상태가 존재한다.

  1.  New: 프로세스가 생성됨
  2. Running:  프로그램내의 명령어들이 실행 중
  3. Waiting: 프로세스가 어떤 이벤트의 발생에 의해 대기 중임
  4. Ready: 프로세스가 CPU를 할당 받을 준비가 되어 대기 중임
  5. Terminated: 프로세스를 마쳐 종료함

프로세스 상태 전환 그래프

PCB (Process Control Block)

프로세스와 관련된 정보들의 집합

  • 프로세스 상태
  • 프로그램 카운터 - 다음 실행 될 명령어의 위치
  • CPU 레지스터
  • CPU 스케줄링 정보
  • 메모리 관리 정보
  • 사용량 정보
  • I/O 상태 정보

PCB는 프로세스마다 다를 수 있는 모든 정보의 저장소 역할을 한다.

PCB를 사용하는 Context Switching의 단계

프로세스 스케줄링

컴퓨터는 한정된 자원을 갖고있다. 하지만 여러 프로세스를 실행하려고 한다. 이 떄문에 여러 프로세스의 실행 순서를 운영체제가 중재해주는 것을 Scheduling이라고 한다.

스케줄링을 통해 CPU 사용량을 최대화시켜 프로그램 실행 효율성을 가져볼 수 있다.

프로세스 스케줄러는 이용 가능한 프로세스를 고른다.

스케줄링은 순서를 정하는 것이므로 Queue를 통해 프로세스 스케줄링을 유지한다.

  1. Job Queue - 메모리에 올라갈 준비가 되있는 작업(프로세스)를 저장한다.
  2. Ready Queue - CPU를 할당 받을 준비가 되있는 프로세스들이 대기하는 Queue이다.
  3. Device Queue - Device마다 존재하며, Device를 Access 하고자 하는 프로세스를 저장한다.

프로세스들은 위와 같은 Queue들을 옮겨다니며 실행된다,

프로세스 스케줄링 표현

스케쥴러

  • Short-Term Scheduler (CPU Scheduler)
    • Ready Queue에 있는 프로세스 중 어떤 것을 CPU에 할당해 줄 것인지를 정하는 스케쥴러이다.
    • CPU에 할당해주어야 하기 때문에 빈번하게 동작한다.
  • Long-Term Scheduler (Job Scheduler)
    • 사용자가 제출한 Job에서 어떤 것을 먼저 Ready Queue에 올릴 지 정하는 스케줄러이다.
    • Short-Term Scheduler 보단 빈번하게 동작하진 않는다.
    • CPU작업, I/O 작업의 빈도를 잘 조절해야한다. -> 그래야 휴무 없이 효율적으로 사용할 수 있다.]

Context Switch

한 프로세스를 실행하고 있는 CPU가 다른 프로세스로 교체하고자 할 때, 시스템은 기존 프로세스의 상태를 저장해야하고 새로운 프로세스의 상태를 불러와야 한다.

프로세스 스케줄링에서 프로세스를 계속해서 바꿔주는 일련의 과정을 Context Swithcing이라고한다.

 

현재 프로세스의 PC와 SP 등 정보를 저장하는 작은 공간을 Process Control Block(PCB)가 있다.

PCB에는 Process ID(PID), 레지스터(PC, SP 등)들을 포함해 프로세스가 실행 중인 상태 정보를 저장한다.

PCB를 사용하는 Context Switching의 단계

이 PCB를 사용해 프로세스의 상태를 관리하며 Context Switching을 하게 된다.

 

단, Context Switching은 오버헤드가 있다. 그렇기 때문에 너무 많은 Switching이 발생하면 실행 시간이 늘어나는 상황이 발생할 수 있다. 

이와 같은 상황은 HardWare Supporting으로 해결할 수도 있는데, 외부 장치에 의해 영향을 받다보니 유연성이 떨어질 수 있다.

 

 

사진 출처: Provided by Operating Systems Concepts, 10th Edition (Abraham Silberschatz, Peter Baer Galvin, Greg Gagne)

'CS > OS' 카테고리의 다른 글

[OS] 6 - CPU Scheduling (1)  (0) 2024.08.23
[OS] 5 - Thread  (0) 2024.08.06
[OS] 4 - 프로세스 간 통신  (0) 2024.07.20
[OS]2 - 핵심 컴포넌트  (0) 2024.06.17
Operating System basic  (1) 2024.04.22
profile

Apple is Apple

@mjjjjjj