@ 먼저 Process 개념을 공부해볼까요?
@ Computer System을 들여다보면 많은 일들이 일어납니다.
// Ex) interrupt, 자원 점유 등
// 각각 일들에 대해서, 원인과 결과를 귀속시킬 대상이 필요합니다.
> 그 대상이 바로 Process입니다. (잘 정리하기 위해서)
@ 첫 째, Process는 OS위에서 프로그램을 수행시키는 기본 주체입니다.
// 기본 주체라는 것은 runtime 시스템의 수행 주체라는 의미를 가집니다.
> 또한 이는 CPU나 여러가지 자원을 할당을 받는 주체이기도 합니다.
// 그렇기에, OS의 관점에서 Process는 가장 중요한 단위입니다.
@ 둘 째, 컴퓨터 안에서 많은 일들이 일어날 때 잘 쪼개서 정리를 해야합니다.
// 이러한 작업을 Decomposition이라고 부릅니다.
> 그리고 이 Decomposition의 한 유닛이 Process입니다.
@ 컴퓨터 S/W는 점점 복잡해지고 있습니다.
// (심지어는 S/W crisis라고도 얘기를 합니다.)
> 그렇기 때문에 우리같은 S/W공학자들은 그 복잡도를 해결할 수 잇는 무기를 가지고 있어야 합니다.
.. 그 중 하나는 Abstraction 입니다.
.. 다른 하나는 Decomposition 입니다.
@ Decomposition 무엇일까요?
// 어떤 커다란 S/W가 존재합니다. 이 상태로는 이해하기가 너무 힘듭니다.
> 그럼 자연스럽게 저희는 쪼개게 됩니다.
.. 그렇게 저희는 저희가 managable해서 분석하거나, 설계하기 쉬워질 때까지 조각을 냅니다.
// 이와 같이 복잡한 문제를 단순한 여러개의 문제로 나누어 처리하는 방법론입니다.
// 이를 적절히 잘 사용하면 S/W의 복잡성을 해소하는 것이 가능합니다.
@ 구현에 있어서도 조각 조각들을 따로 구현하고 같이 수행시킨다면 매우 편리할 것입니다.
// 한 마디로, 나누어진 조각이 궁극적으로, (프로그램) 수행의 단위가 되었을 때
> 이것들이 바로 Process가 되는 것입니다.
@ 그리고 OS는 이런 조각들을 독립적으로 수행시킬 수 있는 Unit으로
// Process라는 개념을 잘 지원하고 있습니다.
@ 이와 같이 Process는
// 수행의 주체
// 복잡한 것을 단순하게 만들어주는 주체
> 로 활용이 될 수 있습니다.