티스토리 뷰
- 프로세스의 개요 ( Process )
- 정의
- 실행중인 프로그램
- 프로그램은 동작을 하지 않는 정적, 수동적 개체
- 프로세스는 동작을 하는 능동적 개체
- 실행중인 프로그램
- 운영체제로부터 자원을 할당 받아 동작
- 자원 : CPU, 메모리. 입출력 장치, 파일 등
- 동작 : CPU가 프로세스의 명령을 실행
- 정의
- 프로세스와 운영체제
- 운영체제(프로세스 관리자)가 처리하는 작업
- 프로세스를 생성 및 종료
- 프로세스를 실행시키기 위한 스케줄링 작업
- 프로세스의 상태 관리
- 운영체제(프로세스 관리자)가 처리하는 작업
- 프로세스의 구성
- 메모리 구조
- 프로그램 실행에 직접적으로 필요한 코드와 데이터
- 코드 영역 : 프로그램 자체
- 데이터 영역 : 프로그램 실행 시 필요한 데이터
- 저장하는 데이터
- 상수나 변수의 값
- 서브 프로그램 호출 상태 등
- 구분
- 정적 데이터 영역
- 스택 영역
- 힙 영역
- 저장하는 데이터
- 프로그램 실행에 직접적으로 필요한 코드와 데이터
- 프로세스 제어 블록 ( Process Control Block : PCB )
- 운영체제가 프로세스를 관리하기 위해 필요한 정보
- 각각 프로세스마다 존재
- 여러 프로세스가 번갈아 실행될 경우 PCB에 저장된 정보 활용
- 주요 항목
- 프로세스 번호 ( Process ID : PID )
- 프로세스 상태
- 프로그램 카운터 ( PC )
- 다음에 실행할 명령의 주소를 나타낸다.
- 제어의 흐름을 확인 가능
- 레지스터
- 메모리 관리 정보
- 프로세스 우선순위
- 회계 정보
- 메모리 구조
- 프로세스 상태 관리
- 프로세스 상태
- 생성
- 처음 작업이 시스템에 주어진 상태
- 준비
- 실행 준비가 되어 CPU 할당을 기다리는 상태
- 실행
- 프로세스가 처리되는 상태
- 종료
- 프로세스가 더 이상 실행되지 않도록 끝난 상태
- 대기
- 프로세스가 I/O 작업이 끝날때까지 또는 특정 자원을 할당 받을때까지 보류되는 상태
- 생성
- 프로세스 상태 변화 ( 하단의 이미지 참고 )
- 프로세스 상태
- 부모 프로세스와 자식 프로세스
- 프로세스 생성 방법
- 사용자가 프로그램을 직접 실행
- 한 프로세스가 다른 프로세스 생성
- 프로세스 생성 시스템 호출 이용
- 부모 프로세스 : 시스템 호출을 하는 프로세스
- 자식 프로세스 : 시스템 호출을 통해 새로 생성된 프로세스
- 프로세스 생성 방법
- 프로세스 생성 시스템 호출
- UNIX, Linux : fork()
- 자식 프로세스는 부모 프로세스의 복제본
- PID는 부모한테서 받아오지 않기에 다름
- Ex ) pid = fork( );
- UNIX, Linux : exec()
- 자식 프로세스는 부모 프로세스와 다른 프로그램 실행
- Ex ) pid = fork ( ); if( pid == 0 ) exec(prg2);
- Windows : CreateProcess()
- 자식 프로세스는 새로운 프로그램으로 생성
- Ex ) CreateProcess(prg2, …, &pid);
- UNIX, Linux : fork()
- 프로세스 종료 방법
- 프로세스가 모든 처리를 완료 ( 정상적 종료 )
- 부모 프로세스에 의해 자식 프로세스가 강제 종료
- 프로세스 종료 시스템 호출 이용
- 자식 프로세스 생성 시 얻은 자식 PID 이용
- 부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료
- 전통적인 프로세스
- 하나의 프로그램을 실행하기 위한 기본적인 단위
- 자원 소유의 단위
- 하나의 메모리 구조
- 디스패칭의 단위
- 하나의 제어 흐름
- 프로세스 내에서 다중 처리가 불가능
- 쓰레드 ( Thread )
- 프로세스 내에서의 다중처리를 위해 제안된 개념
- 하나의 프로그램을 실행하기 위한 기본적인 단위
- 디스패칭의 단위
- 자원 소유의 단위가 프로세스, 디스패칭의 단위가 쓰레드가 됨
- 하나의 프로세스 내의 다수의 쓰레드가 존재
- 쓰레드와 프로세스
- 쓰레드는 실행에 필요한 최소한의 정보만을 가짐
- PC를 포함한 레지스터 값
- 상태 정보
- 스택 영역
- 나머지 정보는 프로세스에 두고 다른 쓰레드와 공유
- 쓰레드는 실행에 필요한 최소한의 정보만을 가짐
- 다중 쓰레드로 구성된 프로세스
- 멀티 CPU 또는 멀티코어 컴퓨터 시스템
- 다중 쓰레드를 병렬로 처리 가능
- 처리 속도 별로 쓰레드가 나눠진 경우
- 효율적인 처리 가능
- 효율적인 처리 가능
- 멀티 CPU 또는 멀티코어 컴퓨터 시스템
요약
1. 프로세스는 실행 중인 프로그램을 의미하며, CPU / 메모리 / 파일 / 입출력 장치 증 실행에 필요한 자원이 할당된다.
2. 프로세스 제어 블록은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
3. 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, 입출력 대기 등에 따라서 준비, 실행, 대기 등의 상태가 변화되며 동작한다.
4. 스레드는 프로세스에서 실행의 개념만 분리한 것으로 디스패칭의 단위이다.
5. 하나의 프로세스 내에는 하나 이상의 스레드가 있을 수 있어, 다중 스레드를 생성하여 프로세스 내에서 다중 처리를 할 수 있다.
728x90
'방송대 > 운영체제' 카테고리의 다른 글
6강. 교착상태 (1) (0) | 2025.03.25 |
---|---|
5강. 병행 프로세스 (2) (0) | 2025.03.19 |
4강. 병행 프로세스의 개요 (0) | 2025.03.10 |
3강. 프로세스 스케줄링 (0) | 2025.03.03 |
1강. 운영체제 소개 (0) | 2025.02.17 |
댓글