1. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?
1.
프로그램
a.
저장장치에 저장되어 있는 정적인 상태
b.
어떤 데이터를 사용하여 어떤 작업을 할지 그 절차를 적은 것
2.
프로세스
a.
실행을 위해 메모리에 올라온 동적인 상태
b.
프로그램으로 작성된 작업 절차를 실제로 실행에 옮기는 것
→ 누군가 작성한 프로그램이 실행되면 프로세스가 된다.
1.
운영체제는 프로그램을 메모리의 적당한 위치로 가져온다.
2.
그와 동시에 작업 지시서인 프로세스 제어 블록(Process Control Block) 만든다.
3.
이 프로세스 제어 블록에는 프로세스를 처리하는 데 필요한 다양한 정보가 들어있다.
1.
프로세스 구분자 : 프로세스 구분을 위함
2.
메모리 관련 정보 : 실행하려는 프로세스가 메모리의 어디에 저장되어 있는지에 대한 위치 정보
3.
각종 중간값
2. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가?
그 전에, 생성 상태부터 확인
→ 이렇게 생성된 프로세스가 바로 실행되는 것이 아니라 준비 상태에서 자기 순서를 기다림
준비 상태
•
실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태
•
프로세스 제어 블록은 준비 큐에서 기다리다가 CPU 스케줄러의 dispatch(PID) 명령에 의해 실행 상태로 바뀌어 작업 진행됨
3. 프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는 무엇인가?
기존 생성, 준비, 실행, 완료의 4가지 상태만으로도 작업 진행에 무리가 없었으나 오늘날 운영체제의 효율성을 고려하여 추가된 상태
•
실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태
→ CPU 스케줄러는 준비 상태에 있는 프로세스 중 하나를 가져다 실행 상태로 만듬
•
wait status
•
대기 상태의 프로세스는 입출력장치별로 마련된 큐에서 대기
•
입출력이 완료되면 인터럽트 발생, 대기 상태에 있는 여러 프로세스 중 wakeup(PID)를 통해 해당 인터럽트로 깨어날 프로세스를 찾음
•
찾게 되면 해당 프로세스의 프로세스 제어 블록이 준비 상태로 이동
•
프로세스가 입출력을 요구하면 CPU가 직접 데이터를 가져오지 않고 입출력 관리자에게 명령함
•
이 상태에서 요청한 작업이 끝날 때까지 다음 작업 수행 불가
•
CPU도 아무 작업을 하지 않고 기다리게 되는 비효율성
4. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라고 하는가?
준비 상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 일은 CPU 스케줄러가 담당한다.
CPU 스케줄러는 준비 상태의 있는 맨 앞에 있는 프로세스 제어 블록을 CPU에 전달한다.
이 때, 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업을 디스패치라 한다.
5. 유닉스에서 Ctrl + Z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?
1.
활성 상태 : 생성, 준비, 실행, 대기, 완료
2.
휴식, 보류 대기 상태, 보류 준비 상태
휴식 상태
•
프로세스가 작업을 일시적으로 쉬고 있는 형태
•
종료된 것이 아니라 실행을 잠시 멈춘 상태
•
사용하던 데이터가 메모리에 그대로 존재하고, 프로세스 제어 블록도 유지된다.
•
멈춘 지점에서부터 재시작할 수 있다.
•
fg, bg 를 입력하면 다시 시작