CHAPTER 10 프로세스와 스레드
keyword : 프로세스, 프로세스 제어 블록, 문맥 교환, 프로세스 사용자 영역
프로세스
- ‘프로그램’은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리이다.
- 이를 메모리에 적재하고 실행하는 순간 프로그램은 프로세스가 됨.
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스를 포그라운드 프로세스(Foreground process)라고 한다.
- 사용자가 볼 수 없는 공간에서 실행되면 백그라운드 프로세스(Background process)라고 한다.
- 백그라운드 프로세스 중에서도, 사용자와 상호작용도 할 수 없는 프로세스를 **데몬(Daemon, 유닉스)**라고 하고, 혹은 **서비스(Service, 윈도우)**라고 한다.
프로세스 제어 블록(PCB, Process Control Block)
- CPU자원은 한정되어 있기 때문에, 프로세스들은 차례대로 한정된 시간만큼만 CPU를 이용한다.
- 자신의 차례가 끝났음을 알리는 인터럽트(타이머 인터럽트)가 발생하면 다시 차례를 기다린다.
- 이런 실행순서의 관리와 CPU자원분배는 운영체제의 프로세스 제어 블록을 이용해 이루어짐.
- PCB는 자료구조의 일부로, 각 프로세스와 관련된 정보들이 저장되어 있다.
- PCB는 커널 영역에 생성된다.
- 프로세스 생성시 대응되는 PCB가 만들어지고, 실행 종료시 삭제된다.
PCB의 정보들
- 프로세스 ID(PID, Process ID)
- 특정 프로세스를 식별하기 위해 부여하는 고유한 번호.
- 같은 프로그램 일지라도 두 번 실행하면 다른 PID가 부여된다.
- 레지스터 값
- 자신의 실행차례가 올 때 다시 이용하기 위해 이전까지 사용했던 레지스터 값들을 기록한다.
- 프로세스 상태
- 프로세스가 I/O를 사용하기 위해 대기중인지, CPU를 기다리고 있는지, CPU를 이용하고 있는지 등의 상태정보도 저장된다.