컴퓨터공학 공부/컴퓨터공학 공부 총정리

컴퓨터공학 공부 다시 시작하기 9주차 - 스케쥴링 알고리즘 구현 이해2, 프로세스 구조 이해, 힙과 컨텍스트 스위칭 이해

개발학생 2024. 11. 17. 21:49
반응형

1. 스케쥴링 알고리즘 구현 이해2

Round Robin 스케쥴러

- 큐(queue) 자료구조를 활용하여 쉽게 구현 가능함 

출처 - https://www.fun-coding.org/post/scheduling.html#gsc.tab=0

프로세스 상태 기반 스케쥴러

- FIFO, Round Robin과 함께 기본적인 현대 스케쥴링 알고리즘 이해해보기

- ready state: CPU에서 프로세스를 실행 가능한 상태(실행 대기 상태)

- running state: 현재 CPU에서 프로세스를 실행 중인 상태
- block state: 프로세스에서 특정 이벤트 발생 전 대기 상태

출처 - https://www.fun-coding.org/post/scheduling.html#gsc.tab=0

프로세스 구조 이해

프로세스 구성

- text(CODE): 코드

- data: 변수/초기화된 데이터

- stack: 임시 데이터(함수 호출, 로컬 변수 등)

- heap: 코드에서 동적으로 만들어지는 데이터

출처 - 온라인 강의

프로세스와 컴퓨터 구조

PC(Program Counter) + SP(Stack Pointer)

- PC: 다음 실행할 코드 주소

- SP: 스택 최상단 주소

- 임베디드 시스템 등에서 동작하는 C 프로그램 등은, 디버깅 시 PC와 SP를 캡쳐해서 확인

힙과 컨텍스트 스위칭 이해

힙(Heap/Heap Memory)

- 컴퓨터 프로그램이 실행되는 동안 동적 메모리 할당(Dynamic Memory Allocation)에 사용되는 공간을 말함

- 운영 체제가 관리하는 메모리 영역 중 하나로, 프로그램이 실행 도중 필요한 메모리를 할당/해제할 수 있는 공간 제공

  -> 자료구조의 힙(Heap)과는 전혀 다른 개념

- 힙 공간이 부족하면 객체 생성이 불가하여, Java와 같은 객체지향 프로그램이 동작하지 않게 됨 

가비지 컬렉터(Garbage Collector)

- Java, Python, C# 등에서는 가비지 컬렉터(GC)가 힙 메모리를 자동으로 관리

- 불필요한 객체가 차지하는 힙 공간을 삭제하여 메모리 확보 및 누수 방지
- 프로그래머의 부담이 줄어드나, 실행 중 간헐적인 성능 저하 발생 가능

프로세스와 컨텍스트 스위칭(Context Switching)

컨텍스트 스위칭이란?

- CPU에 실행할 프로세스를 교체하는 기술

- PC와 SP만 바꿔주면, 프로세스 저장 상태를 기반으로 하여 실행 가능

- 실행 중지할 프로세스 정보를, 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
   => 다음 실행할 프로세스 정보는, 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실행

- 디스패치 (dispatch)란, ready 상태의 프로세스를 running 상태로 바꾸는 것

출처: https://www.fun-coding.org/post/contextswitching.html#gsc.tab=0

인터럽트와 컨텍스트 스위칭

- 프로세스 실행 중 인터럽트 발생 -> 현 프로세스 실행 중단 (이 때 PCB 업데이트) -> 인터럽트 처리 함수 실행 (운영체제)
  -> 현 프로세스 재실행 (PCB 정보를 CPU에 넣고 실행)

출처 - https://www.fun-coding.org/post/contextswitching.html#gsc.tab=0

*프로세스 제어 블록(PCB/Process Control Block)

- Process ID, Register(PC, SP등), Scheduling Info(Process State), Memory Info(메모리 사이즈 제한) 등의 정보 저장 

- 프로세스가 실행중인 상태를 캡쳐/구조화해서 저장하는 것

출처 - 온라인 강의

반응형