1. 컴퓨터의 작동 원리
📌 CPU
CPU는 프로그램의 명령어를 해석하고
산술 연산, 논리 연산 등 모든 연산을 수행하는 컴퓨터의 핵심 장치이다.
- 프로세서: 여러 코어를 포함한 하나의 칩
- 코어: 실제 연산을 수행하는 CPU 단위
📌 레지스터
CPU 내부에 존재하는 매우 작고 빠른 메모리
연산 수행 시 필요한 데이터를 임시 저장한다.
- 범용 레지스터 → 일반 연산에 사용
- 특수 목적 레지스터
- 프로그램 카운터(PC)
- 스택 포인터(SP) 등
📌 메모리 (RAM)
프로그램 코드와 데이터를 저장하는 공간
- 휘발성 메모리 (전원 종료 시 데이터 삭제)
- CPU와 시스템 버스로 연결
- 레지스터보다 느리지만 디스크보다 빠름
📌 저장 장치
- HDD
- SSD
- 플래시 메모리
비휘발성 메모리로,
운영체제 및 프로그램을 저장한다.
📌 시스템 버스
CPU, 메모리, 저장 장치 사이에서 데이터를 주고받는 통로

2. 프로세스(Process)
📌 프로세스란?
프로세스
: 메모리에서 실행 중인 프로그램
프로그램
: 디스크에 저장된 실행 파일
3. 프로세스의 계층 구조
1️⃣ 부모 프로세스 / 자식 프로세스
- 부모 프로세스 → 프로세스를 생성한 프로세스
- 자식 프로세스 → 부모가 생성한 프로세스
2️⃣ init 프로세스
리눅스 커널이 부팅 시 생성하는 최초의 프로세스
- PID = 1
- PPID = 0
- 커널이 직접 생성
3️⃣ 프로세스 종료

자식 프로세스가 종료되면 부모는 이를 수거(wait)해야 한다.
자식 종료를 확인하는 방법:
- 무한 대기
- 주기적 확인
- SIGCHLD 시그널 수신
4. 프로세스의 작동
1️⃣ 프로세스 생애 주기

📌 계산기 프로그램으로 ‘3,5,+,7,=’ 버튼 눌러서 계산하기
1. 3을 누름 : 프로세스는 3을 눌렀다는 정보를 메모리에 저장
2. 5를 누름 : 이전에 입력한 3을 불러옴
3. 35를 메모리에 저장
4. +를 누름 : 메모리에 저장
5. 7을 누름 : 메모리를 저장 → 35와 다른 영역에 저장
6. =를 누름 : 정보를 모두 불러와 연산 후 42라는 결과를 저장
일반적인 상태:
- running
- runnable
- sleep
- stopped
- terminated
2️⃣ 멀티태스킹을 위한 기법
멀티 태스킹 : 한번에 여러 일을 동시에 처리하는 것
📌 프로세스 스케줄링
CPU가 어떤 프로세스를 실행할지 결정하는 과정
📌 스케줄링 알고리즘이 가져야 할 속성
- 공평성
- 우선순위
- 효율성
- 응답시간
📌 컨텍스트 스위칭
프로세스 전환 시 일어나는 과정
1. 현재 프로세스 상태를 PCB에 저장
2. 다음 프로세스 선택 및 실행
📌 프로세스 상태
- 실행 / 실행 대기
- 수면 상태
- 중단 상태
- 종료 상태

📌 프로세스 종료 상태
프로그램마다 종료 코드의 의미를 다르게 정의하므로 실질적인 의미는 각 프로그램의 매뉴얼을 확인
프로세스가 받은 시그널 정보는 프로세스가 비정상 종료되는 경우를 위한 정보
3️⃣ 프로세스 관리 정보 (PCB에 저장)
항목설명
| PID | 프로세스 고유 ID |
| PPID | 부모 프로세스 ID |
| 상태 정보 | 실행, 중단 등 |
| 스케줄링 정보 | 우선순위 등 |
| 레지스터 값 | CPU 상태 저장 |
| 메모리 정보 | 코드/데이터/스택 위치 |
| 파일 디스크립터 | 열린 파일 정보 |
| 시그널 정보 | 시그널 핸들러 등 |
| 자원 사용량 | CPU 시간, 메모리 사용량 |
5. 스레드(Thread)
프로세스의 가장 작은 실행 단위
멀티 스레드 프로세스 특징:
- 메모리 공간 공유
- 독립적인 스택 영역 보유
- 실행 컨텍스트 별도 유지
🖥️ 실습
2.4 실습 : 프로세스 목록 확인하기
#현재 실행 중인 프로세스에 대한 정보 보여주기
ps [옵션]
2.5 실습 : 프로세스 생성과 종료하기
#프로세스를 강제 종료하는 명령
kill [옵션] PID
#PID : 종료 명령을 보낼 프로세스의 PID
#옵션 : 어떤 시그널을 모낼 것인지
#프로세스 이름을 기준으로 하나 이상의 프로세스를 종료
killall [옵션] 프로세스_이름
#프로세스 이름과 일치하는 모든 프로세스에 시그널을 전송
#입력받은 시간 동안 잠자는 상태를 유지하다가 정해진 시간이 지나면 종료
sleep 시간
'개발 공부 > Linux' 카테고리의 다른 글
| [Linux] 시그널 (0) | 2026.03.01 |
|---|---|
| [Linux] 파일 디스크립터, 표준 스트림, IPC 정리 (0) | 2026.03.01 |
| [Linux] 소유권과 권한 (0) | 2026.03.01 |
| [Linux] 사용자와 사용자 그룹 (0) | 2026.03.01 |
| [Linux] 파일과 디렉터리 (0) | 2026.03.01 |
