✅ 해당 글은 저의 주관이 가득 섞인 내용입니다. 특히 질문한 이유, 면접관의 의도 등은 개인적인 생각임을 밝힙니다.
(0) 시간이 없어서 죄송해요 전체 글을 못읽겠어요. 빠르게 원하는 것만 가져갈게요!
- 프로그램은 정적인 개체이고, 프로세스는 동적인 개체입니다. 그리고 이는 운영체제(Operation System)의 제어를 받고 있냐 아니냐의 차이입니다.
- 프로그램은 HDD또는 SSD에 저장되어 있는 실행 파일(.exe)입니다. 해당 실행 파일이 메모리에 적재되어 운영체제의 제어를 받고 있는 상태가 되면 프로세스라고 합니다.
- 개발자가 작성한 코드를 컴파일해 기계어로 실행파일을 만든것이 프로그램입니다. 해당 프로그램을 실행시켜 운영체제의 제어를 받고 있는 상태를 프로세스라고 합니다.
(1) 질문한 이유가 뭐예요?
제가 생각한 질문한 이유는 "당신은 프로그램이 어떻게 만들어지는지 아시나요? 그 프로그램이 어떻게 프로세스가 되는지 아시나요?" 로 정리할 수 있을것 같습니다.
정말로 면접관은 둘의 차이만을 물어보는 것은 아니라고 생각합니다. 왜냐하면, 그런 이유는 누구나 달달 외우면 답변을 쉽게 내놓을 수 있습니다. 아래와 처럼 말이죠.
📌 프로그램은 정적인 개체입니다. 컴파일한 코드와 초기화 전역변수 문자열과 문자열 상수 등 정적 데이터를 포함하고 있습니다. 프로세스는 동적인 개체이고, 실행중인 프로그램입니다. 디스크에 있던 프로그램을 메모리에 적재해 운영체제의 제어를 받는 상태입니다.
위의 답변으로 면접관에게 당당히 얘기할 수 있습니다. 왜냐하면, 책에는 그렇게 적혀있고 우리는 대학교 시험기간동안 제출한 답변에 저 답변이 정답이였습니다. 하지만 우리는 조금 더 깊게 생각을 해볼 필요가 있습니다.
프로그램은 어떻게 만들어질까요? 이 부분은 불가피하게 단편적으로 설명을 해야합니다. 과정이 굉장히 길고 복잡하기 때문입니다. 엄청 간략하게 생략을 해보겠습니다.
개발자인 여러분이 작성한 코드를 컴파일 과정을 거쳐 기계어로 된 실행파일을 만든다면? 그것이 프로그램이 됩니다. 즉, 프로그램은 개발자가 작성한 코드를 컴파일러를 통해 기계어로 번역시킨 상태를 의미합니다.
해당 프로그램은 어디에 저장되어 있을까요? 컴퓨터의 디스크(HDD,SSD)에 저장이 되어 있을 것입니다. 그렇다면 프로세스로 만들기 위해서 실행파일을 동작시켜야합니다.
그렇다면? 프로세스는 우리가 만든 실행파일을 동작시킨 상태입니다. 그러니 정적 개체를 실행시켜 운영체제의 제어를 받게 된 상태를 프로세스라고 부릅니다. 즉, 프로세스는 운영체제의 제어를 받고 있는 상태라고 설명할 수 있습니다.
위의 글을 정리를 해서 답변을 하면 됩니다.
📌개발자가 작성한 코드를 컴파일해 기계어로 실행파일을 만든것이 프로그램입니다. 해당 프로그램을 실행시켜 운영체제의 제어를 받고 있는 상태를 프로세스라고 합니다.
"굳이 정적인 개체이고, 프로세스는 동적인 개체입니다" 라고 말을 하지 않아도, 면접관은 우리보다 똑똑하고 컴퓨터에 관련된 지식을 깊게 이해하고 있습니다. 그렇기에 면접시 우리는 깊게 생각을 해봤다는 것을 표현해야합니다.
저는 위 내용처럼 정리해서 해당 질문의 의도를 파악해 대답을 하려고 노력합니다. 물론, 더욱 깊게 파고 들면 다른 답변이 좋은 답변의 예시가 될 수 있겠습니다.
(2) 해당 질문을 한 면접관의 의도는 무엇일까요?
운영체제에 관한 질문의 시작을 연것이라고 생각합니다. 왜냐하면, 프로세스란 운영체제의 제어를 받고 있는 상태라고 우리는 답변을 했습니다. 그렇다면 우리는 운영체제가 무엇인지 정확하게 알고 있어야 하지 않겠습니까? 여기에서 운영체제에 대해서 알지 못하는데 운영체제의 제어를 받고 있습니다! 라고 당당히 얘기할 순 없겠죠?
다음 씨면기작은 🔜<운영체제란 무엇인지 아는대로 설명해주세요> 입니다.
다다음 씨면기작은 🔜<프로세스의 메모리에 대해서 설명해주세요> 입니다.
'CS > 운영체제' 카테고리의 다른 글
[씨면기작] 프로세스의 메모리 구조에 대해서 설명해주세요. (0) | 2024.04.07 |
---|---|
[씨면기작] 운영체제란 무엇인지 아는대로 설명해주세요 (0) | 2024.04.03 |
(1) 운영체제에 관해서_ (0) | 2022.05.04 |
동기화(Syncronization)를 왜 해야하는데!? (0) | 2022.02.08 |
멀티 태스킹과 스레딩과 프로세싱[Multi tasking & Threading & Processing] (0) | 2022.02.08 |