Definition: An instance of a running program
Process has a context (state: 각 레지스터는 어떻게 세팅되어 있으며 메모리에는 뭐가 저장되어 있는지 등) for the program execution
Process provides each program whith two key abstractions
-Logical control flow: Each process seems to have exclusive use of the CPU. Provided by kernel mechanism called context switching
-Private address space: Each process seems to have exclusive use of memory. Provided by kernel mechanism called virtual memory

As if each process has dedicated pair of CPU and memory.
Processes are managed by a shared chunk of memory-resident OS code called kernel.
Control flow passed from one process to another via a context switch
Single processor(CPU) executes multiple processes concurrently.

system call을 발생시키는 건 요청을 보내는 것. 파일을 읽고 싶다거나. 그럼 kernel code로 전환된다. kernel code로 전환된 김에 지금이 context switching을 하기에 적절한 타이밍인지 implicit하게 확인한다. 지금 실행 중인 process A가 충분히 오래 실행됐다고 판단하면 다른 프로세스로 context switch를 한다. 그래서 굳이 context switch를 하라는 코드를 주지 않아도 된다.
time interrupt에 의한 context switch: 예를 들어 system call 없이 무한 루프를 도는 프로그램을 돌리면 커널이 control flow를 강제로 가져와서 context switch를 한다.
글을 읽는 동안 많은 걸 배울 수 있었습니다.