운영체제 & 컴퓨터구조

[OS] #0. 백그라운드 프로세스 ( Background Process )

코딩하는상후니 2022. 8. 30. 22:44

 


 
 
 

* 백그라운드 프로세스 ( Background Process )

 
=> 사용자의 간섭 없이 뒷 배경에서 실행 중인 컴퓨터 프로세스.
 
 
 
 
 
 
 

 

* Daemon (리눅스)  /  Service (윈도우)

 

 

 
 
 
"fork off and die" 방식
 
프로세스를 생성 후,  자식을 분기한 자신을 죽인다.
이 때, 고아가 된 프로세스를 'Init' 이라는 시스템 프로세스가 거둬들인다.
 
 
ex) ftpd, mysqld, httpd ... 등
 
 
=> 대부분의 데몬은 '관리자 권한' 으로 실행되어짐.
 
 
=> 백그라운드에서 계속 실행되기 때문에
너무 많은 데몬 or 서비스가 있다면 자원 소비가 크다.
 
 
 
 
 
 
 
* 고아 프로세스로 만드는 이유는 뭘까 ?? ( 뇌피셜 )
 
 
1. 컴퓨터가 종료될 때까지 유지되게 한다.
 
 
2.  어떤 프로세스의 영향도 받지 않게 한다.
( Shell 과 독립적으로 만든다. ) -> 터미널을 가지지 않음.
 
 
3. 프로세스 생성 시, 부모-자식 관계인 프로세스가 될 수 밖에 없는데
상속 관계가 필요없기 때문이다.
 
 
 
 
 
 
 
 
 
 
 

* 백그라운드 프로세스의 종류

 
 
* 리눅스 ( Linux ) Daemon
 
 

 

 

 
* 윈도우 ( Window ) Service
 
 
윈도우 + R ( 실행 ) -> services.msc
 
=> 리눅스의 데몬과의 차이점은
한 프로세스에서 둘 이상의 서비스를 실행할 수 있다.
 
 

 
 
 
 
 
 

 

 

=> 운영체제에서 커널과 이용자 사이에 끼어서 사용자의 명령을 해석하고
그 처리 결과를 뿌려주는 '시스템 프로그램'.
 
 
 
Shell 프로그램에는 크게 두가지 방식의 종류가 존재한다.
 
1. CLI ( Command-line interface )
2. GUI ( Graphical User interface )
 
 

 

 
 
 
 
 
 
 
 

* CLI ( Command-line interface )

 
=> MS Window 의 대표적인 'CLI 방식의 Shell'.
 
( 윈도우 + R -> cmd )
 

 

 
 
 
 
 
 
 

* 파일 탐색기 ( GUI  :  Graphical User Interface )

 
=> MS Window 의 대표적인 'GUI 방식의 Shell'.
( 윈도우 + E )
 
 
=> MS 윈도우 환경에서의 GUI 쉘이다.
 
=> 사용자가 컴퓨터의 언어를 몰라도
그래픽 아이콘을 나타내는 모니터 + 마우스 + 키보드 를 통해서
손쉽게 운영체제를 통해서 하드웨어를 제어할 수 있다.
 
즉,
우리가 마우스로 더블클릭해 실행하거나 키보드로 타자를 치는 것,
해당 결과들이 화면에 보여지는 것 등의 작업들이
모두 운영체제 ( Kernel ) 에 명령을 보내고 있다는 말이다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

* 사용자가 컴퓨터에 로그인하는 과정

 

 

=> 컴퓨터 부팅 -> 로그인 프로세스 ( 시스템 프로세스 ) -> 로그인 확인 -> Shell 생성 -> 권한 부여
 
 
 
 
 
 
 
 
 
 
 
 
 

* 해킹의 위험 ( 원격 코드 실행. )

 
=> 관리자 권한을 상속받은 어떤 프로세스에게  Shell 프로그램을 실행 시키도록 하거나
혹은 다른 의도가 담긴 어떤 코드들을 실행시켜 '프로세스를 오작동하도록 유도'한다.
 
 
즉,
관리자 프로세스가 프로그램을 실행할 때, 권한도 같이 상속된다는 점을 이용해
어떻게 해서든 관리자 권한을 얻고 프로그램을 장악하기 위해서 해커들은 힘쓴다.
 
 
 
 
 
 
 
 

* 예방방법

 
관리자 프로세스의 수를 제한하고
OS 수준에서 모니터링을 통해 허용된 실행이 아니라면 차단.
 
=> 'Secure OS 기술'