@ 그래서 Process를 정의하면 대체 뭐지요?
// 한 마디로, Program in execution 입니다.
> 조금 더 구체화 하자면, 특정 Process State(상태) 위에서 수행되는 execution Stream 입니다.
.. 조금 있다가 Process state나 execution stream에 대해서 살펴보도록 하겠습니다.
@ 우선 Program in execution 부터 살펴보겠습니다.
? Question 위의 개념에서 봤을 때 Program과 Process는 같을까요 다를까요?
// 조금 다르다는 것을 알 수 있습니다.
> 하지만, Program과 Process가연관이 있다는 것 또한 알 수 있습니다.
? Question Program과 Process는 어떤 차이를 보일까요?
// (다시 말해서) 어떤 프로그램이 수행 중인 프로그램이 되기 위해서는 어떠해야 할까요?
> Program이라고 하는 것은 저장 매체에 저장된 수동적인 코드 시퀀스 입니다. (게임 CD)
.. 어떤 것도 필요없이, Storage만 점유합니다.
> 이를 컴퓨터에서 수행하게 되면, 바로 Process가 되는 겁니다. (바탕화면에서 더블 클릭)
.. 이 때, OS는 CD에서 executable file을 읽어오게 됩니다.
.. 메인 메모리에 로드를 합니다
.. 프로그램에게 CPU를 제공합니다.
.. 이런 저런 자원이 필요하게 됩니다.
// 또 다른 차이는 무엇일까요?
> Program은 수동적인 매체입니다.
> Process는 능동적인 주체입니다.
.. 이는 Execution을 가지고 있다는 것을 의미하며
.. 이를 OS 전문 용어로 execution stream 혹은 execution Thread of control이라고 얘기합니다.
// Process라고 하는 것은 수행 중인 Program입니다.
@ 이런 정보를 기반으로 다음 정의를 확인하겠습니다.
@ Program state라는 것은 무엇일까요?
// 뭔가 그 프로그램이 수행되는데 기억해야 할 데이터나 정보들을 저장한(Collection) 것을 말합니다.
> 그 프로그램이 수행되는데에 영향을 줄 수 있는 정보
> 수행 완료 후에 영향을 받을 수 있는 정보
// 이런 모든 저장된 정보를 Program state라고 얘기합니다.
@ Program state에 어떤 것이 있는지 나열을 해 볼까요?
// Memory Context
> Code, Data(전역 변수, static 변수), Stack(지역 변수와 함수 호출에 필요한 내용), heap(동적 할당)
> 각각의 Segment가 필요합니다.
// H/W Context
> H/W register values (CPU, I/O)
// System Context
> Per-Process Kernel Information (커널이 관리하는 프로세스 정보)
> Process table, open file table, page table
@ 그럼 Execution Stream은 무엇일까요?
// 프로그램을 더블클릭하면 Process가 수행됩니다
> 이 Process가 지금까지 수행한 모든 명령어들의 순서(sequence)입니다.
@ 한마디로, Process라고 하는 것은 수행중인 Program이고
// Program을 실행시키기 위해서는 state가 필요하며,
> 그 state위에 Thread of Control(Execution Stream)이 존재한다는 것을 기억하시면 되겠습니다.
@ 이제 이렇게 정의를 알았기 때문에
// OS를 공부하는 저희는
> 저 Process라는 것이 OS 안에서 어떻게 구현이 되는 것인지 궁금할 필요가 있습니다.