}

블로그 소개


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

프로필

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

팔로어

다른 페이지로 이동


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

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


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

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

2020년 4월 18일 토요일

데몬 서비스, 포그라운드 백그라운드 차이 자세히!

안녕하세요 마무입니다. 오늘은 "프로세스란?", "리눅스 프로세스", "데몬 서비스 차이", "포그라운드 백그라운드 프로세스",에 대해서 포스트 하겠습니다!

오늘 이 포스트를 다 읽으시면

프로세스란, 데몬과 서비스, 포그라운드 백그라운드 프로세스

에 대해서 확실하게 아시게 되실겁니다!

--목차--

1. 프로세스(Process)란?

2. 포그라운드, 백그라운드 프로세스란?(fg, bg)

3. 데몬(daemon)과 서비스(Service), 웹과 웹서버 브라우저란 가볍게 
i) 데몬의 유래와 왜 서버프로그램들이 데몬이라 불리는가, 파일이름 끝에 붙은 "d"의미
ii) 서비스란?
iii) 데몬과 서비스의 차이

---------

여기서 못 찾은 정보는
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
운영체제 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
에서 찾아보세요!




1. 프로세스란?



프로세스(Process)란 무엇일까요?

"프로세스(Process)"란 디스크(보조기억장치)에 있던 프로그램을 사용하기 위해 운영체제가 메모리(주기억장치)로 옮긴 것을 의미합니다.

"Process"의 영어단어 뜻 "어떤 결과를 얻기 위해 하는 행동들"이란 뜻처럼
"프로세스"는 "어떤 결과를 위해 프로그램을 실행하는 행동"을 의미하는 것이죠.

그런데 생각해보면 저희들은 공부를 하던, 작업을 하던 무언가를 동시에 여러개를 하려면 책상과 같은 작업대가 있어야 하지 않았습니까? 책상 없이 일어서서 책을 보며, 필기하고, 동시에 노트북을 사용하는 건 거의 불가능에 가깝죠.

마찬가지로 컴퓨터도 동시에 여러가지를 하려면 작업공간이 있어야 합니다.(현재 제 컴퓨터만 해도, 컴퓨터 카카오톡, 크롬 브라우저, 익스플로러 브라우저, VMware, 자료 폴더, 메모장, 백신프로그램, NVIDIA  Geforce 그래픽 드라이버, 로지텍 마우스 드라이버 등등 많은
프로그램들을 동시에 사용하고 있죠)

하지만 요즘 컴퓨터는 100% 여러가지의 작업을 동시에 하죠(정확히 말하자면 동시는 아니지만 저희 눈엔 그렇게 보이잖아요?) 그렇기에 필수적으로 컴퓨터에게 필요한 작업대를 우린 "메모리"라고 부릅니다.

그러면 디스크(보조기억장치)는 뭘까요? 디스크 여러 책(프로그램)들이나 물건들을 보관하고있는 "책장"이나 "사물함"이라 볼 수 있겠죠!

그렇기에 우리가 메모리 크기는 크면 클수록 좋다고 하는 이유가, "저희"가 책상이 넓으면 여러 물건들을 한번에 많이 올릴 수 있고 작업하기도 편한 것처럼"컴퓨터"도 마찬가지로 메모리가 크면 여러 프로그램들을 더 많이 동시에 구동시킬 수 있고 사용하기 편하기 때문입니다.




이 그림처럼 말이죠! 메모리란 작업대 위에 "OS(운영체제)"가 프로세스를 배치하여 사용한다는 것을 좀 더 이해하기 쉽게 하려고 저렇게 귀엽게 표현해봤습니다 ㅎㅎ

자 여기까지 "프로세스"가 무엇인지에 대해서 알아봤지만 사실 프로세스는 저희 눈에 보이는 프로세스보이지 않는 프로세스로 나뉘어 있습니다.

제가 위에서 현재 제 컴퓨터에서 실행중이라는 프로세스들이라며 예시를 들었던 것들이 혹시 기억나시나요?

컴퓨터 카카오톡, 크롬 브라우저, 익스플로러 브라우저, VMware, 자료 폴더, 메모장, 백신프로그램, NVIDIA  Geforce 그래픽 드라이버, 로지텍 마우스 드라이버  이렇게 말했었죠.

이 프로세스들 중에서 백신 프로그램, NVIDIA Geforce 그래픽 드라이버, 로지텍 마우스 드라이버란 프로세스들은"눈에 보이지 않는 프로세스" 이고 나머지 카카오톡, 크롬 브라우저, 익스플로러 브라우저, VMware, 자료 폴더, 메모장  프로세스 들은 "눈에 보이는 프로세스" 입니다.




2. 포그라운드, 백그라운드 프로세스란




눈에 보인다는 것안 보인다는 것이 사실 말로만 들어선 확실하게 와닿지 않으시죠?

"눈에 보이는 프로세스"




이렇게 네이버 사이트나






이런 메모장과 같이 막 실행한 프로그램처럼, 모니터 화면에 보이는 프로세스나






오른쪽 상단의 "_" 모양의 "최소화"를 눌러서 이렇게 작업표시줄로 내린 프로세스를
말합니다.

"최소화" 했든 안 했든, 둘 다 모니터에서 볼 수 있잖아요? 이렇듯 마치 우리가 눈으로 바로 볼 수 있게끔 "전방(Foreground)"에 있다고 해서 이런 "눈에 보이는 프로세스를" 우린
"포그라운드(Forground) 프로세스"라고 합니다.

그리고 모든 운영체제에선 기본적으로 방금 막 실행한 프로세스는 보통 포그라운드로
됩니다. 그렇기에 실행한 직후에 바로 화면에 프로그램 창이 나오는 것이죠.

자 포그라운드에 대해서 알았으니 "눈에 안 보이는 프로세스"란 건 말 안해도 대충 감이 오시지 않나요?

그렇습니다!






이렇게 오른쪽 하단의 "^"모양의 숨겨진 아이콘 표시를 눌러야 하거나





이렇게 "Ctrl + Alt + Del"를 눌러서 나오는 작업관리자를 통해 봐야하는 프로세스를 우리는 "눈에 보이진 않지만 뒷 지역, 배경(Background)에서 묵묵히 할 일 하는 프로세스라고"
하여 "백그라운드 프로세스(Background Process)"라고 합니다.

"백그라운드" "포그라운드" 프로세스 개념은 모든 운영체제에서 사용되는 개념으로,
당연히~ 저희가 지금 공부하고 있는 리눅스에서도 사용되고 있는 개념입니다!

'어 그러면 위 목차에서 설명한 fg랑 bg란 무엇인가요?'

그 fg와 bg는 각각 "foreground""background"의 약어, "fg", "bg"를 의미합니다.
그리고 이 "fg""bg"리눅스에서 프로세스를 포그라운드나 백그라운드로 실행되도록 만드는 명령어이기도 하죠.

"fg""bg" 명령어 사용법은 다음에 프로세스 관련 명령어들 정리 포스트에서 같이 다루도록 하겠습니다.




3. 데몬 서비스란? 그리고 차이점



유닉스/리눅스를 사용해보신 분들은 보통 "데몬(daemon)"이라는 용어를 들어본 적이 있을겁니다.

그리고 윈도우 운영체제를 사용해본 적 있는 사람들은(사실상 99%) "서비스(Service)"라는 것을 들어보셨을거고요.

각각 둘이 뭔지도 모르는 분들도 있을 것이고, 둘의 개념이 헷갈리시는 분들도 있을겁니다.

일단 결론부터 말하자면 "데몬(daemon)""서비스(service)" 둘 다 "부팅 때 자동으로 켜지고 계속 백그라운드에서 실행되는 프로세스"라는 의미로 위에서 유닉스/리눅스에선 데몬, 윈도우에선 "서비스"라고 했었지만, 요즘은 거의 99% 같은 의미로 양측(유닉/리눅스와 윈도우)모두에서 사용됩니다.

물론 이렇게만 말하면 와닿지가 않으실테니 좀 더 자세히 말해보겠습니다.

i)데몬의 유래와 왜 서버프로그램들이 데몬이라 불리는가



먼저 "데몬(Daemon)" "정령, 악마" 이런 뜻이 있는 단어인데요, 이 용어는 유닉스 운영체제에서 "정령처럼" 눈에 보이지 않게 곁에서(백그라운드에서) 계속 도와준다(실행해준다)라는 의미"부팅 때 자동으로 켜져 계속 실행되는 백그라운드 프로세스"를 가리키는 말이 됐습니다.

그리고 당연히 유닉스에서 사용하던 용어니, 당연히 유닉스 이후에 만들어진 리눅스도 이 용어를 사용하게 됐죠!

여기서 여러분들도 눈치를 챘겠지만, 백그라운드 프로세스라는 점에서 "데몬(Daemon)""백그라운드 프로세스" 범주안에 들어갑니다.

하지만 어디까지나 "데몬""백그라운드 프로세스"의 범주안에 속하는 것으로, 둘이 같다고 할 순 없습니다.

예를 들어, 저희가 리눅스 터미널에서
"yum install -y mariadb &(명령어를 백그라운드로 실행하라는 기호)"
이렇게 실행하면, 백그라운드로 "mariadb"란 프로그램을 다운받거든요?

이렇게 "백그라운드에서 mariadb를 다운받는 프로세스"는  "백그라운드 프로세스"라곤 할 수 있지만, "mariadb" 다운이 끝나면 사라지는 프로세스라서 "계속 실행되는 백그라운드 프로세스"라는 의미인 "데몬(Daemon)"이라 할 수 없는 겁니다.

그러니 "백그라운드 프로세스"와 "데몬"을 같다고 생각하시면 안 됩니다~

이렇듯 "데몬(Deamon)""부팅 때 자동으로 켜져 백그라운드에서 계속 실행되는"라는 뜻이기 때문에, 꺼지지 않고 실시간으로 클라이언트와 통신을 계속 해야하는 "서버 프로세스"들이 주로 "데몬"이라고 불립니다.

저희들은 리눅스마스터 1급 범위에서 공부를 할 때 웹(www)서버를 운영을 하게 될텐데, 이 때 사용하는 웹서버 프로그램은 "아파치(aphache)"라고 있습니다.

저희는 이 "아파치" 웹서버 프로그램을 실행시켜 클라이언트가 브라우저를 통해 웹서버에 접속할 수 있는 겁니다.

무슨 소리냐고요?  사실 컴퓨터 비전공자가 생각하는 "인터넷"이라는 건 "브라우저 프로그램(익스플로러, 엣지, 크롬, 오페라, 파이어뿩스 등등)"을 통해 서버와 통신하는 행위였다는 겁니다.

그래서 서버에서 "웹서버 프로그램"실행시키고 있어야 사람들(클라이언트)들이 브라우저를 통해 단순히 서버이름(네이버든, 구글이든, 롤 사이트든)을 쳐서 서버에 접속할 수 있는거죠.

이 부분에 좀 더 자세히 설명해주고 싶지만... 그럼 본 포스트 취지를 벗어나는 것 같아서
다음에 네트워크를 총망라하는 포스트나 리눅스 1급 범위에서 다시 다뤄보겠습니다.
"네트워크 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_15.html"

어쨌든 이렇게 서버에 사용되는 항상 실행되어야 하는 프로그램들은 이런 특징 때문에 "데몬"이라고 불린다라는 겁니다.

리눅스에선 "데몬(daemon)"이란 것을 표현하기 위해 이름 뒤에 "d"를 붙입니다.
물론 같은 의미인 "service"를 붙이기도 하지만요.

리눅스 7이상의 최초의 프로세스"systemd"가 뒤에 "d"를 붙인 것의 예시죠.

하지만 헷갈리면 안되는 것이 있으니, 디렉토리 이름 끝에 "d"가 붙어있는 건 "directory"의 "d"를 의미합니다.

"/etc/" 디렉토리에 들어가면 끝에 "yum.repos.d" 처럼 끝에 "d"가 붙은 디렉토리가 많이 보일텐데 각각 "앞에 써놓은 파일 이름의 디렉토리다"라는 뜻입니다.

"yum.repos.d"같은 경우엔 "yum.repo(repository)파일들이 있는 디렉토리"라는 뜻이죠
참고로 "yum.repo"란, 인터넷상에 있는 yum의 저장소 주소가 적힌 파일입니다.




이렇게 "yum.repos.d" 디렉토리에 들어가 "ll"로 확인하니
".repo"로 끝나는 파일들이 많죠?






"vim CentOS-Base.repo"처럼 /etc/yum.repos.d/에 있는 아무 파일이나 열어서 보시면






이렇게 인터넷에 있는 yum 패키지 저장소와 연결되는 URL이 적혀있습니다.



ii)서비스란? 



"서비스(Service)"란 단어는 "윈도우 운영체제"에서 주로 사용됐던 단어로
"윈도우 OS와 함께 시작되어 계속 실행되는 백그라운드 프로세스"란 의미로 "데몬(Daemon)과 거의 비슷하죠.

물론 지금은 이 "서비스"란 단어는 데몬과 같은 의미로 유닉스/리눅스에서도 사용이 됩니다.

그 예시로 현재 사용하고 있는 스마트폰의 OS로 주로 쓰이는 안드로이드도 "서비스"란 단어를 많이 사용하죠.

여러분 안드로이드가 리눅스 계열인 건 아시죠? ㅎㅎ

윈도우의 서비스"CTRL + ALT + DEL"을 눌러 "작업관리자"에서 매우 쉽게 확인할 수 있습니다.






이렇게 말이죠.

위에 화면을 보시면 많은 파일이 이름이 뒤에 "SVC(Service)" 또는 "Service"란 단어가 붙은 게 보이죠? 서비스 파일이라고 그렇게 이름을 지은겁니다.


이렇듯 "데몬"과 "서비스"란 것은 기능적으로 거의 99% 같기에 둘이 혼용해도 됩니다.


iii) 데몬과 서비스의 차이 




제가 위에서 데몬과 서비스는 99% 비슷하다고 하였었던 것, 기억나시나요?
1%의 다름은 각각 "데몬과 서비스를 만드는 방법"에서 차이가 생깁니다. 

"리눅스"인 경우, 자기가 만든 스크립트에 "x" 실행권한을 준 상태로, 리눅스 시스템의
최초 프로세스인 init 프로세스(centos 6.9 이하는 init, 7이상은 systemd)가 부팅때 실행하는 스크립트 디렉토리에 넣어두면 바로 "데몬"이 되지만 (물론 계속 실행되게 코드를 짜지 않았으면 중간에 꺼지기에 데몬이라고 부르기엔 애매하겠죠?)

반면에 "윈도우"서비스를 등록하기 위해선 "sc.exe"와 같은 프로그램으로 윈도우 API함수를 이용해 등록해야한다는 점이 다릅니다.


사실 이것 외에도 세부적으로 따지면 다른 점이 더 있지만, 그 다른점들은 나중에 여러분들이 리눅스마스터 1급 수준정도 되고 나면 자연스럽게 터득하실 겁니다!

1% 다른 점을 이야기 했지만 그냥 공부할 때 "데몬"과 "서비스"는 같은거라고 생각하시면 되겠습니다!





자 오늘 이렇게 "프로세스"란 것에 대해서 알아봤고, 포그라운드 프로세스와 백그라운드 프로세스의 구분법과 정의, 그리고 데몬과 서비스의 정의와 세부적인 정보들을 알아봤습니다.

다음 포스트는 이제 본격적으로 리눅스 Run level이란 것과 부팅과정, init(initialization, 초기화{시작하기전 세팅과정})에 대해서 알아보겠습니다.

도움이 되셨다면 좋아요, 팔로우 꾸욱! 따뜻한 댓글을 달아주시면 저에게 매우 큰 힘이되며,
포스트 작성 속도와 퀄리티를 높여줍니다!

그럼 다음에 더 좋은 포스트로 찾아뵙겠습니다!



    

댓글 16개:

  1. 안녕하세요! Pid에 관련해서 질문 드립니다.
    보조기억장치의 프로그램을 실행하면 메모리에 적재되며 프로세스가 실행이 되는데 이 때 Pid가 할당되는 과정을 알 수 있을까요?

    답글삭제
    답글
    1. 안녕하세요~ 음.. 안 그래도 제가 init, systemd 포스트를 하면서, pid와 프로세스 만드는 방법에 대해서 포스트를 하려고 했었거든요, 물론 제가 포스트를 하나 쓰는데 시간이 꽤 걸리는 타입이지만.. 그래도 좀 기달려주시면 pid에 대해서 자세히 적은 포스트를 보실 수 있으실 겁니다!

      삭제
  2. 내용 너무 쉽게 재밌게 기술해주셔서 잘 읽었습니다. 개념을 명확히 하는데 큰 도움이 됩니다! 감사합니다~!

    답글삭제
    답글
    1. 저의 노력이 도움이 돼 다행입니다!! 힘이 나는 따뜻한 댓글을 달아주셔서 감사합니다!

      삭제
  3. 친절한 포스트 감사합니다! 이해하는데 큰 도움이 되었습니다! 감사합니다!

    답글삭제
  4. 잘 배웠습니다 감사합니다

    답글삭제
  5. 쉽게 설명해주셔서 도움이 많이 되었습니다.

    답글삭제
    답글
    1. 쉽게 설명하려고 했던 제 노력이 도움이 돼 다행입니다!!

      삭제
  6. 친절하고 자세한 설명 감사합니다 !

    답글삭제
    답글
    1. 친절하고 따뜻한 댓글 감사합니다!

      삭제
  7. 잘봤습니다! 많은 도움이 되고있어요 감사합니다

    답글삭제
    답글
    1. 도움이 돼 다행입니다!! 따듯한 댓글 감사해요~

      삭제

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

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

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

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