RECENT POSTS

최근에 작성한 글

01 / 03

전체 글

전체 보기

[Linux] 컴퓨터의 작동원리와 프로세스 정리

1. 컴퓨터의 작동 원리

📌 CPU

CPU는 프로그램의 명령어를 해석하고
산술 연산, 논리 연산 등 모든 연산을 수행하는 컴퓨터의 핵심 장치이다.

  • 프로세서: 여러 코어를 포함한 하나의 칩
  • 코어: 실제 연산을 수행하는 CPU 단위

📌 레지스터

CPU 내부에 존재하는 매우 작고 빠른 메모리

연산 수행 시 필요한 데이터를 임시 저장한다.

  • 범용 레지스터 → 일반 연산에 사용
  • 특수 목적 레지스터
    • 프로그램 카운터(PC)
    • 스택 포인터(SP) 등

📌 메모리 (RAM)

프로그램 코드와 데이터를 저장하는 공간

  • 휘발성 메모리 (전원 종료 시 데이터 삭제)
  • CPU와 시스템 버스로 연결
  • 레지스터보다 느리지만 디스크보다 빠름

📌 저장 장치

  • HDD
  • SSD
  • 플래시 메모리

비휘발성 메모리로,
운영체제 및 프로그램을 저장한다.

📌 시스템 버스

CPU, 메모리, 저장 장치 사이에서 데이터를 주고받는 통로

2. 프로세스(Process)

📌 프로세스란?

프로세스
: 메모리에서 실행 중인 프로그램

프로그램
: 디스크에 저장된 실행 파일

3. 프로세스의 계층 구조

1️⃣ 부모 프로세스 / 자식 프로세스

  • 부모 프로세스 → 프로세스를 생성한 프로세스
  • 자식 프로세스 → 부모가 생성한 프로세스

2️⃣ init 프로세스

리눅스 커널이 부팅 시 생성하는 최초의 프로세스

  • PID = 1
  • PPID = 0
  • 커널이 직접 생성

3️⃣ 프로세스 종료

자식 프로세스가 종료되면 부모는 이를 수거(wait)해야 한다.

자식 종료를 확인하는 방법:

  1. 무한 대기
  2. 주기적 확인
  3. 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