1. Task 란?
- Linux 커널 관점에서 태스크는 실행 가능한 모든 작업을 나타내는 일반적인 용어
- 프로세스와 스레드는 모두 태스크로 관리되며, 커널 내에서는 task_struct라는 데이터 구조로 이를 표현
- 태스크는 사용자 명령으로 실행된 프로그램, 시스템의 백그라운드 작업, 그리고 데몬 프로세스를 모두 포함
2. Application (애플리케이션)
- 애플리케이션은 특정 작업을 수행하기 위해 설계된 프로그램을 의미 (ex > 웹 브라우저, 텍스트 편집기)
특징:
- 사용자와 직접 상호작용하며 인터페이스를 제공하는 경우가 많음
- 파일 형태로 저장되며, 실행 가능한 바이너리(.exe, ELF 등)로 컴파일
- 단일 애플리케이션은 여러 프로세스와 스레드 생성
예시:
- 터미널에서 vim, firefox, gcc 등의 명령을 실행하면 해당 애플리케이션 실행
3. Script (스크립트)
- 스크립트는 특정 작업을 자동화하기 위해 작성된 코드 파일 (Bash Script, Python, Perl, Ruby 등 스크립트 언어 사용)
특징:
- 소스 코드 형태로 실행
- 인터프리터가 코드를 한 줄씩 읽어 실행
- 운영체제 작업, 파일 처리, 프로세스 관리 등 다양한 기능을 쉽게 구현 가능
용도:
- 시스템 관리 작업 자동화
- 배치 작업 수행
- 애플리케이션 초기화 또는 환경 설정
4. Process (프로세스)
- 프로세스는 실행 중인 프로그램의 인스턴스
- 애플리케이션이 실행되면 운영체제는 해당 애플리케이션을 독립적인 프로세스로 관리
특징:
- 각 프로세스는 고유의 PID(Process ID)를 가짐
- 독립적인 메모리 공간을 사용
- 부모-자식 관계를 가질 수 있음 (예: fork() 시스템 호출).
프로세스 상태:
- Running: 실행 중
- Sleeping: 대기 중
- Stopped: 멈춤 상태
- Zombie: 종료되었으나 부모 프로세스가 회수하지 않은 상태
예시 명령:
- ps: 현재 실행 중인 프로세스 목록 확인
- top: 실시간 프로세스 정보 표시
5. Daemon (데몬)
- 백그라운드에서 실행되며 특정 서비스를 제공하는 프로세스를 의미
- 사용자가 직접 상호작용하지 않지만, 시스템 및 네트워크 서비스의 핵심 역할 수행
특징:
- 보통 시스템 시작 시 자동으로 실행
- 프로세스 이름 끝에 d가 붙는 경우가 많음 (예: httpd, sshd).
- 백그라운드에서 계속 실행되며 요청이 있을 때 작업 수행
예시:
- sshd: SSH 서비스 관리
- crond: 예약 작업(cron job) 관리
- systemd: 시스템 및 서비스 관리
관리 명령:
- systemctl start [daemon_name]: 데몬 시작
- systemctl stop [daemon_name]: 데몬 중지
- systemctl status [daemon_name]: 데몬 상태 확인
6. Threads (스레드)
- 스레드는 프로세스 내에서 실행되는 작업 단위
- 하나의 프로세스는 여러 스레드를 가질 수 있으며, 동일한 메모리 공간을 공유
특징:
- 프로세스보다 가볍고, 실행 속도가 빠름
- 스레드는 동일한 데이터와 리소스를 공유하기 때문에 통신 비용이 낮음
- 스레드 간 동기화 및 충돌 방지(locking)가 필요
용도:
- 병렬 처리 구현
- 다중 작업 지원
- 멀티스레드 서버 개발
예시:
- 웹 서버는 각 클라이언트 요청을 처리하기 위해 스레드 생성
7. Job (작업)
- Job은 사용자가 명령어를 실행하여 생성된 작업 단위를 의미
- 작업은 포그라운드 또는 백그라운드에서 실행될 수 있음
특징:
- 작업 ID(Job ID)를 통해 관리
- &를 사용하면 작업을 백그라운드로 보낼 수 있음
관련 명령:
- jobs: 현재 작업 목록 확인
- bg [Job ID]: 작업을 백그라운드로 전환
- fg [Job ID]: 작업을 포그라운드로 전환
- kill %[Job ID]: 특정 작업 종료
8. 비교 정리
애플리케이션 | 사용자가 직접 실행하는 프로그램 |
스크립트 | 작업 자동화를 위해 작성된 코드 파일 |
프로세스 | 실행 중인 프로그램의 인스턴스 |
데몬 | 백그라운드에서 실행되는 서비스 프로세스 |
스레드 | 프로세스 내에서 실행되는 작업 단위 |
작업 | 사용자가 실행한 명령어의 실행 단위 |
'Linux > centOS' 카테고리의 다른 글
[CENTOS] ps Command (0) | 2024.12.23 |
---|---|
[CENTOS] systemctl Command (0) | 2024.12.23 |
[CENTOS] Vim (0) | 2024.12.21 |
[CENTOS] Command, Pipes (0) | 2024.12.19 |
[CENTOS] File Soft Link / Hard Link (0) | 2024.12.18 |