용어 정리
1. 프로세스 : 운영체제에 의해 메모리 공간을 할당받아 CPU에서 실행/제어
되고 있는 프로그램
2. 스케줄러 : 어떤 프로세스에게 자원을 할당할지 순서와 방법을 결정하는
운영체제 커널의 모듈을 지칭한다.
3. 레지스터 : N-bit의 정보를 저장할 수 있는 고속도의 기억장치
cpu에서 외부 요청을 처리하는데 필요한 데이터를 일시적으로 저장하고 사용되는
고속도의 기억장치 이다.
4. 커널 : 운영체제도 소프트웨어 이기 때문에 메모리에 올라가게 된다.
이 때, 모든 운영체제 프로그램을 다 올리는 것이 아닌 필요한 부분만을 올려둔다
메모리에 상주하는 운영체제의 부분을 커널이라 한다.
5. PCB(Process Control Block) : 특정한 프로세스를 관리할 필요가 있는
정보를 포함하는 운영체제 커널의 자료구조 이다.
해당 정보에는 프로세스 번호, 포인터, 프로세스 상태, 레지스터, PC 등이 있다
(이해 안되는 용어는 조금 더 조사 해서 공부하자)
1.Context Switching 이란?
스케줄러가 기존 실행 프로세스를 우선순위 때문에 미루고 새 프로세스로 교체해야할 때, 상태 값을 교체하는 작업이다.
(CPU에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것)
*cf) context : cpu,메모리상에서의 프로세스와 스레드의 상태
2.Context Switching 언제 발생하는가?
3.Context Switching 누구에 의해 진행되는가?
OS Kernel에 의해 진행된다. (Context Switching 의 발생주체를 의미하는 것이 아니다.)
*cf) OS Kernel 이란? 컴퓨터에 존재하는 여러 리소스 (cpu, 메모리 등)들을 관리 감독한다. (추가적으로 공부해보자..)
같은 프로세스 내의 스레드들 간의 스위칭 (thread context switching)
다른 프로세스간의 스위칭 (process context switching)
*공통점
1. 커널 모드에서 실행
( 컴퓨터 내의 리소스에 접근하기 위해서는 프로세스가 직접 리소스에
접근하는 것이 아닌, 통제권을 운영체제의 커널로 넘어간 후에 커널을 통해 접근하게 된다.)
2. CPU의 레지스터 상태를 교체
(CPU에서 실행되고 있던 프로세스 or 스레드의 상태를 저장한 후에,
새로 실행될 프로세스의 레지스터 상태로 변경한다.)
*차이점
1. 다른 프로세스 간의 스위칭은 가상 메모리 주소 관련 처리를 추가로 수행
-> (MMU 수정 & TLB 비우기 -> 용어 및 역할 공부 필요)
(같은 프로세스 내의 스레드들은 메모리 영역을 공유하기 때문에, 메모리 관련
추가 기능을 수행하지 않아도 된다.)
#cf) 쓰레드 컨텍스트 스위칭이 더 빠른 이유?
스레드 컨텍스트 스위칭은 같은 부모스레드를 갖기 때문에, stack을 제외한 다른 공유자원을 사용하므로, 프로세스 컨텍스트 스위칭시 더 빠른 이점을 갖고 있다.
프로세스 컨텍스트 스위칭의 경우 , 메모리 주소 관련 처리를 해야하기 때문에 상대적으로 느리다.
컨텍스트 스위칭이 자주 일어나는 것은 좋지 않다. 순수한 오버헤드이다.(cpu의 자원을 잡아먹는 일이다)