질문부터 해보겠다.
우선 시스템 프로그래밍을 왜 해야할까???
취직이 잘되니까?
ㅇㅋ
컴퓨터인의 소양이니까?
ㅇㅋ
코딩 좀 하니까?
ㅇㅋ
위의 말이 다 맞지만 진짜 시스템 프로그래밍을 배우는 이유는
우리가 프로그램을 만드는 과정을 알면 그 이유 또한 알게된다.
시작해보자
아래의 그림이 바로 Build Process이다.
우리가 무엇인가 만든다면 아래의 방식대로 짜게될 것이다.
** 여기서 초록색은 Development Tool을 말하고
** 하얀색은 사용자의 정의에 따라 있기도 없기도 하다.
이제 이유를 알겠나...?
"엥?? 모르겠는데? 내가 알고 있는 방법이랑 같은데??"
맞다.
우리는 이미 빌드 과정을 알고 있다.
하지만 우리는 그 활동을 시스템 위에서 하지 않는다. 우리가 하는 활동은 Application Programming이다.
즉, 우리는 시스템 위에서... Like 커널... 에서 와 같이 시스템 단계에서 프로그래밍을 하겠다는 것이다.
**사실 Application Programming과 포함관계다... 그래서 나누긴 싫지만 굳이 나누자면 그렇게 나눴다.
요약하자면
시스템 단계에서 프로그래밍을 함 -> 왜냐하면 더 나은 퍼포먼스를 끌어내기 위함
-> 하드웨어와의 긴밀하게 연결된 프로그래밍으로 최적화 및 주어진 환경에서 최대 효율 이끌어냄
더 쉽게 비유를 하자면
레고에 비유해보겠다.
1. 우리는 성을 쌓는 레고를 가지고 있다.
2. 하지만 어려워 하는 사람들을 위해 레고는 큼직 큼직한 덩어리로 이루어져있다.
3. 세부사항과 디테일에 신경쓰기 어렵다
4. 멀리서 보면 성 같지만 가까이 보면 그냥 별로다(만족도 하락)
5. 레고를 큼직한 덩어리가 아닌 내가 조그만 블럭들로 큰 구성품을 만든다.
6. 멀리서 봐도 성같고 가까이서 봐도 성같다.
7. 만족도 상승
-만족도 : 퍼포먼스(Performance)
-큰 블럭 조립 : Application Programmning
-작은 블럭으로 큰 블럭 조립: System Programming
-성 : 프로그램(Program)
**물론 Application Programming이 쉽다는 소리는 절대 아니다.
다음에는 시스템 프로그래밍에서 알아야할 기본 OS 지식들을 알아보자.
'컴퓨터(Computer Science) > 시스템 프로그래밍(System Programming)' 카테고리의 다른 글
세마포어,Semaphores 그 쓰임과 예시 (0) | 2020.12.09 |
---|---|
뮤텍스,Mutex (Mutual Exclusion) 쓰임과 예시 (0) | 2020.12.09 |
멀티스레드 환경에서의 동기화(Synchronization) (0) | 2020.12.09 |
시스템 프로그래밍을 위한 기본 OS 지식 (0) | 2020.12.08 |