프로세스
- 프로세스: 실행 중인 프로그램, 동작을 하는 능동적 개체
- 프로그램: 동작을 하지 않는 정적, 수동적 개체
프로세스는 운영 체제로부터 자원을 할당받아 동작
자원: CPU, 메모리, 입출력 장치, 파일 등
동작: CPU가 프로세스의 명령을 실행
프로세스와 운영체제
운영체제(프로세스 관리자)가 처리하는 작업
- 프로세스 생성 및 종료
- 프로세스를 실행시키기 위한 스케줄링 작업
- 프로세스의 상태 관리
프로세스의 구성
- 메모리 구조
- 프로세스 제어 블록
메모리 구조
프로그램 실행에 직접적으로 필요한 코드와 데이터
프로세스 제어 블록(PCB)
- 운영체제가 프로세스를 관리하기 위해 필요한 정보
- 각 프로세스마다 존재
- 여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용
프로세스 상태 관리
프로세스 상태
프로세스 상태 변화
부모 프로세스와 자식 프로세스
프로세스 생성 방법
- 사용자가 프로그램을 직접 실행
- 한 프로세스가 다른 프로세스를 생성
-> 프로세스 생성 시스템 호출 이용
부모 프로세스: 생성 시스템 호출을 하는 프로세스
자식 프로세스: 생성 시스템 호출을 통해 만들어진 프로세스
프로세스 생성 시스템 호출
- Unix, Linux: fork(): 자식 프로세스는 부모 프로세스의 복제본, pid만 다름
- Unix, Linux: exec(): 자식 프로세스는 부모 프로세스와는 다른 프로그램 실행 (pid만 같음)
- Windows: CreateProcess(): 자식 프로세스는 새로운 프로그램으로 생성
프로세스 종료 방법
- 프로세스가 모든 처리를 완료(정상적 종료)
- 부모 프로세스에 의해 자식 프로세스가 강제 종료
- 프로세스 종료 시스템 호출 이용
- 자식프로세스생성 시 얻은 자식 PID이용
- 부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료
스레드
전통적인 프로세스
- 하나의 프로그램을 실행하기 위한 기본적인 단위
- 자원 소유의 단위 -> 하나의 메모리 구조
- 디스패칭의 단위 -> 하나의 제어흐름
- 프로세스 내에서 다중처리 불가능
스레드
- 프로세스 내에서 다중처리를 위해 제안된 개념
- 하나의 프로그램을 실행하기 위한 기본적인 단위
- 디스패칭의 단위
- 하나의 프로세스 내에서 하나 이상의 스레드가 존재
프로세스 비교
- 전통적인 프로세스
- 스레드 있는 프로세스
스레드와 프로세스
스레드는 실행에 필요한 최소한의 정보만 가짐
-> PC를 포함한 레지스터 값, 상태 정보, 스택 영역
나머지 정보는 프로세스에 두고 다른 스레드와 공유
다중 스레드로 구성된 프로세스
- 멀티 CPU 또는 멀티코어 컴퓨터 시스템 -> 다중 스레드를 병렬로 처리 가능
- 처리 속도별로 스레드가 나누어진 경우 -> 효율적인 처리 가능
'공부 > 운영체제' 카테고리의 다른 글
5. 병행 프로세스 (2) (0) | 2024.02.29 |
---|---|
4. 병행 프로세스(1) (0) | 2024.02.26 |
3. 프로세스 스케줄링 (0) | 2024.02.22 |
1. 운영체제 소개 (0) | 2024.02.21 |