* 컨텍스트(context) : 프로세스/스레드의 상태를 말한다. CPU, 메모리 상태 등등
* 하나의 프로세스는 하나의 스레드를 갖는다. 스레드가 cpu/코어의 실행되는 기본단위이다.
* 커널(kernel) : OS 운영체제 에서도 가장 핵심적인 기능을 담당하는 존재, 각종 리소스를 관리/감독하는 역할
커널모드에서 실행되게 된다.* 커널 모드 : 프로세스에서 커널로 통제권이 넘어가서 커널에 의해 실행되는 것을 커널 모드라고 한다.(프로세스1이 실행되다가 하드웨어와 밀접한 일들이나 여러 리소스 들을 다뤄야하는 상황이 오면 프로세스가 직접 리소스에 접근하는것이 아니라 운영체제를 통해서 접근하게 되는데 이 운영체제도 커널을 통해서 접근을 하게 된다.)
* cpu 안에는 여러가지 레지스터가 있다.
* 레지스터 : 각종 명령어들을 수행하기 위해 필요한 여러 데이터들을 저장하는 존재이다.
설명 * 프로세스1이 cpu에서 실행할 동안 레지스터 안에 여러가지 값들이 계속 바뀌면서 실행 했을 것이다. 그러다가 다른 프로세스2가 실행을 하게 되면 cpu에 실행되고 있던 프로세스1에 레지스터 상태들을 어딘가 저장을 하고 p2를 실행하는것이다.
레지스터 상태를 어딘가에 저장하는 이유는 p2이후에 p1이 실행 됬을 때 어디까지 실행됬는지 실행정보, 상태정보를 알아야 다시 이어서 실행을 할 수 있기 때문이다.
프로세스 컨텍스트 스위칭은 가상(virtual) 메모리 주소 관련 처리를 추가로 수행해 주어야한다. 추가 설명
프로세스1 에서 프로세스2로 컨텍스트 스위칭이 발생했을 때 메모리 처리 부분에서 MMU(Memory Management Unit)이 프로세스2 의 메모리 공간을 바라 보게 한다. TLB(Translation Lookaside Buffe)(가상의 메모리 주소와 실제 메모리 주소의 맵핑정보를 담고 있다)를 완전히 비워주게 된다. 비워줘야 프로세스2가 로딩 됬을 때 자신의 메모리 영역에 접근할 수 있게 된다.
이 작업을 안해주면 P2가 실행될때 P1의 메모리 주소 영역에 접근할 수 있게 되기 때문에 이 작업이 중요하다.
cpu 안에는 기본적으로 cache가 있다.
_ * 캐쉬 : cpu와 메모리가 데이터를 주고 받는데 항상 메모리에 접근하는것 보다 자주 쓸거 같은것들은 cache 에 올려놓고 메모리에 가는 대신에 캐쉬에 있는 정보를 사용하겠다는 의미이다. 그럼 메모리까지 가지 않아도 cpu 에 붙어있는 캐쉬로 부터 데이터를 읽어오면 되니까 좀 더 빠르다. 이렇게 캐쉬 정책을 펴게 되는데 문제는 컨텍스트 스위칭이 발생되면 서로 다른 데이터이기 때문에 캐쉬에 있는 값들이 오염이 된다. 처리속도가 좀 더 떨어짐으로 성능에 안좋은 영향을 끼친다.