하드웨어 < 드라이버 < 커널 < 시스템 콜 < 사용자UI < 응용프로그램
CODE / DATA / HEAP / STACK
ex)
var a = 1;
=> DATA에 저장
var b = { c: 1 };
=> STACK에 변수 b가 저장 - c에대한 HEAP주소만 저장
=> HEAP에 변수 c가 저장됨 - 참조형 변수
컴퓨터를 사용하다보면 여러개의 프로그램이 동시에 실행되는것 처럼 보인다
그렇다면 운영체제는 어떻게 동시에 프로그램을 실행시키는 것일까?
사실 엄밀히 말하면 운영체제는 여러개의 프로그램을 동시에 실행시키지 못한다
CPU는 한번에 하나의 프로세스만 실행 시킬 수 있는데,
시분할 시스템(Time Sharing)을 통해 마치 동시에 실행하는 것 처럼 보일 수 있게 해준다
시분할 시스템 (Time Sharing System)
사용자가 사용하는 시스템에서 컴퓨터(OS)가 사용자들의 프로그램을 번갈아가며 처리해주는 방법
프로세스가 변경될 때 결국 프로세스가 갖고있는 각각의 Context(문맥)가 변경되는것으로
프로세스의 Context는 커널상 context, 프로세스 주소공간(메모리), 하드웨어 context로 존재하며
운영체제에서는 사용자의 액션에따라 해당 프로세스의 Context를 변경해준다(Context Switching)