프로세스의 이해
3.1 Process Concept
프로세스
- 실행 중인 프로그램
- OS에서 작업의 단위가 프로세스다
- 하나의 프로세스가 실행되기 위해서는 자원이 필요하다.
- cpu time
- memory
- files
- and I/O devices
메모리 레이아웃
- Text section : 실행코드
- Data section : 전역변수
- Heap section : 동적 메모리들
- Stack section : function parameters, return address , 지역변수
프로세스의 생명주기
- New: 프로세스가 생성됨
- Running: 명령어가 실행된다. CPU에 명령어를 로드해서 실행하는 상태.
- Waiting : 프로세스가 어떤 이벤트가 일어나기를 기다리는 상태 ( ex. I/O completion) 다른 프로세스를 기다리는 상태.
- Ready : 프로세스가 프로세서에게 할당되기를 기다리는 상태
- Terminated: 프로세스가 실행을 끝난 상태 (ex. exit() )
→ 러닝 중에 os가 할일 있으면 waiting queue에서 대기하다가 i/o가 끝나면 ready 큐로 들어가고 다시 running 으로!
PCB(Process Control Block) or TCB(Task Control Block)
- 각 프로세스가 가져야할 정보를 PCB에 저장
- PCB에 가져아할 정보들
- process state
- program counter : 메모리에 있는 명령어를 fetch 할때 pc의 번지의 메모리를 가져오는 것
- CPU registers
- CPU-scheduling information
- Memory-management information
- Accounting information
- I/O status information
Single thread of execution
- 프로세스는 싱글 스레드를 실행을 수행하는 프로그램이다.
- 프로세스 한개 내에서도 여러개의 스레드가 실행되어야 할 필요가 있었다.
- 그래서 ‘Thread’ 란 개념이 나옴
3.2 Process Scheduling
multiprograming의 목적
- 동시에 여러 프로세스를 실행시켜보자
- CPU 사용 효율을 maximize 해보자.
time sharing의 목적
- CPU core를 프로세스 간에 자주 switch 해서
- 유저가 각각의 프로그램을 실행중에 계속 interact 하기 위해서
Queueing Diagram
Context Switch
- 프로세스가 사용되고 있는 상태를 context라 할 수 있는데.
- interrupt가 일어날때, 시스템이 현재 실행되고있는 프로세스의 contex를 저장하고 나중에 ready queue에 있다가 다시 실행될때 해당 context를 사용한다.
- 즉, CPU core를 다른 프로세스에게 넘겨주는 것인데,
- 현재 프로세스의 스테이트를 저장하고
- 새로운 프로세스의 state를 restore(보관) 하는 것이다.
3.3 Operations on Processes
프로세스가 새로운 프로세스를 생성 (fork)
- creating process : a parent process
- newly created process : a child process
실행의 두가지 가능성
- 부모 자식 concurrent하게 둘다 계속 실행
- 자식이 계속 실행되는 동안 부모가 wait 상태가 되는것
address-space 두가지 가능성
- The child process is a duplicate of the parent process
- The child process has a new program loaded into it
프로세스 종료
- 마지막 문장을 실행하면 끝!
- 강제로 끝내고 싶을때는 exit()
- OS 입장에서는 메모리를 해제하고 reclaims 회수~!
Zombie and Orphan
- zombie process : 부모 프로세스는 있는데 신경을 안쓰고 부모는 부모일을 계속 해버리는것.
- orphan process : 부모 프로세스가 wait()를 호출하지 않고 종료해버림
- demon process, background process 할때 많이 사용한다.