-
01. process?
- 프로세스는 실행 중인 프로그램이다.
- 프로세스는 program counter(pc), process stack, data section, heap을 포함한다.
- 프로그램은 디스크에 저장된 파일 같이 수동적 존재이고, 프로세스는 다음 실행 명령어를 지정하는 pc와 관련 resource set을 가진 능동적 존재이다.
- 프로그램이 메모리에 로드되면 프로세스가 된다.
Process Control Block(PCB)
PCB는 특정 프로세스 관련 정보를 갖고 있다.
- Process state : new, ready, running, wating, terminated 등의 프로세스 상태
- Program Counter : 이 프로세스가 다음으로 실행할 명령어의 주소 가리킴
- CPU Register
- CPU 스케줄링 정보 : 프로세스 우선 순위 등의 스케줄링 매개변수들을 포함
- 메모리 관리 정보
- accounting 정보 : CPU 사용 시간, real time used, time limit, process number 등
- 입출력 상태 정보 : 해당 프로세스에 할당된 I/O 기기들과 open file 목록 등을 포함
Thread
한 프로세스는 다수의 스레드를 가질 수 있고,
따라서 프로세스가 한 번에 하나 이상의 일을 수행할 수 있다.
여러 스레드가 병렬로 수행되는 multi-core 시스템에서 이득이고, 스레드를 지원하는 시스템에서는 PCB가 각 스레드에 대한 정보 포함
02. 프로세스 스케줄링
single - processor 환경에서 실행 중인 프로세스는 한 개여야 하므로 process scheduler는 CPU를 switching 하며 여러 프로세스 중 하나의 프로세스에 할당해준다.
스케줄링 큐(scheduling Queue)
프로세스가 시스템에 들어오면 job queue에 놓이게 되고, job queue에는 시스템의 모든 프로세스가 올라와 있다.
주메모리에 존재하며, ready 상태에서 대기 중인 프로세스들은 ready queue에 올라간다.
I/O 를 대기하는 프로세스들은 device queue에 올라간다.
프로세스들은 life time 동안 상황에 따라 다양한 스케줄링 큐 사이에 있게 된다.
스케줄러
job scheduler는 대용량 메모리에 있는 프로세스들을 선택하여 메모리에 load 한다.
CPU scheduler는 실행 준비가 완료된 프로세스들 중 한 프로세스를 CPU에 할당한다.
Context Switching(문맥 교환)
- interrupt 발생 시 시스템은 interrupt 처리 후 원래 context를 복구하도록 현재 실행 중인 프로세스의 context를 저장해야 함.
- context는 프로세스의 PCB에 표현됨.
- CPU를 다른 프로세스로 switch 하기 위해 이전 프로세스 상태를 PCB에 보관하고 새로운 프로세스의 saved context를 복구하는 작업을 문맥 교환이라 함.
03. operation on Process(프로세스에 대한 연산)
프로세스 생성
- 실행되는 동안 프로세스는 여러 개의 새로운 프로세스 생성 가능.
- 생성하는 프로세스를 부모 프로세스, 생성되는 프로세스를 자식 프로세스라 하며 자식 프로세스가 또 다른 프로세스를 생성할 수 있으며 그 결과 프로세스의 트리를 형성
- 대부분의 os는 프로세스 식별자인 pid를 사용해 프로세스를 구분함.
'운영체제' 카테고리의 다른 글
프로세스 동기화 (1) 2024.02.18 Threads 스레드 (0) 2024.02.18 CH01. 운영체제란? (공룡책) (0) 2024.02.10