프로세스 Process & 스레드 Thread 기초

sua_ahn·2023년 10월 25일
0

프로그래밍 입문

목록 보기
5/7

운영체제

사용자와 하드웨어 사이 중개자 역할을 하는 시스템
→ Kernel, Shell, Utility 등의 프로그램으로 분할

커널

운영체제의 핵심 프로그램

역할

하드웨어 관리 (CPU, Memory, Disk 등)
유저 프로그램 지원 (프로세스 관리)

특징

부팅 시 첫 번째로 로딩되어, 메모리에 상주 (Memory Resident)
오직 커널만 모든 메모리 영역에 접근 가능

이중모드

: CPU의 명령 실행 모드 → 자원 보호를 위함!

커널 모드 : 자원 접근 & 모든 명령어 실행 가능
사용자 모드 : 자원 접근 불가 & 커널 영역의 코드 실행 불가

*System Call : 커널 모드로 전환하려는 요청


Program 프로그램

작업을 실행할 수 있는 파일

Process 프로세스

메모리에 올라와 실행중인 프로그램
(자원 할당 단위)

프로세스 제어 방식

Foreground : 실행되어 사용자에게 보여지고 있는 상태
Background : 화면에 나타나지 않고 뒤에서 실행되고 있는 상태
  ∪
Daemon : 이벤트가 발생하거나 조건이 충족될 때까지 백그라운드로 실행
터미널로 사용자와 상호작용 불가

Kernel Scheduling

여러 프로세스가 빠르게 번갈아 가며 실행됨
→ 커널이 각 프로세스에게 CPU 시간 할당

프로세스 상태

프로세스는 여러 상태를 거치며 실행됨

프로세스 메모리 구조

각각 독립된 메모리 영역을
할당 받음

PCB 프로세스 제어 블록

커널이 프로세스를 관리하기 위한 자료구조
→ 메모리 커널 영역에 저장됨
→ PID, 프로세스 상태, 레지스터값, CPU 스케쥴 정보,
메모리 정보, 사용한 파일과 입출력장치 정보 포함

Context Switching 문맥 교환

CPU에서의 프로세스 실행 순서 변경 시
실행되던 프로세스의 중간 정보를 백업하고,
실행할 프로세스 문맥을 복구하는 과정

프로세스의 계층 구조

부모-자식 프로세스

부모 프로세스의 실행 도중 자식 프로세스 생성 가능 (복사 fork 후 덮어쓰기 exec)
→ 프로세스 간의 책임 관계가 분명해져 시스템을 관리하기 수월
→ pstree 명령어로 확인 가능
*리눅스의 경우, systemd 가 커널에 의해 직접 생성된 프로세스 (pid=1)


Thread 스레드

프로세스를 이루는 실행 흐름 단위
(작업 단위 or CPU를 사용하는 최소 단위)
→ 시스템 자원을 효율적으로 관리하기 위함
→ 프로세스 당 최소 하나의 스레드를 가짐

멀티 프로세스 vs 멀티 스레드


profile
해보자구

0개의 댓글