안녕하세요~ 마무입니다! 이번 포스트에서 다룰 내용은 "프로그램 실행 과정"
또는 "프로그램과 프로세스 차이" 입니다.
이 포스트의 목적은 우리가 매우 간단히 프로그램을 실행하던 것(프로그램이 프로세스가 되는 과정)이 사실은 얼마나 많은 개념들과 운영체제의 상호호환을 통해 이루어지는지가
를 알려주는 것이 목적입니다.
궁극적인 목표로는 운영체제 독학 이겠지만요 ㅎㅎ
--목차--
1. 사실은 매우 복잡한 프로그램 실행 순서
----------
여기서 못 찾은 정보는
운영체제 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
에서 찾아보세요!
자~ 저희는 지금까지 매우 쉽게 윈도우 운영체제에서 프로그램 아이콘을 더블 클릭하여 프로그램을 실행해왔죠?
하지만 저희 눈에 보이는 이 단순한 더블클릭에 사실은 엄청나게 많은 작업이 압축되어
있다는 것을 아시나요?
이 아이콘 더블 클릭이 정말 눈에 보이지 않는 수 많은 기술들이 집약된 것이란 걸 말이죠
저희가 "바탕화면에 있는 인터넷 브라우저를 더블클릭 했을 때" 일어나는 과정을,
제가 최대한 어려운 용어를 배제해서 알려드리겠습니다!
1. 바탕화면에 있는 익스플로러 아이콘(바로가기)를 더블 클릭한다
2. 컴퓨터(운영체제)는 바로가기가 가리키는, 실제로 프로그램이 있는 위치로 가서 실제
"익스플로러 실행파일"을 실행한다
3. 운영체제(여기선 윈도우 10)가 디스크에 있는 프로그램인 "익스플로러"를 실행해,
익스플로러 프로그램 코드들을 메모리에 올린 '프로세스'로 만들고 "사용자 메모리 공간"에 배치한다
그리고 익스플로러 프로세스를 제어할 때 필요한 모든 정보들을 모아서
'PCB(Process Control Block)'란 것을 만든다음 "커널 메모리 공간"에 배치한다
4. 가장 최근에 실행한 익스플로러 프로세스의 "PCB"에는 '높은 우선순위'가 주어져 있을 것이고, 운영체제의 "프로세스 스케줄러"는 PCB에 적힌 우선순위에 맞춰 "준비 큐"에
배치한다
5.기존에 실행중이던 프로세스의 "시간 할당량"이 끝나면 바로 "프로세서(CPU)"를
'익스플로러 프로세스'에게 줘 실행한다
이렇게 프로세서(CPU)를 할당받아야지 비로소!!
이렇게 익스플로러가 시작이 되는 겁니다!
자... 일단 최대한 어려운 용어들은 최대한 배제하고, 프로그램이 프로세스가 되는 총 과정을 알려드렸는데요
이 과정을 보셨을 때 그냥 쏙쏙 이해가 되시는 분들이 있는가 하면,
안그러신 분들도 있을 겁니다
이해 못하시는게 사실 정상이에요~ 왜냐면 제가 최대한 쉽게 과정을 설명한거라
그렇게 보이지 않은 것 뿐이지
각 과정들을 세분화해서 보면
"운영체제의 기능" + "컴퓨터 하드웨어 구성" + "운영체제 처리시스템" + "C언어 지식" + "프로세스의 메모리 구조(스택, 힙, 데이터, 코드)" + "프로세스 관리"
"PCB(Process Control Block)의 구조" + "스케줄링 알고리즘" + "스케줄링" +"CPU개념" + 등등 많은 지식들이 필요하기 때문이죠
아니 그러면 도대체 왜 이렇게 많은 선행 지식들이 필요한 과정을 알려줬느냐?
음.. 그냥 일종의 흥미 돋우기랄까 ㅎㅎ 왜~ 새로운 스마트폰을 시연할 때도 먼저
새로 도입한 기능들이랑 성능을 보여준 다음 자세하게 설명해주잖아요~
일반 사람들한데 막 전문용어 쓰면서 스마트폰의 기능을 설명하면 지루해서 보겠습니까?
운영체제도 실생활에 어떻게 적용되는지 모른체, 막연하게 각 용어들이랑 지식들부터
배운다고 치면...
"프로세스란~ 프로그램이 실행되어 메모리에 올라가는 것이고~
프로세스는 스택, 힙, 데이터, 코드로 이루어져 있으며~ 프로세스가 생성될 때는
PCB가 함께 생성되며~ PCB에는 프로세스 식별자와 상태, 프로그램 카운터, 레지스터 저장영역, 프로세서 스케줄링 정보 등등~~ 이 있고~ ....."
우웱...
이렇게 지식먼저 배우려고 하니 실생활에 어떻게 사용되는지 모르니까, 바로 흥미가
푹 떨어져서 공부하기가 싫어지잖아요~
그래서 먼저 이 지식들이 현재 우리에게 어떻게 적용되어 사용되고 있는지를 보여준거라는
겁니다~~
자 그럼 당연히 저 많은 지식들을 이 한 포스트에서 모두 적을 순 없고요
이제부터 차례차례 배워갈 겁니다!
만약 프로그램 실행 순서를 완벽하게 이해한다? 그러면 당신은 이미 "운영체제"의 3분의 1 범위의 공부를 끝낸 겁니다~
이제 본격적으로 운영체제가 하는 역할과 관련된 지식들을 하나하나 배워가 봅시다!
도움이 되셨다면 좋아요, 따듯한 댓글 부탁합니다!
정말 정말 큰 힘이 되어 제가 포스트할 때 큰 힘을 줍니다!
또는 "프로그램과 프로세스 차이" 입니다.
이 포스트의 목적은 우리가 매우 간단히 프로그램을 실행하던 것(프로그램이 프로세스가 되는 과정)이 사실은 얼마나 많은 개념들과 운영체제의 상호호환을 통해 이루어지는지가
를 알려주는 것이 목적입니다.
궁극적인 목표로는 운영체제 독학 이겠지만요 ㅎㅎ
--목차--
1. 사실은 매우 복잡한 프로그램 실행 순서
----------
여기서 못 찾은 정보는
운영체제 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
에서 찾아보세요!
1. 프로그램 실행 순서
자~ 저희는 지금까지 매우 쉽게 윈도우 운영체제에서 프로그램 아이콘을 더블 클릭하여 프로그램을 실행해왔죠?
하지만 저희 눈에 보이는 이 단순한 더블클릭에 사실은 엄청나게 많은 작업이 압축되어
있다는 것을 아시나요?
이 아이콘 더블 클릭이 정말 눈에 보이지 않는 수 많은 기술들이 집약된 것이란 걸 말이죠
저희가 "바탕화면에 있는 인터넷 브라우저를 더블클릭 했을 때" 일어나는 과정을,
제가 최대한 어려운 용어를 배제해서 알려드리겠습니다!
1. 바탕화면에 있는 익스플로러 아이콘(바로가기)를 더블 클릭한다
2. 컴퓨터(운영체제)는 바로가기가 가리키는, 실제로 프로그램이 있는 위치로 가서 실제
"익스플로러 실행파일"을 실행한다
3. 운영체제(여기선 윈도우 10)가 디스크에 있는 프로그램인 "익스플로러"를 실행해,
익스플로러 프로그램 코드들을 메모리에 올린 '프로세스'로 만들고 "사용자 메모리 공간"에 배치한다
그리고 익스플로러 프로세스를 제어할 때 필요한 모든 정보들을 모아서
'PCB(Process Control Block)'란 것을 만든다음 "커널 메모리 공간"에 배치한다
4. 가장 최근에 실행한 익스플로러 프로세스의 "PCB"에는 '높은 우선순위'가 주어져 있을 것이고, 운영체제의 "프로세스 스케줄러"는 PCB에 적힌 우선순위에 맞춰 "준비 큐"에
배치한다
5.기존에 실행중이던 프로세스의 "시간 할당량"이 끝나면 바로 "프로세서(CPU)"를
'익스플로러 프로세스'에게 줘 실행한다
이렇게 프로세서(CPU)를 할당받아야지 비로소!!
이렇게 익스플로러가 시작이 되는 겁니다!
자... 일단 최대한 어려운 용어들은 최대한 배제하고, 프로그램이 프로세스가 되는 총 과정을 알려드렸는데요
이 과정을 보셨을 때 그냥 쏙쏙 이해가 되시는 분들이 있는가 하면,
안그러신 분들도 있을 겁니다
이해 못하시는게 사실 정상이에요~ 왜냐면 제가 최대한 쉽게 과정을 설명한거라
그렇게 보이지 않은 것 뿐이지
각 과정들을 세분화해서 보면
"운영체제의 기능" + "컴퓨터 하드웨어 구성" + "운영체제 처리시스템" + "C언어 지식" + "프로세스의 메모리 구조(스택, 힙, 데이터, 코드)" + "프로세스 관리"
"PCB(Process Control Block)의 구조" + "스케줄링 알고리즘" + "스케줄링" +"CPU개념" + 등등 많은 지식들이 필요하기 때문이죠
아니 그러면 도대체 왜 이렇게 많은 선행 지식들이 필요한 과정을 알려줬느냐?
음.. 그냥 일종의 흥미 돋우기랄까 ㅎㅎ 왜~ 새로운 스마트폰을 시연할 때도 먼저
새로 도입한 기능들이랑 성능을 보여준 다음 자세하게 설명해주잖아요~
일반 사람들한데 막 전문용어 쓰면서 스마트폰의 기능을 설명하면 지루해서 보겠습니까?
운영체제도 실생활에 어떻게 적용되는지 모른체, 막연하게 각 용어들이랑 지식들부터
배운다고 치면...
"프로세스란~ 프로그램이 실행되어 메모리에 올라가는 것이고~
프로세스는 스택, 힙, 데이터, 코드로 이루어져 있으며~ 프로세스가 생성될 때는
PCB가 함께 생성되며~ PCB에는 프로세스 식별자와 상태, 프로그램 카운터, 레지스터 저장영역, 프로세서 스케줄링 정보 등등~~ 이 있고~ ....."
우웱...
이렇게 지식먼저 배우려고 하니 실생활에 어떻게 사용되는지 모르니까, 바로 흥미가
푹 떨어져서 공부하기가 싫어지잖아요~
그래서 먼저 이 지식들이 현재 우리에게 어떻게 적용되어 사용되고 있는지를 보여준거라는
겁니다~~
자 그럼 당연히 저 많은 지식들을 이 한 포스트에서 모두 적을 순 없고요
이제부터 차례차례 배워갈 겁니다!
만약 프로그램 실행 순서를 완벽하게 이해한다? 그러면 당신은 이미 "운영체제"의 3분의 1 범위의 공부를 끝낸 겁니다~
이제 본격적으로 운영체제가 하는 역할과 관련된 지식들을 하나하나 배워가 봅시다!
도움이 되셨다면 좋아요, 따듯한 댓글 부탁합니다!
정말 정말 큰 힘이 되어 제가 포스트할 때 큰 힘을 줍니다!
감사합니다.
답글삭제감사합니다!
삭제안녕하세요 공부하다가 궁금한 점이 생겨 댓글남깁니다
답글삭제프로그램하나가 실행되기위해 메모리공간에 프로세스화되는건데
프로그램하나가 프로세스화될때 ‘여러개’의 프로세스로 나눠질 수 있나요?? 답변 미리 감사합니다:)!!
네 맞습니다. 예를 들자면 집 컴퓨터에서 브라우저 프로그램중 아무거나 새창 열기를 여러번 하신 후 작업관리자에서 브라우저(크롬, 익스플로러등등)을 보시면 옆에 숫자가 표현되며, 자세히 보기를 누를 경우 같은 프로세스가 여러 개가 있는 것을 볼 수 있습니다.
삭제앞으로의 내용이 궁금하네요
답글삭제이 포스트를 할 당시엔 OS 포스트를 많이 하려고 했는데, 현재 제가 많이 바쁘고, 다른 분야를 공부하느라 바쁘다보니 자세한 OS 포스트는 아무래도 못할 것 같아 죄송하네요 ㅠㅠ 그래도 OS에 대해서 잘 알려주는 다른 블로그들이 많이 있으니 더 궁금하시면 찾아보시는 걸 추천드립니다!
삭제