1. 프로세스의 개념과 상태 변화
1) 프로세스의 개념
프로세스의 정의
• 컴퓨터는 동시에 여러 기능을 수행
- 예: 프로그램 컴파일, 파일 프린터 전송, 웹 페이지 표시, 이메일 수신, 비디오 재생
• 프로세스는 시스템을 동작시키고 동시에 수행되는 많은 활동을 관리
• 프로세스는 프로세스 상태(process state)를 변화
프로그램과 프로세스의 차이
• 프로그램: 저장장치에 저장된 정적인 상태
• 프로세스: 실행을 위해 메모리에 올라온 동적인 상태
- 실행 중인 프로그램(program in execution)
- 프로그램이 메모리로 적재되면 프로세스가 됨
프로세스의 정의
• 1960년대 멀틱스(Multics) 운영체제에서 처음 사용
• IBM 운영체제에서는 작업(Task)으로 불림
• 실행 중인 프로그램 또는 비동기적(asynchronous) 행위
• 실행 중인 프로시저 및 제어 추적
• 운영체제에 존재하는 프로세스 제어 블록(PCB)
• 프로세서에 할당하여 실행할 수 있는 개체, 디스패치(dispatch) 가능 대상
프로세스의 종류
• 시스템(커널) 프로세스: 모든 시스템 메모리와 프로세서 명령에 접근 가능
- 프로세스 실행 순서를 제어하고, 사용자 프로세스를 감시 및 생성
• 사용자 프로세스: 사용자 코드를 수행하는 프로세스
• 독립 프로세스: 다른 프로세스와 영향을 주고받지 않는 병행 프로세스
• 협력 프로세스: 다른 프로세스와 영향을 주고받는 병행 프로세스
2) 프로세스의 구조
• 프로세스 실행 중 프로세스 생성 시스템 호출을 이용해 새로운 프로세스 생성
• 프로세스는 부모-자식 관계를 유지하며 계층적으로 생성됨
• 부모 프로세스(parent process)가 자식 프로세스(child process)를 생성하며, 이는 반복되어 계층 구조 형성
3) 프로세스의 생성
프로세스의 생성 시기
• 일괄처리 환경: 작업이 도착할 때 프로세스 생성
• 대화형 환경: 새로운 사용자가 로그인할 때 프로세스 생성
프로세스 생성 시 필요한 작업 순서
(1) 새로운 프로세스에 프로세스 식별자 할당
(2) 프로세스의 구성 요소를 포함할 주소 공간과 프로세스 제어 블록(PCB) 공간 할당
(3) 프로세스 제어 블록 초기화 (프로세스 상태, 프로그램 카운터, 자원 요청, 우선 순위 등 설정)
(4) 해당 큐에 삽입하여 링크 설정
부모-자식 프로세스 실행 방식
• 부모 프로세스와 자식 프로세스가 동시 실행될 수 있음
• 부모 프로세스는 자식 프로세스가 모두 종료될 때까지 대기할 수 있음
2. 프로세스 제어 블록(PCB)
프로그램에서 프로세스로의 전환
• 프로세스 제어 블록(PCB): 프로그램이 프로세스로 변환될 때 운영체제가 생성하는 작업 지시서
• PCB를 할당받으면 프로그램이 프로세스로 전환됨
• PCB 주요 정보
- 프로세스 구분자(PID): 각 프로세스를 구분하는 식별자
- 메모리 관련 정보: 프로세스의 메모리 위치, 보호 레지스터 정보
- 각종 중간값: 프로세스가 사용했던 중간 연산 값
프로세스 제어 블록(PCB) 구성 요소
• 포인터: 준비 상태나 대기 상태의 큐를 구현할 때 사용
• 프로세스 상태: 현재 프로세스의 상태 정보
• 프로세스 구분자(PID): 프로세스를 구분하는 식별자
• 프로그램 카운터: 다음 실행할 명령어의 위치 정보
• 프로세스 우선순위: 실행 순서 결정
• 레지스터 정보: 실행 중 사용했던 레지스터 값
• 메모리 관리 정보: 프로세스가 사용하는 메모리 정보 및 보호를 위한 레지스터 값
• 할당된 자원 정보: 입출력 자원 및 오픈 파일 정보
• 계정 정보: CPU 할당 시간 및 사용 시간 등
• 부모/자식 프로세스 구분자: PPID(부모 프로세스 ID), CPID(자식 프로세스 ID)
3. 프로세스의 상태
프로세스의 주요 상태
• 생성 상태(Create): 프로세스가 메모리에 올라와 실행 준비를 완료한 상태
- 프로세스 제어 블록 생성
• 준비 상태(Ready): 실행 준비 완료, CPU 할당 대기
• 실행 상태(Running): CPU를 얻어 작업 수행 중인 상태
• 대기 상태(Blocking): 입출력 요청 후 대기하는 상태
• 완료 상태(Terminate): 작업 종료 후 자원 반납 및 PCB 폐기
보조 상태
• 휴식 상태(Pause): 작업을 일시 중지한 상태
• 보류 상태(Suspend): 메모리에서 제거된 상태
- 원인: 메모리 부족, 프로그램 오류, 보안 문제, 자원 대기 등
4. 문맥 교환(Context Switching)
문맥 교환의 의미
• CPU를 점유하던 프로세스가 나가고 새로운 프로세스가 실행되는 과정
• 실행 중인 프로세스의 레지스터 정보를 저장하고, 새로운 프로세스의 PCB를 불러옴
문맥 교환과 타임 슬라이스
• 타임 슬라이스(time slice)는 되도록 작게 설정하지만, 문맥 교환에 소요되는 시간을 고려하여 적절한 크기로 조정해야 함
이 내용은 휴넷사회복지평생교육원의 운영체제 강의를 듣고 정리한 것입니다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 7. CPU 스케줄링 (0) | 2025.03.16 |
---|---|
[운영체제] 6. 프로세스의 연산과 스레드 (1) | 2025.02.20 |
[운영체제] 4. 컴퓨터 성능 향상 (0) | 2025.02.19 |
[운영체제] 3. 컴퓨터의 구조 (0) | 2025.02.18 |
[운영체제] 2. 운영체제의 구성 (1) | 2025.02.17 |