HPC Lab. KOREATECH 채널 OS 강의를 듣고 정리
Context Switching의 비용은 운영체제 성능에 큰 영향을 준다. 따라서 불필요한 Context Switching은 줄여야 하는데, 대표적으로 스레드
의 사용이 있다.
차후에 스레드에 대하여 알아보기로 한다.
프로세스
작업
시스템(커널) 프로세스
사용자 프로세스
독립 프로세스
협력 프로세스
PCB 정보는 운영체제마다 다르다.
PCB 참조 및 갱신 속도는 운영체제 성능의 중요한 요소이다.
프로세스는 시스템에 등록된 후에 여러가지 상태를 거치면서 작업을 수행한다.
상태는 자원 간의 상호작용에 의해 결정된다.
작업이 커널에 등록된 상태
PCB가 할당되고 프로세스가 생성된다
커널은 가용 메모리 공간이 있으면 프로세스를 Ready 상태로 전환하고, 없으면 Suspended ready 상태로 전환한다.
프로세서(CPU) 외에 다른 모든 자원을 할당받은 상태
즉시 실행 가능한 상태
CPU를 할당받아 Dispatch(Schedule)되면 Running State로 전환된다.
프로세서와 필요한 자원을 모두 할당받은 상태
프로세서 스케줄링이나 시분할로 인한 Preemption으로 프로세서를 빼앗기면 Ready State로 전환된다.
I/O 등의 자원의 할당을 요청하는 Block의 경우 Asleep State로 전환된다.
Block의 원인이 된 자원을 기다리는 상태
System call에 의해 자원을 할당받아 Wake-up이 되면 Ready State로 돌아간다.
Running State로 바로 돌아가지 않는다.
Asleep State에서 메모리를 빼앗긴 경우 Suspended Blocked State로 전환된다.
메모리를 할당받지 못한 상태
메모리 이미지를 프로그램 정보 저장을 위한 파일 시스템인 Swap Device에 보관한다.
Swap Device에 메모리 이미지를 저장하는 것을 Swap-out, 메모리를 할당받아 이미지를 다시 메모리에 올리는 것을 Swap-in이라고 한다.
프로세스 수행이 끝난 상태
모든 자원을 반납하고 커널 내에 일부 PCB정보만 남아 있다.
후에 비슷한 작업이 들어왔을 때 용이하게 관리할 수 있도록 일부 정보를 남겨 놓는다. 죽었는데 죽지 않은 것 같아서 Zombie.
예상치 못한, 외부에서 발생한 이벤트
나(커널)는 카페에서 공부(Process x)를 한다.
친구가 갑자기 나를 부른다. (인터럽트 발생)
보던 페이지의 내용을 확인하고 책을 덮는다. (프로세스 중단과 Context Saving)
왜 부르냐고 물어보니 배가 고프다고 한다. (인터럽트 핸들링)
옆에 있는 당근 케이크 접시를 내어준다. (인터럽트 서비스)
흐름이 끊긴 김에 폰을 꺼내 웹툰(Ready State인 Process y)을 전에 보던 14화부터 다시 본다. (Context Restoring)
Context
프로세스와 관련된 정보들의 집합
Context Saving
현재 프로세스의 Register Context를 저장하는 작업
Context Restoring
Register Context를 프로세스로 복구시키는 작업
Context Switching
실행중인 프로세스의 Context를 저장하고 앞으로 실행할 프로세스의 Context를 복구하는 것
(커널의 개입을 통해서 이루어진다.)
Context Switching에 소요되는 비용으로 운영체제마다 다르고, 성능에 큰 영향을 준다.
따라서 스레드 사용하는 등 불필요한 Context Switching을 줄이는 것이 중요하다.