}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate on the chrome↓↓↓===***===>

2020년 2월 18일 화요일

프로그램 실행 과정 매우 쉽게!

안녕하세요~ 마무입니다! 이번 포스트에서 다룰 내용은 "프로그램 실행 과정"
또는 "프로그램과 프로세스 차이" 입니다.

이 포스트의 목적은 우리가 매우 간단히 프로그램을 실행하던 것(프로그램이 프로세스가 되는 과정)이 사실은 얼마나 많은 개념들과 운영체제의 상호호환을 통해 이루어지는지가
를 알려주는 것이 목적입니다.

궁극적인 목표로는 운영체제 독학 이겠지만요 ㅎㅎ


--목차--

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에 적힌 우선순위에 맞춰 "준비 큐"
배치한다


PCB 우선순위









5.기존에 실행중이던 프로세스의 "시간 할당량"이 끝나면 바로 "프로세서(CPU)"
'익스플로러 프로세스'에게 줘 실행한다







이렇게 프로세서(CPU)를 할당받아야지 비로소!!





이렇게 익스플로러가 시작이 되는 겁니다!




자... 일단 최대한 어려운 용어들은 최대한 배제하고, 프로그램이 프로세스가 되는 총 과정을 알려드렸는데요

이 과정을 보셨을 때 그냥 쏙쏙 이해가 되시는 분들이 있는가 하면,
안그러신 분들도 있을 겁니다

이해 못하시는게 사실 정상이에요~ 왜냐면 제가 최대한 쉽게 과정을 설명한거라
그렇게 보이지 않은 것 뿐이지

각 과정들을 세분화해서 보면 
"운영체제의 기능" + "컴퓨터 하드웨어 구성" + "운영체제 처리시스템" +  "C언어 지식" + "프로세스의 메모리 구조(스택, 힙, 데이터, 코드)" + "프로세스 관리"
"PCB(Process Control Block)의 구조" + "스케줄링 알고리즘" + "스케줄링" +"CPU개념" + 등등 많은 지식들이 필요하기 때문이죠

아니 그러면 도대체 왜 이렇게 많은 선행 지식들이 필요한 과정을 알려줬느냐?

음.. 그냥 일종의 흥미 돋우기랄까 ㅎㅎ 왜~ 새로운 스마트폰을 시연할 때도 먼저
새로 도입한 기능들이랑 성능을 보여준 다음 자세하게 설명해주잖아요~

일반 사람들한데 막 전문용어 쓰면서 스마트폰의 기능을 설명하면 지루해서 보겠습니까?

운영체제도 실생활에 어떻게 적용되는지 모른체, 막연하게 각 용어들이랑 지식들부터
배운다고 치면...

"프로세스란~ 프로그램이 실행되어 메모리에 올라가는 것이고~ 
프로세스는 스택, 힙, 데이터, 코드로 이루어져 있으며~ 프로세스가 생성될 때는
PCB가 함께 생성되며~ PCB에는 프로세스 식별자와 상태, 프로그램 카운터, 레지스터 저장영역, 프로세서 스케줄링 정보 등등~~ 이 있고~ ....."


우웱...

이렇게 지식먼저 배우려고 하니 실생활에 어떻게 사용되는지 모르니까, 바로 흥미가
푹 떨어져서 공부하기가 싫어지잖아요~   

그래서 먼저 이 지식들이 현재 우리에게 어떻게 적용되어 사용되고 있는지를 보여준거라는
겁니다~~

자 그럼 당연히 저 많은 지식들을 이 한 포스트에서 모두 적을 순 없고요
이제부터 차례차례 배워갈 겁니다!

만약 프로그램 실행 순서를 완벽하게 이해한다? 그러면 당신은 이미 "운영체제"의 3분의 1 범위의 공부를 끝낸 겁니다~

이제 본격적으로 운영체제가 하는 역할과 관련된 지식들을 하나하나 배워가 봅시다!

도움이 되셨다면 좋아요, 따듯한 댓글 부탁합니다!
정말 정말 큰 힘이 되어 제가 포스트할 때 큰 힘을 줍니다!





댓글 6개:

  1. 안녕하세요 공부하다가 궁금한 점이 생겨 댓글남깁니다
    프로그램하나가 실행되기위해 메모리공간에 프로세스화되는건데
    프로그램하나가 프로세스화될때 ‘여러개’의 프로세스로 나눠질 수 있나요?? 답변 미리 감사합니다:)!!

    답글삭제
    답글
    1. 네 맞습니다. 예를 들자면 집 컴퓨터에서 브라우저 프로그램중 아무거나 새창 열기를 여러번 하신 후 작업관리자에서 브라우저(크롬, 익스플로러등등)을 보시면 옆에 숫자가 표현되며, 자세히 보기를 누를 경우 같은 프로세스가 여러 개가 있는 것을 볼 수 있습니다.

      삭제
  2. 앞으로의 내용이 궁금하네요

    답글삭제
    답글
    1. 이 포스트를 할 당시엔 OS 포스트를 많이 하려고 했는데, 현재 제가 많이 바쁘고, 다른 분야를 공부하느라 바쁘다보니 자세한 OS 포스트는 아무래도 못할 것 같아 죄송하네요 ㅠㅠ 그래도 OS에 대해서 잘 알려주는 다른 블로그들이 많이 있으니 더 궁금하시면 찾아보시는 걸 추천드립니다!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!

* 바쁜 개인 일정으로 댓글 답변이 많이 느립니다 *